@mastra/playground-ui 61.0.0-alpha.6 → 61.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -0
- package/dist/{Avatar-DchBEEMO.cjs → Avatar-D_L-oAme.cjs} +2 -2
- package/dist/{Avatar-DchBEEMO.cjs.map → Avatar-D_L-oAme.cjs.map} +1 -1
- package/dist/{Avatar-Bg_EZRgZ.js → Avatar-DpRimnsu.js} +2 -2
- package/dist/{Avatar-Bg_EZRgZ.js.map → Avatar-DpRimnsu.js.map} +1 -1
- package/dist/{EmptyState-O089K_US.cjs → EmptyState-B6kP-dEp.cjs} +2 -2
- package/dist/{EmptyState-O089K_US.cjs.map → EmptyState-B6kP-dEp.cjs.map} +1 -1
- package/dist/{EmptyState-BI6cIolY.js → EmptyState-BQww74OL.js} +2 -2
- package/dist/{EmptyState-BI6cIolY.js.map → EmptyState-BQww74OL.js.map} +1 -1
- package/dist/{Header-BHqUw0qH.js → Header-BzSnNlwq.js} +2 -2
- package/dist/{Header-BHqUw0qH.js.map → Header-BzSnNlwq.js.map} +1 -1
- package/dist/{Header-DwcRfQuP.cjs → Header-Cy_BQ2Ht.cjs} +2 -2
- package/dist/{Header-DwcRfQuP.cjs.map → Header-Cy_BQ2Ht.cjs.map} +1 -1
- package/dist/{Notice-D4zc_oTj.cjs → Notice-CjQQjfK7.cjs} +2 -2
- package/dist/{Notice-D4zc_oTj.cjs.map → Notice-CjQQjfK7.cjs.map} +1 -1
- package/dist/{Notice-D4gMAkVI.js → Notice-CmFkTliT.js} +2 -2
- package/dist/{Notice-D4gMAkVI.js.map → Notice-CmFkTliT.js.map} +1 -1
- package/dist/Txt-CuuPO9Ho.js +20 -0
- package/dist/Txt-CuuPO9Ho.js.map +1 -0
- package/dist/Txt-DFPibRb3.cjs +22 -0
- package/dist/Txt-DFPibRb3.cjs.map +1 -0
- package/dist/{activity-ClKZR5_o.cjs → activity-C3F5Z6U2.cjs} +2 -2
- package/dist/{activity-ClKZR5_o.cjs.map → activity-C3F5Z6U2.cjs.map} +1 -1
- package/dist/{activity-D0SefV4r.js → activity-CREOMVXI.js} +2 -2
- package/dist/{activity-D0SefV4r.js.map → activity-CREOMVXI.js.map} +1 -1
- package/dist/{ask-user-DBb0lUh2.cjs → ask-user-BR6s4GTF.cjs} +2 -2
- package/dist/{ask-user-DBb0lUh2.cjs.map → ask-user-BR6s4GTF.cjs.map} +1 -1
- package/dist/{ask-user-CqCUiZRR.js → ask-user-DAm06wBo.js} +2 -2
- package/dist/{ask-user-CqCUiZRR.js.map → ask-user-DAm06wBo.js.map} +1 -1
- package/dist/{attachment-card-BcK3XoCH.cjs → attachment-card-B95kgvBs.cjs} +2 -2
- package/dist/{attachment-card-BcK3XoCH.cjs.map → attachment-card-B95kgvBs.cjs.map} +1 -1
- package/dist/{attachment-card-CbsWWaV5.js → attachment-card-Q-77luib.js} +2 -2
- package/dist/{attachment-card-CbsWWaV5.js.map → attachment-card-Q-77luib.js.map} +1 -1
- package/dist/{code-C8akLzcu.js → code-DAXWNzvf.js} +2 -2
- package/dist/code-DAXWNzvf.js.map +1 -0
- package/dist/{code-D_sH618U.cjs → code-Dcah35Gp.cjs} +2 -2
- package/dist/code-Dcah35Gp.cjs.map +1 -0
- package/dist/{code-block-BMmilLti.js → code-block-Cug9dlAp.js} +4 -4
- package/dist/{code-block-BMmilLti.js.map → code-block-Cug9dlAp.js.map} +1 -1
- package/dist/{code-block-Ipm4Kqvc.cjs → code-block-CxN4T0Xw.cjs} +4 -4
- package/dist/{code-block-Ipm4Kqvc.cjs.map → code-block-CxN4T0Xw.cjs.map} +1 -1
- package/dist/{code-editor-Btr1qm_5.cjs → code-editor-GtjlBrBg.cjs} +9 -8
- package/dist/code-editor-GtjlBrBg.cjs.map +1 -0
- package/dist/{code-editor-DzhYz1fH.js → code-editor-zKwlle-5.js} +9 -8
- package/dist/code-editor-zKwlle-5.js.map +1 -0
- package/dist/{combobox-NPw0vrSa.js → combobox-Dwf4U1CZ.js} +2 -2
- package/dist/{combobox-NPw0vrSa.js.map → combobox-Dwf4U1CZ.js.map} +1 -1
- package/dist/{combobox-BaVFPQ6X.cjs → combobox-anmnqGB0.cjs} +2 -2
- package/dist/{combobox-BaVFPQ6X.cjs.map → combobox-anmnqGB0.cjs.map} +1 -1
- package/dist/{command-D9tAe7E8.cjs → command-CkiAUyOY.cjs} +4 -3
- package/dist/{command-D9tAe7E8.cjs.map → command-CkiAUyOY.cjs.map} +1 -1
- package/dist/{command-DEG5XcoY.js → command-NDEyxdvS.js} +4 -3
- package/dist/{command-DEG5XcoY.js.map → command-NDEyxdvS.js.map} +1 -1
- package/dist/{comment-B1Cf9w4Z.js → comment-CLSjQ6TN.js} +10 -10
- package/dist/comment-CLSjQ6TN.js.map +1 -0
- package/dist/{comment-DnbibTOe.cjs → comment-DNHjp35d.cjs} +10 -10
- package/dist/comment-DNHjp35d.cjs.map +1 -0
- package/dist/components/AttachmentCard.cjs.js +1 -1
- package/dist/components/AttachmentCard.es.js +1 -1
- package/dist/components/Avatar.cjs.js +1 -1
- package/dist/components/Avatar.es.js +1 -1
- package/dist/components/ClampedText.cjs.js +1 -1
- package/dist/components/ClampedText.es.js +1 -1
- package/dist/components/Code.cjs.js +1 -1
- package/dist/components/Code.es.js +1 -1
- package/dist/components/CodeBlock.cjs.js +1 -1
- package/dist/components/CodeBlock.es.js +1 -1
- package/dist/components/CodeEditor.cjs.js +1 -1
- package/dist/components/CodeEditor.es.js +1 -1
- package/dist/components/Combobox.cjs.js +1 -1
- package/dist/components/Combobox.es.js +1 -1
- package/dist/components/Command.cjs.js +1 -1
- package/dist/components/Command.es.js +1 -1
- package/dist/components/CommandPalette.cjs.js +2 -2
- package/dist/components/CommandPalette.es.js +2 -2
- package/dist/components/Comment.cjs.js +2 -2
- package/dist/components/Comment.es.js +3 -3
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataDetailsPanel.cjs.js +2 -2
- package/dist/components/DataDetailsPanel.es.js +2 -2
- package/dist/components/DataList.cjs.js +6 -5
- package/dist/components/DataList.cjs.js.map +1 -1
- package/dist/components/DataList.es.js +5 -5
- 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/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 +3 -2
- package/dist/components/Entity.cjs.js.map +1 -1
- package/dist/components/Entity.es.js +3 -2
- package/dist/components/Entity.es.js.map +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 +3 -3
- package/dist/components/EnvironmentVariablesEditor.es.js +3 -3
- package/dist/components/FileDropBackdrop.cjs.js +1 -1
- package/dist/components/FileDropBackdrop.es.js +1 -1
- package/dist/components/FilterBar.cjs.js +1 -1
- package/dist/components/FilterBar.es.js +1 -1
- package/dist/components/FormFieldBlocks.cjs.js +1 -1
- package/dist/components/FormFieldBlocks.es.js +1 -1
- 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/KeyValueList.cjs.js +1 -1
- package/dist/components/KeyValueList.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +2 -4
- package/dist/components/LogsDataList.cjs.js.map +1 -1
- package/dist/components/LogsDataList.es.js +2 -4
- 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/PropertyFilter.cjs.js +2 -2
- package/dist/components/PropertyFilter.es.js +2 -2
- package/dist/components/RuleBuilder.cjs.js +6 -6
- package/dist/components/RuleBuilder.cjs.js.map +1 -1
- package/dist/components/RuleBuilder.es.js +6 -6
- package/dist/components/RuleBuilder.es.js.map +1 -1
- package/dist/components/SavedViews.cjs.js +1 -1
- package/dist/components/SavedViews.es.js +1 -1
- package/dist/components/ScatterPlotChart.cjs.js +1 -1
- package/dist/components/ScatterPlotChart.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/SideDialog.cjs.js +1 -1
- package/dist/components/SideDialog.es.js +1 -1
- package/dist/components/Sidebar.cjs.js +1641 -0
- package/dist/components/Sidebar.cjs.js.map +1 -0
- package/dist/components/Sidebar.d.ts +2 -0
- package/dist/components/Sidebar.es.js +1615 -0
- package/dist/components/Sidebar.es.js.map +1 -0
- 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 +2 -2
- package/dist/components/Tabs.es.js +2 -2
- package/dist/components/Text.cjs.js +1 -1
- package/dist/components/Text.es.js +1 -1
- package/dist/components/ThinkingLevel.cjs.js +1 -1
- package/dist/components/ThinkingLevel.es.js +1 -1
- 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 +4 -4
- package/dist/components/TokenBudget.cjs.js.map +1 -1
- package/dist/components/TokenBudget.es.js +4 -4
- package/dist/components/TokenBudget.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 +5 -5
- package/dist/components/Workflow.es.js +5 -5
- 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-approval.cjs.js +2 -1
- package/dist/components/ai/tool-approval.cjs.js.map +1 -1
- package/dist/components/ai/tool-approval.es.js +1 -1
- package/dist/components/ai/tool-call.cjs.js +2 -2
- package/dist/components/ai/tool-call.es.js +2 -2
- package/dist/components/ai/transcript-divider.cjs.js +1 -1
- package/dist/components/ai/transcript-divider.es.js +1 -1
- package/dist/{data-code-section-B5kljGaH.cjs → data-code-section-BNQkWe4H.cjs} +2 -2
- package/dist/{data-code-section-B5kljGaH.cjs.map → data-code-section-BNQkWe4H.cjs.map} +1 -1
- package/dist/{data-code-section-CW9TU70O.js → data-code-section-CU2XLh4d.js} +2 -2
- package/dist/{data-code-section-CW9TU70O.js.map → data-code-section-CU2XLh4d.js.map} +1 -1
- package/dist/{data-list-BHtjZ528.js → data-list-B6DT-u-0.js} +21 -6
- package/dist/data-list-B6DT-u-0.js.map +1 -0
- package/dist/{data-list-TouUI4pb.cjs → data-list-DQgIgmjy.cjs} +20 -5
- package/dist/data-list-DQgIgmjy.cjs.map +1 -0
- package/dist/{data-list-skeleton-BqihjHu8.cjs → data-list-skeleton-DdWv6VN-.cjs} +10 -6
- package/dist/data-list-skeleton-DdWv6VN-.cjs.map +1 -0
- package/dist/{data-list-skeleton-H8Zpph6_.js → data-list-skeleton-DuK0aDVr.js} +10 -7
- package/dist/data-list-skeleton-DuK0aDVr.js.map +1 -0
- package/dist/{data-list-spacer-D7UBH1uv.js → data-list-spacer-C0tMRgfC.js} +2 -2
- package/dist/{data-list-spacer-D7UBH1uv.js.map → data-list-spacer-C0tMRgfC.js.map} +1 -1
- package/dist/{data-list-spacer-CtooAPJP.cjs → data-list-spacer-_GgQY2d4.cjs} +2 -2
- package/dist/{data-list-spacer-CtooAPJP.cjs.map → data-list-spacer-_GgQY2d4.cjs.map} +1 -1
- package/dist/{data-panel-B5flRCQM.js → data-panel-Bzed2B75.js} +3 -3
- package/dist/{data-panel-B5flRCQM.js.map → data-panel-Bzed2B75.js.map} +1 -1
- package/dist/{data-panel-Ckjs7Kwo.cjs → data-panel-b48tWgzs.cjs} +3 -3
- package/dist/{data-panel-Ckjs7Kwo.cjs.map → data-panel-b48tWgzs.cjs.map} +1 -1
- package/dist/{date-time-range-picker-DzPLKJol.js → date-time-range-picker-BqlAiuYW.js} +2 -2
- package/dist/{date-time-range-picker-DzPLKJol.js.map → date-time-range-picker-BqlAiuYW.js.map} +1 -1
- package/dist/{date-time-range-picker-BbX8F_LY.cjs → date-time-range-picker-CvzC4nOt.cjs} +2 -2
- package/dist/{date-time-range-picker-BbX8F_LY.cjs.map → date-time-range-picker-CvzC4nOt.cjs.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/attachments/attachment-preview-dialog.cjs.js +11 -11
- package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js.map +1 -1
- package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +11 -11
- package/dist/domains/chat/attachments/attachment-preview-dialog.es.js.map +1 -1
- package/dist/domains/chat/attachments/composer-attachment-context.cjs.js +10 -0
- package/dist/domains/chat/attachments/composer-attachment-context.cjs.js.map +1 -0
- package/dist/domains/chat/attachments/composer-attachment-context.d.ts +2 -0
- package/dist/domains/chat/attachments/composer-attachment-context.es.js +6 -0
- package/dist/domains/chat/attachments/composer-attachment-context.es.js.map +1 -0
- package/dist/domains/chat/attachments/composer-attachment-entry.cjs.js +35 -0
- package/dist/domains/chat/attachments/composer-attachment-entry.cjs.js.map +1 -0
- package/dist/domains/chat/attachments/composer-attachment-entry.d.ts +2 -0
- package/dist/domains/chat/attachments/composer-attachment-entry.es.js +31 -0
- package/dist/domains/chat/attachments/composer-attachment-entry.es.js.map +1 -0
- package/dist/domains/chat/attachments/composer-attachment-list.cjs.js +4 -3
- package/dist/domains/chat/attachments/composer-attachment-list.cjs.js.map +1 -1
- package/dist/domains/chat/attachments/composer-attachment-list.es.js +4 -3
- package/dist/domains/chat/attachments/composer-attachment-list.es.js.map +1 -1
- package/dist/domains/chat/attachments/composer-attachment.cjs.js +16 -19
- package/dist/domains/chat/attachments/composer-attachment.cjs.js.map +1 -1
- package/dist/domains/chat/attachments/composer-attachment.es.js +17 -20
- package/dist/domains/chat/attachments/composer-attachment.es.js.map +1 -1
- package/dist/domains/chat/attachments/message-attachment.cjs.js +1 -1
- package/dist/domains/chat/attachments/message-attachment.es.js +1 -1
- package/dist/domains/chat/attachments/message-image-attachment.cjs.js +1 -1
- package/dist/domains/chat/attachments/message-image-attachment.es.js +1 -1
- package/dist/domains/chat/components/badge-wrapper.cjs.js +4 -2
- package/dist/domains/chat/components/badge-wrapper.cjs.js.map +1 -1
- package/dist/domains/chat/components/badge-wrapper.es.js +4 -2
- package/dist/domains/chat/components/badge-wrapper.es.js.map +1 -1
- package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +4 -4
- package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js.map +1 -1
- package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +4 -4
- package/dist/domains/chat/components/network-choice-metadata-dialog.es.js.map +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/context/tool-call-context.cjs.js +4 -0
- package/dist/domains/chat/context/tool-call-context.cjs.js.map +1 -1
- package/dist/domains/chat/context/tool-call-context.es.js +4 -1
- package/dist/domains/chat/context/tool-call-context.es.js.map +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 +5 -4
- package/dist/domains/chat/messages/dataset-save-action.cjs.js.map +1 -1
- package/dist/domains/chat/messages/dataset-save-action.es.js +5 -4
- package/dist/domains/chat/messages/dataset-save-action.es.js.map +1 -1
- package/dist/domains/chat/messages/message-row.cjs.js +5 -5
- package/dist/domains/chat/messages/message-row.es.js +5 -5
- 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 +2 -2
- package/dist/domains/chat/messages/renderers/message-text.es.js +2 -2
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
- package/dist/domains/chat/messages/renderers/status-renderers.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/status-renderers.es.js +1 -1
- package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
- package/dist/domains/chat/messages/signal-badge.es.js +1 -1
- package/dist/domains/chat/messages/skill-message.cjs.js +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 +16 -8
- package/dist/domains/chat/messages/tripwire-notice.cjs.js.map +1 -1
- package/dist/domains/chat/messages/tripwire-notice.es.js +16 -8
- package/dist/domains/chat/messages/tripwire-notice.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.cjs.js +3 -4
- package/dist/domains/chat/tools/badges/agent-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.es.js +3 -4
- package/dist/domains/chat/tools/badges/agent-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/awaits-tool-approval.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/awaits-tool-approval.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +3 -3
- package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +3 -3
- package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +26 -33
- package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js +21 -28
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +16 -26
- package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/file-tree-badge.es.js +16 -26
- package/dist/domains/chat/tools/badges/file-tree-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +16 -10
- package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-details.es.js +16 -10
- package/dist/domains/chat/tools/badges/observation-marker-details.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +28 -16
- package/dist/domains/chat/tools/badges/observation-renderer.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.es.js +28 -16
- package/dist/domains/chat/tools/badges/observation-renderer.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +16 -26
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +16 -26
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +69 -0
- package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js.map +1 -0
- package/dist/domains/chat/tools/badges/{tool-approval-buttons.d.ts → tool-approval-badge.d.ts} +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +65 -0
- package/dist/domains/chat/tools/badges/tool-approval-badge.es.js.map +1 -0
- package/dist/domains/chat/tools/badges/tool-badge.cjs.js +21 -21
- package/dist/domains/chat/tools/badges/tool-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/tool-badge.es.js +21 -21
- package/dist/domains/chat/tools/badges/tool-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +13 -17
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/workflow-badge.es.js +13 -17
- package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +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/chat/tools/tool-card.cjs.js +1 -1
- package/dist/domains/chat/tools/tool-card.es.js +1 -1
- package/dist/domains/chat.cjs.js +1 -0
- package/dist/domains/chat.cjs.js.map +1 -1
- package/dist/domains/chat.es.js +1 -1
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +5 -4
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js.map +1 -1
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +5 -4
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js.map +1 -1
- 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 +2 -2
- package/dist/domains/logs/components/logs-list-view.es.js +2 -2
- 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/mcps/components/mcp-app-tool-result.cjs.js +2 -1
- package/dist/domains/mcps/components/mcp-app-tool-result.cjs.js.map +1 -1
- package/dist/domains/mcps/components/mcp-app-tool-result.es.js +2 -1
- package/dist/domains/mcps/components/mcp-app-tool-result.es.js.map +1 -1
- package/dist/domains/memory/components/flame-graph.cjs.js +7 -7
- package/dist/domains/memory/components/flame-graph.cjs.js.map +1 -1
- package/dist/domains/memory/components/flame-graph.es.js +7 -7
- package/dist/domains/memory/components/flame-graph.es.js.map +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 +7 -6
- package/dist/domains/memory/components/observation-detail-view.cjs.js.map +1 -1
- package/dist/domains/memory/components/observation-detail-view.es.js +7 -6
- package/dist/domains/memory/components/observation-detail-view.es.js.map +1 -1
- package/dist/domains/memory/components/thread-context-progress.cjs.js +4 -3
- package/dist/domains/memory/components/thread-context-progress.cjs.js.map +1 -1
- package/dist/domains/memory/components/thread-context-progress.es.js +4 -3
- package/dist/domains/memory/components/thread-context-progress.es.js.map +1 -1
- 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 +5 -5
- package/dist/domains/metrics/components/latency-card-view.es.js +5 -5
- package/dist/domains/metrics/components/memory-card-view.cjs.js +4 -4
- package/dist/domains/metrics/components/memory-card-view.es.js +4 -4
- package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +2 -2
- package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +2 -2
- package/dist/domains/metrics/components/scores-card-view.cjs.js +5 -5
- package/dist/domains/metrics/components/scores-card-view.es.js +5 -5
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +4 -4
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +4 -4
- package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +5 -5
- package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +5 -5
- package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +4 -4
- package/dist/domains/metrics/components/traces-volume-card-view.es.js +4 -4
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +7 -6
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js.map +1 -1
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +7 -6
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js.map +1 -1
- 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/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 +17 -6
- package/dist/domains/scores/components/score-data-panel.cjs.js.map +1 -1
- package/dist/domains/scores/components/score-data-panel.es.js +17 -6
- package/dist/domains/scores/components/score-data-panel.es.js.map +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 -6
- package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
- package/dist/domains/scores/components/trace-scores-tab.es.js +5 -6
- package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
- package/dist/domains/traces/components/feedback-thread.cjs.js +3 -3
- package/dist/domains/traces/components/feedback-thread.es.js +3 -3
- 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 +7 -5
- 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 +7 -5
- package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/span-details-view.cjs.js +3 -1
- package/dist/domains/traces/components/span-details-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-details-view.es.js +3 -1
- package/dist/domains/traces/components/span-details-view.es.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +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 +5 -4
- package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +5 -4
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +4 -3
- package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-json.es.js +4 -3
- package/dist/domains/traces/components/span-payload/span-payload-json.es.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +3 -2
- package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +3 -2
- package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-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 +5 -5
- package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +5 -5
- package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js.map +1 -1
- package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/span-summary-description.es.js +1 -1
- package/dist/domains/traces/components/span-timeline-row.cjs.js +11 -8
- package/dist/domains/traces/components/span-timeline-row.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-timeline-row.es.js +11 -8
- package/dist/domains/traces/components/span-timeline-row.es.js.map +1 -1
- package/dist/domains/traces/components/span-timing-hover-card.cjs.js +2 -1
- package/dist/domains/traces/components/span-timing-hover-card.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-timing-hover-card.es.js +2 -1
- package/dist/domains/traces/components/span-timing-hover-card.es.js.map +1 -1
- package/dist/domains/traces/components/span-token-usage.cjs.js +1 -1
- package/dist/domains/traces/components/span-token-usage.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +2 -2
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +2 -2
- package/dist/domains/traces/components/thread-trace/thread-trace-root.cjs.js +1 -10
- 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 +1 -10
- 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 +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js +1 -1
- package/dist/domains/traces/components/thread-view-by-trace.cjs.js +1 -1
- package/dist/domains/traces/components/thread-view-by-trace.es.js +1 -1
- package/dist/domains/traces/components/timeline-name-col.cjs.js +11 -7
- package/dist/domains/traces/components/timeline-name-col.cjs.js.map +1 -1
- package/dist/domains/traces/components/timeline-name-col.es.js +11 -7
- package/dist/domains/traces/components/timeline-name-col.es.js.map +1 -1
- package/dist/domains/traces/components/timeline-timing-col.cjs.js +4 -4
- package/dist/domains/traces/components/timeline-timing-col.cjs.js.map +1 -1
- package/dist/domains/traces/components/timeline-timing-col.es.js +4 -4
- package/dist/domains/traces/components/timeline-timing-col.es.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +2 -2
- package/dist/domains/traces/components/trace-columns-menu.es.js +2 -2
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +11 -5
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.es.js +11 -5
- package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel.cjs.js +1 -1
- package/dist/domains/traces/components/trace-data-panel.es.js +1 -1
- package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
- package/dist/domains/traces/components/trace-id-button.es.js +1 -1
- package/dist/domains/traces/components/trace-span-panel.cjs.js +2 -0
- package/dist/domains/traces/components/trace-span-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-span-panel.es.js +2 -0
- package/dist/domains/traces/components/trace-span-panel.es.js.map +1 -1
- package/dist/domains/traces/components/trace-span-timeline.cjs.js +6 -2
- package/dist/domains/traces/components/trace-span-timeline.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-span-timeline.es.js +6 -2
- package/dist/domains/traces/components/trace-span-timeline.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 +1 -1
- package/dist/domains/traces/components/trace-thread-item-view.es.js +1 -1
- package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
- package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.es.js +1 -1
- 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 +6 -15
- package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.es.js +8 -17
- package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js +1 -3
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js +1 -3
- package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-url-state.cjs.js +2 -9
- package/dist/domains/traces/hooks/use-trace-url-state.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-url-state.es.js +2 -9
- package/dist/domains/traces/hooks/use-trace-url-state.es.js.map +1 -1
- package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
- package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
- package/dist/domains/workflows/components/workflow-entity-header.cjs.js +1 -1
- package/dist/domains/workflows/components/workflow-entity-header.es.js +1 -1
- package/dist/domains/workflows/components/workflow-step-detail.cjs.js +4 -4
- package/dist/domains/workflows/components/workflow-step-detail.es.js +4 -4
- 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 +5 -5
- package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js.map +1 -1
- package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +5 -5
- package/dist/domains/workflows/components/workflows-list/workflows-list.es.js.map +1 -1
- 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 +13 -3
- package/dist/domains/workflows/runs/workflow-run-list.cjs.js.map +1 -1
- package/dist/domains/workflows/runs/workflow-run-list.es.js +13 -3
- package/dist/domains/workflows/runs/workflow-run-list.es.js.map +1 -1
- package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
- package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
- package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +2 -2
- package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +2 -2
- package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -1
- package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +1 -1
- package/dist/domains/workflows/workflow/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-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 +10 -3
- package/dist/domains/workflows/workflow/workflow-graph-boundary.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +10 -3
- package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-graph-node.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +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-map-config-dialog.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +3 -3
- package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +3 -3
- package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +4 -4
- package/dist/domains/workflows/workflow/workflow-run-data.es.js +4 -4
- 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 +2 -2
- package/dist/domains/workflows/workflow/workflow-run-header.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-run-header.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-run-header.es.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-status.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-status.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-step-action-bar.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 +7 -6
- package/dist/domains/workflows/workflow/workflow-timeline-row.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-timeline-row.es.js +7 -6
- package/dist/domains/workflows/workflow/workflow-timeline-row.es.js.map +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 +1 -1
- package/dist/domains/workflows/workflow/workflow-trigger-header.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-trigger.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-trigger.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-trigger.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-trigger.es.js.map +1 -1
- package/dist/domains/workspace/components/workspace-active-file.cjs.js +2 -2
- package/dist/domains/workspace/components/workspace-active-file.es.js +2 -2
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +18 -13
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js.map +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +18 -13
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js.map +1 -1
- package/dist/domains/workspace/components/workspace-error.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-error.es.js +1 -1
- package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +2 -2
- package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
- package/dist/domains/workspace/components/workspace-parts.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-parts.es.js +1 -1
- package/dist/domains/workspace/components/workspace-search.cjs.js +6 -5
- package/dist/domains/workspace/components/workspace-search.cjs.js.map +1 -1
- package/dist/domains/workspace/components/workspace-search.es.js +6 -5
- package/dist/domains/workspace/components/workspace-search.es.js.map +1 -1
- package/dist/domains/workspace/components/workspace-tree.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-tree.es.js +1 -1
- package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +8 -7
- package/dist/ee/signals/components/entity-index-compact-grid.cjs.js.map +1 -1
- package/dist/ee/signals/components/entity-index-compact-grid.es.js +8 -7
- package/dist/ee/signals/components/entity-index-compact-grid.es.js.map +1 -1
- package/dist/ee/signals/components/entity-index-list.cjs.js +1 -3
- package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +1 -3
- package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
- package/dist/ee/signals/components/signals-empty-state.cjs.js +21 -23
- package/dist/ee/signals/components/signals-empty-state.cjs.js.map +1 -1
- package/dist/ee/signals/components/signals-empty-state.es.js +21 -23
- package/dist/ee/signals/components/signals-empty-state.es.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +2 -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 +2 -3
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
- package/dist/ee/signals/examples-pager.cjs.js +2 -2
- package/dist/ee/signals/examples-pager.cjs.js.map +1 -1
- package/dist/ee/signals/examples-pager.es.js +2 -2
- package/dist/ee/signals/examples-pager.es.js.map +1 -1
- package/dist/ee/signals/flow-card.cjs.js +7 -16
- package/dist/ee/signals/flow-card.cjs.js.map +1 -1
- package/dist/ee/signals/flow-card.es.js +7 -16
- package/dist/ee/signals/flow-card.es.js.map +1 -1
- package/dist/ee/signals/lifeline-point.cjs.js +1 -1
- package/dist/ee/signals/lifeline-point.cjs.js.map +1 -1
- package/dist/ee/signals/lifeline-point.es.js +1 -1
- package/dist/ee/signals/lifeline-point.es.js.map +1 -1
- package/dist/ee/signals/lifeline-row.cjs.js +2 -2
- package/dist/ee/signals/lifeline-row.cjs.js.map +1 -1
- package/dist/ee/signals/lifeline-row.es.js +2 -2
- package/dist/ee/signals/lifeline-row.es.js.map +1 -1
- package/dist/ee/signals/noise-detail-panel.cjs.js +8 -29
- package/dist/ee/signals/noise-detail-panel.cjs.js.map +1 -1
- package/dist/ee/signals/noise-detail-panel.es.js +8 -29
- package/dist/ee/signals/noise-detail-panel.es.js.map +1 -1
- package/dist/ee/signals/sankey-signals.cjs.js +4 -4
- package/dist/ee/signals/sankey-signals.cjs.js.map +1 -1
- package/dist/ee/signals/sankey-signals.es.js +4 -4
- package/dist/ee/signals/sankey-signals.es.js.map +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +2 -2
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +2 -2
- package/dist/ee/signals/settings/trace-signal-settings.cjs.js +5 -5
- package/dist/ee/signals/settings/trace-signal-settings.cjs.js.map +1 -1
- package/dist/ee/signals/settings/trace-signal-settings.es.js +5 -5
- package/dist/ee/signals/settings/trace-signal-settings.es.js.map +1 -1
- package/dist/ee/signals/signal-delta-column.cjs.js +5 -7
- package/dist/ee/signals/signal-delta-column.cjs.js.map +1 -1
- package/dist/ee/signals/signal-delta-column.es.js +5 -7
- package/dist/ee/signals/signal-delta-column.es.js.map +1 -1
- package/dist/ee/signals/signal-lifelines.cjs.js +3 -3
- package/dist/ee/signals/signal-lifelines.cjs.js.map +1 -1
- package/dist/ee/signals/signal-lifelines.es.js +3 -3
- package/dist/ee/signals/signal-lifelines.es.js.map +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 +2 -3
- package/dist/ee/signals/snapshot-timeline.cjs.js.map +1 -1
- package/dist/ee/signals/snapshot-timeline.es.js +2 -3
- package/dist/ee/signals/snapshot-timeline.es.js.map +1 -1
- package/dist/ee/signals/sortable-signal-headers.cjs.js +3 -1
- package/dist/ee/signals/sortable-signal-headers.cjs.js.map +1 -1
- package/dist/ee/signals/sortable-signal-headers.es.js +3 -1
- package/dist/ee/signals/sortable-signal-headers.es.js.map +1 -1
- package/dist/ee/signals/theme-compare.cjs.js +1 -3
- package/dist/ee/signals/theme-compare.cjs.js.map +1 -1
- package/dist/ee/signals/theme-compare.es.js +1 -3
- package/dist/ee/signals/theme-compare.es.js.map +1 -1
- package/dist/ee/signals/theme-detail-panel.cjs.js +9 -43
- package/dist/ee/signals/theme-detail-panel.cjs.js.map +1 -1
- package/dist/ee/signals/theme-detail-panel.es.js +9 -43
- package/dist/ee/signals/theme-detail-panel.es.js.map +1 -1
- package/dist/ee/signals/theme-filter-banner.cjs.js +4 -4
- package/dist/ee/signals/theme-filter-banner.cjs.js.map +1 -1
- package/dist/ee/signals/theme-filter-banner.es.js +4 -4
- package/dist/ee/signals/theme-filter-banner.es.js.map +1 -1
- package/dist/ee/signals/theme-lifelines.cjs.js +2 -2
- package/dist/ee/signals/theme-lifelines.cjs.js.map +1 -1
- package/dist/ee/signals/theme-lifelines.es.js +2 -2
- package/dist/ee/signals/theme-lifelines.es.js.map +1 -1
- package/dist/ee/signals/theme-trend-chart.cjs.js +4 -3
- package/dist/ee/signals/theme-trend-chart.cjs.js.map +1 -1
- package/dist/ee/signals/theme-trend-chart.es.js +4 -3
- package/dist/ee/signals/theme-trend-chart.es.js.map +1 -1
- package/dist/ee/signals/trace-insight-view.cjs.js +15 -37
- package/dist/ee/signals/trace-insight-view.cjs.js.map +1 -1
- package/dist/ee/signals/trace-insight-view.es.js +15 -37
- package/dist/ee/signals/trace-insight-view.es.js.map +1 -1
- package/dist/ee/signals/trace-intelligence-explainer.cjs.js +3 -4
- package/dist/ee/signals/trace-intelligence-explainer.cjs.js.map +1 -1
- package/dist/ee/signals/trace-intelligence-explainer.es.js +3 -4
- package/dist/ee/signals/trace-intelligence-explainer.es.js.map +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-summary-list.cjs.js +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +1 -1
- package/dist/{entity-header-By57lpH8.cjs → entity-header-DB1p5sEk.cjs} +2 -2
- package/dist/{entity-header-By57lpH8.cjs.map → entity-header-DB1p5sEk.cjs.map} +1 -1
- package/dist/{entity-header-DMjzE4Za.js → entity-header-GQT7ZnzW.js} +2 -2
- package/dist/{entity-header-DMjzE4Za.js.map → entity-header-GQT7ZnzW.js.map} +1 -1
- package/dist/{field-error-id-CSvLKtJE.js → field-error-id-B6AEO4lS.js} +2 -2
- package/dist/{field-error-id-CSvLKtJE.js.map → field-error-id-B6AEO4lS.js.map} +1 -1
- package/dist/{field-error-id-4xiCVBJ_.cjs → field-error-id-CFlRpKIz.cjs} +2 -2
- package/dist/{field-error-id-4xiCVBJ_.cjs.map → field-error-id-CFlRpKIz.cjs.map} +1 -1
- package/dist/hooks/use-fluid-hover.cjs.js +44 -30
- package/dist/hooks/use-fluid-hover.cjs.js.map +1 -1
- package/dist/hooks/use-fluid-hover.es.js +44 -31
- package/dist/hooks/use-fluid-hover.es.js.map +1 -1
- package/dist/hooks/use-is-mobile.cjs.js.map +1 -1
- package/dist/hooks/use-is-mobile.es.js.map +1 -1
- package/dist/{horizontal-bars-BdQnhZ5Y.cjs → horizontal-bars-BhYULTsx.cjs} +2 -2
- package/dist/{horizontal-bars-BdQnhZ5Y.cjs.map → horizontal-bars-BhYULTsx.cjs.map} +1 -1
- package/dist/{horizontal-bars-DHX7208F.js → horizontal-bars-ibfbdoX9.js} +2 -2
- package/dist/{horizontal-bars-DHX7208F.js.map → horizontal-bars-ibfbdoX9.js.map} +1 -1
- package/dist/layout/tabbed-container.cjs.js +5 -5
- package/dist/layout/tabbed-container.es.js +5 -5
- 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/error-message.cjs.js +1 -1
- package/dist/lib/form/components/error-message.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/union-field.cjs.js +1 -1
- package/dist/lib/form/components/union-field.es.js +1 -1
- package/dist/{logs-data-list-MakOZmBm.cjs → logs-data-list-CMbvhzUW.cjs} +3 -3
- package/dist/{logs-data-list-MakOZmBm.cjs.map → logs-data-list-CMbvhzUW.cjs.map} +1 -1
- package/dist/{logs-data-list-CdLNnsJm.js → logs-data-list-YNXUjGIB.js} +3 -3
- package/dist/{logs-data-list-CdLNnsJm.js.map → logs-data-list-YNXUjGIB.js.map} +1 -1
- package/dist/{markdown-renderer-BCeiKCA4.cjs → markdown-renderer-4P5RZjlT.cjs} +2 -2
- package/dist/{markdown-renderer-BCeiKCA4.cjs.map → markdown-renderer-4P5RZjlT.cjs.map} +1 -1
- package/dist/{markdown-renderer-CKSEkKch.js → markdown-renderer-DR6SJPyB.js} +2 -2
- package/dist/{markdown-renderer-CKSEkKch.js.map → markdown-renderer-DR6SJPyB.js.map} +1 -1
- package/dist/{message-DGYBEr0X.js → message-16E_OfJr.js} +2 -2
- package/dist/{message-DGYBEr0X.js.map → message-16E_OfJr.js.map} +1 -1
- package/dist/{message-BSjrZWVU.cjs → message-La-BSpBC.cjs} +2 -2
- package/dist/{message-BSjrZWVU.cjs.map → message-La-BSpBC.cjs.map} +1 -1
- package/dist/{metrics-card-B9m1jHwk.cjs → metrics-card-CF0TvQ6M.cjs} +3 -3
- package/dist/{metrics-card-B9m1jHwk.cjs.map → metrics-card-CF0TvQ6M.cjs.map} +1 -1
- package/dist/{metrics-card-BcKVznFk.js → metrics-card-COZt0cRK.js} +3 -3
- package/dist/{metrics-card-BcKVznFk.js.map → metrics-card-COZt0cRK.js.map} +1 -1
- package/dist/{metrics-kpi-card-CLlu5you.cjs → metrics-kpi-card-DU96jUI0.cjs} +2 -2
- package/dist/{metrics-kpi-card-CLlu5you.cjs.map → metrics-kpi-card-DU96jUI0.cjs.map} +1 -1
- package/dist/{metrics-kpi-card-CDeJ3I1-.js → metrics-kpi-card-PJWplcOg.js} +2 -2
- package/dist/{metrics-kpi-card-CDeJ3I1-.js.map → metrics-kpi-card-PJWplcOg.js.map} +1 -1
- package/dist/{metrics-line-chart-R-T_jyeP.cjs → metrics-line-chart-BofHRush.cjs} +2 -2
- package/dist/{metrics-line-chart-R-T_jyeP.cjs.map → metrics-line-chart-BofHRush.cjs.map} +1 -1
- package/dist/{metrics-line-chart-C9_EMuHK.js → metrics-line-chart-C7i--w_F.js} +2 -2
- package/dist/{metrics-line-chart-C9_EMuHK.js.map → metrics-line-chart-C7i--w_F.js.map} +1 -1
- package/dist/{metrics-line-chart-tooltip-BoG8nbkO.cjs → metrics-line-chart-tooltip-BXRdTzZX.cjs} +2 -2
- package/dist/{metrics-line-chart-tooltip-BoG8nbkO.cjs.map → metrics-line-chart-tooltip-BXRdTzZX.cjs.map} +1 -1
- package/dist/{metrics-line-chart-tooltip-C3WAk3DN.js → metrics-line-chart-tooltip-qXjxMRkc.js} +2 -2
- package/dist/{metrics-line-chart-tooltip-C3WAk3DN.js.map → metrics-line-chart-tooltip-qXjxMRkc.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 +1 -1
- package/dist/new/settings.es.js +1 -1
- package/dist/{notification-activity-BDoleJAA.js → notification-activity-DEzmrUfo.js} +3 -3
- package/dist/{notification-activity-BDoleJAA.js.map → notification-activity-DEzmrUfo.js.map} +1 -1
- package/dist/{notification-activity-C_vZiswj.cjs → notification-activity-DermuFT1.cjs} +3 -3
- package/dist/{notification-activity-C_vZiswj.cjs.map → notification-activity-DermuFT1.cjs.map} +1 -1
- package/dist/{page-header-Dc2KSbnw.cjs → page-header-CLcX--H8.cjs} +14 -14
- package/dist/page-header-CLcX--H8.cjs.map +1 -0
- package/dist/{page-header-D5a7qrVc.js → page-header-pWZXI3lO.js} +14 -14
- package/dist/page-header-pWZXI3lO.js.map +1 -0
- package/dist/{plan-4Udllcyn.cjs → plan-BQh1M96H.cjs} +3 -3
- package/dist/plan-BQh1M96H.cjs.map +1 -0
- package/dist/{plan-CZxw-Q5D.js → plan-cSkdE2Fd.js} +3 -3
- package/dist/plan-cSkdE2Fd.js.map +1 -0
- package/dist/{Txt-DNnvlrBo.cjs → primitives/text.cjs.js} +15 -10
- package/dist/primitives/text.cjs.js.map +1 -0
- package/dist/primitives/text.d.ts +2 -0
- package/dist/{Txt-C3cYJgKU.js → primitives/text.es.js} +13 -10
- package/dist/primitives/text.es.js.map +1 -0
- package/dist/{reasoning-activity-Du19QVGl.js → reasoning-activity-CS-aUa1E.js} +3 -3
- package/dist/{reasoning-activity-Du19QVGl.js.map → reasoning-activity-CS-aUa1E.js.map} +1 -1
- package/dist/{reasoning-activity-Bux9ZUhr.cjs → reasoning-activity-Cfelxr49.cjs} +3 -3
- package/dist/{reasoning-activity-Bux9ZUhr.cjs.map → reasoning-activity-Cfelxr49.cjs.map} +1 -1
- package/dist/{section-C5r-Mtxk.cjs → section-BvTlcV3N.cjs} +2 -2
- package/dist/{section-C5r-Mtxk.cjs.map → section-BvTlcV3N.cjs.map} +1 -1
- package/dist/{section-DYrbH35K.js → section-BvkW-glM.js} +2 -2
- package/dist/{section-DYrbH35K.js.map → section-BvkW-glM.js.map} +1 -1
- package/dist/{side-dialog-yvAvCday.js → side-dialog-BMrmb8Fz.js} +2 -2
- package/dist/{side-dialog-yvAvCday.js.map → side-dialog-BMrmb8Fz.js.map} +1 -1
- package/dist/{side-dialog-CFTgnDXu.cjs → side-dialog-BsMzNpHT.cjs} +2 -2
- package/dist/{side-dialog-CFTgnDXu.cjs.map → side-dialog-BsMzNpHT.cjs.map} +1 -1
- package/dist/{signal-activity-BI-DRdjw.cjs → signal-activity-D4vzi2cB.cjs} +3 -3
- package/dist/{signal-activity-BI-DRdjw.cjs.map → signal-activity-D4vzi2cB.cjs.map} +1 -1
- package/dist/{signal-activity-_ChAbNsW.js → signal-activity-DaC48fkM.js} +3 -3
- package/dist/{signal-activity-_ChAbNsW.js.map → signal-activity-DaC48fkM.js.map} +1 -1
- package/dist/{span-payload-primitives-XWZOfAi-.js → span-payload-primitives-Cniig-k4.js} +7 -6
- package/dist/span-payload-primitives-Cniig-k4.js.map +1 -0
- package/dist/{span-payload-primitives-0b_ow5Rt.cjs → span-payload-primitives-DIyQNNw0.cjs} +7 -6
- package/dist/span-payload-primitives-DIyQNNw0.cjs.map +1 -0
- package/dist/src/domains/chat/attachments/composer-attachment-context.d.ts +1 -0
- package/dist/src/domains/chat/attachments/composer-attachment-entry.d.ts +7 -0
- package/dist/src/domains/chat/attachments/composer-attachment.d.ts +1 -0
- package/dist/src/domains/chat/components/badge-wrapper.d.ts +5 -2
- package/dist/src/domains/chat/context/tool-call-context.d.ts +1 -0
- package/dist/src/domains/chat/stories/composer-attachments.stories.d.ts +3 -0
- package/dist/src/domains/chat/tools/badges/agent-badge-wrapper.d.ts +2 -2
- package/dist/src/domains/chat/tools/badges/agent-badge.d.ts +2 -2
- package/dist/src/domains/chat/tools/badges/awaits-tool-approval.d.ts +2 -2
- package/dist/src/domains/chat/tools/badges/code-mode-badge.d.ts +2 -2
- package/dist/src/domains/chat/tools/badges/file-tree-badge.d.ts +2 -2
- package/dist/src/domains/chat/tools/badges/sandbox-execution-badge.d.ts +2 -2
- package/dist/src/domains/chat/tools/badges/tool-approval-badge.d.ts +19 -0
- package/dist/src/domains/chat/tools/badges/tool-badge.d.ts +2 -2
- package/dist/src/domains/chat/tools/badges/workflow-badge.d.ts +2 -2
- package/dist/src/domains/traces/components/trace-data-panel-view.d.ts +3 -1
- package/dist/src/domains/traces/components/trace-data-panel-view.stories.d.ts +1 -0
- package/dist/src/domains/traces/components/trace-span-panel.d.ts +3 -1
- package/dist/src/ds/components/CodeEditor/code-editor.d.ts +6 -1
- package/dist/src/ds/components/CodeEditor/code-editor.stories.d.ts +1 -0
- package/dist/src/ds/components/Composer/composer.stories.d.ts +0 -1
- package/dist/src/ds/components/DataList/data-list-group.d.ts +4 -0
- package/dist/src/ds/components/DataList/data-list-skeleton.d.ts +9 -0
- package/dist/src/ds/components/DataList/data-list.d.ts +1 -0
- package/dist/src/ds/components/DataList/data-list.stories.d.ts +1 -0
- package/dist/src/ds/components/Sidebar/footer/sidebar-footer-meta.d.ts +7 -0
- package/dist/src/ds/components/Sidebar/footer/sidebar-footer.d.ts +3 -0
- package/dist/src/ds/components/Sidebar/footer/sidebar-meter.d.ts +24 -0
- package/dist/src/ds/components/Sidebar/header/sidebar-brand.d.ts +6 -0
- package/dist/src/ds/components/Sidebar/header/sidebar-command-header.d.ts +3 -0
- package/dist/src/ds/components/Sidebar/header/sidebar-header.d.ts +6 -0
- package/dist/src/ds/components/Sidebar/header/sidebar-search-trigger.d.ts +7 -0
- package/dist/src/ds/components/Sidebar/index.d.ts +20 -0
- package/dist/src/ds/components/{MainSidebar/main-sidebar-link-active.d.ts → Sidebar/nav/sidebar-link-active.d.ts} +2 -2
- package/dist/src/ds/components/Sidebar/nav/sidebar-nav-header.d.ts +13 -0
- package/dist/src/ds/components/{MainSidebar/main-sidebar-nav-item-classes.d.ts → Sidebar/nav/sidebar-nav-item-classes.d.ts} +2 -2
- package/dist/src/ds/components/{MainSidebar/main-sidebar-nav-label.d.ts → Sidebar/nav/sidebar-nav-label.d.ts} +4 -4
- package/dist/src/ds/components/{MainSidebar/main-sidebar-nav-link.d.ts → Sidebar/nav/sidebar-nav-link.d.ts} +9 -9
- package/dist/src/ds/components/Sidebar/nav/sidebar-nav-list.d.ts +3 -0
- package/dist/src/ds/components/Sidebar/nav/sidebar-nav-section.d.ts +3 -0
- package/dist/src/ds/components/Sidebar/nav/sidebar-nav-separator.d.ts +3 -0
- package/dist/src/ds/components/Sidebar/nav/sidebar-nav.d.ts +3 -0
- package/dist/src/ds/components/Sidebar/nav-stack/sidebar-nav-stack-context.d.ts +8 -0
- package/dist/src/ds/components/Sidebar/nav-stack/sidebar-nav-stack-page-classes.d.ts +1 -0
- package/dist/src/ds/components/Sidebar/nav-stack/sidebar-nav-stack-root-view.d.ts +3 -0
- package/dist/src/ds/components/Sidebar/nav-stack/sidebar-nav-stack-root.d.ts +7 -0
- package/dist/src/ds/components/Sidebar/nav-stack/sidebar-nav-stack-view.d.ts +9 -0
- package/dist/src/ds/components/Sidebar/nav-stack/sidebar-nav-stack.d.ts +10 -0
- package/dist/src/ds/components/{MainSidebar/main-sidebar-context.d.ts → Sidebar/root/sidebar-context.d.ts} +7 -7
- package/dist/src/ds/components/Sidebar/root/sidebar-mobile-trigger.d.ts +5 -0
- package/dist/src/ds/components/Sidebar/root/sidebar-panel.d.ts +6 -0
- package/dist/src/ds/components/{MainSidebar/main-sidebar-provider.d.ts → Sidebar/root/sidebar-provider.d.ts} +5 -5
- package/dist/src/ds/components/Sidebar/root/sidebar-root.d.ts +6 -0
- package/dist/src/ds/components/Sidebar/root/sidebar-trigger.d.ts +3 -0
- package/dist/src/ds/components/Sidebar/sections/sidebar-customize-dialog.d.ts +12 -0
- package/dist/src/ds/components/Sidebar/sections/sidebar-more-links.d.ts +11 -0
- package/dist/src/ds/components/Sidebar/sections/sidebar-optional-link.d.ts +11 -0
- package/dist/src/ds/components/Sidebar/sections/sidebar-section-link.d.ts +9 -0
- package/dist/src/ds/components/Sidebar/sections/sidebar-sections-content.d.ts +4 -0
- package/dist/src/ds/components/Sidebar/sections/sidebar-sections.d.ts +18 -0
- package/dist/src/ds/components/Sidebar/sections/sidebar-visibility.d.ts +19 -0
- package/dist/src/ds/components/{MainSidebar/main-sidebar.stories.d.ts → Sidebar/sidebar-layout.stories.d.ts} +4 -4
- package/dist/src/ds/components/Sidebar/sidebar.d.ts +43 -0
- package/dist/src/ds/{new/sidebar/sidebar-new.stories.d.ts → components/Sidebar/sidebar.stories.d.ts} +3 -3
- package/dist/src/ds/components/Tabs/tabs-list.d.ts +1 -0
- package/dist/src/ds/components/Tabs/tabs.stories.d.ts +6 -0
- package/dist/src/ds/components/Txt/Txt.d.ts +12 -20
- package/dist/src/ds/components/Txt/txt.stories.d.ts +2 -0
- package/dist/src/ds/components/ai/plan/plan.d.ts +2 -2
- package/dist/src/ds/components/ai/tool-approval/index.d.ts +2 -2
- package/dist/src/ds/components/ai/tool-approval/tool-approval.d.ts +11 -4
- package/dist/src/ds/components/ai/tool-approval/tool-approval.stories.d.ts +17 -3
- package/dist/src/ds/components/ai/tool-call/tool-call-arguments.d.ts +2 -1
- package/dist/src/ds/components/ai/tool-call/tool-call-edit.d.ts +2 -1
- package/dist/src/ds/primitives/control-sizes.stories.d.ts +10 -0
- package/dist/src/ds/primitives/text.d.ts +19 -0
- package/dist/src/ds/tokens/fonts.d.ts +1 -1
- package/dist/src/ee/signals/components/signals-empty-state.stories.d.ts +12 -0
- package/dist/src/hooks/use-fluid-hover.d.ts +5 -1
- package/dist/style.css +100 -91
- package/dist/{tabs-list-Tqj36HIL.cjs → tabs-list-BeWntzEw.cjs} +17 -3
- package/dist/tabs-list-BeWntzEw.cjs.map +1 -0
- package/dist/{tabs-list-tLx5fgP0.js → tabs-list-DoSX2xLL.js} +17 -3
- package/dist/tabs-list-DoSX2xLL.js.map +1 -0
- package/dist/tabs-root.css +2 -2
- package/dist/{tabs-tab-ClLIOGiC.js → tabs-tab-BI3hb-HP.js} +3 -4
- package/dist/tabs-tab-BI3hb-HP.js.map +1 -0
- package/dist/{tabs-tab-C-C2vX-D.cjs → tabs-tab-DhLs9bO0.cjs} +3 -4
- package/dist/tabs-tab-DhLs9bO0.cjs.map +1 -0
- package/dist/{text-and-icon-Bo6NLLBl.js → text-and-icon-CsBZ4Gn8.js} +2 -2
- package/dist/{text-and-icon-Bo6NLLBl.js.map → text-and-icon-CsBZ4Gn8.js.map} +1 -1
- package/dist/{text-and-icon-CvakH4YL.cjs → text-and-icon-DB9klVPu.cjs} +2 -2
- package/dist/{text-and-icon-CvakH4YL.cjs.map → text-and-icon-DB9klVPu.cjs.map} +1 -1
- package/dist/{thread-list-DKBwiGfX.cjs → thread-list-BbOI-tHs.cjs} +2 -2
- package/dist/{thread-list-DKBwiGfX.cjs.map → thread-list-BbOI-tHs.cjs.map} +1 -1
- package/dist/{thread-list-D2zSEQWK.js → thread-list-BhqOe2iu.js} +2 -2
- package/dist/{thread-list-D2zSEQWK.js.map → thread-list-BhqOe2iu.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-approval-B0DJ3coA.js +71 -0
- package/dist/tool-approval-B0DJ3coA.js.map +1 -0
- package/dist/tool-approval-jNN6UeC7.cjs +75 -0
- package/dist/tool-approval-jNN6UeC7.cjs.map +1 -0
- package/dist/{tool-call-arguments-DEXKbR8d.cjs → tool-call-arguments-Bud9On3h.cjs} +15 -11
- package/dist/tool-call-arguments-Bud9On3h.cjs.map +1 -0
- package/dist/{tool-call-arguments-CufA6H_n.js → tool-call-arguments-DzdVtN4f.js} +15 -11
- package/dist/tool-call-arguments-DzdVtN4f.js.map +1 -0
- package/dist/{tool-call-group-DKCarGYB.js → tool-call-group-Bg9Rg05T.js} +3 -3
- package/dist/{tool-call-group-DKCarGYB.js.map → tool-call-group-Bg9Rg05T.js.map} +1 -1
- package/dist/{tool-call-group-GBF6eQAK.cjs → tool-call-group-xOLcTzb_.cjs} +3 -3
- package/dist/{tool-call-group-GBF6eQAK.cjs.map → tool-call-group-xOLcTzb_.cjs.map} +1 -1
- package/dist/{tool-card-DKNWgEoo.js → tool-card-B5wPeDh_.js} +13 -17
- package/dist/tool-card-B5wPeDh_.js.map +1 -0
- package/dist/{tool-card-CQAEtUhC.cjs → tool-card-CwENsPdZ.cjs} +13 -17
- package/dist/tool-card-CwENsPdZ.cjs.map +1 -0
- package/dist/{traces-data-list-BeWQiNT2.js → traces-data-list-B0xInvZg.js} +4 -4
- package/dist/{traces-data-list-BeWQiNT2.js.map → traces-data-list-B0xInvZg.js.map} +1 -1
- package/dist/{traces-data-list-DDG1BY5u.cjs → traces-data-list-CVLHJtd4.cjs} +4 -4
- package/dist/{traces-data-list-DDG1BY5u.cjs.map → traces-data-list-CVLHJtd4.cjs.map} +1 -1
- package/dist/{transcript-divider-CPIo8NUj.js → transcript-divider-DQbebYHb.js} +2 -2
- package/dist/{transcript-divider-CPIo8NUj.js.map → transcript-divider-DQbebYHb.js.map} +1 -1
- package/dist/{transcript-divider-273Bsdjs.cjs → transcript-divider-fc_PrxES.cjs} +2 -2
- package/dist/{transcript-divider-273Bsdjs.cjs.map → transcript-divider-fc_PrxES.cjs.map} +1 -1
- package/dist/{use-workflow-graph-runtime-r_OOpvSo.cjs → use-workflow-graph-runtime-B4njhsih.cjs} +3 -3
- package/dist/{use-workflow-graph-runtime-r_OOpvSo.cjs.map → use-workflow-graph-runtime-B4njhsih.cjs.map} +1 -1
- package/dist/{use-workflow-graph-runtime-BF_NZEkj.js → use-workflow-graph-runtime-CfRQ3vzM.js} +3 -3
- package/dist/{use-workflow-graph-runtime-BF_NZEkj.js.map → use-workflow-graph-runtime-CfRQ3vzM.js.map} +1 -1
- package/dist/{workflow-code-dialog-content-DyoN3850.cjs → workflow-code-dialog-content-BE9f1Fcf.cjs} +2 -2
- package/dist/{workflow-code-dialog-content-DyoN3850.cjs.map → workflow-code-dialog-content-BE9f1Fcf.cjs.map} +1 -1
- package/dist/{workflow-code-dialog-content-3AcgitHa.js → workflow-code-dialog-content-BZAkw31A.js} +2 -2
- package/dist/{workflow-code-dialog-content-3AcgitHa.js.map → workflow-code-dialog-content-BZAkw31A.js.map} +1 -1
- package/dist/{workflow-condition-card-BCSYogql.js → workflow-condition-card-3YSKAtKw.js} +3 -3
- package/dist/{workflow-condition-card-BCSYogql.js.map → workflow-condition-card-3YSKAtKw.js.map} +1 -1
- package/dist/{workflow-condition-card-Dlo2PaKV.cjs → workflow-condition-card-80XcAvDl.cjs} +3 -3
- package/dist/{workflow-condition-card-Dlo2PaKV.cjs.map → workflow-condition-card-80XcAvDl.cjs.map} +1 -1
- package/dist/{workflow-data-edge-view-CjbBulHe.cjs → workflow-data-edge-view-BoCjUe4t.cjs} +2 -2
- package/dist/{workflow-data-edge-view-CjbBulHe.cjs.map → workflow-data-edge-view-BoCjUe4t.cjs.map} +1 -1
- package/dist/{workflow-data-edge-view-B9uz58wL.js → workflow-data-edge-view-ux68M8gD.js} +2 -2
- package/dist/{workflow-data-edge-view-B9uz58wL.js.map → workflow-data-edge-view-ux68M8gD.js.map} +1 -1
- package/dist/{workflow-debug-controls-BVaX_0Dq.js → workflow-debug-controls-BgyAN-Ke.js} +2 -2
- package/dist/{workflow-debug-controls-BVaX_0Dq.js.map → workflow-debug-controls-BgyAN-Ke.js.map} +1 -1
- package/dist/{workflow-debug-controls-DUNR0Ws0.cjs → workflow-debug-controls-DsAvdRuS.cjs} +2 -2
- package/dist/{workflow-debug-controls-DUNR0Ws0.cjs.map → workflow-debug-controls-DsAvdRuS.cjs.map} +1 -1
- package/dist/{workflow-edge-data-button-DQAzBPfm.cjs → workflow-edge-data-button-BKTN3LQd.cjs} +3 -3
- package/dist/{workflow-edge-data-button-DQAzBPfm.cjs.map → workflow-edge-data-button-BKTN3LQd.cjs.map} +1 -1
- package/dist/{workflow-edge-data-button-BTynlndD.js → workflow-edge-data-button-YegDtxyD.js} +3 -3
- package/dist/{workflow-edge-data-button-BTynlndD.js.map → workflow-edge-data-button-YegDtxyD.js.map} +1 -1
- package/package.json +11 -17
- package/theme/typography.css +16 -0
- package/dist/Txt-C3cYJgKU.js.map +0 -1
- package/dist/Txt-DNnvlrBo.cjs.map +0 -1
- package/dist/code-C8akLzcu.js.map +0 -1
- package/dist/code-D_sH618U.cjs.map +0 -1
- package/dist/code-editor-Btr1qm_5.cjs.map +0 -1
- package/dist/code-editor-DzhYz1fH.js.map +0 -1
- package/dist/comment-B1Cf9w4Z.js.map +0 -1
- package/dist/comment-DnbibTOe.cjs.map +0 -1
- package/dist/components/MainSidebar.cjs.js +0 -133
- package/dist/components/MainSidebar.cjs.js.map +0 -1
- package/dist/components/MainSidebar.d.ts +0 -2
- package/dist/components/MainSidebar.es.js +0 -121
- package/dist/components/MainSidebar.es.js.map +0 -1
- package/dist/data-list-BHtjZ528.js.map +0 -1
- package/dist/data-list-TouUI4pb.cjs.map +0 -1
- package/dist/data-list-skeleton-BqihjHu8.cjs.map +0 -1
- package/dist/data-list-skeleton-H8Zpph6_.js.map +0 -1
- package/dist/domains/chat/tools/badges/tool-approval-buttons.cjs.js +0 -66
- package/dist/domains/chat/tools/badges/tool-approval-buttons.cjs.js.map +0 -1
- package/dist/domains/chat/tools/badges/tool-approval-buttons.es.js +0 -62
- package/dist/domains/chat/tools/badges/tool-approval-buttons.es.js.map +0 -1
- package/dist/main-sidebar-link-active-C9P_WBus.cjs +0 -798
- package/dist/main-sidebar-link-active-C9P_WBus.cjs.map +0 -1
- package/dist/main-sidebar-link-active-JtKNF9hx.js +0 -781
- package/dist/main-sidebar-link-active-JtKNF9hx.js.map +0 -1
- package/dist/new/sidebar.cjs.js +0 -725
- package/dist/new/sidebar.cjs.js.map +0 -1
- package/dist/new/sidebar.d.ts +0 -2
- package/dist/new/sidebar.es.js +0 -705
- package/dist/new/sidebar.es.js.map +0 -1
- package/dist/page-header-D5a7qrVc.js.map +0 -1
- package/dist/page-header-Dc2KSbnw.cjs.map +0 -1
- package/dist/plan-4Udllcyn.cjs.map +0 -1
- package/dist/plan-CZxw-Q5D.js.map +0 -1
- package/dist/span-payload-primitives-0b_ow5Rt.cjs.map +0 -1
- package/dist/span-payload-primitives-XWZOfAi-.js.map +0 -1
- package/dist/src/domains/chat/stories/approvals.stories.d.ts +0 -52
- package/dist/src/domains/chat/tools/badges/tool-approval-buttons.d.ts +0 -14
- package/dist/src/ds/components/MainSidebar/index.d.ts +0 -1
- package/dist/src/ds/components/MainSidebar/main-sidebar-bottom.d.ts +0 -3
- package/dist/src/ds/components/MainSidebar/main-sidebar-mobile-trigger.d.ts +0 -5
- package/dist/src/ds/components/MainSidebar/main-sidebar-nav-header.d.ts +0 -11
- package/dist/src/ds/components/MainSidebar/main-sidebar-nav-list.d.ts +0 -3
- package/dist/src/ds/components/MainSidebar/main-sidebar-nav-section.d.ts +0 -12
- package/dist/src/ds/components/MainSidebar/main-sidebar-nav-separator.d.ts +0 -3
- package/dist/src/ds/components/MainSidebar/main-sidebar-nav.d.ts +0 -3
- package/dist/src/ds/components/MainSidebar/main-sidebar-root.d.ts +0 -6
- package/dist/src/ds/components/MainSidebar/main-sidebar-sections.d.ts +0 -13
- package/dist/src/ds/components/MainSidebar/main-sidebar-trigger.d.ts +0 -3
- package/dist/src/ds/components/MainSidebar/main-sidebar.d.ts +0 -35
- package/dist/src/ds/components/ai/tool-approval/tool-approval-actions.stories.d.ts +0 -44
- package/dist/src/ds/new/sidebar/index.d.ts +0 -15
- package/dist/src/ds/new/sidebar/sidebar-new-brand.d.ts +0 -6
- package/dist/src/ds/new/sidebar/sidebar-new-command-header.d.ts +0 -3
- package/dist/src/ds/new/sidebar/sidebar-new-footer-meta.d.ts +0 -7
- package/dist/src/ds/new/sidebar/sidebar-new-footer.d.ts +0 -3
- package/dist/src/ds/new/sidebar/sidebar-new-header.d.ts +0 -6
- package/dist/src/ds/new/sidebar/sidebar-new-meter.d.ts +0 -24
- package/dist/src/ds/new/sidebar/sidebar-new-more-links.d.ts +0 -10
- package/dist/src/ds/new/sidebar/sidebar-new-nav-header.d.ts +0 -11
- package/dist/src/ds/new/sidebar/sidebar-new-nav-stack-context.d.ts +0 -8
- package/dist/src/ds/new/sidebar/sidebar-new-nav-stack-page-classes.d.ts +0 -1
- package/dist/src/ds/new/sidebar/sidebar-new-nav-stack-root-view.d.ts +0 -3
- package/dist/src/ds/new/sidebar/sidebar-new-nav-stack-root.d.ts +0 -7
- package/dist/src/ds/new/sidebar/sidebar-new-nav-stack-view.d.ts +0 -9
- package/dist/src/ds/new/sidebar/sidebar-new-nav-stack.d.ts +0 -10
- package/dist/src/ds/new/sidebar/sidebar-new-nav.d.ts +0 -3
- package/dist/src/ds/new/sidebar/sidebar-new-root.d.ts +0 -6
- package/dist/src/ds/new/sidebar/sidebar-new-search-trigger.d.ts +0 -7
- package/dist/src/ds/new/sidebar/sidebar-new-section-link.d.ts +0 -9
- package/dist/src/ds/new/sidebar/sidebar-new-sections.d.ts +0 -12
- package/dist/src/ds/new/sidebar/sidebar-new-trigger.d.ts +0 -3
- package/dist/src/ds/new/sidebar/sidebar-new.d.ts +0 -43
- package/dist/tabs-list-Tqj36HIL.cjs.map +0 -1
- package/dist/tabs-list-tLx5fgP0.js.map +0 -1
- package/dist/tabs-tab-C-C2vX-D.cjs.map +0 -1
- package/dist/tabs-tab-ClLIOGiC.js.map +0 -1
- package/dist/tool-approval-BNJ6MpnV.js +0 -77
- package/dist/tool-approval-BNJ6MpnV.js.map +0 -1
- package/dist/tool-approval-DOPxugSv.cjs +0 -80
- package/dist/tool-approval-DOPxugSv.cjs.map +0 -1
- package/dist/tool-call-arguments-CufA6H_n.js.map +0 -1
- package/dist/tool-call-arguments-DEXKbR8d.cjs.map +0 -1
- package/dist/tool-card-CQAEtUhC.cjs.map +0 -1
- package/dist/tool-card-DKNWgEoo.js.map +0 -1
- /package/dist/{sidebar.css → Sidebar.css} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-D0SefV4r.js","sources":["../src/ds/components/ai/activity/activity.tsx"],"sourcesContent":["import { ChevronRight, X } from 'lucide-react';\nimport { createContext, useContext, useId, useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useArriving } from '@/ds/components/Arrival';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { Shimmer } from '@/ds/components/Shimmer';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\ntype ActivityStatus = 'idle' | 'running' | 'error';\n\ninterface ActivityContextValue {\n open: boolean;\n foldable: boolean;\n status: ActivityStatus;\n toggle: () => void;\n}\n\nconst ActivityContext = createContext<ActivityContextValue | undefined>(undefined);\n\n// Stryker disable next-line ArrowFunction: the default callback is intentionally behaviorless.\nconst noopOpenChange = () => {};\n\nfunction useActivity() {\n const context = useContext(ActivityContext);\n if (!context) throw new Error('Activity compounds must be rendered within Activity');\n return context;\n}\n\nexport interface ActivityProps extends Omit<\n ComponentProps<typeof Collapsible>,\n 'defaultOpen' | 'onOpenChange' | 'open'\n> {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n foldable?: boolean;\n status?: ActivityStatus;\n}\n\nexport function Activity({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange = noopOpenChange,\n foldable = true,\n status = 'idle',\n className,\n children,\n ...props\n}: ActivityProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const open = controlledOpen ?? (foldable && uncontrolledOpen);\n const statusId = useId();\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (controlledOpen === undefined) setUncontrolledOpen(nextOpen);\n onOpenChange(nextOpen);\n };\n\n return (\n <ActivityContext.Provider value={{ open, foldable, status, toggle: () => handleOpenChange(!open) }}>\n <Collapsible\n open={open}\n onOpenChange={handleOpenChange}\n className={cn('max-w-full min-w-0', className)}\n role=\"group\"\n aria-busy={status === 'running'}\n aria-invalid={status === 'error' || undefined}\n aria-describedby={status === 'idle' ? undefined : statusId}\n data-status={status}\n {...props}\n >\n {children}\n <span id={statusId} className=\"sr-only\" aria-live=\"polite\">\n {status === 'running' && 'Running'}\n {status === 'error' && 'Failed'}\n </span>\n </Collapsible>\n </ActivityContext.Provider>\n );\n}\n\nexport const ActivityTrigger = ({ className, children, ...props }: ComponentProps<'div'>) => {\n const { foldable } = useActivity();\n const lineId = useId();\n\n return (\n <div\n className={cn(\n 'group/row relative w-full min-w-0 rounded-md transition-colors motion-reduce:transition-none',\n foldable && 'hover:bg-fill',\n className,\n )}\n {...props}\n >\n {foldable && (\n <CollapsibleTrigger\n aria-labelledby={lineId}\n className=\"absolute inset-0 cursor-pointer rounded-md focus-visible:ring-1 focus-visible:ring-border-focus focus-visible:outline-hidden\"\n />\n )}\n <div id={lineId} className={cn(foldable && 'pointer-events-none relative')}>\n {children}\n </div>\n </div>\n );\n};\n\nexport const ActivityHeader = ({ className, children, ...props }: ComponentProps<'span'>) => {\n const { status } = useActivity();\n\n return (\n <Shimmer\n active={status === 'running'}\n className={cn('flex w-full min-w-0 items-center gap-2 px-1.5 py-1', className)}\n {...props}\n >\n {children}\n </Shimmer>\n );\n};\n\nexport const ActivityLeading = ({ className, children, ...props }: ComponentProps<'span'>) => {\n const { foldable, toggle } = useActivity();\n\n if (!children) return null;\n\n return (\n <span\n className={cn('pointer-events-auto flex shrink-0 empty:hidden', foldable && 'cursor-pointer', className)}\n onClick={foldable ? toggle : undefined}\n {...props}\n >\n {children}\n </span>\n );\n};\n\nexport const ActivityIcon = ({ className, ...props }: ComponentProps<'span'>) => {\n const { status } = useActivity();\n\n return (\n <span\n className={cn(\n 'flex size-4 shrink-0 items-center justify-center [&_svg]:size-3.5 [&_svg]:shrink-0 [&_svg]:[stroke-width:1.75]',\n status === 'error' ? 'text-destructive-foreground' : 'text-placeholder',\n className,\n )}\n {...props}\n />\n );\n};\n\nexport const ActivityLabel = ({ className, ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className={cn('max-w-[55%] shrink-0 truncate', className)} {...props} />\n);\n\nexport interface ActivityDetailProps extends Omit<ComponentProps<typeof Txt>, 'font'> {\n font?: 'mono' | 'sans';\n wrap?: boolean;\n}\n\nexport const ActivityDetail = ({ font = 'mono', wrap = false, className, ...props }: ActivityDetailProps) => {\n const arriving = useArriving();\n\n return (\n <Txt\n as=\"span\"\n variant=\"meta\"\n tone=\"muted\"\n font={font === 'mono' ? 'mono' : undefined}\n className={cn('min-w-0', wrap ? 'break-words' : 'truncate', arriving, className)}\n {...props}\n />\n );\n};\n\nexport const ActivitySummary = ({ className, ...props }: ComponentProps<'span'>) => (\n <span className={cn('flex min-w-0 items-center gap-1', className)} {...props} />\n);\n\nexport interface ActivitySpacerProps extends ComponentProps<'span'> {\n rule?: boolean;\n}\n\nexport const ActivitySpacer = ({ rule, className, ...props }: ActivitySpacerProps) => (\n <span\n aria-hidden\n className={cn('min-w-2 flex-1', rule && 'h-px bg-border mask-r-from-[calc(100%-min(100%,160px))]', className)}\n {...props}\n />\n);\n\nexport const ActivityTrailing = ({ className, ...props }: ComponentProps<'span'>) => (\n <span className={cn('flex shrink-0 items-center', className)} {...props} />\n);\n\nexport const ActivityDisclosure = ({ className, children, ...props }: ComponentProps<'span'>) => {\n const { open, foldable } = useActivity();\n\n return (\n <span className={cn('flex size-4 shrink-0 items-center justify-center', className)} {...props}>\n <span\n aria-hidden\n className={cn(\n 'flex shrink-0 items-center text-muted-foreground/60 transition duration-150 motion-reduce:transition-none',\n 'group-hover/row:text-muted-foreground group-has-focus-visible/row:text-muted-foreground',\n open && 'rotate-90 text-muted-foreground',\n !foldable && 'opacity-0',\n )}\n >\n {children ?? <ChevronRight size={13} />}\n </span>\n </span>\n );\n};\n\nexport interface ActivityHeadlineProps extends Omit<ComponentProps<typeof ActivityHeader>, 'children'> {\n leading?: ReactNode;\n icon: ReactNode;\n label: ReactNode;\n detail?: string;\n description?: string;\n detailFont?: ActivityDetailProps['font'];\n wrapDetail?: boolean;\n badges?: ReactNode;\n}\n\nexport const ActivityHeadline = ({\n leading,\n icon,\n label,\n detail,\n description,\n detailFont,\n wrapDetail,\n badges,\n ...props\n}: ActivityHeadlineProps) => {\n const { status } = useActivity();\n const hasBadges = Boolean(badges);\n\n return (\n <ActivityHeader {...props}>\n <ActivityLeading>{leading}</ActivityLeading>\n <ActivityIcon>{icon}</ActivityIcon>\n <span className={cn('contents', hasBadges && 'flex min-w-0 flex-1 flex-wrap items-center gap-x-2 gap-y-1')}>\n <ActivityLabel className={cn(description && 'max-w-none min-w-0 shrink')}>{description || label}</ActivityLabel>\n {badges}\n {!description && detail && (\n <ActivityDetail font={detailFont} wrap={wrapDetail} className={cn(hasBadges && 'grow basis-40')}>\n {detail}\n </ActivityDetail>\n )}\n </span>\n <ActivitySpacer className={cn(hasBadges && 'flex-none')} />\n {status === 'error' && (\n <ActivityTrailing>\n <X size={13} role=\"img\" aria-label=\"Failed\" className=\"shrink-0 text-destructive-foreground\" />\n </ActivityTrailing>\n )}\n <ActivityDisclosure />\n </ActivityHeader>\n );\n};\n\nexport const ActivityContent = ({ className, children, ...props }: ComponentProps<typeof CollapsibleContent>) => (\n <CollapsibleContent className=\"max-w-full min-w-0\" {...props}>\n <div\n className={cn(\n \"relative ml-[14px] flex max-w-full min-w-0 flex-col gap-1.5 py-1.5 pr-1 pl-4 before:absolute before:inset-y-0 before:left-0 before:w-px before:bg-border before:mask-b-from-[calc(100%-min(40%,80px))] before:content-['']\",\n className,\n )}\n >\n {children}\n </div>\n </CollapsibleContent>\n);\n\nexport interface ActivityItemProps extends Omit<ActivityProps, 'children' | 'open' | 'onOpenChange' | 'foldable'> {\n icon: ReactNode;\n label: string;\n detail?: string;\n detailFont?: ActivityDetailProps['font'];\n badges?: ReactNode;\n collapsible?: boolean;\n children?: ReactNode;\n 'aria-label': string;\n}\n\nexport function ActivityItem({\n icon,\n label,\n detail,\n detailFont,\n badges,\n collapsible = true,\n children,\n ...props\n}: ActivityItemProps) {\n const folds = collapsible && Boolean(children);\n\n return (\n <Activity {...props} foldable={folds} open={collapsible ? undefined : true}>\n <ActivityTrigger>\n <ActivityHeadline\n icon={icon}\n label={label}\n detail={detail}\n detailFont={detailFont}\n wrapDetail={!folds}\n badges={badges}\n />\n </ActivityTrigger>\n {children && <ActivityContent>{children}</ActivityContent>}\n </Activity>\n );\n}\n\nexport type { ActivityStatus };\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"activity-CREOMVXI.js","sources":["../src/ds/components/ai/activity/activity.tsx"],"sourcesContent":["import { ChevronRight, X } from 'lucide-react';\nimport { createContext, useContext, useId, useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useArriving } from '@/ds/components/Arrival';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { Shimmer } from '@/ds/components/Shimmer';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\ntype ActivityStatus = 'idle' | 'running' | 'error';\n\ninterface ActivityContextValue {\n open: boolean;\n foldable: boolean;\n status: ActivityStatus;\n toggle: () => void;\n}\n\nconst ActivityContext = createContext<ActivityContextValue | undefined>(undefined);\n\n// Stryker disable next-line ArrowFunction: the default callback is intentionally behaviorless.\nconst noopOpenChange = () => {};\n\nfunction useActivity() {\n const context = useContext(ActivityContext);\n if (!context) throw new Error('Activity compounds must be rendered within Activity');\n return context;\n}\n\nexport interface ActivityProps extends Omit<\n ComponentProps<typeof Collapsible>,\n 'defaultOpen' | 'onOpenChange' | 'open'\n> {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n foldable?: boolean;\n status?: ActivityStatus;\n}\n\nexport function Activity({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange = noopOpenChange,\n foldable = true,\n status = 'idle',\n className,\n children,\n ...props\n}: ActivityProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const open = controlledOpen ?? (foldable && uncontrolledOpen);\n const statusId = useId();\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (controlledOpen === undefined) setUncontrolledOpen(nextOpen);\n onOpenChange(nextOpen);\n };\n\n return (\n <ActivityContext.Provider value={{ open, foldable, status, toggle: () => handleOpenChange(!open) }}>\n <Collapsible\n open={open}\n onOpenChange={handleOpenChange}\n className={cn('max-w-full min-w-0', className)}\n role=\"group\"\n aria-busy={status === 'running'}\n aria-invalid={status === 'error' || undefined}\n aria-describedby={status === 'idle' ? undefined : statusId}\n data-status={status}\n {...props}\n >\n {children}\n <span id={statusId} className=\"sr-only\" aria-live=\"polite\">\n {status === 'running' && 'Running'}\n {status === 'error' && 'Failed'}\n </span>\n </Collapsible>\n </ActivityContext.Provider>\n );\n}\n\nexport const ActivityTrigger = ({ className, children, ...props }: ComponentProps<'div'>) => {\n const { foldable } = useActivity();\n const lineId = useId();\n\n return (\n <div\n className={cn(\n 'group/row relative w-full min-w-0 rounded-md transition-colors motion-reduce:transition-none',\n foldable && 'hover:bg-fill',\n className,\n )}\n {...props}\n >\n {foldable && (\n <CollapsibleTrigger\n aria-labelledby={lineId}\n className=\"absolute inset-0 cursor-pointer rounded-md focus-visible:ring-1 focus-visible:ring-border-focus focus-visible:outline-hidden\"\n />\n )}\n <div id={lineId} className={cn(foldable && 'pointer-events-none relative')}>\n {children}\n </div>\n </div>\n );\n};\n\nexport const ActivityHeader = ({ className, children, ...props }: ComponentProps<'span'>) => {\n const { status } = useActivity();\n\n return (\n <Shimmer\n active={status === 'running'}\n className={cn('flex w-full min-w-0 items-center gap-2 px-1.5 py-1', className)}\n {...props}\n >\n {children}\n </Shimmer>\n );\n};\n\nexport const ActivityLeading = ({ className, children, ...props }: ComponentProps<'span'>) => {\n const { foldable, toggle } = useActivity();\n\n if (!children) return null;\n\n return (\n <span\n className={cn('pointer-events-auto flex shrink-0 empty:hidden', foldable && 'cursor-pointer', className)}\n onClick={foldable ? toggle : undefined}\n {...props}\n >\n {children}\n </span>\n );\n};\n\nexport const ActivityIcon = ({ className, ...props }: ComponentProps<'span'>) => {\n const { status } = useActivity();\n\n return (\n <span\n className={cn(\n 'flex size-4 shrink-0 items-center justify-center [&_svg]:size-3.5 [&_svg]:shrink-0 [&_svg]:[stroke-width:1.75]',\n status === 'error' ? 'text-destructive-foreground' : 'text-placeholder',\n className,\n )}\n {...props}\n />\n );\n};\n\nexport const ActivityLabel = ({ className, ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className={cn('max-w-[55%] shrink-0 truncate', className)} {...props} />\n);\n\nexport interface ActivityDetailProps extends Omit<ComponentProps<typeof Txt>, 'font'> {\n font?: 'mono' | 'sans';\n wrap?: boolean;\n}\n\nexport const ActivityDetail = ({ font = 'mono', wrap = false, className, ...props }: ActivityDetailProps) => {\n const arriving = useArriving();\n\n return (\n <Txt\n as=\"span\"\n variant=\"meta\"\n tone=\"muted\"\n font={font === 'mono' ? 'mono' : undefined}\n className={cn('min-w-0', wrap ? 'break-words' : 'truncate', arriving, className)}\n {...props}\n />\n );\n};\n\nexport const ActivitySummary = ({ className, ...props }: ComponentProps<'span'>) => (\n <span className={cn('flex min-w-0 items-center gap-1', className)} {...props} />\n);\n\nexport interface ActivitySpacerProps extends ComponentProps<'span'> {\n rule?: boolean;\n}\n\nexport const ActivitySpacer = ({ rule, className, ...props }: ActivitySpacerProps) => (\n <span\n aria-hidden\n className={cn('min-w-2 flex-1', rule && 'h-px bg-border mask-r-from-[calc(100%-min(100%,160px))]', className)}\n {...props}\n />\n);\n\nexport const ActivityTrailing = ({ className, ...props }: ComponentProps<'span'>) => (\n <span className={cn('flex shrink-0 items-center', className)} {...props} />\n);\n\nexport const ActivityDisclosure = ({ className, children, ...props }: ComponentProps<'span'>) => {\n const { open, foldable } = useActivity();\n\n return (\n <span className={cn('flex size-4 shrink-0 items-center justify-center', className)} {...props}>\n <span\n aria-hidden\n className={cn(\n 'flex shrink-0 items-center text-muted-foreground/60 transition duration-150 motion-reduce:transition-none',\n 'group-hover/row:text-muted-foreground group-has-focus-visible/row:text-muted-foreground',\n open && 'rotate-90 text-muted-foreground',\n !foldable && 'opacity-0',\n )}\n >\n {children ?? <ChevronRight size={13} />}\n </span>\n </span>\n );\n};\n\nexport interface ActivityHeadlineProps extends Omit<ComponentProps<typeof ActivityHeader>, 'children'> {\n leading?: ReactNode;\n icon: ReactNode;\n label: ReactNode;\n detail?: string;\n description?: string;\n detailFont?: ActivityDetailProps['font'];\n wrapDetail?: boolean;\n badges?: ReactNode;\n}\n\nexport const ActivityHeadline = ({\n leading,\n icon,\n label,\n detail,\n description,\n detailFont,\n wrapDetail,\n badges,\n ...props\n}: ActivityHeadlineProps) => {\n const { status } = useActivity();\n const hasBadges = Boolean(badges);\n\n return (\n <ActivityHeader {...props}>\n <ActivityLeading>{leading}</ActivityLeading>\n <ActivityIcon>{icon}</ActivityIcon>\n <span className={cn('contents', hasBadges && 'flex min-w-0 flex-1 flex-wrap items-center gap-x-2 gap-y-1')}>\n <ActivityLabel className={cn(description && 'max-w-none min-w-0 shrink')}>{description || label}</ActivityLabel>\n {badges}\n {!description && detail && (\n <ActivityDetail font={detailFont} wrap={wrapDetail} className={cn(hasBadges && 'grow basis-40')}>\n {detail}\n </ActivityDetail>\n )}\n </span>\n <ActivitySpacer className={cn(hasBadges && 'flex-none')} />\n {status === 'error' && (\n <ActivityTrailing>\n <X size={13} role=\"img\" aria-label=\"Failed\" className=\"shrink-0 text-destructive-foreground\" />\n </ActivityTrailing>\n )}\n <ActivityDisclosure />\n </ActivityHeader>\n );\n};\n\nexport const ActivityContent = ({ className, children, ...props }: ComponentProps<typeof CollapsibleContent>) => (\n <CollapsibleContent className=\"max-w-full min-w-0\" {...props}>\n <div\n className={cn(\n \"relative ml-[14px] flex max-w-full min-w-0 flex-col gap-1.5 py-1.5 pr-1 pl-4 before:absolute before:inset-y-0 before:left-0 before:w-px before:bg-border before:mask-b-from-[calc(100%-min(40%,80px))] before:content-['']\",\n className,\n )}\n >\n {children}\n </div>\n </CollapsibleContent>\n);\n\nexport interface ActivityItemProps extends Omit<ActivityProps, 'children' | 'open' | 'onOpenChange' | 'foldable'> {\n icon: ReactNode;\n label: string;\n detail?: string;\n detailFont?: ActivityDetailProps['font'];\n badges?: ReactNode;\n collapsible?: boolean;\n children?: ReactNode;\n 'aria-label': string;\n}\n\nexport function ActivityItem({\n icon,\n label,\n detail,\n detailFont,\n badges,\n collapsible = true,\n children,\n ...props\n}: ActivityItemProps) {\n const folds = collapsible && Boolean(children);\n\n return (\n <Activity {...props} foldable={folds} open={collapsible ? undefined : true}>\n <ActivityTrigger>\n <ActivityHeadline\n icon={icon}\n label={label}\n detail={detail}\n detailFont={detailFont}\n wrapDetail={!folds}\n badges={badges}\n />\n </ActivityTrigger>\n {children && <ActivityContent>{children}</ActivityContent>}\n </Activity>\n );\n}\n\nexport type { ActivityStatus };\n"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ const field = require('./field-BkeKcz_6.cjs');
|
|
|
10
10
|
require('./field-control-aria-WzMGs0A4.cjs');
|
|
11
11
|
const input = require('./input-D0UPyj6A.cjs');
|
|
12
12
|
const radioGroup = require('./radio-group-QV7yVrSX.cjs');
|
|
13
|
-
const Txt = require('./Txt-
|
|
13
|
+
const Txt = require('./Txt-DFPibRb3.cjs');
|
|
14
14
|
const icons_Icon = require('./icons/Icon.cjs.js');
|
|
15
15
|
const primitives_raisedSurface = require('./primitives/raised-surface.cjs.js');
|
|
16
16
|
const utils_cn = require('./cn-DG0X1KEP.cjs');
|
|
@@ -222,4 +222,4 @@ exports.AskUserOutput = AskUserOutput;
|
|
|
222
222
|
exports.AskUserPending = AskUserPending;
|
|
223
223
|
exports.AskUserQuestion = AskUserQuestion;
|
|
224
224
|
exports.AskUserSubmit = AskUserSubmit;
|
|
225
|
-
//# sourceMappingURL=ask-user-
|
|
225
|
+
//# sourceMappingURL=ask-user-BR6s4GTF.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user-DBb0lUh2.cjs","sources":["../src/ds/components/ai/ask-user/ask-user.tsx"],"sourcesContent":["import { Check, MessageCircleQuestion } from 'lucide-react';\nimport { useState } from 'react';\nimport type { ComponentProps, KeyboardEvent, ReactNode } from 'react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { Field, FieldItem, FieldLabel, Fieldset, FieldsetLegend } from '@/ds/components/Field';\nimport type { FieldLabelProps } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { RadioGroup, RadioGroupItem } from '@/ds/components/RadioGroup';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport type AskUserSelectionMode = 'single_select' | 'multi_select';\nexport type AskUserAnswer = string | string[];\n\nexport interface AskUserOption {\n label: string;\n description?: string;\n}\n\nexport interface AskUserPayload {\n question: string;\n options?: AskUserOption[];\n selectionMode?: AskUserSelectionMode;\n}\n\nexport interface AskUserResult {\n content: string;\n isError?: boolean;\n}\n\nexport const AskUserContainer = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot=\"ask-user\"\n className={cn(raisedSurfaceStyle, 'w-full overflow-hidden rounded-xl', className)}\n {...props}\n />\n);\n\nexport const AskUserLabel = ({ children = 'Question', className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-label\" className={cn('flex min-h-10 items-center gap-2 px-4 pt-3', className)} {...props}>\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n <MessageCircleQuestion />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n </div>\n);\n\nexport const AskUserBody = ({ className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-body\" className={cn('px-4 pt-1 pb-4', className)} {...props} />\n);\n\nexport const AskUserQuestion = ({ className, ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"p\" variant=\"subheading\" tone=\"ink\" {...props} className={cn('mb-3', className)} />\n);\n\nexport interface AskUserOptionRowProps extends Omit<FieldLabelProps, 'children'> {\n control: ReactNode;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport const AskUserOptionRow = ({\n control,\n label,\n description,\n disabled = false,\n className,\n ...props\n}: AskUserOptionRowProps) => (\n <FieldItem disabled={disabled} className=\"contents\">\n <FieldLabel\n // state-layer's wash only stops at :disabled/aria-disabled, and a <label> is neither\n aria-disabled={disabled || undefined}\n className={cn(\n 'state-layer flex items-start gap-2.5 rounded-lg bg-fill px-3 py-2 data-disabled:opacity-50',\n className,\n )}\n {...props}\n >\n {control}\n <span className=\"grid gap-0.5\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n {description ? (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {description}\n </Txt>\n ) : null}\n </span>\n </FieldLabel>\n </FieldItem>\n);\n\nexport type AskUserSubmitProps = Omit<ComponentProps<typeof Button>, 'children'> & { children?: ReactNode };\n\nexport const AskUserSubmit = ({ children = 'Submit answer', ...props }: AskUserSubmitProps) => (\n <Button icon={<Check />} type=\"button\" size=\"sm\" variant=\"primary\" {...props}>\n {children}\n </Button>\n);\n\nexport const AskUserPending = ({ children = 'Submitting…', ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"span\" role=\"status\" variant=\"caption\" tone=\"muted\" {...props}>\n {children}\n </Txt>\n);\n\nexport interface AskUserOutputProps extends ComponentProps<'div'> {\n result: AskUserResult;\n}\n\nexport const AskUserOutput = ({ result, className, ...props }: AskUserOutputProps) => (\n <div\n data-slot=\"ask-user-output\"\n role={result.isError ? 'alert' : 'status'}\n className={cn('grid gap-2 rounded-lg bg-fill p-3', className)}\n {...props}\n >\n <Badge size=\"xs\" variant={result.isError ? 'destructive' : 'success'} className=\"justify-self-start\">\n {result.isError ? 'Error' : 'Answered'}\n </Badge>\n <Txt as=\"p\" variant=\"body\" tone=\"ink\" className={cn(result.isError && 'text-destructive-foreground')}>\n {result.content}\n </Txt>\n </div>\n);\n\nexport interface AskUserProps extends Omit<ComponentProps<typeof AskUserContainer>, 'children' | 'onSubmit'> {\n payload: AskUserPayload;\n result?: AskUserResult;\n isAnswered?: boolean;\n isSubmitting?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n footer?: ReactNode;\n}\n\nconst validOptions = (options: AskUserPayload['options']): AskUserOption[] =>\n options?.filter((option): option is AskUserOption =>\n Boolean(option && typeof option.label === 'string' && option.label),\n ) ?? [];\n\ninterface AskUserInputProps extends AskUserProps {\n options: AskUserOption[];\n}\n\nconst AskUserInput = ({\n payload,\n options,\n result,\n isAnswered = false,\n isSubmitting = false,\n onSubmit,\n footer,\n ...props\n}: AskUserInputProps) => {\n const [text, setText] = useState('');\n const [selected, setSelected] = useState<string[]>([]);\n\n if (result || isAnswered) {\n return (\n <AskUserContainer data-testid=\"ask-user\" {...props}>\n <AskUserLabel />\n <AskUserBody>\n <AskUserQuestion>{payload.question}</AskUserQuestion>\n {result ? <AskUserOutput result={result} /> : <Badge variant=\"success\">Answered</Badge>}\n </AskUserBody>\n </AskUserContainer>\n );\n }\n\n const submitText = () => {\n const answer = text.trim();\n if (answer && !isSubmitting) onSubmit(answer);\n };\n\n const handleTextKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n submitText();\n }\n };\n\n if (options.length === 0) {\n return (\n <AskUserContainer data-testid=\"ask-user\" {...props}>\n <AskUserLabel />\n <AskUserBody>\n <Field>\n <FieldLabel className=\"text-subheading\">{payload.question}</FieldLabel>\n <div className=\"flex items-center gap-2\">\n <Input\n value={text}\n onChange={event => setText(event.target.value)}\n onKeyDown={handleTextKeyDown}\n placeholder=\"Type your answer...\"\n disabled={isSubmitting}\n size=\"sm\"\n />\n <AskUserSubmit\n className=\"shrink-0 whitespace-nowrap\"\n disabled={isSubmitting || !text.trim()}\n onClick={submitText}\n />\n </div>\n </Field>\n {isSubmitting ? <AskUserPending className=\"mt-2 block\" /> : null}\n {footer}\n </AskUserBody>\n </AskUserContainer>\n );\n }\n\n const isMulti = payload.selectionMode === 'multi_select';\n\n return (\n <AskUserContainer data-testid=\"ask-user\" {...props}>\n <AskUserLabel />\n <AskUserBody>\n {isMulti ? (\n <Fieldset className=\"gap-2\">\n <FieldsetLegend className=\"mb-1 text-subheading\">{payload.question}</FieldsetLegend>\n {options.map(option => (\n <AskUserOptionRow\n key={option.label}\n label={option.label}\n description={option.description}\n disabled={isSubmitting}\n control={\n <Checkbox\n className=\"mt-0.5\"\n disabled={isSubmitting}\n checked={selected.includes(option.label)}\n onCheckedChange={() =>\n setSelected(current =>\n current.includes(option.label)\n ? current.filter(selectedLabel => selectedLabel !== option.label)\n : [...current, option.label],\n )\n }\n />\n }\n />\n ))}\n <AskUserSubmit\n className=\"mt-1 justify-self-start\"\n disabled={isSubmitting || selected.length === 0}\n onClick={() => onSubmit(selected)}\n >\n Submit answer\n </AskUserSubmit>\n </Fieldset>\n ) : (\n <Fieldset\n className=\"gap-2\"\n render={\n <RadioGroup\n disabled={isSubmitting}\n value={selected[0] ?? null}\n onValueChange={value => {\n const label = String(value);\n setSelected([label]);\n onSubmit(label);\n }}\n />\n }\n >\n <FieldsetLegend className=\"mb-1 text-subheading\">{payload.question}</FieldsetLegend>\n {options.map(option => (\n <AskUserOptionRow\n key={option.label}\n label={option.label}\n description={option.description}\n disabled={isSubmitting}\n control={<RadioGroupItem className=\"mt-0.5\" value={option.label} />}\n />\n ))}\n </Fieldset>\n )}\n {isSubmitting ? <AskUserPending className=\"mt-3 block\" /> : null}\n {footer}\n </AskUserBody>\n </AskUserContainer>\n );\n};\n\nexport const AskUser = ({ payload, ...props }: AskUserProps) => {\n const options = validOptions(payload.options);\n const payloadKey = JSON.stringify([payload.question, options.map(option => option.label), payload.selectionMode]);\n\n return <AskUserInput key={payloadKey} payload={payload} options={options} {...props} />;\n};\n"],"names":["jsx","cn","raisedSurfaceStyle","Icon","MessageCircleQuestion","Txt","FieldItem","jsxs","FieldLabel","Button","Check","Badge","useState","Field","Input","Fieldset","FieldsetLegend","Checkbox","RadioGroup","RadioGroupItem"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ask-user-BR6s4GTF.cjs","sources":["../src/ds/components/ai/ask-user/ask-user.tsx"],"sourcesContent":["import { Check, MessageCircleQuestion } from 'lucide-react';\nimport { useState } from 'react';\nimport type { ComponentProps, KeyboardEvent, ReactNode } from 'react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { Field, FieldItem, FieldLabel, Fieldset, FieldsetLegend } from '@/ds/components/Field';\nimport type { FieldLabelProps } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { RadioGroup, RadioGroupItem } from '@/ds/components/RadioGroup';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport type AskUserSelectionMode = 'single_select' | 'multi_select';\nexport type AskUserAnswer = string | string[];\n\nexport interface AskUserOption {\n label: string;\n description?: string;\n}\n\nexport interface AskUserPayload {\n question: string;\n options?: AskUserOption[];\n selectionMode?: AskUserSelectionMode;\n}\n\nexport interface AskUserResult {\n content: string;\n isError?: boolean;\n}\n\nexport const AskUserContainer = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot=\"ask-user\"\n className={cn(raisedSurfaceStyle, 'w-full overflow-hidden rounded-xl', className)}\n {...props}\n />\n);\n\nexport const AskUserLabel = ({ children = 'Question', className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-label\" className={cn('flex min-h-10 items-center gap-2 px-4 pt-3', className)} {...props}>\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n <MessageCircleQuestion />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n </div>\n);\n\nexport const AskUserBody = ({ className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-body\" className={cn('px-4 pt-1 pb-4', className)} {...props} />\n);\n\nexport const AskUserQuestion = ({ className, ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"p\" variant=\"subheading\" tone=\"ink\" {...props} className={cn('mb-3', className)} />\n);\n\nexport interface AskUserOptionRowProps extends Omit<FieldLabelProps, 'children'> {\n control: ReactNode;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport const AskUserOptionRow = ({\n control,\n label,\n description,\n disabled = false,\n className,\n ...props\n}: AskUserOptionRowProps) => (\n <FieldItem disabled={disabled} className=\"contents\">\n <FieldLabel\n // state-layer's wash only stops at :disabled/aria-disabled, and a <label> is neither\n aria-disabled={disabled || undefined}\n className={cn(\n 'state-layer flex items-start gap-2.5 rounded-lg bg-fill px-3 py-2 data-disabled:opacity-50',\n className,\n )}\n {...props}\n >\n {control}\n <span className=\"grid gap-0.5\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n {description ? (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {description}\n </Txt>\n ) : null}\n </span>\n </FieldLabel>\n </FieldItem>\n);\n\nexport type AskUserSubmitProps = Omit<ComponentProps<typeof Button>, 'children'> & { children?: ReactNode };\n\nexport const AskUserSubmit = ({ children = 'Submit answer', ...props }: AskUserSubmitProps) => (\n <Button icon={<Check />} type=\"button\" size=\"sm\" variant=\"primary\" {...props}>\n {children}\n </Button>\n);\n\nexport const AskUserPending = ({ children = 'Submitting…', ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"span\" role=\"status\" variant=\"caption\" tone=\"muted\" {...props}>\n {children}\n </Txt>\n);\n\nexport interface AskUserOutputProps extends ComponentProps<'div'> {\n result: AskUserResult;\n}\n\nexport const AskUserOutput = ({ result, className, ...props }: AskUserOutputProps) => (\n <div\n data-slot=\"ask-user-output\"\n role={result.isError ? 'alert' : 'status'}\n className={cn('grid gap-2 rounded-lg bg-fill p-3', className)}\n {...props}\n >\n <Badge size=\"xs\" variant={result.isError ? 'destructive' : 'success'} className=\"justify-self-start\">\n {result.isError ? 'Error' : 'Answered'}\n </Badge>\n <Txt as=\"p\" variant=\"body\" tone=\"ink\" className={cn(result.isError && 'text-destructive-foreground')}>\n {result.content}\n </Txt>\n </div>\n);\n\nexport interface AskUserProps extends Omit<ComponentProps<typeof AskUserContainer>, 'children' | 'onSubmit'> {\n payload: AskUserPayload;\n result?: AskUserResult;\n isAnswered?: boolean;\n isSubmitting?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n footer?: ReactNode;\n}\n\nconst validOptions = (options: AskUserPayload['options']): AskUserOption[] =>\n options?.filter((option): option is AskUserOption =>\n Boolean(option && typeof option.label === 'string' && option.label),\n ) ?? [];\n\ninterface AskUserInputProps extends AskUserProps {\n options: AskUserOption[];\n}\n\nconst AskUserInput = ({\n payload,\n options,\n result,\n isAnswered = false,\n isSubmitting = false,\n onSubmit,\n footer,\n ...props\n}: AskUserInputProps) => {\n const [text, setText] = useState('');\n const [selected, setSelected] = useState<string[]>([]);\n\n if (result || isAnswered) {\n return (\n <AskUserContainer data-testid=\"ask-user\" {...props}>\n <AskUserLabel />\n <AskUserBody>\n <AskUserQuestion>{payload.question}</AskUserQuestion>\n {result ? <AskUserOutput result={result} /> : <Badge variant=\"success\">Answered</Badge>}\n </AskUserBody>\n </AskUserContainer>\n );\n }\n\n const submitText = () => {\n const answer = text.trim();\n if (answer && !isSubmitting) onSubmit(answer);\n };\n\n const handleTextKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n submitText();\n }\n };\n\n if (options.length === 0) {\n return (\n <AskUserContainer data-testid=\"ask-user\" {...props}>\n <AskUserLabel />\n <AskUserBody>\n <Field>\n <FieldLabel className=\"text-subheading\">{payload.question}</FieldLabel>\n <div className=\"flex items-center gap-2\">\n <Input\n value={text}\n onChange={event => setText(event.target.value)}\n onKeyDown={handleTextKeyDown}\n placeholder=\"Type your answer...\"\n disabled={isSubmitting}\n size=\"sm\"\n />\n <AskUserSubmit\n className=\"shrink-0 whitespace-nowrap\"\n disabled={isSubmitting || !text.trim()}\n onClick={submitText}\n />\n </div>\n </Field>\n {isSubmitting ? <AskUserPending className=\"mt-2 block\" /> : null}\n {footer}\n </AskUserBody>\n </AskUserContainer>\n );\n }\n\n const isMulti = payload.selectionMode === 'multi_select';\n\n return (\n <AskUserContainer data-testid=\"ask-user\" {...props}>\n <AskUserLabel />\n <AskUserBody>\n {isMulti ? (\n <Fieldset className=\"gap-2\">\n <FieldsetLegend className=\"mb-1 text-subheading\">{payload.question}</FieldsetLegend>\n {options.map(option => (\n <AskUserOptionRow\n key={option.label}\n label={option.label}\n description={option.description}\n disabled={isSubmitting}\n control={\n <Checkbox\n className=\"mt-0.5\"\n disabled={isSubmitting}\n checked={selected.includes(option.label)}\n onCheckedChange={() =>\n setSelected(current =>\n current.includes(option.label)\n ? current.filter(selectedLabel => selectedLabel !== option.label)\n : [...current, option.label],\n )\n }\n />\n }\n />\n ))}\n <AskUserSubmit\n className=\"mt-1 justify-self-start\"\n disabled={isSubmitting || selected.length === 0}\n onClick={() => onSubmit(selected)}\n >\n Submit answer\n </AskUserSubmit>\n </Fieldset>\n ) : (\n <Fieldset\n className=\"gap-2\"\n render={\n <RadioGroup\n disabled={isSubmitting}\n value={selected[0] ?? null}\n onValueChange={value => {\n const label = String(value);\n setSelected([label]);\n onSubmit(label);\n }}\n />\n }\n >\n <FieldsetLegend className=\"mb-1 text-subheading\">{payload.question}</FieldsetLegend>\n {options.map(option => (\n <AskUserOptionRow\n key={option.label}\n label={option.label}\n description={option.description}\n disabled={isSubmitting}\n control={<RadioGroupItem className=\"mt-0.5\" value={option.label} />}\n />\n ))}\n </Fieldset>\n )}\n {isSubmitting ? <AskUserPending className=\"mt-3 block\" /> : null}\n {footer}\n </AskUserBody>\n </AskUserContainer>\n );\n};\n\nexport const AskUser = ({ payload, ...props }: AskUserProps) => {\n const options = validOptions(payload.options);\n const payloadKey = JSON.stringify([payload.question, options.map(option => option.label), payload.selectionMode]);\n\n return <AskUserInput key={payloadKey} payload={payload} options={options} {...props} />;\n};\n"],"names":["jsx","cn","raisedSurfaceStyle","Icon","MessageCircleQuestion","Txt","FieldItem","jsxs","FieldLabel","Button","Check","Badge","useState","Field","Input","Fieldset","FieldsetLegend","Checkbox","RadioGroup","RadioGroupItem"],"mappings":";;;;;;;;;;;;;;;;;AAkCO,MAAM,mBAAmB,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,qBACrDA,cAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,WAAA,EAAU,UAAA;AAAA,IACV,SAAA,EAAWC,WAAA,CAAGC,2CAAA,EAAoB,mCAAA,EAAqC,SAAS,CAAA;AAAA,IAC/E,GAAG;AAAA;AACN;AAGK,MAAM,eAAe,CAAC,EAAE,WAAW,UAAA,EAAY,SAAA,EAAW,GAAG,KAAA,EAAM,qCACvE,KAAA,EAAA,EAAI,WAAA,EAAU,kBAAiB,SAAA,EAAWD,WAAA,CAAG,8CAA8C,SAAS,CAAA,EAAI,GAAG,KAAA,EAC1G,QAAA,EAAA;AAAA,kBAAAD,cAAA,CAACG,mBAAK,IAAA,EAAK,IAAA,EAAK,WAAU,uBAAA,EACxB,QAAA,kBAAAH,cAAA,CAACI,qCAAsB,CAAA,EACzB,CAAA;AAAA,kBACAJ,cAAA,CAACK,WAAI,EAAA,EAAG,MAAA,EAAO,SAAQ,SAAA,EAAU,IAAA,EAAK,SACnC,QAAA,EACH;AAAA,CAAA,EACF;AAGK,MAAM,cAAc,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,qBAChDL,cAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,iBAAgB,SAAA,EAAWC,WAAA,CAAG,kBAAkB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAGjF,MAAM,eAAA,GAAkB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,oCACnDI,OAAA,EAAA,EAAI,EAAA,EAAG,KAAI,OAAA,EAAQ,YAAA,EAAa,MAAK,KAAA,EAAO,GAAG,OAAO,SAAA,EAAWJ,WAAA,CAAG,MAAA,EAAQ,SAAS,CAAA,EAAG;AAUpF,MAAM,mBAAmB,CAAC;AAAA,EAC/B,OAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACED,cAAA,CAACM,eAAA,EAAA,EAAU,QAAA,EAAoB,SAAA,EAAU,UAAA,EACvC,QAAA,kBAAAC,eAAA;AAAA,EAACC,gBAAA;AAAA,EAAA;AAAA,IAEC,iBAAe,QAAA,IAAY,MAAA;AAAA,IAC3B,SAAA,EAAWP,WAAA;AAAA,MACT,4FAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,OAAA;AAAA,sBACDM,eAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EACd,QAAA,EAAA;AAAA,wBAAAP,cAAA,CAACK,WAAI,EAAA,EAAG,MAAA,EAAO,SAAQ,MAAA,EAAO,IAAA,EAAK,OAChC,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,QACC,WAAA,mBACCL,cAAA,CAACK,OAAA,EAAA,EAAI,EAAA,EAAG,MAAA,EAAO,SAAQ,SAAA,EAAU,IAAA,EAAK,OAAA,EACnC,QAAA,EAAA,WAAA,EACH,CAAA,GACE;AAAA,OAAA,EACN;AAAA;AAAA;AACF,CAAA,EACF;AAKK,MAAM,aAAA,GAAgB,CAAC,EAAE,QAAA,GAAW,iBAAiB,GAAG,KAAA,EAAM,qBACnEL,cAAA,CAACS,aAAA,EAAA,EAAO,IAAA,iCAAOC,iBAAA,EAAA,EAAM,CAAA,EAAI,MAAK,QAAA,EAAS,IAAA,EAAK,MAAK,OAAA,EAAQ,SAAA,EAAW,GAAG,KAAA,EACpE,QAAA,EACH;AAGK,MAAM,cAAA,GAAiB,CAAC,EAAE,QAAA,GAAW,eAAe,GAAG,KAAA,uBAC5DV,cAAA,CAACK,OAAA,EAAA,EAAI,IAAG,MAAA,EAAO,IAAA,EAAK,UAAS,OAAA,EAAQ,SAAA,EAAU,MAAK,OAAA,EAAS,GAAG,OAC7D,QAAA,EACH;AAOK,MAAM,gBAAgB,CAAC,EAAE,QAAQ,SAAA,EAAW,GAAG,OAAM,qBAC1DE,eAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,WAAA,EAAU,iBAAA;AAAA,IACV,IAAA,EAAM,MAAA,CAAO,OAAA,GAAU,OAAA,GAAU,QAAA;AAAA,IACjC,SAAA,EAAWN,WAAA,CAAG,mCAAA,EAAqC,SAAS,CAAA;AAAA,IAC3D,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAD,cAAA,CAACW,WAAA,EAAA,EAAM,IAAA,EAAK,IAAA,EAAK,OAAA,EAAS,MAAA,CAAO,OAAA,GAAU,aAAA,GAAgB,SAAA,EAAW,SAAA,EAAU,oBAAA,EAC7E,QAAA,EAAA,MAAA,CAAO,OAAA,GAAU,UAAU,UAAA,EAC9B,CAAA;AAAA,sBACAX,cAAA,CAACK,OAAA,EAAA,EAAI,EAAA,EAAG,GAAA,EAAI,SAAQ,MAAA,EAAO,IAAA,EAAK,KAAA,EAAM,SAAA,EAAWJ,YAAG,MAAA,CAAO,OAAA,IAAW,6BAA6B,CAAA,EAChG,iBAAO,OAAA,EACV;AAAA;AAAA;AACF;AAYF,MAAM,YAAA,GAAe,CAAC,OAAA,KACpB,OAAA,EAAS,MAAA;AAAA,EAAO,CAAC,WACf,OAAA,CAAQ,MAAA,IAAU,OAAO,MAAA,CAAO,KAAA,KAAU,QAAA,IAAY,MAAA,CAAO,KAAK;AACpE,CAAA,IAAK,EAAC;AAMR,MAAM,eAAe,CAAC;AAAA,EACpB,OAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA,GAAa,KAAA;AAAA,EACb,YAAA,GAAe,KAAA;AAAA,EACf,QAAA;AAAA,EACA,MAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAyB;AACvB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIW,eAAS,EAAE,CAAA;AACnC,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,cAAA,CAAmB,EAAE,CAAA;AAErD,EAAA,IAAI,UAAU,UAAA,EAAY;AACxB,IAAA,uBACEL,eAAA,CAAC,gBAAA,EAAA,EAAiB,aAAA,EAAY,UAAA,EAAY,GAAG,KAAA,EAC3C,QAAA,EAAA;AAAA,sBAAAP,cAAA,CAAC,YAAA,EAAA,EAAa,CAAA;AAAA,sCACb,WAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAA,cAAA,CAAC,eAAA,EAAA,EAAiB,kBAAQ,QAAA,EAAS,CAAA;AAAA,QAClC,MAAA,kCAAU,aAAA,EAAA,EAAc,MAAA,EAAgB,oBAAKA,cAAA,CAACW,WAAA,EAAA,EAAM,OAAA,EAAQ,SAAA,EAAU,QAAA,EAAA,UAAA,EAAQ;AAAA,OAAA,EACjF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,MAAM,MAAA,GAAS,KAAK,IAAA,EAAK;AACzB,IAAA,IAAI,MAAA,IAAU,CAAC,YAAA,EAAc,QAAA,CAAS,MAAM,CAAA;AAAA,EAC9C,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAA2C;AACpE,IAAA,IAAI,KAAA,CAAM,QAAQ,OAAA,EAAS;AACzB,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,UAAA,EAAW;AAAA,IACb;AAAA,EACF,CAAA;AAEA,EAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,IAAA,uBACEJ,eAAA,CAAC,gBAAA,EAAA,EAAiB,aAAA,EAAY,UAAA,EAAY,GAAG,KAAA,EAC3C,QAAA,EAAA;AAAA,sBAAAP,cAAA,CAAC,YAAA,EAAA,EAAa,CAAA;AAAA,sCACb,WAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAO,eAAA,CAACM,WAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAb,cAAA,CAACQ,gBAAA,EAAA,EAAW,SAAA,EAAU,iBAAA,EAAmB,QAAA,EAAA,OAAA,CAAQ,QAAA,EAAS,CAAA;AAAA,0BAC1DD,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,4BAAAP,cAAA;AAAA,cAACc,WAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,IAAA;AAAA,gBACP,QAAA,EAAU,CAAA,KAAA,KAAS,OAAA,CAAQ,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,gBAC7C,SAAA,EAAW,iBAAA;AAAA,gBACX,WAAA,EAAY,qBAAA;AAAA,gBACZ,QAAA,EAAU,YAAA;AAAA,gBACV,IAAA,EAAK;AAAA;AAAA,aACP;AAAA,4BACAd,cAAA;AAAA,cAAC,aAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,4BAAA;AAAA,gBACV,QAAA,EAAU,YAAA,IAAgB,CAAC,IAAA,CAAK,IAAA,EAAK;AAAA,gBACrC,OAAA,EAAS;AAAA;AAAA;AACX,WAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,QACC,YAAA,mBAAeA,cAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,cAAa,CAAA,GAAK,IAAA;AAAA,QAC3D;AAAA,OAAA,EACH;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,MAAM,OAAA,GAAU,QAAQ,aAAA,KAAkB,cAAA;AAE1C,EAAA,uBACEO,eAAA,CAAC,gBAAA,EAAA,EAAiB,aAAA,EAAY,UAAA,EAAY,GAAG,KAAA,EAC3C,QAAA,EAAA;AAAA,oBAAAP,cAAA,CAAC,YAAA,EAAA,EAAa,CAAA;AAAA,oCACb,WAAA,EAAA,EACE,QAAA,EAAA;AAAA,MAAA,OAAA,mBACCO,eAAA,CAACQ,cAAA,EAAA,EAAS,SAAA,EAAU,OAAA,EAClB,QAAA,EAAA;AAAA,wBAAAf,cAAA,CAACgB,oBAAA,EAAA,EAAe,SAAA,EAAU,sBAAA,EAAwB,QAAA,EAAA,OAAA,CAAQ,QAAA,EAAS,CAAA;AAAA,QAClE,OAAA,CAAQ,IAAI,CAAA,MAAA,qBACXhB,cAAA;AAAA,UAAC,gBAAA;AAAA,UAAA;AAAA,YAEC,OAAO,MAAA,CAAO,KAAA;AAAA,YACd,aAAa,MAAA,CAAO,WAAA;AAAA,YACpB,QAAA,EAAU,YAAA;AAAA,YACV,OAAA,kBACEA,cAAA;AAAA,cAACiB,iBAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,QAAA;AAAA,gBACV,QAAA,EAAU,YAAA;AAAA,gBACV,OAAA,EAAS,QAAA,CAAS,QAAA,CAAS,MAAA,CAAO,KAAK,CAAA;AAAA,gBACvC,iBAAiB,MACf,WAAA;AAAA,kBAAY,aACV,OAAA,CAAQ,QAAA,CAAS,MAAA,CAAO,KAAK,IACzB,OAAA,CAAQ,MAAA,CAAO,CAAA,aAAA,KAAiB,aAAA,KAAkB,OAAO,KAAK,CAAA,GAC9D,CAAC,GAAG,OAAA,EAAS,OAAO,KAAK;AAAA;AAC/B;AAAA;AAEJ,WAAA;AAAA,UAhBG,MAAA,CAAO;AAAA,SAmBf,CAAA;AAAA,wBACDjB,cAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,yBAAA;AAAA,YACV,QAAA,EAAU,YAAA,IAAgB,QAAA,CAAS,MAAA,KAAW,CAAA;AAAA,YAC9C,OAAA,EAAS,MAAM,QAAA,CAAS,QAAQ,CAAA;AAAA,YACjC,QAAA,EAAA;AAAA;AAAA;AAED,OAAA,EACF,CAAA,mBAEAO,eAAA;AAAA,QAACQ,cAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,OAAA;AAAA,UACV,MAAA,kBACEf,cAAA;AAAA,YAACkB,qBAAA;AAAA,YAAA;AAAA,cACC,QAAA,EAAU,YAAA;AAAA,cACV,KAAA,EAAO,QAAA,CAAS,CAAC,CAAA,IAAK,IAAA;AAAA,cACtB,eAAe,CAAA,KAAA,KAAS;AACtB,gBAAA,MAAM,KAAA,GAAQ,OAAO,KAAK,CAAA;AAC1B,gBAAA,WAAA,CAAY,CAAC,KAAK,CAAC,CAAA;AACnB,gBAAA,QAAA,CAAS,KAAK,CAAA;AAAA,cAChB;AAAA;AAAA,WACF;AAAA,UAGF,QAAA,EAAA;AAAA,4BAAAlB,cAAA,CAACgB,oBAAA,EAAA,EAAe,SAAA,EAAU,sBAAA,EAAwB,QAAA,EAAA,OAAA,CAAQ,QAAA,EAAS,CAAA;AAAA,YAClE,OAAA,CAAQ,IAAI,CAAA,MAAA,qBACXhB,cAAA;AAAA,cAAC,gBAAA;AAAA,cAAA;AAAA,gBAEC,OAAO,MAAA,CAAO,KAAA;AAAA,gBACd,aAAa,MAAA,CAAO,WAAA;AAAA,gBACpB,QAAA,EAAU,YAAA;AAAA,gBACV,yBAASA,cAAA,CAACmB,yBAAA,EAAA,EAAe,WAAU,QAAA,EAAS,KAAA,EAAO,OAAO,KAAA,EAAO;AAAA,eAAA;AAAA,cAJ5D,MAAA,CAAO;AAAA,aAMf;AAAA;AAAA;AAAA,OACH;AAAA,MAED,YAAA,mBAAenB,cAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,cAAa,CAAA,GAAK,IAAA;AAAA,MAC3D;AAAA,KAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEO,MAAM,UAAU,CAAC,EAAE,OAAA,EAAS,GAAG,OAAM,KAAoB;AAC9D,EAAA,MAAM,OAAA,GAAU,YAAA,CAAa,OAAA,CAAQ,OAAO,CAAA;AAC5C,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,SAAA,CAAU,CAAC,QAAQ,QAAA,EAAU,OAAA,CAAQ,GAAA,CAAI,CAAA,MAAA,KAAU,MAAA,CAAO,KAAK,CAAA,EAAG,OAAA,CAAQ,aAAa,CAAC,CAAA;AAEhH,EAAA,sCAAQ,YAAA,EAAA,EAA8B,OAAA,EAAkB,OAAA,EAAmB,GAAG,SAApD,UAA2D,CAAA;AACvF;;;;;;;;;;;;"}
|
|
@@ -8,7 +8,7 @@ import { F as Field, e as FieldLabel, f as Fieldset, g as FieldsetLegend, d as F
|
|
|
8
8
|
import './field-control-aria-DB6y41tQ.js';
|
|
9
9
|
import { I as Input } from './input-D5_B67_r.js';
|
|
10
10
|
import { a as RadioGroupItem, R as RadioGroup } from './radio-group-bvm7Sqq_.js';
|
|
11
|
-
import { T as Txt } from './Txt-
|
|
11
|
+
import { T as Txt } from './Txt-CuuPO9Ho.js';
|
|
12
12
|
import { Icon } from './icons/Icon.es.js';
|
|
13
13
|
import { raisedSurfaceStyle } from './primitives/raised-surface.es.js';
|
|
14
14
|
import { c as cn } from './cn-65Adrsfj.js';
|
|
@@ -212,4 +212,4 @@ const AskUser = ({ payload, ...props }) => {
|
|
|
212
212
|
};
|
|
213
213
|
|
|
214
214
|
export { AskUser as A, AskUserBody as a, AskUserContainer as b, AskUserLabel as c, AskUserOptionRow as d, AskUserOutput as e, AskUserPending as f, AskUserQuestion as g, AskUserSubmit as h };
|
|
215
|
-
//# sourceMappingURL=ask-user-
|
|
215
|
+
//# sourceMappingURL=ask-user-DAm06wBo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user-CqCUiZRR.js","sources":["../src/ds/components/ai/ask-user/ask-user.tsx"],"sourcesContent":["import { Check, MessageCircleQuestion } from 'lucide-react';\nimport { useState } from 'react';\nimport type { ComponentProps, KeyboardEvent, ReactNode } from 'react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { Field, FieldItem, FieldLabel, Fieldset, FieldsetLegend } from '@/ds/components/Field';\nimport type { FieldLabelProps } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { RadioGroup, RadioGroupItem } from '@/ds/components/RadioGroup';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport type AskUserSelectionMode = 'single_select' | 'multi_select';\nexport type AskUserAnswer = string | string[];\n\nexport interface AskUserOption {\n label: string;\n description?: string;\n}\n\nexport interface AskUserPayload {\n question: string;\n options?: AskUserOption[];\n selectionMode?: AskUserSelectionMode;\n}\n\nexport interface AskUserResult {\n content: string;\n isError?: boolean;\n}\n\nexport const AskUserContainer = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot=\"ask-user\"\n className={cn(raisedSurfaceStyle, 'w-full overflow-hidden rounded-xl', className)}\n {...props}\n />\n);\n\nexport const AskUserLabel = ({ children = 'Question', className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-label\" className={cn('flex min-h-10 items-center gap-2 px-4 pt-3', className)} {...props}>\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n <MessageCircleQuestion />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n </div>\n);\n\nexport const AskUserBody = ({ className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-body\" className={cn('px-4 pt-1 pb-4', className)} {...props} />\n);\n\nexport const AskUserQuestion = ({ className, ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"p\" variant=\"subheading\" tone=\"ink\" {...props} className={cn('mb-3', className)} />\n);\n\nexport interface AskUserOptionRowProps extends Omit<FieldLabelProps, 'children'> {\n control: ReactNode;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport const AskUserOptionRow = ({\n control,\n label,\n description,\n disabled = false,\n className,\n ...props\n}: AskUserOptionRowProps) => (\n <FieldItem disabled={disabled} className=\"contents\">\n <FieldLabel\n // state-layer's wash only stops at :disabled/aria-disabled, and a <label> is neither\n aria-disabled={disabled || undefined}\n className={cn(\n 'state-layer flex items-start gap-2.5 rounded-lg bg-fill px-3 py-2 data-disabled:opacity-50',\n className,\n )}\n {...props}\n >\n {control}\n <span className=\"grid gap-0.5\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n {description ? (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {description}\n </Txt>\n ) : null}\n </span>\n </FieldLabel>\n </FieldItem>\n);\n\nexport type AskUserSubmitProps = Omit<ComponentProps<typeof Button>, 'children'> & { children?: ReactNode };\n\nexport const AskUserSubmit = ({ children = 'Submit answer', ...props }: AskUserSubmitProps) => (\n <Button icon={<Check />} type=\"button\" size=\"sm\" variant=\"primary\" {...props}>\n {children}\n </Button>\n);\n\nexport const AskUserPending = ({ children = 'Submitting…', ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"span\" role=\"status\" variant=\"caption\" tone=\"muted\" {...props}>\n {children}\n </Txt>\n);\n\nexport interface AskUserOutputProps extends ComponentProps<'div'> {\n result: AskUserResult;\n}\n\nexport const AskUserOutput = ({ result, className, ...props }: AskUserOutputProps) => (\n <div\n data-slot=\"ask-user-output\"\n role={result.isError ? 'alert' : 'status'}\n className={cn('grid gap-2 rounded-lg bg-fill p-3', className)}\n {...props}\n >\n <Badge size=\"xs\" variant={result.isError ? 'destructive' : 'success'} className=\"justify-self-start\">\n {result.isError ? 'Error' : 'Answered'}\n </Badge>\n <Txt as=\"p\" variant=\"body\" tone=\"ink\" className={cn(result.isError && 'text-destructive-foreground')}>\n {result.content}\n </Txt>\n </div>\n);\n\nexport interface AskUserProps extends Omit<ComponentProps<typeof AskUserContainer>, 'children' | 'onSubmit'> {\n payload: AskUserPayload;\n result?: AskUserResult;\n isAnswered?: boolean;\n isSubmitting?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n footer?: ReactNode;\n}\n\nconst validOptions = (options: AskUserPayload['options']): AskUserOption[] =>\n options?.filter((option): option is AskUserOption =>\n Boolean(option && typeof option.label === 'string' && option.label),\n ) ?? [];\n\ninterface AskUserInputProps extends AskUserProps {\n options: AskUserOption[];\n}\n\nconst AskUserInput = ({\n payload,\n options,\n result,\n isAnswered = false,\n isSubmitting = false,\n onSubmit,\n footer,\n ...props\n}: AskUserInputProps) => {\n const [text, setText] = useState('');\n const [selected, setSelected] = useState<string[]>([]);\n\n if (result || isAnswered) {\n return (\n <AskUserContainer data-testid=\"ask-user\" {...props}>\n <AskUserLabel />\n <AskUserBody>\n <AskUserQuestion>{payload.question}</AskUserQuestion>\n {result ? <AskUserOutput result={result} /> : <Badge variant=\"success\">Answered</Badge>}\n </AskUserBody>\n </AskUserContainer>\n );\n }\n\n const submitText = () => {\n const answer = text.trim();\n if (answer && !isSubmitting) onSubmit(answer);\n };\n\n const handleTextKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n submitText();\n }\n };\n\n if (options.length === 0) {\n return (\n <AskUserContainer data-testid=\"ask-user\" {...props}>\n <AskUserLabel />\n <AskUserBody>\n <Field>\n <FieldLabel className=\"text-subheading\">{payload.question}</FieldLabel>\n <div className=\"flex items-center gap-2\">\n <Input\n value={text}\n onChange={event => setText(event.target.value)}\n onKeyDown={handleTextKeyDown}\n placeholder=\"Type your answer...\"\n disabled={isSubmitting}\n size=\"sm\"\n />\n <AskUserSubmit\n className=\"shrink-0 whitespace-nowrap\"\n disabled={isSubmitting || !text.trim()}\n onClick={submitText}\n />\n </div>\n </Field>\n {isSubmitting ? <AskUserPending className=\"mt-2 block\" /> : null}\n {footer}\n </AskUserBody>\n </AskUserContainer>\n );\n }\n\n const isMulti = payload.selectionMode === 'multi_select';\n\n return (\n <AskUserContainer data-testid=\"ask-user\" {...props}>\n <AskUserLabel />\n <AskUserBody>\n {isMulti ? (\n <Fieldset className=\"gap-2\">\n <FieldsetLegend className=\"mb-1 text-subheading\">{payload.question}</FieldsetLegend>\n {options.map(option => (\n <AskUserOptionRow\n key={option.label}\n label={option.label}\n description={option.description}\n disabled={isSubmitting}\n control={\n <Checkbox\n className=\"mt-0.5\"\n disabled={isSubmitting}\n checked={selected.includes(option.label)}\n onCheckedChange={() =>\n setSelected(current =>\n current.includes(option.label)\n ? current.filter(selectedLabel => selectedLabel !== option.label)\n : [...current, option.label],\n )\n }\n />\n }\n />\n ))}\n <AskUserSubmit\n className=\"mt-1 justify-self-start\"\n disabled={isSubmitting || selected.length === 0}\n onClick={() => onSubmit(selected)}\n >\n Submit answer\n </AskUserSubmit>\n </Fieldset>\n ) : (\n <Fieldset\n className=\"gap-2\"\n render={\n <RadioGroup\n disabled={isSubmitting}\n value={selected[0] ?? null}\n onValueChange={value => {\n const label = String(value);\n setSelected([label]);\n onSubmit(label);\n }}\n />\n }\n >\n <FieldsetLegend className=\"mb-1 text-subheading\">{payload.question}</FieldsetLegend>\n {options.map(option => (\n <AskUserOptionRow\n key={option.label}\n label={option.label}\n description={option.description}\n disabled={isSubmitting}\n control={<RadioGroupItem className=\"mt-0.5\" value={option.label} />}\n />\n ))}\n </Fieldset>\n )}\n {isSubmitting ? <AskUserPending className=\"mt-3 block\" /> : null}\n {footer}\n </AskUserBody>\n </AskUserContainer>\n );\n};\n\nexport const AskUser = ({ payload, ...props }: AskUserProps) => {\n const options = validOptions(payload.options);\n const payloadKey = JSON.stringify([payload.question, options.map(option => option.label), payload.selectionMode]);\n\n return <AskUserInput key={payloadKey} payload={payload} options={options} {...props} />;\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ask-user-DAm06wBo.js","sources":["../src/ds/components/ai/ask-user/ask-user.tsx"],"sourcesContent":["import { Check, MessageCircleQuestion } from 'lucide-react';\nimport { useState } from 'react';\nimport type { ComponentProps, KeyboardEvent, ReactNode } from 'react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { Field, FieldItem, FieldLabel, Fieldset, FieldsetLegend } from '@/ds/components/Field';\nimport type { FieldLabelProps } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { RadioGroup, RadioGroupItem } from '@/ds/components/RadioGroup';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport type AskUserSelectionMode = 'single_select' | 'multi_select';\nexport type AskUserAnswer = string | string[];\n\nexport interface AskUserOption {\n label: string;\n description?: string;\n}\n\nexport interface AskUserPayload {\n question: string;\n options?: AskUserOption[];\n selectionMode?: AskUserSelectionMode;\n}\n\nexport interface AskUserResult {\n content: string;\n isError?: boolean;\n}\n\nexport const AskUserContainer = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot=\"ask-user\"\n className={cn(raisedSurfaceStyle, 'w-full overflow-hidden rounded-xl', className)}\n {...props}\n />\n);\n\nexport const AskUserLabel = ({ children = 'Question', className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-label\" className={cn('flex min-h-10 items-center gap-2 px-4 pt-3', className)} {...props}>\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n <MessageCircleQuestion />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n </div>\n);\n\nexport const AskUserBody = ({ className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-body\" className={cn('px-4 pt-1 pb-4', className)} {...props} />\n);\n\nexport const AskUserQuestion = ({ className, ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"p\" variant=\"subheading\" tone=\"ink\" {...props} className={cn('mb-3', className)} />\n);\n\nexport interface AskUserOptionRowProps extends Omit<FieldLabelProps, 'children'> {\n control: ReactNode;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport const AskUserOptionRow = ({\n control,\n label,\n description,\n disabled = false,\n className,\n ...props\n}: AskUserOptionRowProps) => (\n <FieldItem disabled={disabled} className=\"contents\">\n <FieldLabel\n // state-layer's wash only stops at :disabled/aria-disabled, and a <label> is neither\n aria-disabled={disabled || undefined}\n className={cn(\n 'state-layer flex items-start gap-2.5 rounded-lg bg-fill px-3 py-2 data-disabled:opacity-50',\n className,\n )}\n {...props}\n >\n {control}\n <span className=\"grid gap-0.5\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n {description ? (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {description}\n </Txt>\n ) : null}\n </span>\n </FieldLabel>\n </FieldItem>\n);\n\nexport type AskUserSubmitProps = Omit<ComponentProps<typeof Button>, 'children'> & { children?: ReactNode };\n\nexport const AskUserSubmit = ({ children = 'Submit answer', ...props }: AskUserSubmitProps) => (\n <Button icon={<Check />} type=\"button\" size=\"sm\" variant=\"primary\" {...props}>\n {children}\n </Button>\n);\n\nexport const AskUserPending = ({ children = 'Submitting…', ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"span\" role=\"status\" variant=\"caption\" tone=\"muted\" {...props}>\n {children}\n </Txt>\n);\n\nexport interface AskUserOutputProps extends ComponentProps<'div'> {\n result: AskUserResult;\n}\n\nexport const AskUserOutput = ({ result, className, ...props }: AskUserOutputProps) => (\n <div\n data-slot=\"ask-user-output\"\n role={result.isError ? 'alert' : 'status'}\n className={cn('grid gap-2 rounded-lg bg-fill p-3', className)}\n {...props}\n >\n <Badge size=\"xs\" variant={result.isError ? 'destructive' : 'success'} className=\"justify-self-start\">\n {result.isError ? 'Error' : 'Answered'}\n </Badge>\n <Txt as=\"p\" variant=\"body\" tone=\"ink\" className={cn(result.isError && 'text-destructive-foreground')}>\n {result.content}\n </Txt>\n </div>\n);\n\nexport interface AskUserProps extends Omit<ComponentProps<typeof AskUserContainer>, 'children' | 'onSubmit'> {\n payload: AskUserPayload;\n result?: AskUserResult;\n isAnswered?: boolean;\n isSubmitting?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n footer?: ReactNode;\n}\n\nconst validOptions = (options: AskUserPayload['options']): AskUserOption[] =>\n options?.filter((option): option is AskUserOption =>\n Boolean(option && typeof option.label === 'string' && option.label),\n ) ?? [];\n\ninterface AskUserInputProps extends AskUserProps {\n options: AskUserOption[];\n}\n\nconst AskUserInput = ({\n payload,\n options,\n result,\n isAnswered = false,\n isSubmitting = false,\n onSubmit,\n footer,\n ...props\n}: AskUserInputProps) => {\n const [text, setText] = useState('');\n const [selected, setSelected] = useState<string[]>([]);\n\n if (result || isAnswered) {\n return (\n <AskUserContainer data-testid=\"ask-user\" {...props}>\n <AskUserLabel />\n <AskUserBody>\n <AskUserQuestion>{payload.question}</AskUserQuestion>\n {result ? <AskUserOutput result={result} /> : <Badge variant=\"success\">Answered</Badge>}\n </AskUserBody>\n </AskUserContainer>\n );\n }\n\n const submitText = () => {\n const answer = text.trim();\n if (answer && !isSubmitting) onSubmit(answer);\n };\n\n const handleTextKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n submitText();\n }\n };\n\n if (options.length === 0) {\n return (\n <AskUserContainer data-testid=\"ask-user\" {...props}>\n <AskUserLabel />\n <AskUserBody>\n <Field>\n <FieldLabel className=\"text-subheading\">{payload.question}</FieldLabel>\n <div className=\"flex items-center gap-2\">\n <Input\n value={text}\n onChange={event => setText(event.target.value)}\n onKeyDown={handleTextKeyDown}\n placeholder=\"Type your answer...\"\n disabled={isSubmitting}\n size=\"sm\"\n />\n <AskUserSubmit\n className=\"shrink-0 whitespace-nowrap\"\n disabled={isSubmitting || !text.trim()}\n onClick={submitText}\n />\n </div>\n </Field>\n {isSubmitting ? <AskUserPending className=\"mt-2 block\" /> : null}\n {footer}\n </AskUserBody>\n </AskUserContainer>\n );\n }\n\n const isMulti = payload.selectionMode === 'multi_select';\n\n return (\n <AskUserContainer data-testid=\"ask-user\" {...props}>\n <AskUserLabel />\n <AskUserBody>\n {isMulti ? (\n <Fieldset className=\"gap-2\">\n <FieldsetLegend className=\"mb-1 text-subheading\">{payload.question}</FieldsetLegend>\n {options.map(option => (\n <AskUserOptionRow\n key={option.label}\n label={option.label}\n description={option.description}\n disabled={isSubmitting}\n control={\n <Checkbox\n className=\"mt-0.5\"\n disabled={isSubmitting}\n checked={selected.includes(option.label)}\n onCheckedChange={() =>\n setSelected(current =>\n current.includes(option.label)\n ? current.filter(selectedLabel => selectedLabel !== option.label)\n : [...current, option.label],\n )\n }\n />\n }\n />\n ))}\n <AskUserSubmit\n className=\"mt-1 justify-self-start\"\n disabled={isSubmitting || selected.length === 0}\n onClick={() => onSubmit(selected)}\n >\n Submit answer\n </AskUserSubmit>\n </Fieldset>\n ) : (\n <Fieldset\n className=\"gap-2\"\n render={\n <RadioGroup\n disabled={isSubmitting}\n value={selected[0] ?? null}\n onValueChange={value => {\n const label = String(value);\n setSelected([label]);\n onSubmit(label);\n }}\n />\n }\n >\n <FieldsetLegend className=\"mb-1 text-subheading\">{payload.question}</FieldsetLegend>\n {options.map(option => (\n <AskUserOptionRow\n key={option.label}\n label={option.label}\n description={option.description}\n disabled={isSubmitting}\n control={<RadioGroupItem className=\"mt-0.5\" value={option.label} />}\n />\n ))}\n </Fieldset>\n )}\n {isSubmitting ? <AskUserPending className=\"mt-3 block\" /> : null}\n {footer}\n </AskUserBody>\n </AskUserContainer>\n );\n};\n\nexport const AskUser = ({ payload, ...props }: AskUserProps) => {\n const options = validOptions(payload.options);\n const payloadKey = JSON.stringify([payload.question, options.map(option => option.label), payload.selectionMode]);\n\n return <AskUserInput key={payloadKey} payload={payload} options={options} {...props} />;\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
const Txt = require('./Txt-
|
|
4
|
+
const Txt = require('./Txt-DFPibRb3.cjs');
|
|
5
5
|
const primitives_messageSurface = require('./primitives/message-surface.cjs.js');
|
|
6
6
|
const utils_cn = require('./cn-DG0X1KEP.cjs');
|
|
7
7
|
|
|
@@ -67,4 +67,4 @@ function AttachmentCard({ name, typeLabel, icon, preview, onClick, href, buttonR
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
exports.AttachmentCard = AttachmentCard;
|
|
70
|
-
//# sourceMappingURL=attachment-card-
|
|
70
|
+
//# sourceMappingURL=attachment-card-B95kgvBs.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-card-
|
|
1
|
+
{"version":3,"file":"attachment-card-B95kgvBs.cjs","sources":["../src/ds/components/AttachmentCard/attachment-preview.tsx","../src/ds/components/AttachmentCard/attachment-card.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\n/** Crossfade between fully blurred bands, then fade the image into the message surface for its caption. */\nexport function AttachmentPreview({ children }: { children: ReactNode }) {\n return (\n <span className=\"relative block h-44 mask-b-from-45% mask-b-to-95%\">\n {children}\n {/* Fully opaque, overlapping bands replace sharp pixels as the blur radius increases.\n Fading each layer across its entire height would leave sharp detail visible underneath. */}\n <span aria-hidden=\"true\" className=\"pointer-events-none absolute inset-x-0 bottom-0 h-28\">\n <span className=\"absolute inset-0 [mask-image:linear-gradient(to_bottom,transparent,black_15%,black_30%,transparent_45%)] backdrop-blur-[2px]\" />\n <span className=\"absolute inset-0 [mask-image:linear-gradient(to_bottom,transparent_15%,black_30%,black_45%,transparent_60%)] backdrop-blur-xs\" />\n <span className=\"absolute inset-0 [mask-image:linear-gradient(to_bottom,transparent_30%,black_45%,black_60%,transparent_75%)] backdrop-blur-sm\" />\n <span className=\"absolute inset-0 [mask-image:linear-gradient(to_bottom,transparent_45%,black_60%,black_75%,transparent_90%)] backdrop-blur-lg\" />\n <span className=\"absolute inset-0 [mask-image:linear-gradient(to_bottom,transparent_60%,black_75%)] backdrop-blur-[32px]\" />\n </span>\n </span>\n );\n}\n","import type { ReactNode, Ref } from 'react';\nimport { Txt } from '../Txt';\nimport { AttachmentPreview } from './attachment-preview';\nimport { messageSurfaceStyle } from '@/ds/primitives/message-surface';\nimport { cn } from '@/lib/utils';\n\nexport interface AttachmentCardProps {\n name: string;\n buttonRef?: Ref<HTMLButtonElement>;\n typeLabel: string;\n icon: ReactNode;\n preview?: ReactNode;\n onClick?: () => void;\n href?: string;\n}\n\n/** Sent-file presentation. Upload state and removal controls belong to the composer. */\nexport function AttachmentCard({ name, typeLabel, icon, preview, onClick, href, buttonRef }: AttachmentCardProps) {\n const className = cn(\n messageSurfaceStyle,\n 'relative isolate block w-64 max-w-full min-w-0 overflow-hidden text-left',\n preview &&\n 'after:pointer-events-none after:absolute after:inset-0 after:z-10 after:rounded-[inherit] after:inset-ring-1 after:inset-ring-white/15',\n (onClick || href) &&\n 'cursor-pointer hover:bg-fill-hover focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus motion-safe:transition-colors',\n );\n const content = (\n <>\n {preview && <AttachmentPreview>{preview}</AttachmentPreview>}\n <span className={cn('flex min-w-0 items-center gap-2.5 px-3 py-2.5', preview && 'absolute inset-x-0 bottom-0')}>\n {!preview && (\n <span className=\"flex size-5 shrink-0 items-center justify-center text-muted-foreground\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <span className=\"min-w-0 flex-1\">\n <Txt as=\"span\" variant=\"body-sm\" className=\"block truncate\" title={name}>\n {name}\n </Txt>\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"block truncate\">\n {typeLabel}\n </Txt>\n </span>\n </span>\n </>\n );\n\n if (onClick) {\n return (\n <button\n ref={buttonRef}\n type=\"button\"\n className={className}\n onClick={onClick}\n aria-label={`Preview ${name}`}\n title={name}\n >\n {content}\n </button>\n );\n }\n if (href) {\n return (\n <a\n className={className}\n href={href}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n aria-label={`Open ${name}`}\n title={name}\n >\n {content}\n </a>\n );\n }\n return (\n <div className={className} title={name}>\n {content}\n </div>\n );\n}\n"],"names":["jsxs","jsx","cn","messageSurfaceStyle","Fragment","Txt"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { T as Txt } from './Txt-
|
|
2
|
+
import { T as Txt } from './Txt-CuuPO9Ho.js';
|
|
3
3
|
import { messageSurfaceStyle } from './primitives/message-surface.es.js';
|
|
4
4
|
import { c as cn } from './cn-65Adrsfj.js';
|
|
5
5
|
|
|
@@ -65,4 +65,4 @@ function AttachmentCard({ name, typeLabel, icon, preview, onClick, href, buttonR
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
export { AttachmentCard as A };
|
|
68
|
-
//# sourceMappingURL=attachment-card-
|
|
68
|
+
//# sourceMappingURL=attachment-card-Q-77luib.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-card-
|
|
1
|
+
{"version":3,"file":"attachment-card-Q-77luib.js","sources":["../src/ds/components/AttachmentCard/attachment-preview.tsx","../src/ds/components/AttachmentCard/attachment-card.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\n/** Crossfade between fully blurred bands, then fade the image into the message surface for its caption. */\nexport function AttachmentPreview({ children }: { children: ReactNode }) {\n return (\n <span className=\"relative block h-44 mask-b-from-45% mask-b-to-95%\">\n {children}\n {/* Fully opaque, overlapping bands replace sharp pixels as the blur radius increases.\n Fading each layer across its entire height would leave sharp detail visible underneath. */}\n <span aria-hidden=\"true\" className=\"pointer-events-none absolute inset-x-0 bottom-0 h-28\">\n <span className=\"absolute inset-0 [mask-image:linear-gradient(to_bottom,transparent,black_15%,black_30%,transparent_45%)] backdrop-blur-[2px]\" />\n <span className=\"absolute inset-0 [mask-image:linear-gradient(to_bottom,transparent_15%,black_30%,black_45%,transparent_60%)] backdrop-blur-xs\" />\n <span className=\"absolute inset-0 [mask-image:linear-gradient(to_bottom,transparent_30%,black_45%,black_60%,transparent_75%)] backdrop-blur-sm\" />\n <span className=\"absolute inset-0 [mask-image:linear-gradient(to_bottom,transparent_45%,black_60%,black_75%,transparent_90%)] backdrop-blur-lg\" />\n <span className=\"absolute inset-0 [mask-image:linear-gradient(to_bottom,transparent_60%,black_75%)] backdrop-blur-[32px]\" />\n </span>\n </span>\n );\n}\n","import type { ReactNode, Ref } from 'react';\nimport { Txt } from '../Txt';\nimport { AttachmentPreview } from './attachment-preview';\nimport { messageSurfaceStyle } from '@/ds/primitives/message-surface';\nimport { cn } from '@/lib/utils';\n\nexport interface AttachmentCardProps {\n name: string;\n buttonRef?: Ref<HTMLButtonElement>;\n typeLabel: string;\n icon: ReactNode;\n preview?: ReactNode;\n onClick?: () => void;\n href?: string;\n}\n\n/** Sent-file presentation. Upload state and removal controls belong to the composer. */\nexport function AttachmentCard({ name, typeLabel, icon, preview, onClick, href, buttonRef }: AttachmentCardProps) {\n const className = cn(\n messageSurfaceStyle,\n 'relative isolate block w-64 max-w-full min-w-0 overflow-hidden text-left',\n preview &&\n 'after:pointer-events-none after:absolute after:inset-0 after:z-10 after:rounded-[inherit] after:inset-ring-1 after:inset-ring-white/15',\n (onClick || href) &&\n 'cursor-pointer hover:bg-fill-hover focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus motion-safe:transition-colors',\n );\n const content = (\n <>\n {preview && <AttachmentPreview>{preview}</AttachmentPreview>}\n <span className={cn('flex min-w-0 items-center gap-2.5 px-3 py-2.5', preview && 'absolute inset-x-0 bottom-0')}>\n {!preview && (\n <span className=\"flex size-5 shrink-0 items-center justify-center text-muted-foreground\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <span className=\"min-w-0 flex-1\">\n <Txt as=\"span\" variant=\"body-sm\" className=\"block truncate\" title={name}>\n {name}\n </Txt>\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"block truncate\">\n {typeLabel}\n </Txt>\n </span>\n </span>\n </>\n );\n\n if (onClick) {\n return (\n <button\n ref={buttonRef}\n type=\"button\"\n className={className}\n onClick={onClick}\n aria-label={`Preview ${name}`}\n title={name}\n >\n {content}\n </button>\n );\n }\n if (href) {\n return (\n <a\n className={className}\n href={href}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n aria-label={`Open ${name}`}\n title={name}\n >\n {content}\n </a>\n );\n }\n return (\n <div className={className} title={name}>\n {content}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -48,7 +48,7 @@ const Code = React.memo(function Code2({ code, lang, lineClassName, ...props })
|
|
|
48
48
|
}
|
|
49
49
|
const tail = code.slice(usable.code.length);
|
|
50
50
|
let codeOffset = 0;
|
|
51
|
-
return /* @__PURE__ */ jsx("pre", { ...props, children: /* @__PURE__ */ jsxs("code", { children: [
|
|
51
|
+
return /* @__PURE__ */ jsx("pre", { ...props, children: /* @__PURE__ */ jsxs("code", { className: "font-[inherit]", children: [
|
|
52
52
|
usable.tokens.map((line, lineIndex) => {
|
|
53
53
|
const lineOffset = codeOffset;
|
|
54
54
|
let tokenOffset = lineOffset;
|
|
@@ -75,4 +75,4 @@ const Code = React.memo(function Code2({ code, lang, lineClassName, ...props })
|
|
|
75
75
|
});
|
|
76
76
|
|
|
77
77
|
export { Code as C, tokenStyle as t, useHighlight as u };
|
|
78
|
-
//# sourceMappingURL=code-
|
|
78
|
+
//# sourceMappingURL=code-DAXWNzvf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-DAXWNzvf.js","sources":["../src/ds/components/Code/use-highlight.ts","../src/ds/components/Code/code.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport type { CSSProperties } from 'react';\nimport type { ThemedToken } from 'shiki/core';\nimport { useDebounce } from 'use-debounce';\n\nimport { highlight } from '../CodeEditor/highlight';\n\nexport interface Highlighted {\n code: string;\n lang: string;\n tokens: ThemedToken[][];\n}\n\nconst HIGHLIGHT_SAMPLE_INTERVAL_MS = 75;\n\n/** Tokens land a pass behind the code, so the value may still describe the previous code. */\nexport function useHighlight(code: string, lang: string | undefined): Highlighted | null {\n const [highlighted, setHighlighted] = useState<Highlighted | null>(null);\n // maxWait equal to the delay turns the debounce into a throttle.\n const [sampledCode] = useDebounce(code, HIGHLIGHT_SAMPLE_INTERVAL_MS, {\n leading: true,\n maxWait: HIGHLIGHT_SAMPLE_INTERVAL_MS,\n });\n\n useEffect(() => {\n if (!lang) return;\n\n let cancelled = false;\n\n void highlight(sampledCode, lang)\n .then(tokens => {\n if (!cancelled && tokens?.length) setHighlighted({ code: sampledCode, lang, tokens });\n })\n .catch(() => {});\n\n return () => {\n cancelled = true;\n };\n }, [sampledCode, lang]);\n\n return lang ? highlighted : null;\n}\n\nexport function tokenStyle(token: ThemedToken): CSSProperties | undefined {\n if (token.htmlStyle && typeof token.htmlStyle === 'object') {\n return token.htmlStyle as CSSProperties;\n }\n\n return token.color ? { color: token.color } : undefined;\n}\n","import * as React from 'react';\n\nimport { tokenStyle, useHighlight } from './use-highlight';\nimport type { Highlighted } from './use-highlight';\n\nexport interface CodeProps extends React.HTMLAttributes<HTMLPreElement> {\n code: string;\n lang?: string;\n /** Per-line class, e.g. for diff or search highlighting. When set, every line is wrapped in a `[data-line]` span. */\n lineClassName?: (lineIndex: number, lineText: string) => string | undefined;\n}\n\n/** Colors from an earlier pass still hold when the new code only appends to the old. */\nfunction usableHighlight(highlighted: Highlighted | null, code: string, lang?: string): Highlighted | null {\n if (!highlighted || highlighted.lang !== lang) return null;\n return code.startsWith(highlighted.code) ? highlighted : null;\n}\n\n/**\n * Low-level shiki token renderer shared by `CodeBlock` and `MarkdownRenderer`.\n * Dual-theme colors stay as `--shiki-light` / `--shiki-dark` CSS variables on\n * each token span; the `.shiki-token` class (index.css) picks the variant from\n * the `.dark` root class, so theme switching is pure CSS — no ThemeProvider\n * required. Renders plain text while highlighting is pending or when the\n * language is missing/unknown.\n *\n * A streaming fence re-renders on every delta while highlighting stays a sample\n * behind. Dropping the previous tokens each time would strobe the whole block\n * between colored and plain, so the settled prefix keeps its colors and only\n * the newly arrived tail waits, uncolored, for the next pass.\n */\nexport const Code = React.memo(function Code({ code, lang, lineClassName, ...props }: CodeProps) {\n const highlighted = useHighlight(code, lang);\n\n const usable = usableHighlight(highlighted, code, lang);\n if (!usable) {\n if (!lineClassName) return <pre {...props}>{code}</pre>;\n const lines = code.split('\\n');\n return (\n <pre {...props}>\n {lines.map((text, i) => (\n <React.Fragment key={i}>\n <span data-line={i} className={lineClassName(i, text)}>\n {text}\n </span>\n {i !== lines.length - 1 && '\\n'}\n </React.Fragment>\n ))}\n </pre>\n );\n }\n\n const tail = code.slice(usable.code.length);\n let codeOffset = 0;\n\n return (\n <pre {...props}>\n <code className=\"font-[inherit]\">\n {usable.tokens.map((line, lineIndex) => {\n const lineOffset = codeOffset;\n let tokenOffset = lineOffset;\n const tokenSpans = line.map(token => {\n const key = tokenOffset;\n tokenOffset += token.content.length;\n\n return (\n <span key={key} className=\"shiki-token\" style={tokenStyle(token)}>\n {token.content}\n </span>\n );\n });\n\n codeOffset = tokenOffset + 1;\n\n return (\n <React.Fragment key={lineOffset}>\n {lineClassName ? (\n <span\n data-line={lineIndex}\n className={lineClassName(lineIndex, line.map(token => token.content).join(''))}\n >\n {tokenSpans}\n </span>\n ) : (\n <span>{tokenSpans}</span>\n )}\n {lineIndex !== usable.tokens.length - 1 && '\\n'}\n </React.Fragment>\n );\n })}\n {tail}\n </code>\n </pre>\n );\n});\n"],"names":["Code"],"mappings":";;;;;;AAaA,MAAM,4BAAA,GAA+B,EAAA;AAG9B,SAAS,YAAA,CAAa,MAAc,IAAA,EAA8C;AACvF,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAA6B,IAAI,CAAA;AAEvE,EAAA,MAAM,CAAC,WAAW,CAAA,GAAI,WAAA,CAAY,MAAM,4BAAA,EAA8B;AAAA,IACpE,OAAA,EAAS,IAAA;AAAA,IACT,OAAA,EAAS;AAAA,GACV,CAAA;AAED,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AAEX,IAAA,IAAI,SAAA,GAAY,KAAA;AAEhB,IAAA,KAAK,SAAA,CAAU,WAAA,EAAa,IAAI,CAAA,CAC7B,KAAK,CAAA,MAAA,KAAU;AACd,MAAA,IAAI,CAAC,SAAA,IAAa,MAAA,EAAQ,MAAA,EAAQ,cAAA,CAAe,EAAE,IAAA,EAAM,WAAA,EAAa,IAAA,EAAM,MAAA,EAAQ,CAAA;AAAA,IACtF,CAAC,CAAA,CACA,KAAA,CAAM,MAAM;AAAA,IAAC,CAAC,CAAA;AAEjB,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,IAAA;AAAA,IACd,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,IAAI,CAAC,CAAA;AAEtB,EAAA,OAAO,OAAO,WAAA,GAAc,IAAA;AAC9B;AAEO,SAAS,WAAW,KAAA,EAA+C;AACxE,EAAA,IAAI,KAAA,CAAM,SAAA,IAAa,OAAO,KAAA,CAAM,cAAc,QAAA,EAAU;AAC1D,IAAA,OAAO,KAAA,CAAM,SAAA;AAAA,EACf;AAEA,EAAA,OAAO,MAAM,KAAA,GAAQ,EAAE,KAAA,EAAO,KAAA,CAAM,OAAM,GAAI,MAAA;AAChD;;ACpCA,SAAS,eAAA,CAAgB,WAAA,EAAiC,IAAA,EAAc,IAAA,EAAmC;AACzG,EAAA,IAAI,CAAC,WAAA,IAAe,WAAA,CAAY,IAAA,KAAS,MAAM,OAAO,IAAA;AACtD,EAAA,OAAO,IAAA,CAAK,UAAA,CAAW,WAAA,CAAY,IAAI,IAAI,WAAA,GAAc,IAAA;AAC3D;AAeO,MAAM,IAAA,GAAO,KAAA,CAAM,IAAA,CAAK,SAASA,KAAAA,CAAK,EAAE,IAAA,EAAM,IAAA,EAAM,aAAA,EAAe,GAAG,KAAA,EAAM,EAAc;AAC/F,EAAA,MAAM,WAAA,GAAc,YAAA,CAAa,IAAA,EAAM,IAAI,CAAA;AAE3C,EAAA,MAAM,MAAA,GAAS,eAAA,CAAgB,WAAA,EAAa,IAAA,EAAM,IAAI,CAAA;AACtD,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,IAAI,CAAC,aAAA,EAAe,2BAAQ,KAAA,EAAA,EAAK,GAAG,OAAQ,QAAA,EAAA,IAAA,EAAK,CAAA;AACjD,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAC7B,IAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAK,GAAG,KAAA,EACN,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,CAAA,qBAChB,IAAA,CAAC,KAAA,CAAM,QAAA,EAAN,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,aAAW,CAAA,EAAG,SAAA,EAAW,cAAc,CAAA,EAAG,IAAI,GACjD,QAAA,EAAA,IAAA,EACH,CAAA;AAAA,MACC,CAAA,KAAM,KAAA,CAAM,MAAA,GAAS,CAAA,IAAK;AAAA,KAAA,EAAA,EAJR,CAKrB,CACD,CAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,KAAK,MAAM,CAAA;AAC1C,EAAA,IAAI,UAAA,GAAa,CAAA;AAEjB,EAAA,2BACG,KAAA,EAAA,EAAK,GAAG,OACP,QAAA,kBAAA,IAAA,CAAC,MAAA,EAAA,EAAK,WAAU,gBAAA,EACb,QAAA,EAAA;AAAA,IAAA,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,EAAM,SAAA,KAAc;AACtC,MAAA,MAAM,UAAA,GAAa,UAAA;AACnB,MAAA,IAAI,WAAA,GAAc,UAAA;AAClB,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,CAAA,KAAA,KAAS;AACnC,QAAA,MAAM,GAAA,GAAM,WAAA;AACZ,QAAA,WAAA,IAAe,MAAM,OAAA,CAAQ,MAAA;AAE7B,QAAA,uBACE,GAAA,CAAC,MAAA,EAAA,EAAe,SAAA,EAAU,aAAA,EAAc,KAAA,EAAO,WAAW,KAAK,CAAA,EAC5D,QAAA,EAAA,KAAA,CAAM,OAAA,EAAA,EADE,GAEX,CAAA;AAAA,MAEJ,CAAC,CAAA;AAED,MAAA,UAAA,GAAa,WAAA,GAAc,CAAA;AAE3B,MAAA,uBACE,IAAA,CAAC,KAAA,CAAM,QAAA,EAAN,EACE,QAAA,EAAA;AAAA,QAAA,aAAA,mBACC,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,WAAA,EAAW,SAAA;AAAA,YACX,SAAA,EAAW,aAAA,CAAc,SAAA,EAAW,IAAA,CAAK,GAAA,CAAI,CAAA,KAAA,KAAS,KAAA,CAAM,OAAO,CAAA,CAAE,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,YAE5E,QAAA,EAAA;AAAA;AAAA,SACH,mBAEA,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,UAAA,EAAW,CAAA;AAAA,QAEnB,SAAA,KAAc,MAAA,CAAO,MAAA,CAAO,MAAA,GAAS,CAAA,IAAK;AAAA,OAAA,EAAA,EAXxB,UAYrB,CAAA;AAAA,IAEJ,CAAC,CAAA;AAAA,IACA;AAAA,GAAA,EACH,CAAA,EACF,CAAA;AAEJ,CAAC;;;;"}
|
|
@@ -68,7 +68,7 @@ const Code = React__namespace.memo(function Code2({ code, lang, lineClassName, .
|
|
|
68
68
|
}
|
|
69
69
|
const tail = code.slice(usable.code.length);
|
|
70
70
|
let codeOffset = 0;
|
|
71
|
-
return /* @__PURE__ */ jsxRuntime.jsx("pre", { ...props, children: /* @__PURE__ */ jsxRuntime.jsxs("code", { children: [
|
|
71
|
+
return /* @__PURE__ */ jsxRuntime.jsx("pre", { ...props, children: /* @__PURE__ */ jsxRuntime.jsxs("code", { className: "font-[inherit]", children: [
|
|
72
72
|
usable.tokens.map((line, lineIndex) => {
|
|
73
73
|
const lineOffset = codeOffset;
|
|
74
74
|
let tokenOffset = lineOffset;
|
|
@@ -97,4 +97,4 @@ const Code = React__namespace.memo(function Code2({ code, lang, lineClassName, .
|
|
|
97
97
|
exports.Code = Code;
|
|
98
98
|
exports.tokenStyle = tokenStyle;
|
|
99
99
|
exports.useHighlight = useHighlight;
|
|
100
|
-
//# sourceMappingURL=code-
|
|
100
|
+
//# sourceMappingURL=code-Dcah35Gp.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-Dcah35Gp.cjs","sources":["../src/ds/components/Code/use-highlight.ts","../src/ds/components/Code/code.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport type { CSSProperties } from 'react';\nimport type { ThemedToken } from 'shiki/core';\nimport { useDebounce } from 'use-debounce';\n\nimport { highlight } from '../CodeEditor/highlight';\n\nexport interface Highlighted {\n code: string;\n lang: string;\n tokens: ThemedToken[][];\n}\n\nconst HIGHLIGHT_SAMPLE_INTERVAL_MS = 75;\n\n/** Tokens land a pass behind the code, so the value may still describe the previous code. */\nexport function useHighlight(code: string, lang: string | undefined): Highlighted | null {\n const [highlighted, setHighlighted] = useState<Highlighted | null>(null);\n // maxWait equal to the delay turns the debounce into a throttle.\n const [sampledCode] = useDebounce(code, HIGHLIGHT_SAMPLE_INTERVAL_MS, {\n leading: true,\n maxWait: HIGHLIGHT_SAMPLE_INTERVAL_MS,\n });\n\n useEffect(() => {\n if (!lang) return;\n\n let cancelled = false;\n\n void highlight(sampledCode, lang)\n .then(tokens => {\n if (!cancelled && tokens?.length) setHighlighted({ code: sampledCode, lang, tokens });\n })\n .catch(() => {});\n\n return () => {\n cancelled = true;\n };\n }, [sampledCode, lang]);\n\n return lang ? highlighted : null;\n}\n\nexport function tokenStyle(token: ThemedToken): CSSProperties | undefined {\n if (token.htmlStyle && typeof token.htmlStyle === 'object') {\n return token.htmlStyle as CSSProperties;\n }\n\n return token.color ? { color: token.color } : undefined;\n}\n","import * as React from 'react';\n\nimport { tokenStyle, useHighlight } from './use-highlight';\nimport type { Highlighted } from './use-highlight';\n\nexport interface CodeProps extends React.HTMLAttributes<HTMLPreElement> {\n code: string;\n lang?: string;\n /** Per-line class, e.g. for diff or search highlighting. When set, every line is wrapped in a `[data-line]` span. */\n lineClassName?: (lineIndex: number, lineText: string) => string | undefined;\n}\n\n/** Colors from an earlier pass still hold when the new code only appends to the old. */\nfunction usableHighlight(highlighted: Highlighted | null, code: string, lang?: string): Highlighted | null {\n if (!highlighted || highlighted.lang !== lang) return null;\n return code.startsWith(highlighted.code) ? highlighted : null;\n}\n\n/**\n * Low-level shiki token renderer shared by `CodeBlock` and `MarkdownRenderer`.\n * Dual-theme colors stay as `--shiki-light` / `--shiki-dark` CSS variables on\n * each token span; the `.shiki-token` class (index.css) picks the variant from\n * the `.dark` root class, so theme switching is pure CSS — no ThemeProvider\n * required. Renders plain text while highlighting is pending or when the\n * language is missing/unknown.\n *\n * A streaming fence re-renders on every delta while highlighting stays a sample\n * behind. Dropping the previous tokens each time would strobe the whole block\n * between colored and plain, so the settled prefix keeps its colors and only\n * the newly arrived tail waits, uncolored, for the next pass.\n */\nexport const Code = React.memo(function Code({ code, lang, lineClassName, ...props }: CodeProps) {\n const highlighted = useHighlight(code, lang);\n\n const usable = usableHighlight(highlighted, code, lang);\n if (!usable) {\n if (!lineClassName) return <pre {...props}>{code}</pre>;\n const lines = code.split('\\n');\n return (\n <pre {...props}>\n {lines.map((text, i) => (\n <React.Fragment key={i}>\n <span data-line={i} className={lineClassName(i, text)}>\n {text}\n </span>\n {i !== lines.length - 1 && '\\n'}\n </React.Fragment>\n ))}\n </pre>\n );\n }\n\n const tail = code.slice(usable.code.length);\n let codeOffset = 0;\n\n return (\n <pre {...props}>\n <code className=\"font-[inherit]\">\n {usable.tokens.map((line, lineIndex) => {\n const lineOffset = codeOffset;\n let tokenOffset = lineOffset;\n const tokenSpans = line.map(token => {\n const key = tokenOffset;\n tokenOffset += token.content.length;\n\n return (\n <span key={key} className=\"shiki-token\" style={tokenStyle(token)}>\n {token.content}\n </span>\n );\n });\n\n codeOffset = tokenOffset + 1;\n\n return (\n <React.Fragment key={lineOffset}>\n {lineClassName ? (\n <span\n data-line={lineIndex}\n className={lineClassName(lineIndex, line.map(token => token.content).join(''))}\n >\n {tokenSpans}\n </span>\n ) : (\n <span>{tokenSpans}</span>\n )}\n {lineIndex !== usable.tokens.length - 1 && '\\n'}\n </React.Fragment>\n );\n })}\n {tail}\n </code>\n </pre>\n );\n});\n"],"names":["useState","useDebounce","useEffect","highlight","React","Code","jsx","jsxs"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { C as Code } from './code-
|
|
2
|
+
import { C as Code } from './code-DAXWNzvf.js';
|
|
3
3
|
import { C as CopyButton } from './copy-button-DH8xtrWz.js';
|
|
4
4
|
import { S as Select, d as SelectTrigger, e as SelectValue, a as SelectContent, c as SelectItem } from './select-CWxcmE3F.js';
|
|
5
|
-
import { T as TabList } from './tabs-list-
|
|
5
|
+
import { T as TabList } from './tabs-list-DoSX2xLL.js';
|
|
6
6
|
import { T as Tabs } from './tabs-root-BbzhUZl4.js';
|
|
7
|
-
import { T as Tab } from './tabs-tab-
|
|
7
|
+
import { T as Tab } from './tabs-tab-BI3hb-HP.js';
|
|
8
8
|
import { transitions } from './primitives/transitions.es.js';
|
|
9
9
|
import { c as cn } from './cn-65Adrsfj.js';
|
|
10
10
|
|
|
@@ -84,4 +84,4 @@ function CodeBlock({
|
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
export { CodeBlock as C };
|
|
87
|
-
//# sourceMappingURL=code-block-
|
|
87
|
+
//# sourceMappingURL=code-block-Cug9dlAp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-block-
|
|
1
|
+
{"version":3,"file":"code-block-Cug9dlAp.js","sources":["../src/ds/components/CodeBlock/code-block.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { Code } from '../Code/code';\nimport { CopyButton } from '../CopyButton/copy-button';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../Select/select';\nimport { TabList } from '../Tabs/tabs-list';\nimport { Tabs } from '../Tabs/tabs-root';\nimport { Tab } from '../Tabs/tabs-tab';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type CodeBlockSelector = 'select' | 'tabs';\n\nexport type CodeBlockOverflow = 'wrap' | 'scroll';\n\nexport interface CodeBlockOption {\n label: string;\n value: string;\n}\n\nexport interface CodeBlockProps {\n code: string;\n options?: CodeBlockOption[];\n value?: string;\n onValueChange?: (value: string) => void;\n selector?: CodeBlockSelector;\n fileName?: string;\n lang?: string;\n /** `wrap` (default) breaks long lines — best for commands and snippets.\n * `scroll` preserves columns behind a horizontal scroll — best for source code. */\n overflow?: CodeBlockOverflow;\n copyMessage?: string;\n copyTooltip?: string;\n actions?: ReactNode;\n className?: string;\n}\n\nexport function CodeBlock({\n code,\n options,\n value,\n onValueChange,\n selector = 'select',\n fileName,\n lang,\n overflow = 'wrap',\n copyMessage,\n copyTooltip,\n actions,\n className,\n}: CodeBlockProps) {\n const hasOptions = options && options.length > 0;\n const useTabs = hasOptions && selector === 'tabs';\n const useSelect = hasOptions && selector === 'select';\n const firstOption = options?.[0];\n const activeValue = value ?? firstOption?.value;\n\n return (\n <figure\n // A scrolling `pre` still reports its longest line as an intrinsic width, which\n // grows every ancestor; containment keeps the block inside the width it is given.\n className={cn(\n 'group relative flex w-full flex-col overflow-hidden rounded-2xl border border-border bg-background [contain:inline-size]',\n className,\n )}\n >\n {useTabs && firstOption && (\n <Tabs defaultTab={firstOption.value} value={activeValue} onValueChange={onValueChange ?? (() => {})}>\n <div className=\"flex items-stretch\">\n <div className=\"min-w-0 flex-1\">\n <TabList>\n {options.map(opt => (\n <Tab key={opt.value} value={opt.value}>\n {opt.label}\n </Tab>\n ))}\n </TabList>\n </div>\n {actions && <div className=\"flex shrink-0 items-center border-b border-border pr-2 pl-3\">{actions}</div>}\n </div>\n </Tabs>\n )}\n\n {useSelect && options && (\n <div className=\"flex items-center border-b border-border px-2 py-1.5\">\n <Select value={activeValue} onValueChange={onValueChange}>\n <SelectTrigger size=\"sm\" variant=\"ghost\" className=\"w-auto\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {options.map(opt => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {actions && <div className=\"ml-auto flex items-center\">{actions}</div>}\n </div>\n )}\n\n {!hasOptions && fileName && (\n <div className=\"flex items-center border-b border-border px-4 py-2\">\n <figcaption className=\"font-mono text-caption text-muted-foreground\">{fileName}</figcaption>\n {actions && <div className=\"ml-auto flex items-center\">{actions}</div>}\n </div>\n )}\n\n {!hasOptions && !fileName && actions && (\n <div className=\"flex items-center justify-end border-b border-border px-2 py-1.5\">{actions}</div>\n )}\n\n <div className=\"relative\">\n <Code\n code={code}\n lang={lang}\n className={cn(\n 'px-4 py-3 font-mono text-caption text-foreground',\n overflow === 'scroll' ? 'overflow-x-auto whitespace-pre' : 'break-all whitespace-pre-wrap',\n )}\n />\n <CopyButton\n content={code}\n copyMessage={copyMessage}\n tooltip={copyTooltip}\n size=\"sm\"\n className={cn(\n 'absolute top-2 right-2 opacity-100 group-focus-within:opacity-100 group-hover:opacity-100 pointer-fine:opacity-0',\n transitions.opacity,\n )}\n />\n </div>\n </figure>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
const code = require('./code-
|
|
4
|
+
const code = require('./code-Dcah35Gp.cjs');
|
|
5
5
|
const copyButton = require('./copy-button-CGkFEDHF.cjs');
|
|
6
6
|
const select = require('./select-KV77JIvp.cjs');
|
|
7
|
-
const tabsList = require('./tabs-list-
|
|
7
|
+
const tabsList = require('./tabs-list-BeWntzEw.cjs');
|
|
8
8
|
const tabsRoot = require('./tabs-root-Hkt7A6oq.cjs');
|
|
9
|
-
const tabsTab = require('./tabs-tab-
|
|
9
|
+
const tabsTab = require('./tabs-tab-DhLs9bO0.cjs');
|
|
10
10
|
const primitives_transitions = require('./primitives/transitions.cjs.js');
|
|
11
11
|
const utils_cn = require('./cn-DG0X1KEP.cjs');
|
|
12
12
|
|
|
@@ -86,4 +86,4 @@ function CodeBlock({
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
exports.CodeBlock = CodeBlock;
|
|
89
|
-
//# sourceMappingURL=code-block-
|
|
89
|
+
//# sourceMappingURL=code-block-CxN4T0Xw.cjs.map
|