@mastra/playground-ui 63.0.0-alpha.1 → 63.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Avatar-C2Sz53u5.js +190 -0
- package/dist/Avatar-C2Sz53u5.js.map +1 -0
- package/dist/Avatar-D6ybWljK.cjs +192 -0
- package/dist/Avatar-D6ybWljK.cjs.map +1 -0
- package/dist/{ask-user-card-g8cqh8KI.cjs → ask-user-card-40a18Qea.cjs} +2 -1
- package/dist/{ask-user-card-g8cqh8KI.cjs.map → ask-user-card-40a18Qea.cjs.map} +1 -1
- package/dist/{ask-user-card-CwKfl6M2.js → ask-user-card-xR8YiiQa.js} +6 -5
- package/dist/{ask-user-card-CwKfl6M2.js.map → ask-user-card-xR8YiiQa.js.map} +1 -1
- package/dist/{checkbox-B3tvJLCl.js → checkbox-mmR3rD2j.js} +2 -2
- package/dist/{checkbox-B3tvJLCl.js.map → checkbox-mmR3rD2j.js.map} +1 -1
- package/dist/{code-block-9sT-CaoF.js → code-block-BQZUoOfS.js} +2 -2
- package/dist/{code-block-9sT-CaoF.js.map → code-block-BQZUoOfS.js.map} +1 -1
- package/dist/{code-editor-DgfDaPAD.js → code-editor-D69saH4C.js} +2 -2
- package/dist/{code-editor-DgfDaPAD.js.map → code-editor-D69saH4C.js.map} +1 -1
- package/dist/{combobox-DJu0ggNa.js → combobox-DDUIREaG.js} +2 -2
- package/dist/{combobox-DJu0ggNa.js.map → combobox-DDUIREaG.js.map} +1 -1
- package/dist/components/Avatar.cjs.js +1 -1
- package/dist/components/Avatar.es.js +1 -1
- package/dist/components/Checkbox.es.js +1 -1
- package/dist/components/CodeBlock.es.js +1 -1
- package/dist/components/CodeEditor.es.js +1 -1
- package/dist/components/Combobox.es.js +1 -1
- package/dist/components/Comment.cjs.js +1 -0
- package/dist/components/Comment.cjs.js.map +1 -1
- package/dist/components/Comment.es.js +3 -2
- package/dist/components/Comment.es.js.map +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataList.cjs.js +17 -15
- package/dist/components/DataList.cjs.js.map +1 -1
- package/dist/components/DataList.es.js +5 -4
- package/dist/components/DataList.es.js.map +1 -1
- package/dist/components/DataPanel.cjs.js +1 -1
- package/dist/components/DataPanel.es.js +1 -1
- package/dist/components/DateTimePicker.cjs.js +1 -0
- package/dist/components/DateTimePicker.cjs.js.map +1 -1
- package/dist/components/DateTimePicker.es.js +4 -3
- package/dist/components/DateTimePicker.es.js.map +1 -1
- package/dist/components/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +2 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
- package/dist/components/EnvironmentVariablesEditor.es.js +4 -3
- package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
- package/dist/components/Field.es.js +2 -2
- package/dist/components/FormFieldBlocks.es.js +2 -2
- package/dist/components/Input.es.js +1 -1
- package/dist/components/InputGroup.es.js +1 -1
- package/dist/components/InputNumber.es.js +1 -1
- package/dist/components/JSONSchemaForm.cjs.js +1 -0
- package/dist/components/JSONSchemaForm.cjs.js.map +1 -1
- package/dist/components/JSONSchemaForm.es.js +5 -4
- package/dist/components/JSONSchemaForm.es.js.map +1 -1
- package/dist/components/ListSearch.cjs.js +1 -1
- package/dist/components/ListSearch.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +2 -5
- package/dist/components/LogsDataList.cjs.js.map +1 -1
- package/dist/components/LogsDataList.es.js +2 -5
- package/dist/components/LogsDataList.es.js.map +1 -1
- package/dist/components/MarkdownRenderer.es.js +1 -1
- package/dist/components/PropertyFilter.cjs.js +1 -0
- package/dist/components/PropertyFilter.cjs.js.map +1 -1
- package/dist/components/PropertyFilter.es.js +5 -4
- package/dist/components/PropertyFilter.es.js.map +1 -1
- package/dist/components/RadioGroup.es.js +1 -1
- package/dist/components/RuleBuilder.es.js +2 -2
- package/dist/components/SearchInput.cjs.js +1 -1
- package/dist/components/SearchInput.es.js +1 -1
- package/dist/components/Section.cjs.js +1 -1
- package/dist/components/Section.es.js +1 -1
- package/dist/components/SegmentedControl.es.js +1 -1
- package/dist/components/Select.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +1 -1
- package/dist/components/SideDialog.es.js +1 -1
- package/dist/components/Sidebar.es.js +1 -1
- package/dist/components/Switch.es.js +1 -1
- package/dist/components/ThemeToggle.es.js +1 -1
- package/dist/components/Workflow.es.js +3 -3
- package/dist/components/ai/activity.es.js +1 -1
- package/dist/components/ai/ask-user.cjs.js +1 -1
- package/dist/components/ai/ask-user.es.js +1 -1
- package/dist/components/ai/plan.es.js +1 -1
- package/dist/components/ai/tool-approval.es.js +1 -1
- package/dist/components/ai/tool-call.es.js +1 -1
- package/dist/{data-code-section-BTRNa1SD.cjs → data-code-section-B2Ea7FwM.cjs} +2 -2
- package/dist/{data-code-section-BTRNa1SD.cjs.map → data-code-section-B2Ea7FwM.cjs.map} +1 -1
- package/dist/{data-code-section-BGLC-hxm.js → data-code-section-DrJYy1dR.js} +2 -2
- package/dist/{data-code-section-BGLC-hxm.js.map → data-code-section-DrJYy1dR.js.map} +1 -1
- package/dist/data-list-DkVOwk8l.cjs +142 -0
- package/dist/data-list-DkVOwk8l.cjs.map +1 -0
- package/dist/data-list-Dv2lP-dU.js +138 -0
- package/dist/data-list-Dv2lP-dU.js.map +1 -0
- package/dist/{data-list-skeleton-CJFwZBlW.js → data-list-skeleton-BmsDYJrA.js} +2 -2
- package/dist/{data-list-skeleton-CJFwZBlW.js.map → data-list-skeleton-BmsDYJrA.js.map} +1 -1
- package/dist/{data-list-skeleton-maUWF7Ri.cjs → data-list-skeleton-CfVsXhx1.cjs} +6 -6
- package/dist/{data-list-skeleton-maUWF7Ri.cjs.map → data-list-skeleton-CfVsXhx1.cjs.map} +1 -1
- package/dist/data-list-spacer-DEMquKp9.js +209 -0
- package/dist/data-list-spacer-DEMquKp9.js.map +1 -0
- package/dist/data-list-spacer-pXP8xDlg.cjs +218 -0
- package/dist/data-list-spacer-pXP8xDlg.cjs.map +1 -0
- package/dist/{data-list-DDGpWucH.js → data-list-top-BJCC62oy.js} +6 -333
- package/dist/data-list-top-BJCC62oy.js.map +1 -0
- package/dist/{data-list-_yDPF5wR.cjs → data-list-top-Ds-NWyPO.cjs} +13 -339
- package/dist/data-list-top-Ds-NWyPO.cjs.map +1 -0
- package/dist/{data-panel-DfVGx0Ea.js → data-panel-COU5dbUJ.js} +2 -2
- package/dist/{data-panel-DfVGx0Ea.js.map → data-panel-COU5dbUJ.js.map} +1 -1
- package/dist/{data-panel-Dhg7s3fD.cjs → data-panel-CTqb-0qN.cjs} +2 -2
- package/dist/{data-panel-Dhg7s3fD.cjs.map → data-panel-CTqb-0qN.cjs.map} +1 -1
- package/dist/{date-time-range-picker-BNaXCa7r.cjs → date-time-range-picker-BvRPfy1i.cjs} +2 -1
- package/dist/{date-time-range-picker-BNaXCa7r.cjs.map → date-time-range-picker-BvRPfy1i.cjs.map} +1 -1
- package/dist/{date-time-range-picker-C5x_33hB.js → date-time-range-picker-CIfaXUuy.js} +4 -3
- package/dist/{date-time-range-picker-C5x_33hB.js.map → date-time-range-picker-CIfaXUuy.js.map} +1 -1
- package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +1 -1
- package/dist/domains/chat/messages/dataset-save-action.cjs.js +1 -0
- package/dist/domains/chat/messages/dataset-save-action.cjs.js.map +1 -1
- package/dist/domains/chat/messages/dataset-save-action.es.js +4 -3
- package/dist/domains/chat/messages/dataset-save-action.es.js.map +1 -1
- package/dist/domains/chat/messages/message-row.cjs.js +1 -0
- package/dist/domains/chat/messages/message-row.cjs.js.map +1 -1
- package/dist/domains/chat/messages/message-row.es.js +2 -1
- package/dist/domains/chat/messages/message-row.es.js.map +1 -1
- package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
- package/dist/domains/chat/messages/skill-message.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +1 -1
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/file-tree-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-details.es.js +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/workflow-badge.es.js +3 -3
- package/dist/domains/chat/tools/submit-plan-tool.es.js +1 -1
- package/dist/domains/chat/tools/tool-card.es.js +1 -1
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +2 -1
- 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 +1 -1
- package/dist/domains/logs/components/log-data-panel.es.js +1 -1
- package/dist/domains/logs/components/logs-list-view.cjs.js +2 -3
- package/dist/domains/logs/components/logs-list-view.cjs.js.map +1 -1
- package/dist/domains/logs/components/logs-list-view.es.js +2 -3
- package/dist/domains/logs/components/logs-list-view.es.js.map +1 -1
- package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
- package/dist/domains/memory/components/observation-detail-view.cjs.js +1 -0
- package/dist/domains/memory/components/observation-detail-view.cjs.js.map +1 -1
- package/dist/domains/memory/components/observation-detail-view.es.js +3 -2
- package/dist/domains/memory/components/observation-detail-view.es.js.map +1 -1
- package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +2 -1
- 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 +5 -4
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js.map +1 -1
- package/dist/domains/request-context/components/request-context-label.cjs.js +1 -0
- package/dist/domains/request-context/components/request-context-label.cjs.js.map +1 -1
- package/dist/domains/request-context/components/request-context-label.es.js +2 -1
- package/dist/domains/request-context/components/request-context-label.es.js.map +1 -1
- package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
- package/dist/domains/scores/components/score-data-panel.es.js +1 -1
- package/dist/domains/scores/components/span-scoring.es.js +1 -1
- package/dist/domains/scores/components/trace-scores-tab.cjs.js +1 -2
- package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
- package/dist/domains/scores/components/trace-scores-tab.es.js +1 -2
- package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
- package/dist/domains/traces/components/feedback-thread.cjs.js +1 -1
- package/dist/domains/traces/components/feedback-thread.es.js +2 -2
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +2 -1
- 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 +2 -1
- package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/span-details-view.cjs.js +1 -0
- package/dist/domains/traces/components/span-details-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-details-view.es.js +1 -0
- package/dist/domains/traces/components/span-details-view.es.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +1 -1
- package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/span-summary-description.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
- package/dist/domains/traces/components/thread-view-by-trace.cjs.js +2 -0
- package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
- package/dist/domains/traces/components/thread-view-by-trace.es.js +2 -0
- package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +1 -0
- package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js +3 -2
- package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +2 -2
- package/dist/domains/traces/components/trace-data-panel-view.es.js +2 -2
- package/dist/domains/traces/components/trace-data-panel.cjs.js +3 -2
- package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel.es.js +3 -2
- package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
- package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
- package/dist/domains/traces/components/trace-id-button.es.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
- package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
- package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.es.js +1 -1
- package/dist/domains/traces/components/traces-list-view.cjs.js +5 -4
- package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.es.js +4 -3
- package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js +1 -4
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js +1 -4
- package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
- package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
- package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
- package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
- package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
- package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
- package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +1 -1
- package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -0
- package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +3 -2
- package/dist/domains/workflows/workflow/input/workflow-json-input.es.js.map +1 -1
- package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +1 -0
- package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +3 -2
- package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js.map +1 -1
- package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js +1 -0
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js +3 -2
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-node.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +2 -0
- package/dist/domains/workflows/workflow/workflow-input-data.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-input-data.es.js +2 -0
- package/dist/domains/workflows/workflow/workflow-input-data.es.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-run-data.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +1 -0
- package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +3 -2
- package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js.map +1 -1
- package/dist/domains/workspace/components/workspace-active-file.es.js +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +2 -1
- 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 +5 -4
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js.map +1 -1
- package/dist/domains/workspace/components/workspace-create-directory.es.js +1 -1
- package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
- package/dist/domains/workspace/components/workspace-search.es.js +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/trace-intelligence-entity-index.cjs.js +2 -4
- 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 +3 -5
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +1 -0
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js.map +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +3 -2
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js.map +1 -1
- package/dist/ee/signals/settings/trace-signal-settings.es.js +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +2 -2
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +2 -2
- package/dist/{field-Bc8Ewf_M.js → field-B89BEZg4.js} +2 -2
- package/dist/{field-Bc8Ewf_M.js.map → field-B89BEZg4.js.map} +1 -1
- package/dist/{field-control-aria-CCJ4-mUe.js → field-control-aria-DB6y41tQ.js} +2 -2
- package/dist/{field-control-aria-CCJ4-mUe.js.map → field-control-aria-DB6y41tQ.js.map} +1 -1
- package/dist/{input-Ds171RJ5.js → input-DQFUjtnh.js} +2 -2
- package/dist/{input-Ds171RJ5.js.map → input-DQFUjtnh.js.map} +1 -1
- package/dist/{input-group-Cxv64rPB.js → input-group-BWsGYnES.js} +2 -2
- package/dist/{input-group-Cxv64rPB.js.map → input-group-BWsGYnES.js.map} +1 -1
- package/dist/layout/tabbed-container.cjs.js +2 -2
- package/dist/layout/tabbed-container.es.js +3 -3
- package/dist/lib/form/components/boolean-field.cjs.js +1 -0
- package/dist/lib/form/components/boolean-field.cjs.js.map +1 -1
- package/dist/lib/form/components/boolean-field.es.js +3 -2
- package/dist/lib/form/components/boolean-field.es.js.map +1 -1
- package/dist/lib/form/components/date-field.es.js +1 -1
- package/dist/lib/form/components/field-wrapper.cjs.js +1 -0
- package/dist/lib/form/components/field-wrapper.cjs.js.map +1 -1
- package/dist/lib/form/components/field-wrapper.es.js +2 -1
- package/dist/lib/form/components/field-wrapper.es.js.map +1 -1
- package/dist/lib/form/components/number-field.es.js +1 -1
- package/dist/lib/form/components/record-field.es.js +1 -1
- package/dist/lib/form/components/select-field.es.js +1 -1
- package/dist/{list-search-CmPRFDsn.js → list-search-BNnMwbpv.js} +2 -2
- package/dist/{list-search-CmPRFDsn.js.map → list-search-BNnMwbpv.js.map} +1 -1
- package/dist/{list-search-C3yXcTRO.cjs → list-search-xHadeMHl.cjs} +2 -2
- package/dist/{list-search-C3yXcTRO.cjs.map → list-search-xHadeMHl.cjs.map} +1 -1
- package/dist/{logs-data-list-Cudh6b-c.js → logs-data-list-C262Be3o.js} +3 -2
- package/dist/{logs-data-list-Cudh6b-c.js.map → logs-data-list-C262Be3o.js.map} +1 -1
- package/dist/{logs-data-list-Bf_vIsFb.cjs → logs-data-list-DfuVMd6f.cjs} +22 -21
- package/dist/{logs-data-list-Bf_vIsFb.cjs.map → logs-data-list-DfuVMd6f.cjs.map} +1 -1
- package/dist/{markdown-renderer-Cly6VMDr.js → markdown-renderer-D5Wjk1Cs.js} +2 -2
- package/dist/{markdown-renderer-Cly6VMDr.js.map → markdown-renderer-D5Wjk1Cs.js.map} +1 -1
- package/dist/new/settings.cjs.js +1 -1
- package/dist/new/settings.es.js +1 -1
- package/dist/{plan-DIbhFPRL.js → plan-Cl3-JgbI.js} +2 -2
- package/dist/{plan-DIbhFPRL.js.map → plan-Cl3-JgbI.js.map} +1 -1
- package/dist/primitives/textarea-control.es.js +1 -1
- package/dist/{property-filter-applied-DXH81ffT.js → property-filter-applied-CZLzY0OH.js} +2 -2
- package/dist/{property-filter-applied-DXH81ffT.js.map → property-filter-applied-CZLzY0OH.js.map} +1 -1
- package/dist/{radio-group-C2zsCipq.js → radio-group-Bk52hNNb.js} +2 -2
- package/dist/{radio-group-C2zsCipq.js.map → radio-group-Bk52hNNb.js.map} +1 -1
- package/dist/{reasoning-activity-B1r4JQxm.js → reasoning-activity-CIuVSAGA.js} +2 -2
- package/dist/{reasoning-activity-B1r4JQxm.js.map → reasoning-activity-CIuVSAGA.js.map} +1 -1
- package/dist/{search-input-DbEE2zEz.cjs → search-input-UtTJMjJu.cjs} +2 -1
- package/dist/{search-input-DbEE2zEz.cjs.map → search-input-UtTJMjJu.cjs.map} +1 -1
- package/dist/{search-input-D23h16CB.js → search-input-fqSrRTLU.js} +4 -3
- package/dist/{search-input-D23h16CB.js.map → search-input-fqSrRTLU.js.map} +1 -1
- package/dist/{section-CdaSS9M7.cjs → section-DhZbtWhu.cjs} +2 -2
- package/dist/{section-CdaSS9M7.cjs.map → section-DhZbtWhu.cjs.map} +1 -1
- package/dist/{section-DcjTdrqz.js → section-Dq6aFxlH.js} +2 -2
- package/dist/{section-DcjTdrqz.js.map → section-Dq6aFxlH.js.map} +1 -1
- package/dist/{segmented-control-BfY7F0NZ.js → segmented-control-CUnvFStD.js} +2 -2
- package/dist/{segmented-control-BfY7F0NZ.js.map → segmented-control-CUnvFStD.js.map} +1 -1
- package/dist/{select-BGAiIHnS.js → select-N2lgBRsg.js} +2 -2
- package/dist/{select-BGAiIHnS.js.map → select-N2lgBRsg.js.map} +1 -1
- package/dist/{settings-row-rOI4yGvi.cjs → settings-row-CwZ3JffC.cjs} +2 -1
- package/dist/{settings-row-rOI4yGvi.cjs.map → settings-row-CwZ3JffC.cjs.map} +1 -1
- package/dist/{settings-row-ylIw4rfC.js → settings-row-gpwIVAMN.js} +3 -2
- package/dist/{settings-row-ylIw4rfC.js.map → settings-row-gpwIVAMN.js.map} +1 -1
- package/dist/{side-dialog-CB_wrLtE.js → side-dialog-CWQL33WR.js} +2 -2
- package/dist/{side-dialog-CB_wrLtE.js.map → side-dialog-CWQL33WR.js.map} +1 -1
- package/dist/{side-dialog-OPXvmRDA.cjs → side-dialog-DldgOJIk.cjs} +2 -2
- package/dist/{side-dialog-OPXvmRDA.cjs.map → side-dialog-DldgOJIk.cjs.map} +1 -1
- package/dist/{span-payload-primitives-Cixom2Py.js → span-payload-primitives-WqYTBiGx.js} +2 -2
- package/dist/{span-payload-primitives-Cixom2Py.js.map → span-payload-primitives-WqYTBiGx.js.map} +1 -1
- package/dist/src/ds/components/Avatar/Avatar.d.ts +20 -9
- package/dist/src/ds/components/Avatar/avatar-badge.d.ts +6 -0
- package/dist/src/ds/components/Avatar/avatar-element.d.ts +3 -0
- package/dist/src/ds/components/Avatar/avatar-fallback.d.ts +5 -0
- package/dist/src/ds/components/Avatar/avatar-group-count.d.ts +3 -0
- package/dist/src/ds/components/Avatar/avatar-group.d.ts +6 -0
- package/dist/src/ds/components/Avatar/avatar-image.d.ts +6 -0
- package/dist/src/ds/components/Avatar/avatar-named.d.ts +10 -0
- package/dist/src/ds/components/Avatar/avatar-root.d.ts +8 -0
- package/dist/src/ds/components/Avatar/avatar-size.d.ts +5 -0
- package/dist/style.css +91 -24
- package/dist/{switch-BBeMfeQ2.js → switch-DiSlsWUt.js} +2 -2
- package/dist/{switch-BBeMfeQ2.js.map → switch-DiSlsWUt.js.map} +1 -1
- package/dist/{time-picker-Bo6GJcmz.js → time-picker-J7GaNaEd.js} +2 -2
- package/dist/{time-picker-Bo6GJcmz.js.map → time-picker-J7GaNaEd.js.map} +1 -1
- package/dist/{tool-approval-BQ6sDvyS.js → tool-approval-nsbG8-qI.js} +2 -2
- package/dist/{tool-approval-BQ6sDvyS.js.map → tool-approval-nsbG8-qI.js.map} +1 -1
- package/dist/{tool-call-arguments-B86JP3Dy.js → tool-call-arguments-RKyYP3xh.js} +2 -2
- package/dist/{tool-call-arguments-B86JP3Dy.js.map → tool-call-arguments-RKyYP3xh.js.map} +1 -1
- package/dist/{tool-card-C8IrtMuQ.js → tool-card-BtPh44u6.js} +2 -2
- package/dist/{tool-card-C8IrtMuQ.js.map → tool-card-BtPh44u6.js.map} +1 -1
- package/dist/{traces-data-list-DaFA1Ccg.cjs → traces-data-list-Cf_PpmSN.cjs} +19 -17
- package/dist/{traces-data-list-DaFA1Ccg.cjs.map → traces-data-list-Cf_PpmSN.cjs.map} +1 -1
- package/dist/{traces-data-list-L_r2GAtr.js → traces-data-list-_mFOMw0U.js} +4 -2
- package/dist/{traces-data-list-L_r2GAtr.js.map → traces-data-list-_mFOMw0U.js.map} +1 -1
- package/dist/{use-workflow-graph-runtime-DS7eWso7.js → use-workflow-graph-runtime-CAyNWN_Z.js} +2 -2
- package/dist/{use-workflow-graph-runtime-DS7eWso7.js.map → use-workflow-graph-runtime-CAyNWN_Z.js.map} +1 -1
- package/dist/{workflow-code-dialog-content-BUCZZoKf.js → workflow-code-dialog-content-CNDoMFAV.js} +2 -2
- package/dist/{workflow-code-dialog-content-BUCZZoKf.js.map → workflow-code-dialog-content-CNDoMFAV.js.map} +1 -1
- package/dist/{workflow-data-edge-view-BIiMA9zg.js → workflow-data-edge-view-BaA6YJye.js} +2 -2
- package/dist/{workflow-data-edge-view-BIiMA9zg.js.map → workflow-data-edge-view-BaA6YJye.js.map} +1 -1
- package/dist/{workflow-edge-data-button-D5oK4NS5.js → workflow-edge-data-button-6EDXzRxr.js} +2 -2
- package/dist/{workflow-edge-data-button-D5oK4NS5.js.map → workflow-edge-data-button-6EDXzRxr.js.map} +1 -1
- package/package.json +7 -7
- package/dist/Avatar-BPHG0wrq.cjs +0 -45
- package/dist/Avatar-BPHG0wrq.cjs.map +0 -1
- package/dist/Avatar-DAnyIHjm.js +0 -43
- package/dist/Avatar-DAnyIHjm.js.map +0 -1
- package/dist/data-list-DDGpWucH.js.map +0 -1
- package/dist/data-list-_yDPF5wR.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-intelligence-entity-index.es.js","sources":["../../../../src/ee/signals/components/trace-intelligence-entity-index.tsx"],"sourcesContent":["import type { SignalCatalogEntry, ThemeLearningEntity } from '@mastra/client-js';\nimport { Columns2, List } from 'lucide-react';\nimport { useState, type ReactNode } from 'react';\n\nimport { useThemeEntities } from '../hooks';\nimport { TraceSignalSettingsButton, TraceSignalSettingsPanel } from '../settings/trace-signal-settings';\nimport { TraceIntelligenceExplainer } from '../trace-intelligence-explainer';\nimport { useTraceIntelligence } from '../use-trace-intelligence';\nimport { EntityIndexCompactGrid } from './entity-index-compact-grid';\nimport { EntityIndexList } from './entity-index-list';\nimport { filterAndSortEntities } from './entity-index-model';\nimport type { TraceIntelligenceEntitySort, TraceIntelligenceEntityView } from './entity-index-model';\nimport { PermissionDenied } from '@/domains/auth/components/permission-denied';\nimport { SessionExpired } from '@/domains/auth/components/session-expired';\nimport { Button } from '@/ds/components/Button';\nimport { ButtonsGroup } from '@/ds/components/ButtonsGroup';\nimport { DataListSkeleton } from '@/ds/components/DataList';\nimport { EmptyState } from '@/ds/components/EmptyState';\nimport { ListSearch } from '@/ds/components/ListSearch';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { is401UnauthorizedError, is403ForbiddenError } from '@/utils/errors';\n\nexport type { TraceIntelligenceEntitySort, TraceIntelligenceEntityView } from './entity-index-model';\n\nconst listColumns = 'minmax(12rem,1.5fr) minmax(7rem,0.6fr) minmax(8rem,0.7fr) minmax(8rem,0.7fr) minmax(12rem,1fr)';\n\nexport interface TraceIntelligenceEntityIndexProps {\n entityType: string;\n search: string;\n sort: TraceIntelligenceEntitySort;\n view: TraceIntelligenceEntityView;\n onSearchChange: (search: string) => void;\n onSortChange: (sort: TraceIntelligenceEntitySort) => void;\n onViewChange: (view: TraceIntelligenceEntityView) => void;\n getEntityHref: (entity: ThemeLearningEntity) => string;\n headerAction?: ReactNode;\n}\n\nfunction EntityIndexError({ error }: { error: Error }) {\n if (is401UnauthorizedError(error)) {\n return (\n <div className=\"flex h-full items-center justify-center\">\n <SessionExpired />\n </div>\n );\n }\n if (is403ForbiddenError(error)) {\n return (\n <div className=\"flex h-full items-center justify-center\">\n <PermissionDenied resource=\"Trace Intelligence\" />\n </div>\n );\n }\n return (\n <div className=\"flex h-full items-center justify-center\">\n <EmptyState tone=\"error\" titleSlot=\"Failed to load Trace Intelligence\" descriptionSlot={error.message} />\n </div>\n );\n}\n\nfunction EntityIndexControls({\n search,\n sort,\n view,\n onSearchChange,\n onSortChange,\n onViewChange,\n headerAction,\n signalCatalog,\n}: Pick<\n TraceIntelligenceEntityIndexProps,\n 'search' | 'sort' | 'view' | 'onSearchChange' | 'onSortChange' | 'onViewChange' | 'headerAction'\n> & { signalCatalog: readonly SignalCatalogEntry[] }) {\n return (\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center\">\n <div className=\"max-w-120 flex-1\">\n <ListSearch\n value={search}\n onSearch={onSearchChange}\n label=\"Filter entities\"\n placeholder=\"Filter by entity identifier\"\n />\n </div>\n <div className=\"flex items-center justify-between gap-2 sm:ml-auto sm:justify-end\">\n <TraceIntelligenceExplainer signalCatalog={signalCatalog} />\n <Select<TraceIntelligenceEntitySort> value={sort} onValueChange={onSortChange}>\n <SelectTrigger aria-label=\"Sort entities\" size=\"md\" variant=\"ghost\" className=\"w-auto\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent align=\"end\">\n <SelectItem value=\"default\">Default order</SelectItem>\n <SelectItem value=\"entity-asc\">Entity: A–Z</SelectItem>\n <SelectItem value=\"entity-desc\">Entity: Z–A</SelectItem>\n </SelectContent>\n </Select>\n {headerAction}\n <ButtonsGroup aria-label=\"Entities view\">\n <Button\n type=\"button\"\n variant={view === 'list' ? 'primary' : 'default'}\n size=\"icon-md\"\n tooltip=\"List view\"\n aria-pressed={view === 'list'}\n onClick={() => onViewChange('list')}\n >\n <List />\n </Button>\n <Button\n type=\"button\"\n variant={view === 'compact' ? 'primary' : 'default'}\n size=\"icon-md\"\n tooltip=\"Compact view\"\n aria-pressed={view === 'compact'}\n onClick={() => onViewChange('compact')}\n >\n <Columns2 />\n </Button>\n </ButtonsGroup>\n </div>\n </div>\n );\n}\n\nexport function TraceIntelligenceEntityIndex({\n entityType,\n search,\n sort,\n view,\n onSearchChange,\n onSortChange,\n onViewChange,\n getEntityHref,\n headerAction,\n}: TraceIntelligenceEntityIndexProps) {\n const entitiesQuery = useThemeEntities(entityType);\n const { LinkComponent, signalCatalog: contextSignalCatalog, signalManagement } = useTraceIntelligence();\n const [settingsOpen, setSettingsOpen] = useState(false);\n\n if (entitiesQuery.error) return <EntityIndexError error={entitiesQuery.error} />;\n\n const sourceEntities = entitiesQuery.data?.entities ?? [];\n const signalCatalog =\n sourceEntities.find(entity => entity.signalCatalog?.length)?.signalCatalog ?? contextSignalCatalog;\n const entities = filterAndSortEntities(sourceEntities, search, sort);\n const hasSearch = search.trim().length > 0;\n let body = (\n <EntityIndexList\n entities={entities}\n hasSearch={hasSearch}\n getEntityHref={getEntityHref}\n LinkComponent={LinkComponent}\n />\n );\n if (entitiesQuery.isPending) {\n body = (\n <div role=\"status\" aria-label=\"Loading Trace Intelligence entities\">\n <DataListSkeleton columns={listColumns} />\n </div>\n );\n } else if (entitiesQuery.data.entities.length === 0 && !hasSearch) {\n body = (\n <EmptyState\n titleSlot=\"No Trace Intelligence entities yet\"\n descriptionSlot=\"Entities appear after Trace Intelligence begins collecting generated signal data.\"\n />\n );\n } else if (view === 'compact') {\n body = (\n <EntityIndexCompactGrid\n entities={entities}\n hasSearch={hasSearch}\n getEntityHref={getEntityHref}\n LinkComponent={LinkComponent}\n />\n );\n }\n\n return (\n <div className=\"mx-auto grid size-full min-h-0 max-w-7xl grid-rows-[auto_minmax(0,1fr)]\">\n <div className=\"pb-3\">\n <EntityIndexControls\n search={search}\n sort={sort}\n view={view}\n onSearchChange={onSearchChange}\n onSortChange={onSortChange}\n onViewChange={onViewChange}\n signalCatalog={signalCatalog}\n headerAction={\n headerAction || signalManagement ? (\n <>\n {headerAction}\n {signalManagement ? (\n <TraceSignalSettingsButton open={settingsOpen} onClick={() => setSettingsOpen(open => !open)} />\n ) : null}\n </>\n ) : undefined\n }\n />\n </div>\n <div\n className={\n settingsOpen\n ? 'grid max-h-full min-h-0 grid-cols-1 items-start gap-4 lg:grid-cols-[1fr_1fr]'\n : 'grid min-h-0 grid-cols-1'\n }\n >\n <div className=\"min-h-0 min-w-0\">{body}</div>\n {settingsOpen ? <TraceSignalSettingsPanel onClose={() => setSettingsOpen(false)} /> : null}\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"trace-intelligence-entity-index.es.js","sources":["../../../../src/ee/signals/components/trace-intelligence-entity-index.tsx"],"sourcesContent":["import type { SignalCatalogEntry, ThemeLearningEntity } from '@mastra/client-js';\nimport { Columns2, List } from 'lucide-react';\nimport { useState, type ReactNode } from 'react';\n\nimport { useThemeEntities } from '../hooks';\nimport { TraceSignalSettingsButton, TraceSignalSettingsPanel } from '../settings/trace-signal-settings';\nimport { TraceIntelligenceExplainer } from '../trace-intelligence-explainer';\nimport { useTraceIntelligence } from '../use-trace-intelligence';\nimport { EntityIndexCompactGrid } from './entity-index-compact-grid';\nimport { EntityIndexList } from './entity-index-list';\nimport { filterAndSortEntities } from './entity-index-model';\nimport type { TraceIntelligenceEntitySort, TraceIntelligenceEntityView } from './entity-index-model';\nimport { PermissionDenied } from '@/domains/auth/components/permission-denied';\nimport { SessionExpired } from '@/domains/auth/components/session-expired';\nimport { Button } from '@/ds/components/Button';\nimport { ButtonsGroup } from '@/ds/components/ButtonsGroup';\nimport { DataListSkeleton } from '@/ds/components/DataList';\nimport { EmptyState } from '@/ds/components/EmptyState';\nimport { ListSearch } from '@/ds/components/ListSearch';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { is401UnauthorizedError, is403ForbiddenError } from '@/utils/errors';\n\nexport type { TraceIntelligenceEntitySort, TraceIntelligenceEntityView } from './entity-index-model';\n\nconst listColumns = 'minmax(12rem,1.5fr) minmax(7rem,0.6fr) minmax(8rem,0.7fr) minmax(8rem,0.7fr) minmax(12rem,1fr)';\n\nexport interface TraceIntelligenceEntityIndexProps {\n entityType: string;\n search: string;\n sort: TraceIntelligenceEntitySort;\n view: TraceIntelligenceEntityView;\n onSearchChange: (search: string) => void;\n onSortChange: (sort: TraceIntelligenceEntitySort) => void;\n onViewChange: (view: TraceIntelligenceEntityView) => void;\n getEntityHref: (entity: ThemeLearningEntity) => string;\n headerAction?: ReactNode;\n}\n\nfunction EntityIndexError({ error }: { error: Error }) {\n if (is401UnauthorizedError(error)) {\n return (\n <div className=\"flex h-full items-center justify-center\">\n <SessionExpired />\n </div>\n );\n }\n if (is403ForbiddenError(error)) {\n return (\n <div className=\"flex h-full items-center justify-center\">\n <PermissionDenied resource=\"Trace Intelligence\" />\n </div>\n );\n }\n return (\n <div className=\"flex h-full items-center justify-center\">\n <EmptyState tone=\"error\" titleSlot=\"Failed to load Trace Intelligence\" descriptionSlot={error.message} />\n </div>\n );\n}\n\nfunction EntityIndexControls({\n search,\n sort,\n view,\n onSearchChange,\n onSortChange,\n onViewChange,\n headerAction,\n signalCatalog,\n}: Pick<\n TraceIntelligenceEntityIndexProps,\n 'search' | 'sort' | 'view' | 'onSearchChange' | 'onSortChange' | 'onViewChange' | 'headerAction'\n> & { signalCatalog: readonly SignalCatalogEntry[] }) {\n return (\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center\">\n <div className=\"max-w-120 flex-1\">\n <ListSearch\n value={search}\n onSearch={onSearchChange}\n label=\"Filter entities\"\n placeholder=\"Filter by entity identifier\"\n />\n </div>\n <div className=\"flex items-center justify-between gap-2 sm:ml-auto sm:justify-end\">\n <TraceIntelligenceExplainer signalCatalog={signalCatalog} />\n <Select<TraceIntelligenceEntitySort> value={sort} onValueChange={onSortChange}>\n <SelectTrigger aria-label=\"Sort entities\" size=\"md\" variant=\"ghost\" className=\"w-auto\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent align=\"end\">\n <SelectItem value=\"default\">Default order</SelectItem>\n <SelectItem value=\"entity-asc\">Entity: A–Z</SelectItem>\n <SelectItem value=\"entity-desc\">Entity: Z–A</SelectItem>\n </SelectContent>\n </Select>\n {headerAction}\n <ButtonsGroup aria-label=\"Entities view\">\n <Button\n type=\"button\"\n variant={view === 'list' ? 'primary' : 'default'}\n size=\"icon-md\"\n tooltip=\"List view\"\n aria-pressed={view === 'list'}\n onClick={() => onViewChange('list')}\n >\n <List />\n </Button>\n <Button\n type=\"button\"\n variant={view === 'compact' ? 'primary' : 'default'}\n size=\"icon-md\"\n tooltip=\"Compact view\"\n aria-pressed={view === 'compact'}\n onClick={() => onViewChange('compact')}\n >\n <Columns2 />\n </Button>\n </ButtonsGroup>\n </div>\n </div>\n );\n}\n\nexport function TraceIntelligenceEntityIndex({\n entityType,\n search,\n sort,\n view,\n onSearchChange,\n onSortChange,\n onViewChange,\n getEntityHref,\n headerAction,\n}: TraceIntelligenceEntityIndexProps) {\n const entitiesQuery = useThemeEntities(entityType);\n const { LinkComponent, signalCatalog: contextSignalCatalog, signalManagement } = useTraceIntelligence();\n const [settingsOpen, setSettingsOpen] = useState(false);\n\n if (entitiesQuery.error) return <EntityIndexError error={entitiesQuery.error} />;\n\n const sourceEntities = entitiesQuery.data?.entities ?? [];\n const signalCatalog =\n sourceEntities.find(entity => entity.signalCatalog?.length)?.signalCatalog ?? contextSignalCatalog;\n const entities = filterAndSortEntities(sourceEntities, search, sort);\n const hasSearch = search.trim().length > 0;\n let body = (\n <EntityIndexList\n entities={entities}\n hasSearch={hasSearch}\n getEntityHref={getEntityHref}\n LinkComponent={LinkComponent}\n />\n );\n if (entitiesQuery.isPending) {\n body = (\n <div role=\"status\" aria-label=\"Loading Trace Intelligence entities\">\n <DataListSkeleton columns={listColumns} />\n </div>\n );\n } else if (entitiesQuery.data.entities.length === 0 && !hasSearch) {\n body = (\n <EmptyState\n titleSlot=\"No Trace Intelligence entities yet\"\n descriptionSlot=\"Entities appear after Trace Intelligence begins collecting generated signal data.\"\n />\n );\n } else if (view === 'compact') {\n body = (\n <EntityIndexCompactGrid\n entities={entities}\n hasSearch={hasSearch}\n getEntityHref={getEntityHref}\n LinkComponent={LinkComponent}\n />\n );\n }\n\n return (\n <div className=\"mx-auto grid size-full min-h-0 max-w-7xl grid-rows-[auto_minmax(0,1fr)]\">\n <div className=\"pb-3\">\n <EntityIndexControls\n search={search}\n sort={sort}\n view={view}\n onSearchChange={onSearchChange}\n onSortChange={onSortChange}\n onViewChange={onViewChange}\n signalCatalog={signalCatalog}\n headerAction={\n headerAction || signalManagement ? (\n <>\n {headerAction}\n {signalManagement ? (\n <TraceSignalSettingsButton open={settingsOpen} onClick={() => setSettingsOpen(open => !open)} />\n ) : null}\n </>\n ) : undefined\n }\n />\n </div>\n <div\n className={\n settingsOpen\n ? 'grid max-h-full min-h-0 grid-cols-1 items-start gap-4 lg:grid-cols-[1fr_1fr]'\n : 'grid min-h-0 grid-cols-1'\n }\n >\n <div className=\"min-h-0 min-w-0\">{body}</div>\n {settingsOpen ? <TraceSignalSettingsPanel onClose={() => setSettingsOpen(false)} /> : null}\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ const jsxRuntime = require('react/jsx-runtime');
|
|
|
6
6
|
const React = require('react');
|
|
7
7
|
const dialog = require('../../../dialog-DQI9ChYf.cjs');
|
|
8
8
|
const field = require('../../../field-D1SVMPMz.cjs');
|
|
9
|
+
require('../../../field-control-aria-WzMGs0A4.cjs');
|
|
9
10
|
const form = require('../../../form-CsSBTIbV.cjs');
|
|
10
11
|
const input = require('../../../input-zdqTky_C.cjs');
|
|
11
12
|
const Notice = require('../../../Notice-c8dMiAtZ.cjs');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signal-definition-form-dialog.cjs.js","sources":["../../../../src/ee/signals/settings/signal-definition-form-dialog.tsx"],"sourcesContent":["import type {\n CreateTraceSignalDefinitionInput,\n TraceSignalDefinition,\n UpdateTraceSignalDefinitionInput,\n} from '@mastra/client-js';\nimport { useId, useState } from 'react';\n\nimport {\n Dialog,\n DialogAction,\n DialogBody,\n DialogCancel,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@/ds/components/Dialog';\nimport { Field, FieldDescription, FieldError, FieldLabel } from '@/ds/components/Field';\nimport { Form } from '@/ds/components/Form';\nimport { Input } from '@/ds/components/Input';\nimport { Notice } from '@/ds/components/Notice';\nimport { Textarea } from '@/ds/components/Textarea';\nimport { Txt } from '@/ds/components/Txt';\n\nconst reservedNames = new Set([\n 'goal',\n 'sentiment',\n 'behavior',\n 'outcome',\n 'intent',\n 'summary',\n 'tags',\n 'theme',\n 'noise',\n]);\n\nexport interface SignalDefinitionFormDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n definition?: TraceSignalDefinition;\n error?: string;\n pending: boolean;\n onCreate: (input: CreateTraceSignalDefinitionInput) => Promise<void>;\n onUpdate: (id: string, input: UpdateTraceSignalDefinitionInput) => Promise<void>;\n}\n\ntype FormValue = CreateTraceSignalDefinitionInput;\ntype FormErrors = Partial<Record<keyof FormValue, string>>;\n\nfunction initialValue(definition?: TraceSignalDefinition): FormValue {\n return definition\n ? {\n name: definition.name,\n displayLabel: definition.displayLabel,\n description: definition.description,\n taskPrompt: definition.taskPrompt,\n }\n : {\n name: '',\n displayLabel: '',\n description: '',\n taskPrompt: '',\n };\n}\n\nfunction validate(value: FormValue, editing: boolean): FormErrors {\n const errors: FormErrors = {};\n if (!editing && (!/^[a-z][a-z0-9_-]{1,31}$/.test(value.name) || reservedNames.has(value.name))) {\n errors.name = 'Use an unreserved lowercase slug of 2–32 letters, numbers, underscores, or hyphens.';\n }\n if (!value.displayLabel.trim()) errors.displayLabel = 'Display label is required.';\n if (!value.taskPrompt.trim() || value.taskPrompt.length > 2000) {\n errors.taskPrompt = 'Signal instructions are required and must be at most 2,000 characters.';\n }\n return errors;\n}\n\nexport function SignalDefinitionFormDialog({\n open,\n onOpenChange,\n definition,\n error,\n pending,\n onCreate,\n onUpdate,\n}: SignalDefinitionFormDialogProps) {\n const formId = useId();\n const [value, setValue] = useState(() => initialValue(definition));\n const [validationErrors, setValidationErrors] = useState<FormErrors>({});\n const editing = Boolean(definition);\n\n const setField = <Key extends keyof FormValue>(key: Key, fieldValue: FormValue[Key]) => {\n setValue(current => ({ ...current, [key]: fieldValue }));\n setValidationErrors(current => ({ ...current, [key]: undefined }));\n };\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange} pending={pending}>\n <DialogContent size=\"lg\">\n <DialogHeader>\n <DialogTitle>{editing ? 'Edit custom signal' : 'Create custom signal'}</DialogTitle>\n <DialogDescription>\n Definitions belong to the organization. Every signal receives all available bounded trace context.\n </DialogDescription>\n </DialogHeader>\n <DialogBody>\n <Form\n id={formId}\n onSubmit={event => {\n event.preventDefault();\n const errors = validate(value, editing);\n setValidationErrors(errors);\n if (Object.keys(errors).length > 0) return;\n const action = definition\n ? onUpdate(definition.id, {\n displayLabel: value.displayLabel,\n description: value.description,\n taskPrompt: value.taskPrompt,\n })\n : onCreate(value);\n void action.then(() => onOpenChange(false)).catch(() => undefined);\n }}\n >\n <Field invalid={Boolean(validationErrors.name)} disabled={editing || pending}>\n <FieldLabel>Signal name</FieldLabel>\n <Input\n name=\"name\"\n placeholder=\"handoff_quality\"\n value={value.name}\n onChange={event => setField('name', event.target.value)}\n />\n <FieldDescription>A stable lowercase slug. It cannot be changed after creation.</FieldDescription>\n <FieldError>{validationErrors.name}</FieldError>\n </Field>\n <Field invalid={Boolean(validationErrors.displayLabel)} disabled={pending}>\n <FieldLabel>Display label</FieldLabel>\n <Input\n name=\"displayLabel\"\n placeholder=\"Handoff quality\"\n value={value.displayLabel}\n onChange={event => setField('displayLabel', event.target.value)}\n />\n <FieldError>{validationErrors.displayLabel}</FieldError>\n </Field>\n <Field disabled={pending}>\n <FieldLabel>Description</FieldLabel>\n <Textarea\n name=\"description\"\n rows={2}\n value={value.description}\n onChange={event => setField('description', event.target.value)}\n />\n </Field>\n <Field invalid={Boolean(validationErrors.taskPrompt)} disabled={pending}>\n <FieldLabel>Signal instructions</FieldLabel>\n <Textarea\n name=\"taskPrompt\"\n rows={5}\n value={value.taskPrompt}\n placeholder=\"Describe what this signal should evaluate and how the result should be written.\"\n onChange={event => setField('taskPrompt', event.target.value)}\n />\n <FieldDescription>\n Tell the model what to evaluate and what the signal result should contain. {value.taskPrompt.length}\n /2,000 characters\n </FieldDescription>\n <FieldError>{validationErrors.taskPrompt}</FieldError>\n </Field>\n {editing ? (\n <Txt variant=\"meta\" tone=\"muted\">\n Instruction changes create a new version and apply only to new traces. Existing analysis is unchanged.\n </Txt>\n ) : null}\n {error ? (\n <div role=\"alert\">\n <Notice variant=\"destructive\">{error}</Notice>\n </div>\n ) : null}\n </Form>\n </DialogBody>\n <DialogFooter>\n <DialogCancel>Cancel</DialogCancel>\n <DialogAction type=\"submit\" form={formId}>\n {editing ? 'Save signal' : 'Create signal'}\n </DialogAction>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n"],"names":["useId","useState","jsx","Dialog","jsxs","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogBody","Form","Field","FieldLabel","Input","FieldDescription","FieldError","Textarea","Txt","Notice","DialogFooter","DialogCancel","DialogAction"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"signal-definition-form-dialog.cjs.js","sources":["../../../../src/ee/signals/settings/signal-definition-form-dialog.tsx"],"sourcesContent":["import type {\n CreateTraceSignalDefinitionInput,\n TraceSignalDefinition,\n UpdateTraceSignalDefinitionInput,\n} from '@mastra/client-js';\nimport { useId, useState } from 'react';\n\nimport {\n Dialog,\n DialogAction,\n DialogBody,\n DialogCancel,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@/ds/components/Dialog';\nimport { Field, FieldDescription, FieldError, FieldLabel } from '@/ds/components/Field';\nimport { Form } from '@/ds/components/Form';\nimport { Input } from '@/ds/components/Input';\nimport { Notice } from '@/ds/components/Notice';\nimport { Textarea } from '@/ds/components/Textarea';\nimport { Txt } from '@/ds/components/Txt';\n\nconst reservedNames = new Set([\n 'goal',\n 'sentiment',\n 'behavior',\n 'outcome',\n 'intent',\n 'summary',\n 'tags',\n 'theme',\n 'noise',\n]);\n\nexport interface SignalDefinitionFormDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n definition?: TraceSignalDefinition;\n error?: string;\n pending: boolean;\n onCreate: (input: CreateTraceSignalDefinitionInput) => Promise<void>;\n onUpdate: (id: string, input: UpdateTraceSignalDefinitionInput) => Promise<void>;\n}\n\ntype FormValue = CreateTraceSignalDefinitionInput;\ntype FormErrors = Partial<Record<keyof FormValue, string>>;\n\nfunction initialValue(definition?: TraceSignalDefinition): FormValue {\n return definition\n ? {\n name: definition.name,\n displayLabel: definition.displayLabel,\n description: definition.description,\n taskPrompt: definition.taskPrompt,\n }\n : {\n name: '',\n displayLabel: '',\n description: '',\n taskPrompt: '',\n };\n}\n\nfunction validate(value: FormValue, editing: boolean): FormErrors {\n const errors: FormErrors = {};\n if (!editing && (!/^[a-z][a-z0-9_-]{1,31}$/.test(value.name) || reservedNames.has(value.name))) {\n errors.name = 'Use an unreserved lowercase slug of 2–32 letters, numbers, underscores, or hyphens.';\n }\n if (!value.displayLabel.trim()) errors.displayLabel = 'Display label is required.';\n if (!value.taskPrompt.trim() || value.taskPrompt.length > 2000) {\n errors.taskPrompt = 'Signal instructions are required and must be at most 2,000 characters.';\n }\n return errors;\n}\n\nexport function SignalDefinitionFormDialog({\n open,\n onOpenChange,\n definition,\n error,\n pending,\n onCreate,\n onUpdate,\n}: SignalDefinitionFormDialogProps) {\n const formId = useId();\n const [value, setValue] = useState(() => initialValue(definition));\n const [validationErrors, setValidationErrors] = useState<FormErrors>({});\n const editing = Boolean(definition);\n\n const setField = <Key extends keyof FormValue>(key: Key, fieldValue: FormValue[Key]) => {\n setValue(current => ({ ...current, [key]: fieldValue }));\n setValidationErrors(current => ({ ...current, [key]: undefined }));\n };\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange} pending={pending}>\n <DialogContent size=\"lg\">\n <DialogHeader>\n <DialogTitle>{editing ? 'Edit custom signal' : 'Create custom signal'}</DialogTitle>\n <DialogDescription>\n Definitions belong to the organization. Every signal receives all available bounded trace context.\n </DialogDescription>\n </DialogHeader>\n <DialogBody>\n <Form\n id={formId}\n onSubmit={event => {\n event.preventDefault();\n const errors = validate(value, editing);\n setValidationErrors(errors);\n if (Object.keys(errors).length > 0) return;\n const action = definition\n ? onUpdate(definition.id, {\n displayLabel: value.displayLabel,\n description: value.description,\n taskPrompt: value.taskPrompt,\n })\n : onCreate(value);\n void action.then(() => onOpenChange(false)).catch(() => undefined);\n }}\n >\n <Field invalid={Boolean(validationErrors.name)} disabled={editing || pending}>\n <FieldLabel>Signal name</FieldLabel>\n <Input\n name=\"name\"\n placeholder=\"handoff_quality\"\n value={value.name}\n onChange={event => setField('name', event.target.value)}\n />\n <FieldDescription>A stable lowercase slug. It cannot be changed after creation.</FieldDescription>\n <FieldError>{validationErrors.name}</FieldError>\n </Field>\n <Field invalid={Boolean(validationErrors.displayLabel)} disabled={pending}>\n <FieldLabel>Display label</FieldLabel>\n <Input\n name=\"displayLabel\"\n placeholder=\"Handoff quality\"\n value={value.displayLabel}\n onChange={event => setField('displayLabel', event.target.value)}\n />\n <FieldError>{validationErrors.displayLabel}</FieldError>\n </Field>\n <Field disabled={pending}>\n <FieldLabel>Description</FieldLabel>\n <Textarea\n name=\"description\"\n rows={2}\n value={value.description}\n onChange={event => setField('description', event.target.value)}\n />\n </Field>\n <Field invalid={Boolean(validationErrors.taskPrompt)} disabled={pending}>\n <FieldLabel>Signal instructions</FieldLabel>\n <Textarea\n name=\"taskPrompt\"\n rows={5}\n value={value.taskPrompt}\n placeholder=\"Describe what this signal should evaluate and how the result should be written.\"\n onChange={event => setField('taskPrompt', event.target.value)}\n />\n <FieldDescription>\n Tell the model what to evaluate and what the signal result should contain. {value.taskPrompt.length}\n /2,000 characters\n </FieldDescription>\n <FieldError>{validationErrors.taskPrompt}</FieldError>\n </Field>\n {editing ? (\n <Txt variant=\"meta\" tone=\"muted\">\n Instruction changes create a new version and apply only to new traces. Existing analysis is unchanged.\n </Txt>\n ) : null}\n {error ? (\n <div role=\"alert\">\n <Notice variant=\"destructive\">{error}</Notice>\n </div>\n ) : null}\n </Form>\n </DialogBody>\n <DialogFooter>\n <DialogCancel>Cancel</DialogCancel>\n <DialogAction type=\"submit\" form={formId}>\n {editing ? 'Save signal' : 'Create signal'}\n </DialogAction>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n"],"names":["useId","useState","jsx","Dialog","jsxs","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogBody","Form","Field","FieldLabel","Input","FieldDescription","FieldError","Textarea","Txt","Notice","DialogFooter","DialogCancel","DialogAction"],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { useId, useState } from 'react';
|
|
3
3
|
import { D as Dialog, d as DialogContent, g as DialogHeader, j as DialogTitle, e as DialogDescription, a as DialogBody, f as DialogFooter, b as DialogCancel } from '../../../dialog-DlZmNahd.js';
|
|
4
|
-
import { F as Field, e as FieldLabel, b as FieldDescription, c as FieldError } from '../../../field-
|
|
4
|
+
import { F as Field, e as FieldLabel, b as FieldDescription, c as FieldError } from '../../../field-B89BEZg4.js';
|
|
5
|
+
import '../../../field-control-aria-DB6y41tQ.js';
|
|
5
6
|
import { F as Form } from '../../../form-CDRsQaFS.js';
|
|
6
|
-
import { I as Input } from '../../../input-
|
|
7
|
+
import { I as Input } from '../../../input-DQFUjtnh.js';
|
|
7
8
|
import { N as Notice } from '../../../Notice-Wy1grdLu.js';
|
|
8
9
|
import { T as Textarea } from '../../../textarea-Bl3htAGs.js';
|
|
9
10
|
import { T as Txt } from '../../../Txt-BuzYj7Vy.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signal-definition-form-dialog.es.js","sources":["../../../../src/ee/signals/settings/signal-definition-form-dialog.tsx"],"sourcesContent":["import type {\n CreateTraceSignalDefinitionInput,\n TraceSignalDefinition,\n UpdateTraceSignalDefinitionInput,\n} from '@mastra/client-js';\nimport { useId, useState } from 'react';\n\nimport {\n Dialog,\n DialogAction,\n DialogBody,\n DialogCancel,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@/ds/components/Dialog';\nimport { Field, FieldDescription, FieldError, FieldLabel } from '@/ds/components/Field';\nimport { Form } from '@/ds/components/Form';\nimport { Input } from '@/ds/components/Input';\nimport { Notice } from '@/ds/components/Notice';\nimport { Textarea } from '@/ds/components/Textarea';\nimport { Txt } from '@/ds/components/Txt';\n\nconst reservedNames = new Set([\n 'goal',\n 'sentiment',\n 'behavior',\n 'outcome',\n 'intent',\n 'summary',\n 'tags',\n 'theme',\n 'noise',\n]);\n\nexport interface SignalDefinitionFormDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n definition?: TraceSignalDefinition;\n error?: string;\n pending: boolean;\n onCreate: (input: CreateTraceSignalDefinitionInput) => Promise<void>;\n onUpdate: (id: string, input: UpdateTraceSignalDefinitionInput) => Promise<void>;\n}\n\ntype FormValue = CreateTraceSignalDefinitionInput;\ntype FormErrors = Partial<Record<keyof FormValue, string>>;\n\nfunction initialValue(definition?: TraceSignalDefinition): FormValue {\n return definition\n ? {\n name: definition.name,\n displayLabel: definition.displayLabel,\n description: definition.description,\n taskPrompt: definition.taskPrompt,\n }\n : {\n name: '',\n displayLabel: '',\n description: '',\n taskPrompt: '',\n };\n}\n\nfunction validate(value: FormValue, editing: boolean): FormErrors {\n const errors: FormErrors = {};\n if (!editing && (!/^[a-z][a-z0-9_-]{1,31}$/.test(value.name) || reservedNames.has(value.name))) {\n errors.name = 'Use an unreserved lowercase slug of 2–32 letters, numbers, underscores, or hyphens.';\n }\n if (!value.displayLabel.trim()) errors.displayLabel = 'Display label is required.';\n if (!value.taskPrompt.trim() || value.taskPrompt.length > 2000) {\n errors.taskPrompt = 'Signal instructions are required and must be at most 2,000 characters.';\n }\n return errors;\n}\n\nexport function SignalDefinitionFormDialog({\n open,\n onOpenChange,\n definition,\n error,\n pending,\n onCreate,\n onUpdate,\n}: SignalDefinitionFormDialogProps) {\n const formId = useId();\n const [value, setValue] = useState(() => initialValue(definition));\n const [validationErrors, setValidationErrors] = useState<FormErrors>({});\n const editing = Boolean(definition);\n\n const setField = <Key extends keyof FormValue>(key: Key, fieldValue: FormValue[Key]) => {\n setValue(current => ({ ...current, [key]: fieldValue }));\n setValidationErrors(current => ({ ...current, [key]: undefined }));\n };\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange} pending={pending}>\n <DialogContent size=\"lg\">\n <DialogHeader>\n <DialogTitle>{editing ? 'Edit custom signal' : 'Create custom signal'}</DialogTitle>\n <DialogDescription>\n Definitions belong to the organization. Every signal receives all available bounded trace context.\n </DialogDescription>\n </DialogHeader>\n <DialogBody>\n <Form\n id={formId}\n onSubmit={event => {\n event.preventDefault();\n const errors = validate(value, editing);\n setValidationErrors(errors);\n if (Object.keys(errors).length > 0) return;\n const action = definition\n ? onUpdate(definition.id, {\n displayLabel: value.displayLabel,\n description: value.description,\n taskPrompt: value.taskPrompt,\n })\n : onCreate(value);\n void action.then(() => onOpenChange(false)).catch(() => undefined);\n }}\n >\n <Field invalid={Boolean(validationErrors.name)} disabled={editing || pending}>\n <FieldLabel>Signal name</FieldLabel>\n <Input\n name=\"name\"\n placeholder=\"handoff_quality\"\n value={value.name}\n onChange={event => setField('name', event.target.value)}\n />\n <FieldDescription>A stable lowercase slug. It cannot be changed after creation.</FieldDescription>\n <FieldError>{validationErrors.name}</FieldError>\n </Field>\n <Field invalid={Boolean(validationErrors.displayLabel)} disabled={pending}>\n <FieldLabel>Display label</FieldLabel>\n <Input\n name=\"displayLabel\"\n placeholder=\"Handoff quality\"\n value={value.displayLabel}\n onChange={event => setField('displayLabel', event.target.value)}\n />\n <FieldError>{validationErrors.displayLabel}</FieldError>\n </Field>\n <Field disabled={pending}>\n <FieldLabel>Description</FieldLabel>\n <Textarea\n name=\"description\"\n rows={2}\n value={value.description}\n onChange={event => setField('description', event.target.value)}\n />\n </Field>\n <Field invalid={Boolean(validationErrors.taskPrompt)} disabled={pending}>\n <FieldLabel>Signal instructions</FieldLabel>\n <Textarea\n name=\"taskPrompt\"\n rows={5}\n value={value.taskPrompt}\n placeholder=\"Describe what this signal should evaluate and how the result should be written.\"\n onChange={event => setField('taskPrompt', event.target.value)}\n />\n <FieldDescription>\n Tell the model what to evaluate and what the signal result should contain. {value.taskPrompt.length}\n /2,000 characters\n </FieldDescription>\n <FieldError>{validationErrors.taskPrompt}</FieldError>\n </Field>\n {editing ? (\n <Txt variant=\"meta\" tone=\"muted\">\n Instruction changes create a new version and apply only to new traces. Existing analysis is unchanged.\n </Txt>\n ) : null}\n {error ? (\n <div role=\"alert\">\n <Notice variant=\"destructive\">{error}</Notice>\n </div>\n ) : null}\n </Form>\n </DialogBody>\n <DialogFooter>\n <DialogCancel>Cancel</DialogCancel>\n <DialogAction type=\"submit\" form={formId}>\n {editing ? 'Save signal' : 'Create signal'}\n </DialogAction>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"signal-definition-form-dialog.es.js","sources":["../../../../src/ee/signals/settings/signal-definition-form-dialog.tsx"],"sourcesContent":["import type {\n CreateTraceSignalDefinitionInput,\n TraceSignalDefinition,\n UpdateTraceSignalDefinitionInput,\n} from '@mastra/client-js';\nimport { useId, useState } from 'react';\n\nimport {\n Dialog,\n DialogAction,\n DialogBody,\n DialogCancel,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@/ds/components/Dialog';\nimport { Field, FieldDescription, FieldError, FieldLabel } from '@/ds/components/Field';\nimport { Form } from '@/ds/components/Form';\nimport { Input } from '@/ds/components/Input';\nimport { Notice } from '@/ds/components/Notice';\nimport { Textarea } from '@/ds/components/Textarea';\nimport { Txt } from '@/ds/components/Txt';\n\nconst reservedNames = new Set([\n 'goal',\n 'sentiment',\n 'behavior',\n 'outcome',\n 'intent',\n 'summary',\n 'tags',\n 'theme',\n 'noise',\n]);\n\nexport interface SignalDefinitionFormDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n definition?: TraceSignalDefinition;\n error?: string;\n pending: boolean;\n onCreate: (input: CreateTraceSignalDefinitionInput) => Promise<void>;\n onUpdate: (id: string, input: UpdateTraceSignalDefinitionInput) => Promise<void>;\n}\n\ntype FormValue = CreateTraceSignalDefinitionInput;\ntype FormErrors = Partial<Record<keyof FormValue, string>>;\n\nfunction initialValue(definition?: TraceSignalDefinition): FormValue {\n return definition\n ? {\n name: definition.name,\n displayLabel: definition.displayLabel,\n description: definition.description,\n taskPrompt: definition.taskPrompt,\n }\n : {\n name: '',\n displayLabel: '',\n description: '',\n taskPrompt: '',\n };\n}\n\nfunction validate(value: FormValue, editing: boolean): FormErrors {\n const errors: FormErrors = {};\n if (!editing && (!/^[a-z][a-z0-9_-]{1,31}$/.test(value.name) || reservedNames.has(value.name))) {\n errors.name = 'Use an unreserved lowercase slug of 2–32 letters, numbers, underscores, or hyphens.';\n }\n if (!value.displayLabel.trim()) errors.displayLabel = 'Display label is required.';\n if (!value.taskPrompt.trim() || value.taskPrompt.length > 2000) {\n errors.taskPrompt = 'Signal instructions are required and must be at most 2,000 characters.';\n }\n return errors;\n}\n\nexport function SignalDefinitionFormDialog({\n open,\n onOpenChange,\n definition,\n error,\n pending,\n onCreate,\n onUpdate,\n}: SignalDefinitionFormDialogProps) {\n const formId = useId();\n const [value, setValue] = useState(() => initialValue(definition));\n const [validationErrors, setValidationErrors] = useState<FormErrors>({});\n const editing = Boolean(definition);\n\n const setField = <Key extends keyof FormValue>(key: Key, fieldValue: FormValue[Key]) => {\n setValue(current => ({ ...current, [key]: fieldValue }));\n setValidationErrors(current => ({ ...current, [key]: undefined }));\n };\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange} pending={pending}>\n <DialogContent size=\"lg\">\n <DialogHeader>\n <DialogTitle>{editing ? 'Edit custom signal' : 'Create custom signal'}</DialogTitle>\n <DialogDescription>\n Definitions belong to the organization. Every signal receives all available bounded trace context.\n </DialogDescription>\n </DialogHeader>\n <DialogBody>\n <Form\n id={formId}\n onSubmit={event => {\n event.preventDefault();\n const errors = validate(value, editing);\n setValidationErrors(errors);\n if (Object.keys(errors).length > 0) return;\n const action = definition\n ? onUpdate(definition.id, {\n displayLabel: value.displayLabel,\n description: value.description,\n taskPrompt: value.taskPrompt,\n })\n : onCreate(value);\n void action.then(() => onOpenChange(false)).catch(() => undefined);\n }}\n >\n <Field invalid={Boolean(validationErrors.name)} disabled={editing || pending}>\n <FieldLabel>Signal name</FieldLabel>\n <Input\n name=\"name\"\n placeholder=\"handoff_quality\"\n value={value.name}\n onChange={event => setField('name', event.target.value)}\n />\n <FieldDescription>A stable lowercase slug. It cannot be changed after creation.</FieldDescription>\n <FieldError>{validationErrors.name}</FieldError>\n </Field>\n <Field invalid={Boolean(validationErrors.displayLabel)} disabled={pending}>\n <FieldLabel>Display label</FieldLabel>\n <Input\n name=\"displayLabel\"\n placeholder=\"Handoff quality\"\n value={value.displayLabel}\n onChange={event => setField('displayLabel', event.target.value)}\n />\n <FieldError>{validationErrors.displayLabel}</FieldError>\n </Field>\n <Field disabled={pending}>\n <FieldLabel>Description</FieldLabel>\n <Textarea\n name=\"description\"\n rows={2}\n value={value.description}\n onChange={event => setField('description', event.target.value)}\n />\n </Field>\n <Field invalid={Boolean(validationErrors.taskPrompt)} disabled={pending}>\n <FieldLabel>Signal instructions</FieldLabel>\n <Textarea\n name=\"taskPrompt\"\n rows={5}\n value={value.taskPrompt}\n placeholder=\"Describe what this signal should evaluate and how the result should be written.\"\n onChange={event => setField('taskPrompt', event.target.value)}\n />\n <FieldDescription>\n Tell the model what to evaluate and what the signal result should contain. {value.taskPrompt.length}\n /2,000 characters\n </FieldDescription>\n <FieldError>{validationErrors.taskPrompt}</FieldError>\n </Field>\n {editing ? (\n <Txt variant=\"meta\" tone=\"muted\">\n Instruction changes create a new version and apply only to new traces. Existing analysis is unchanged.\n </Txt>\n ) : null}\n {error ? (\n <div role=\"alert\">\n <Notice variant=\"destructive\">{error}</Notice>\n </div>\n ) : null}\n </Form>\n </DialogBody>\n <DialogFooter>\n <DialogCancel>Cancel</DialogCancel>\n <DialogAction type=\"submit\" form={formId}>\n {editing ? 'Save signal' : 'Create signal'}\n </DialogAction>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import { B as Button } from '../../../Button-C8QDEN9j.js';
|
|
|
9
9
|
import { DataDetailsPanel } from '../../../components/DataDetailsPanel.es.js';
|
|
10
10
|
import { N as Notice } from '../../../Notice-Wy1grdLu.js';
|
|
11
11
|
import { S as Skeleton } from '../../../skeleton-Bjxvf3Y-.js';
|
|
12
|
-
import { S as Switch } from '../../../switch-
|
|
12
|
+
import { S as Switch } from '../../../switch-DiSlsWUt.js';
|
|
13
13
|
import { T as Txt } from '../../../Txt-BuzYj7Vy.js';
|
|
14
14
|
|
|
15
15
|
function TraceSignalSettingsButton({ open, onClick }) {
|
|
@@ -7,9 +7,9 @@ const lucideReact = require('lucide-react');
|
|
|
7
7
|
const React = require('react');
|
|
8
8
|
const ee_topics_utils = require('../utils.cjs.js');
|
|
9
9
|
const Button = require('../../../Button-BfZzgZrA.cjs');
|
|
10
|
-
const dataList = require('../../../data-list-
|
|
10
|
+
const dataList = require('../../../data-list-DkVOwk8l.cjs');
|
|
11
11
|
const useDataListKeyboard = require('../../../use-data-list-keyboard-DF3tLe10.cjs');
|
|
12
|
-
const searchInput = require('../../../search-input-
|
|
12
|
+
const searchInput = require('../../../search-input-UtTJMjJu.cjs');
|
|
13
13
|
|
|
14
14
|
function TopicTraceSummaryList({
|
|
15
15
|
traces,
|
|
@@ -3,9 +3,9 @@ import { ChevronDown } from 'lucide-react';
|
|
|
3
3
|
import { useState, useMemo } from 'react';
|
|
4
4
|
import { getVisibleTraceSummaries } from '../utils.es.js';
|
|
5
5
|
import { B as Button } from '../../../Button-C8QDEN9j.js';
|
|
6
|
-
import {
|
|
6
|
+
import { D as DataList } from '../../../data-list-Dv2lP-dU.js';
|
|
7
7
|
import { u as useDataListKeyboard } from '../../../use-data-list-keyboard-DFQr4t38.js';
|
|
8
|
-
import { S as SearchInput } from '../../../search-input-
|
|
8
|
+
import { S as SearchInput } from '../../../search-input-fqSrRTLU.js';
|
|
9
9
|
|
|
10
10
|
function TopicTraceSummaryList({
|
|
11
11
|
traces,
|
|
@@ -3,7 +3,7 @@ import { Field as Field$1 } from '@base-ui/react/field';
|
|
|
3
3
|
import { Fieldset as Fieldset$1 } from '@base-ui/react/fieldset';
|
|
4
4
|
import { CircleAlertIcon } from 'lucide-react';
|
|
5
5
|
import * as React from 'react';
|
|
6
|
-
import { F as FieldAriaContext, a as useFieldAriaIds } from './field-control-aria-
|
|
6
|
+
import { F as FieldAriaContext, a as useFieldAriaIds } from './field-control-aria-DB6y41tQ.js';
|
|
7
7
|
import { Icon } from './icons/Icon.es.js';
|
|
8
8
|
import { c as cn } from './cn-coERSHz5.js';
|
|
9
9
|
|
|
@@ -167,4 +167,4 @@ function FieldsetLegend({ className, required = false, children, ...props }) {
|
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
export { Field as F, FieldContent as a, FieldDescription as b, FieldError as c, FieldItem as d, FieldLabel as e, Fieldset as f, FieldsetLegend as g };
|
|
170
|
-
//# sourceMappingURL=field-
|
|
170
|
+
//# sourceMappingURL=field-B89BEZg4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-Bc8Ewf_M.js","sources":["../src/ds/components/Field/field.tsx"],"sourcesContent":["import { Field as FieldPrimitive } from '@base-ui/react/field';\nimport { Fieldset as FieldsetPrimitive } from '@base-ui/react/fieldset';\nimport { CircleAlertIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { FieldAriaContext, useFieldAriaIds } from './field-control-aria';\nimport { Icon } from '@/ds/icons/Icon';\nimport { cn } from '@/lib/utils';\n\ntype FieldProps = Omit<FieldPrimitive.Root.Props, 'className'> & {\n className?: string;\n orientation?: 'vertical' | 'horizontal' | 'responsive';\n};\n\nconst orientationClassName = {\n vertical: 'grid gap-2',\n horizontal: 'flex items-center gap-2 has-[>[data-slot=field-label]:first-child]:justify-between',\n responsive: 'flex flex-col gap-2 sm:flex-row sm:items-center',\n} satisfies Record<NonNullable<FieldProps['orientation']>, string>;\n\nfunction Field({ className, orientation = 'vertical', invalid = false, ...props }: FieldProps) {\n const id = React.useId();\n const [hasDescription, setHasDescription] = React.useState(false);\n const ariaIds = React.useMemo(\n () => ({\n labelId: `${id}-label`,\n descriptionId: `${id}-description`,\n errorId: `${id}-error`,\n controlId: `${id}-control`,\n invalid,\n hasDescription,\n setHasDescription,\n }),\n [id, invalid, hasDescription],\n );\n\n return (\n <FieldAriaContext.Provider value={ariaIds}>\n <FieldPrimitive.Root\n invalid={invalid}\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn('min-w-0 text-foreground', orientationClassName[orientation], className)}\n {...props}\n />\n </FieldAriaContext.Provider>\n );\n}\n\ntype FieldContentProps = React.ComponentProps<'div'>;\n\nfunction FieldContent({ className, ...props }: FieldContentProps) {\n return <div data-slot=\"field-content\" className={cn('grid min-w-0 flex-1 gap-2', className)} {...props} />;\n}\n\ntype FieldItemProps = Omit<FieldPrimitive.Item.Props, 'className'> & {\n className?: string;\n};\n\nfunction FieldItem({ className, ...props }: FieldItemProps) {\n const isInsideField = useFieldAriaIds() !== null;\n const ItemScope = isInsideField ? FieldPrimitive.Item : FieldPrimitive.Root;\n\n return (\n <FieldAriaContext.Provider value={null}>\n <ItemScope data-slot=\"field-item\" className={cn('flex min-w-0 items-center gap-2', className)} {...props} />\n </FieldAriaContext.Provider>\n );\n}\n\nfunction RequiredMark() {\n return (\n <>\n <span aria-hidden className=\"ml-0.5 text-destructive-foreground in-data-disabled:text-muted-foreground\">\n *\n </span>{' '}\n <span className=\"sr-only\">(required)</span>\n </>\n );\n}\n\ntype FieldLabelProps = Omit<FieldPrimitive.Label.Props, 'className' | 'id'> & {\n className?: string;\n required?: boolean;\n size?: 'smaller' | 'default' | 'bigger';\n};\n\nfunction FieldLabel({ className, required = false, size = 'default', children, onClick, ...props }: FieldLabelProps) {\n const field = useFieldAriaIds();\n\n const focusManualControl: FieldLabelProps['onClick'] = event => {\n onClick?.(event);\n if (!field || event.defaultPrevented) return;\n event.currentTarget.ownerDocument.getElementById(field.controlId)?.focus();\n };\n\n return (\n <FieldPrimitive.Label\n id={field?.labelId}\n data-slot=\"field-label\"\n className={cn(\n 'inline-flex shrink-0 items-center text-label text-foreground data-disabled:text-muted-foreground',\n 'not-data-disabled:has-[[role=checkbox],[role=switch],[role=radio]]:cursor-pointer',\n 'not-data-disabled:[:is([data-slot=field],[data-slot=field-item]):has(>[role=checkbox],>[role=switch],>[role=radio])_&]:cursor-pointer',\n 'data-disabled:cursor-not-allowed',\n size === 'smaller' && 'text-column',\n size === 'bigger' && 'text-body',\n className,\n )}\n onClick={focusManualControl}\n {...props}\n >\n {children}\n {required ? <RequiredMark /> : null}\n </FieldPrimitive.Label>\n );\n}\n\ntype FieldDescriptionProps = Omit<FieldPrimitive.Description.Props, 'className' | 'id'> & {\n className?: string;\n};\n\nfunction FieldDescription({ className, ...props }: FieldDescriptionProps) {\n const field = useFieldAriaIds();\n const setHasDescription = field?.setHasDescription;\n\n React.useEffect(() => {\n if (!setHasDescription) return;\n setHasDescription(true);\n return () => setHasDescription(false);\n }, [setHasDescription]);\n\n return (\n <FieldPrimitive.Description\n id={field?.descriptionId}\n data-slot=\"field-description\"\n className={cn('-mt-1 text-caption text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\ntype FieldErrorProps = Omit<FieldPrimitive.Error.Props, 'className' | 'match' | 'render'> & {\n className?: string;\n};\n\nconst fieldErrorClassName = '-mt-1 flex gap-1 text-body-sm text-destructive-foreground';\n\nfunction FieldErrorIcon() {\n return (\n <Icon size=\"xs\" className=\"mt-1 shrink-0\" aria-hidden>\n <CircleAlertIcon />\n </Icon>\n );\n}\n\nfunction FieldError({ className, children, ...props }: FieldErrorProps) {\n const field = useFieldAriaIds();\n\n if (children) {\n return (\n <FieldPrimitive.Error\n key=\"external\"\n id={field?.errorId}\n match\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(fieldErrorClassName, className)}\n {...props}\n >\n <FieldErrorIcon />\n <span className=\"min-w-0\">{children}</span>\n </FieldPrimitive.Error>\n );\n }\n\n return (\n <FieldPrimitive.Error\n key=\"native\"\n id={field?.errorId}\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(fieldErrorClassName, className)}\n {...props}\n render={({ children: message, ...errorProps }) => (\n <div {...errorProps}>\n <FieldErrorIcon />\n <span className=\"min-w-0\">{message}</span>\n </div>\n )}\n />\n );\n}\n\ntype FieldsetProps = Omit<FieldsetPrimitive.Root.Props, 'className'> & {\n className?: string;\n};\n\nfunction Fieldset({ className, ...props }: FieldsetProps) {\n return (\n <FieldsetPrimitive.Root\n data-slot=\"fieldset\"\n className={cn('m-0 grid min-w-0 gap-3 border-0 p-0', className)}\n {...props}\n />\n );\n}\n\ntype FieldsetLegendProps = Omit<FieldsetPrimitive.Legend.Props, 'className'> & {\n className?: string;\n required?: boolean;\n};\n\nfunction FieldsetLegend({ className, required = false, children, ...props }: FieldsetLegendProps) {\n return (\n <FieldsetPrimitive.Legend\n data-slot=\"fieldset-legend\"\n className={cn('text-label text-foreground data-disabled:text-muted-foreground', className)}\n {...props}\n >\n {children}\n {required ? <RequiredMark /> : null}\n </FieldsetPrimitive.Legend>\n );\n}\n\nexport { Field, FieldContent, FieldItem, FieldLabel, FieldDescription, FieldError, Fieldset, FieldsetLegend };\nexport type {\n FieldProps,\n FieldContentProps,\n FieldItemProps,\n FieldLabelProps,\n FieldDescriptionProps,\n FieldErrorProps,\n FieldsetProps,\n FieldsetLegendProps,\n};\n"],"names":["FieldPrimitive","FieldsetPrimitive"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"field-B89BEZg4.js","sources":["../src/ds/components/Field/field.tsx"],"sourcesContent":["import { Field as FieldPrimitive } from '@base-ui/react/field';\nimport { Fieldset as FieldsetPrimitive } from '@base-ui/react/fieldset';\nimport { CircleAlertIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { FieldAriaContext, useFieldAriaIds } from './field-control-aria';\nimport { Icon } from '@/ds/icons/Icon';\nimport { cn } from '@/lib/utils';\n\ntype FieldProps = Omit<FieldPrimitive.Root.Props, 'className'> & {\n className?: string;\n orientation?: 'vertical' | 'horizontal' | 'responsive';\n};\n\nconst orientationClassName = {\n vertical: 'grid gap-2',\n horizontal: 'flex items-center gap-2 has-[>[data-slot=field-label]:first-child]:justify-between',\n responsive: 'flex flex-col gap-2 sm:flex-row sm:items-center',\n} satisfies Record<NonNullable<FieldProps['orientation']>, string>;\n\nfunction Field({ className, orientation = 'vertical', invalid = false, ...props }: FieldProps) {\n const id = React.useId();\n const [hasDescription, setHasDescription] = React.useState(false);\n const ariaIds = React.useMemo(\n () => ({\n labelId: `${id}-label`,\n descriptionId: `${id}-description`,\n errorId: `${id}-error`,\n controlId: `${id}-control`,\n invalid,\n hasDescription,\n setHasDescription,\n }),\n [id, invalid, hasDescription],\n );\n\n return (\n <FieldAriaContext.Provider value={ariaIds}>\n <FieldPrimitive.Root\n invalid={invalid}\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn('min-w-0 text-foreground', orientationClassName[orientation], className)}\n {...props}\n />\n </FieldAriaContext.Provider>\n );\n}\n\ntype FieldContentProps = React.ComponentProps<'div'>;\n\nfunction FieldContent({ className, ...props }: FieldContentProps) {\n return <div data-slot=\"field-content\" className={cn('grid min-w-0 flex-1 gap-2', className)} {...props} />;\n}\n\ntype FieldItemProps = Omit<FieldPrimitive.Item.Props, 'className'> & {\n className?: string;\n};\n\nfunction FieldItem({ className, ...props }: FieldItemProps) {\n const isInsideField = useFieldAriaIds() !== null;\n const ItemScope = isInsideField ? FieldPrimitive.Item : FieldPrimitive.Root;\n\n return (\n <FieldAriaContext.Provider value={null}>\n <ItemScope data-slot=\"field-item\" className={cn('flex min-w-0 items-center gap-2', className)} {...props} />\n </FieldAriaContext.Provider>\n );\n}\n\nfunction RequiredMark() {\n return (\n <>\n <span aria-hidden className=\"ml-0.5 text-destructive-foreground in-data-disabled:text-muted-foreground\">\n *\n </span>{' '}\n <span className=\"sr-only\">(required)</span>\n </>\n );\n}\n\ntype FieldLabelProps = Omit<FieldPrimitive.Label.Props, 'className' | 'id'> & {\n className?: string;\n required?: boolean;\n size?: 'smaller' | 'default' | 'bigger';\n};\n\nfunction FieldLabel({ className, required = false, size = 'default', children, onClick, ...props }: FieldLabelProps) {\n const field = useFieldAriaIds();\n\n const focusManualControl: FieldLabelProps['onClick'] = event => {\n onClick?.(event);\n if (!field || event.defaultPrevented) return;\n event.currentTarget.ownerDocument.getElementById(field.controlId)?.focus();\n };\n\n return (\n <FieldPrimitive.Label\n id={field?.labelId}\n data-slot=\"field-label\"\n className={cn(\n 'inline-flex shrink-0 items-center text-label text-foreground data-disabled:text-muted-foreground',\n 'not-data-disabled:has-[[role=checkbox],[role=switch],[role=radio]]:cursor-pointer',\n 'not-data-disabled:[:is([data-slot=field],[data-slot=field-item]):has(>[role=checkbox],>[role=switch],>[role=radio])_&]:cursor-pointer',\n 'data-disabled:cursor-not-allowed',\n size === 'smaller' && 'text-column',\n size === 'bigger' && 'text-body',\n className,\n )}\n onClick={focusManualControl}\n {...props}\n >\n {children}\n {required ? <RequiredMark /> : null}\n </FieldPrimitive.Label>\n );\n}\n\ntype FieldDescriptionProps = Omit<FieldPrimitive.Description.Props, 'className' | 'id'> & {\n className?: string;\n};\n\nfunction FieldDescription({ className, ...props }: FieldDescriptionProps) {\n const field = useFieldAriaIds();\n const setHasDescription = field?.setHasDescription;\n\n React.useEffect(() => {\n if (!setHasDescription) return;\n setHasDescription(true);\n return () => setHasDescription(false);\n }, [setHasDescription]);\n\n return (\n <FieldPrimitive.Description\n id={field?.descriptionId}\n data-slot=\"field-description\"\n className={cn('-mt-1 text-caption text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\ntype FieldErrorProps = Omit<FieldPrimitive.Error.Props, 'className' | 'match' | 'render'> & {\n className?: string;\n};\n\nconst fieldErrorClassName = '-mt-1 flex gap-1 text-body-sm text-destructive-foreground';\n\nfunction FieldErrorIcon() {\n return (\n <Icon size=\"xs\" className=\"mt-1 shrink-0\" aria-hidden>\n <CircleAlertIcon />\n </Icon>\n );\n}\n\nfunction FieldError({ className, children, ...props }: FieldErrorProps) {\n const field = useFieldAriaIds();\n\n if (children) {\n return (\n <FieldPrimitive.Error\n key=\"external\"\n id={field?.errorId}\n match\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(fieldErrorClassName, className)}\n {...props}\n >\n <FieldErrorIcon />\n <span className=\"min-w-0\">{children}</span>\n </FieldPrimitive.Error>\n );\n }\n\n return (\n <FieldPrimitive.Error\n key=\"native\"\n id={field?.errorId}\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(fieldErrorClassName, className)}\n {...props}\n render={({ children: message, ...errorProps }) => (\n <div {...errorProps}>\n <FieldErrorIcon />\n <span className=\"min-w-0\">{message}</span>\n </div>\n )}\n />\n );\n}\n\ntype FieldsetProps = Omit<FieldsetPrimitive.Root.Props, 'className'> & {\n className?: string;\n};\n\nfunction Fieldset({ className, ...props }: FieldsetProps) {\n return (\n <FieldsetPrimitive.Root\n data-slot=\"fieldset\"\n className={cn('m-0 grid min-w-0 gap-3 border-0 p-0', className)}\n {...props}\n />\n );\n}\n\ntype FieldsetLegendProps = Omit<FieldsetPrimitive.Legend.Props, 'className'> & {\n className?: string;\n required?: boolean;\n};\n\nfunction FieldsetLegend({ className, required = false, children, ...props }: FieldsetLegendProps) {\n return (\n <FieldsetPrimitive.Legend\n data-slot=\"fieldset-legend\"\n className={cn('text-label text-foreground data-disabled:text-muted-foreground', className)}\n {...props}\n >\n {children}\n {required ? <RequiredMark /> : null}\n </FieldsetPrimitive.Legend>\n );\n}\n\nexport { Field, FieldContent, FieldItem, FieldLabel, FieldDescription, FieldError, Fieldset, FieldsetLegend };\nexport type {\n FieldProps,\n FieldContentProps,\n FieldItemProps,\n FieldLabelProps,\n FieldDescriptionProps,\n FieldErrorProps,\n FieldsetProps,\n FieldsetLegendProps,\n};\n"],"names":["FieldPrimitive","FieldsetPrimitive"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
2
|
|
|
3
3
|
const FieldAriaContext = createContext(null);
|
|
4
4
|
function useFieldAriaIds() {
|
|
@@ -23,4 +23,4 @@ function useFieldControlAria(nameProps = {}) {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
export { FieldAriaContext as F, useFieldAriaIds as a, keepOwnAccessibleName as k, useFieldControlAria as u };
|
|
26
|
-
//# sourceMappingURL=field-control-aria-
|
|
26
|
+
//# sourceMappingURL=field-control-aria-DB6y41tQ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-control-aria-
|
|
1
|
+
{"version":3,"file":"field-control-aria-DB6y41tQ.js","sources":["../src/ds/components/Field/field-control-aria.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport type FieldAriaIds = {\n labelId: string;\n descriptionId: string;\n errorId: string;\n controlId: string;\n invalid: boolean;\n hasDescription: boolean;\n setHasDescription: (hasDescription: boolean) => void;\n};\n\nexport type ControlNameProps = {\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n};\n\nexport const FieldAriaContext = createContext<FieldAriaIds | null>(null);\n\nexport function useFieldAriaIds() {\n return useContext(FieldAriaContext);\n}\n\nexport function hasOwnAccessibleName({ 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy }: ControlNameProps) {\n return Boolean(ariaLabel) && ariaLabelledBy === undefined;\n}\n\nexport function keepOwnAccessibleName(nameProps: ControlNameProps): { 'aria-labelledby'?: undefined } {\n return hasOwnAccessibleName(nameProps) ? { 'aria-labelledby': undefined } : {};\n}\n\n// Base UI controls are wired by the Field; only non-Base-UI controls (CodeMirror) need this.\nexport function useFieldControlAria(nameProps: ControlNameProps = {}) {\n const field = useFieldAriaIds();\n if (!field) return {};\n const describedByIds = [field.hasDescription && field.descriptionId, field.invalid && field.errorId].filter(Boolean);\n return {\n id: field.controlId,\n 'aria-labelledby': hasOwnAccessibleName(nameProps) ? undefined : field.labelId,\n 'aria-describedby': describedByIds.length > 0 ? describedByIds.join(' ') : undefined,\n 'aria-invalid': field.invalid || undefined,\n };\n}\n"],"names":[],"mappings":";;AAiBO,MAAM,gBAAA,GAAmB,cAAmC,IAAI;AAEhE,SAAS,eAAA,GAAkB;AAChC,EAAA,OAAO,WAAW,gBAAgB,CAAA;AACpC;AAEO,SAAS,qBAAqB,EAAE,YAAA,EAAc,SAAA,EAAW,iBAAA,EAAmB,gBAAe,EAAqB;AACrH,EAAA,OAAO,OAAA,CAAQ,SAAS,CAAA,IAAK,cAAA,KAAmB,MAAA;AAClD;AAEO,SAAS,sBAAsB,SAAA,EAAgE;AACpG,EAAA,OAAO,qBAAqB,SAAS,CAAA,GAAI,EAAE,iBAAA,EAAmB,MAAA,KAAc,EAAC;AAC/E;AAGO,SAAS,mBAAA,CAAoB,SAAA,GAA8B,EAAC,EAAG;AACpE,EAAA,MAAM,QAAQ,eAAA,EAAgB;AAC9B,EAAA,IAAI,CAAC,KAAA,EAAO,OAAO,EAAC;AACpB,EAAA,MAAM,cAAA,GAAiB,CAAC,KAAA,CAAM,cAAA,IAAkB,KAAA,CAAM,aAAA,EAAe,KAAA,CAAM,OAAA,IAAW,KAAA,CAAM,OAAO,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA;AACnH,EAAA,OAAO;AAAA,IACL,IAAI,KAAA,CAAM,SAAA;AAAA,IACV,iBAAA,EAAmB,oBAAA,CAAqB,SAAS,CAAA,GAAI,SAAY,KAAA,CAAM,OAAA;AAAA,IACvE,oBAAoB,cAAA,CAAe,MAAA,GAAS,IAAI,cAAA,CAAe,IAAA,CAAK,GAAG,CAAA,GAAI,MAAA;AAAA,IAC3E,cAAA,EAAgB,MAAM,OAAA,IAAW;AAAA,GACnC;AACF;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { Input as Input$1 } from '@base-ui/react/input';
|
|
3
3
|
import { c as cva } from './index-D_f78K7e.js';
|
|
4
|
-
import { k as keepOwnAccessibleName } from './field-control-aria-
|
|
4
|
+
import { k as keepOwnAccessibleName } from './field-control-aria-DB6y41tQ.js';
|
|
5
5
|
import { controlSizeClasses } from './primitives/control-size.es.js';
|
|
6
6
|
import { deprecatedErrorAria, fieldErrorRim, resolveFieldVariant, unstyledFormElementStyle, sharedFormElementDisabledStyle, inputSurfaceAndFocusStyle } from './primitives/form-element.es.js';
|
|
7
7
|
import { textFieldAutofillProps } from './primitives/password-manager-autofill.es.js';
|
|
@@ -57,4 +57,4 @@ function Input({ className, size, testId, variant, error, autoComplete, ...props
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
export { Input as I };
|
|
60
|
-
//# sourceMappingURL=input-
|
|
60
|
+
//# sourceMappingURL=input-DQFUjtnh.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-
|
|
1
|
+
{"version":3,"file":"input-DQFUjtnh.js","sources":["../src/ds/components/Input/input.tsx"],"sourcesContent":["import { Input as InputPrimitive } from '@base-ui/react/input';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { keepOwnAccessibleName } from '@/ds/components/Field/field-control-aria';\nimport { controlSizeClasses } from '@/ds/primitives/control-size';\nimport {\n deprecatedErrorAria,\n fieldErrorRim,\n inputSurfaceAndFocusStyle,\n resolveFieldVariant,\n sharedFormElementDisabledStyle,\n unstyledFormElementStyle,\n} from '@/ds/primitives/form-element';\nimport type { DeprecatedFilledVariant } from '@/ds/primitives/form-element';\nimport { textFieldAutofillProps } from '@/ds/primitives/password-manager-autofill';\nimport { controlStateColorTransition } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nconst inputVariants = cva(\n cn(\n // A text field is a block control: it fills its field. Content-sized controls (a\n // Select or Combobox trigger, a Button) do the opposite and let the call site grow them.\n 'flex w-full text-ellipsis text-foreground',\n controlStateColorTransition,\n 'placeholder:text-muted-foreground placeholder:transition-opacity placeholder:duration-normal',\n 'focus:placeholder:opacity-70 motion-reduce:placeholder:transition-none',\n // Native number spinners clip the pill; WebKit and Firefox need different selectors.\n '[&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none',\n '[&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none',\n '[&[type=number]]:[appearance:textfield]',\n // type=\"search\": drop WebKit's native clear button so the DS owns the search chrome.\n // Compose an <InputGroup> with an InputGroupButton to add a clear control.\n '[&::-webkit-search-cancel-button]:appearance-none',\n ),\n {\n variants: {\n variant: {\n default: cn(inputSurfaceAndFocusStyle, 'rounded-full', sharedFormElementDisabledStyle),\n unstyled: unstyledFormElementStyle,\n },\n size: {\n sm: cn(controlSizeClasses.sm, 'px-[.75em]'),\n md: cn(controlSizeClasses.md, 'px-[.75em]'),\n lg: cn(controlSizeClasses.lg, 'px-[.85em]'),\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n },\n);\n\nexport type InputProps = Omit<React.ComponentProps<'input'>, 'size'> &\n Omit<VariantProps<typeof inputVariants>, 'variant'> & {\n /** `filled` is a deprecated alias for `default`; both render the filled surface. */\n variant?: VariantProps<typeof inputVariants>['variant'] | DeprecatedFilledVariant;\n testId?: string;\n /** @deprecated Wrap the control in `<Field invalid>`, or set `aria-invalid` on a control outside a `Field`. */\n error?: boolean;\n /**\n * Leave unset (or `\"off\"`) for app data: the field renders `autocomplete=\"off\"` plus the\n * ignore attributes of the common password managers, so a \"Name\" field doesn't get an\n * identity popup. Pass a real autofill token (`email`, `username`, `current-password`,\n * `new-password`, `one-time-code`, ...) on credential and account forms to opt back in.\n */\n autoComplete?: React.HTMLInputAutoCompleteAttribute;\n };\n\n/**\n * Single-line text field. Opts out of password manager autofill unless `autoComplete`\n * names a real autofill token; see `textFieldAutofillProps`.\n */\nfunction Input({ className, size, testId, variant, error, autoComplete, ...props }: InputProps) {\n return (\n <InputPrimitive\n className={cn(inputVariants({ variant: resolveFieldVariant(variant), size }), fieldErrorRim, className)}\n data-testid={testId}\n {...deprecatedErrorAria(error)}\n {...props}\n {...textFieldAutofillProps(autoComplete)}\n {...keepOwnAccessibleName(props)}\n />\n );\n}\n\nexport { Input };\n"],"names":["InputPrimitive"],"mappings":";;;;;;;;;;AAoBA,MAAM,aAAA,GAAgB,GAAA;AAAA,EACpB,EAAA;AAAA;AAAA;AAAA,IAGE,2CAAA;AAAA,IACA,2BAAA;AAAA,IACA,8FAAA;AAAA,IACA,wEAAA;AAAA;AAAA,IAEA,mFAAA;AAAA,IACA,mFAAA;AAAA,IACA,yCAAA;AAAA;AAAA;AAAA,IAGA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,EAAA,CAAG,yBAAA,EAA2B,cAAA,EAAgB,8BAA8B,CAAA;AAAA,QACrF,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,EAAA,CAAG,kBAAA,CAAmB,EAAA,EAAI,YAAY,CAAA;AAAA,QAC1C,EAAA,EAAI,EAAA,CAAG,kBAAA,CAAmB,EAAA,EAAI,YAAY,CAAA;AAAA,QAC1C,EAAA,EAAI,EAAA,CAAG,kBAAA,CAAmB,EAAA,EAAI,YAAY;AAAA;AAC5C,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAsBA,SAAS,KAAA,CAAM,EAAE,SAAA,EAAW,IAAA,EAAM,MAAA,EAAQ,SAAS,KAAA,EAAO,YAAA,EAAc,GAAG,KAAA,EAAM,EAAe;AAC9F,EAAA,uBACE,GAAA;AAAA,IAACA,OAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,aAAA,CAAc,EAAE,OAAA,EAAS,mBAAA,CAAoB,OAAO,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,aAAA,EAAe,SAAS,CAAA;AAAA,MACtG,aAAA,EAAa,MAAA;AAAA,MACZ,GAAG,oBAAoB,KAAK,CAAA;AAAA,MAC5B,GAAG,KAAA;AAAA,MACH,GAAG,uBAAuB,YAAY,CAAA;AAAA,MACtC,GAAG,sBAAsB,KAAK;AAAA;AAAA,GACjC;AAEJ;;;;"}
|
|
@@ -3,7 +3,7 @@ import { Input } from '@base-ui/react/input';
|
|
|
3
3
|
import { c as cva } from './index-D_f78K7e.js';
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import { B as Button } from './Button-C8QDEN9j.js';
|
|
6
|
-
import { k as keepOwnAccessibleName } from './field-control-aria-
|
|
6
|
+
import { k as keepOwnAccessibleName } from './field-control-aria-DB6y41tQ.js';
|
|
7
7
|
import { ControlSizeContext, controlHeight } from './primitives/control-size.es.js';
|
|
8
8
|
import { deprecatedErrorAria, fieldErrorRimWithin, inputSurfaceAndFocusWithinStyle } from './primitives/form-element.es.js';
|
|
9
9
|
import { textFieldAutofillProps } from './primitives/password-manager-autofill.es.js';
|
|
@@ -179,4 +179,4 @@ function InputGroupButton({ size = "icon-sm", variant = "ghost", type = "button"
|
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
export { InputGroup as I, InputGroupAddon as a, InputGroupButton as b, InputGroupInput as c, InputGroupText as d, InputGroupTextarea as e, inputGroupControlClassName as f, inputGroupClassName as i };
|
|
182
|
-
//# sourceMappingURL=input-group-
|
|
182
|
+
//# sourceMappingURL=input-group-BWsGYnES.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-group-Cxv64rPB.js","sources":["../src/ds/components/InputGroup/input-group.tsx"],"sourcesContent":["import { Input as InputPrimitive } from '@base-ui/react/input';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button/Button';\nimport { keepOwnAccessibleName } from '@/ds/components/Field/field-control-aria';\nimport { ControlSizeContext, controlHeight } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport {\n deprecatedErrorAria,\n fieldErrorRimWithin,\n inputSurfaceAndFocusWithinStyle,\n} from '@/ds/primitives/form-element';\nimport { textFieldAutofillProps } from '@/ds/primitives/password-manager-autofill';\nimport { TextareaControl } from '@/ds/primitives/textarea-control';\nimport { cn } from '@/lib/utils';\n\n// Size flows down as `data-size` on the named group root (`group/input-group`), read by the\n// control through `group-data-[size=…]` variants — no prop drilling. The one context read is\n// upward: a wrapper that owns the rung (ButtonsGroup) hands it to the field.\n\nconst inputGroupBaseClassName = cn(\n // `flex-1` (not `min-w-0`) lets the root fill a flex row while keeping its content-floor\n // so it never collapses to 0. `items-center` centres the control: it carries its own\n // h-form-* (2px taller than the root's content box), so stretch would push its text low\n // / overflow the bottom border, while centring overlaps the (transparent) borders cleanly.\n 'group/input-group relative flex w-full flex-1 items-center',\n // The wrapper owns its control's width — a bare control has no width of its own,\n // so the group is the one that decides the input fills the remaining space.\n '[&>[data-slot=input-group-control]]:min-w-0 [&>[data-slot=input-group-control]]:flex-1',\n 'text-foreground',\n 'has-[:disabled]:cursor-not-allowed has-[:disabled]:text-muted-foreground',\n // Height is on the root (border-box) so the group matches a same-size sibling control.\n // Auto height when vertical (block-* addon) or wrapping a textarea.\n 'has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col',\n 'has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col',\n 'has-[textarea]:h-auto',\n 'has-[>[data-align=inline-start]]:[&>[data-slot=input-group-control]]:pl-0',\n 'has-[>[data-align=inline-end]]:[&>[data-slot=input-group-control]]:pr-0',\n // In flex-col, flex-1 zeroes the control's height; force flex-none + w-full instead.\n 'has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:flex-none',\n 'has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:flex-none',\n);\n\nconst inputGroupRoundedTextareaClassName = cn(\n // Pill (rounded-full) only fits single-line inline shapes. Fall back to rounded-xl\n // whenever the group goes vertical (block-* addon) or wraps a textarea.\n 'has-[>[data-align=block-start]]:rounded-xl',\n 'has-[>[data-align=block-end]]:rounded-xl',\n 'has-[textarea]:rounded-xl',\n);\n\n// A group wears the field material — the same `bg-card` plus rim an Input wears — so a\n// group and a bare field beside it are one surface. Its states move the rim, and they\n// read the nested control's focus (`focus-within`) because the wrapper never takes focus\n// itself. There is no second look: a transparent `outline` group existed alongside this\n// one and only ever produced two boundary languages for the same control, which is why\n// four of its call sites had wrapped it in a hand-made `bg-card rounded-full` div to get\n// the material back.\n// eslint-disable-next-line react-refresh/only-export-components -- shared with InputNumber\nexport const inputGroupClassName = cn(\n inputGroupBaseClassName,\n 'rounded-full',\n inputSurfaceAndFocusWithinStyle,\n fieldErrorRimWithin,\n inputGroupRoundedTextareaClassName,\n);\n\nexport type InputGroupProps = React.ComponentProps<'div'> & {\n size?: ControlSize;\n};\n\nfunction InputGroup({ className, size, ...props }: InputGroupProps) {\n // A wrapper's rung wins over the field's own: inside a ButtonsGroup the group owns the\n // height of every segment, so a field that kept its own type scale would sit at one rung\n // and read at another.\n const groupSize = React.useContext(ControlSizeContext);\n const resolved = groupSize ?? size ?? 'md';\n return (\n <div\n role=\"group\"\n data-slot=\"input-group\"\n data-size={resolved}\n className={cn(inputGroupClassName, controlHeight[resolved], className)}\n {...props}\n />\n );\n}\n\nconst inputGroupControlTextBySize = cn(\n 'group-data-[size=sm]/input-group:text-caption',\n 'group-data-[size=md]/input-group:text-body-sm',\n 'group-data-[size=lg]/input-group:text-body',\n);\n\nconst inputGroupAddonVariants = cva(\n cn(\n 'flex items-center justify-center gap-2 text-muted-foreground select-none',\n inputGroupControlTextBySize,\n 'group-has-[:disabled]/input-group:text-muted-foreground',\n \"[&>svg:not([class*='size-'])]:size-4\",\n ),\n {\n variants: {\n align: {\n 'inline-start': 'order-first pr-1 pl-3 has-[>button]:pl-1',\n 'inline-end': 'order-last pr-3 pl-1 has-[>button]:pr-1',\n 'block-start': 'order-first w-full justify-start border-b border-border px-3 pt-2 pb-1',\n 'block-end': 'order-last w-full justify-start border-t border-border px-3 pt-1 pb-2',\n },\n },\n defaultVariants: {\n align: 'inline-start',\n },\n },\n);\n\nexport type InputGroupAddonProps = React.ComponentProps<'div'> & VariantProps<typeof inputGroupAddonVariants>;\n\nfunction InputGroupAddon({ className, align = 'inline-start', onClick, ...props }: InputGroupAddonProps) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={event => {\n // Click on non-interactive addon area focuses the control inside the group.\n // Skip when a button/input handled the click itself.\n const target = event.target as HTMLElement;\n if (!target.closest('button, input, textarea, [role=\"button\"]')) {\n event.currentTarget.parentElement\n ?.querySelector<HTMLInputElement | HTMLTextAreaElement>('[data-slot=input-group-control]')\n ?.focus();\n }\n onClick?.(event);\n }}\n {...props}\n />\n );\n}\n\n// Size flows from the parent group's `data-size` (no React context). All four sizes are\n// written out so Tailwind's scanner emits them. The control is sized to the root's\n// content box (token height minus the 1px border on each side) so it never overflows the\n// root — otherwise, in a flex-column parent, the root's content-based minimum would win\n// over its explicit height and the group would render 2px taller than a sibling control.\n// The explicit height also keeps the control from collapsing to the line-height in block\n// mode (flex-col + flex-none).\nconst inputGroupControlHeightBySize = cn(\n 'group-data-[size=sm]/input-group:h-[calc(var(--spacing-control-sm)-2px)]',\n 'group-data-[size=md]/input-group:h-[calc(var(--spacing-control-md)-2px)]',\n 'group-data-[size=lg]/input-group:h-[calc(var(--spacing-control-lg)-2px)]',\n);\n\n// eslint-disable-next-line react-refresh/only-export-components -- shared with InputNumber\nexport const inputGroupControlClassName = cn(\n 'min-w-0 flex-1 bg-transparent px-3 text-label text-foreground outline-hidden',\n inputGroupControlHeightBySize,\n 'placeholder:text-muted-foreground placeholder:transition-opacity placeholder:duration-normal',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n);\n\nexport type InputGroupInputProps = Omit<React.ComponentProps<'input'>, 'size'> & {\n testId?: string;\n /** @deprecated Wrap the group in `<Field invalid>`, or set `aria-invalid` on a control outside a `Field`. */\n error?: boolean;\n};\n\nfunction InputGroupInput({ className, testId, error, type = 'text', autoComplete, ...props }: InputGroupInputProps) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input-group-control\"\n data-testid={testId}\n className={cn(\n inputGroupControlClassName,\n // WebKit and Firefox use different selectors for native number spinners.\n '[&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none',\n '[&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none',\n '[&[type=number]]:[appearance:textfield]',\n // type=\"search\": drop WebKit's native clear button so it doesn't double up with a\n // custom clear control (e.g. the scorers toolbar's InputGroupButton).\n '[&::-webkit-search-cancel-button]:appearance-none',\n className,\n )}\n {...deprecatedErrorAria(error)}\n {...props}\n {...textFieldAutofillProps(autoComplete)}\n {...keepOwnAccessibleName(props)}\n />\n );\n}\n\nexport type InputGroupTextareaProps = React.ComponentProps<'textarea'> & {\n testId?: string;\n /** @deprecated Wrap the group in `<Field invalid>`, or set `aria-invalid` on a control outside a `Field`. */\n error?: boolean;\n};\n\nfunction InputGroupTextarea({ className, testId, error, ...props }: InputGroupTextareaProps) {\n return (\n <TextareaControl\n data-slot=\"input-group-control\"\n data-testid={testId}\n className={cn(\n 'min-h-15 min-w-0 flex-1 resize-y bg-transparent px-3 py-2 text-foreground outline-hidden',\n inputGroupControlTextBySize,\n 'placeholder:text-muted-foreground placeholder:transition-opacity placeholder:duration-normal',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n className,\n )}\n {...deprecatedErrorAria(error)}\n {...props}\n />\n );\n}\n\nexport type InputGroupTextProps = React.ComponentProps<'span'>;\n\nfunction InputGroupText({ className, ...props }: InputGroupTextProps) {\n return (\n <span\n className={cn(\n 'flex items-center gap-2 text-caption text-muted-foreground [&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport type InputGroupButtonProps = Omit<React.ComponentProps<typeof Button>, 'size' | 'variant'> & {\n size?: ButtonProps['size'];\n variant?: ButtonProps['variant'];\n};\n\nfunction InputGroupButton({ size = 'icon-sm', variant = 'ghost', type = 'button', ...props }: InputGroupButtonProps) {\n return <Button type={type} size={size} variant={variant} {...props} />;\n}\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupTextarea, InputGroupText, InputGroupButton };\n"],"names":["InputPrimitive"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"input-group-BWsGYnES.js","sources":["../src/ds/components/InputGroup/input-group.tsx"],"sourcesContent":["import { Input as InputPrimitive } from '@base-ui/react/input';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button/Button';\nimport { keepOwnAccessibleName } from '@/ds/components/Field/field-control-aria';\nimport { ControlSizeContext, controlHeight } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport {\n deprecatedErrorAria,\n fieldErrorRimWithin,\n inputSurfaceAndFocusWithinStyle,\n} from '@/ds/primitives/form-element';\nimport { textFieldAutofillProps } from '@/ds/primitives/password-manager-autofill';\nimport { TextareaControl } from '@/ds/primitives/textarea-control';\nimport { cn } from '@/lib/utils';\n\n// Size flows down as `data-size` on the named group root (`group/input-group`), read by the\n// control through `group-data-[size=…]` variants — no prop drilling. The one context read is\n// upward: a wrapper that owns the rung (ButtonsGroup) hands it to the field.\n\nconst inputGroupBaseClassName = cn(\n // `flex-1` (not `min-w-0`) lets the root fill a flex row while keeping its content-floor\n // so it never collapses to 0. `items-center` centres the control: it carries its own\n // h-form-* (2px taller than the root's content box), so stretch would push its text low\n // / overflow the bottom border, while centring overlaps the (transparent) borders cleanly.\n 'group/input-group relative flex w-full flex-1 items-center',\n // The wrapper owns its control's width — a bare control has no width of its own,\n // so the group is the one that decides the input fills the remaining space.\n '[&>[data-slot=input-group-control]]:min-w-0 [&>[data-slot=input-group-control]]:flex-1',\n 'text-foreground',\n 'has-[:disabled]:cursor-not-allowed has-[:disabled]:text-muted-foreground',\n // Height is on the root (border-box) so the group matches a same-size sibling control.\n // Auto height when vertical (block-* addon) or wrapping a textarea.\n 'has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col',\n 'has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col',\n 'has-[textarea]:h-auto',\n 'has-[>[data-align=inline-start]]:[&>[data-slot=input-group-control]]:pl-0',\n 'has-[>[data-align=inline-end]]:[&>[data-slot=input-group-control]]:pr-0',\n // In flex-col, flex-1 zeroes the control's height; force flex-none + w-full instead.\n 'has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:flex-none',\n 'has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:flex-none',\n);\n\nconst inputGroupRoundedTextareaClassName = cn(\n // Pill (rounded-full) only fits single-line inline shapes. Fall back to rounded-xl\n // whenever the group goes vertical (block-* addon) or wraps a textarea.\n 'has-[>[data-align=block-start]]:rounded-xl',\n 'has-[>[data-align=block-end]]:rounded-xl',\n 'has-[textarea]:rounded-xl',\n);\n\n// A group wears the field material — the same `bg-card` plus rim an Input wears — so a\n// group and a bare field beside it are one surface. Its states move the rim, and they\n// read the nested control's focus (`focus-within`) because the wrapper never takes focus\n// itself. There is no second look: a transparent `outline` group existed alongside this\n// one and only ever produced two boundary languages for the same control, which is why\n// four of its call sites had wrapped it in a hand-made `bg-card rounded-full` div to get\n// the material back.\n// eslint-disable-next-line react-refresh/only-export-components -- shared with InputNumber\nexport const inputGroupClassName = cn(\n inputGroupBaseClassName,\n 'rounded-full',\n inputSurfaceAndFocusWithinStyle,\n fieldErrorRimWithin,\n inputGroupRoundedTextareaClassName,\n);\n\nexport type InputGroupProps = React.ComponentProps<'div'> & {\n size?: ControlSize;\n};\n\nfunction InputGroup({ className, size, ...props }: InputGroupProps) {\n // A wrapper's rung wins over the field's own: inside a ButtonsGroup the group owns the\n // height of every segment, so a field that kept its own type scale would sit at one rung\n // and read at another.\n const groupSize = React.useContext(ControlSizeContext);\n const resolved = groupSize ?? size ?? 'md';\n return (\n <div\n role=\"group\"\n data-slot=\"input-group\"\n data-size={resolved}\n className={cn(inputGroupClassName, controlHeight[resolved], className)}\n {...props}\n />\n );\n}\n\nconst inputGroupControlTextBySize = cn(\n 'group-data-[size=sm]/input-group:text-caption',\n 'group-data-[size=md]/input-group:text-body-sm',\n 'group-data-[size=lg]/input-group:text-body',\n);\n\nconst inputGroupAddonVariants = cva(\n cn(\n 'flex items-center justify-center gap-2 text-muted-foreground select-none',\n inputGroupControlTextBySize,\n 'group-has-[:disabled]/input-group:text-muted-foreground',\n \"[&>svg:not([class*='size-'])]:size-4\",\n ),\n {\n variants: {\n align: {\n 'inline-start': 'order-first pr-1 pl-3 has-[>button]:pl-1',\n 'inline-end': 'order-last pr-3 pl-1 has-[>button]:pr-1',\n 'block-start': 'order-first w-full justify-start border-b border-border px-3 pt-2 pb-1',\n 'block-end': 'order-last w-full justify-start border-t border-border px-3 pt-1 pb-2',\n },\n },\n defaultVariants: {\n align: 'inline-start',\n },\n },\n);\n\nexport type InputGroupAddonProps = React.ComponentProps<'div'> & VariantProps<typeof inputGroupAddonVariants>;\n\nfunction InputGroupAddon({ className, align = 'inline-start', onClick, ...props }: InputGroupAddonProps) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={event => {\n // Click on non-interactive addon area focuses the control inside the group.\n // Skip when a button/input handled the click itself.\n const target = event.target as HTMLElement;\n if (!target.closest('button, input, textarea, [role=\"button\"]')) {\n event.currentTarget.parentElement\n ?.querySelector<HTMLInputElement | HTMLTextAreaElement>('[data-slot=input-group-control]')\n ?.focus();\n }\n onClick?.(event);\n }}\n {...props}\n />\n );\n}\n\n// Size flows from the parent group's `data-size` (no React context). All four sizes are\n// written out so Tailwind's scanner emits them. The control is sized to the root's\n// content box (token height minus the 1px border on each side) so it never overflows the\n// root — otherwise, in a flex-column parent, the root's content-based minimum would win\n// over its explicit height and the group would render 2px taller than a sibling control.\n// The explicit height also keeps the control from collapsing to the line-height in block\n// mode (flex-col + flex-none).\nconst inputGroupControlHeightBySize = cn(\n 'group-data-[size=sm]/input-group:h-[calc(var(--spacing-control-sm)-2px)]',\n 'group-data-[size=md]/input-group:h-[calc(var(--spacing-control-md)-2px)]',\n 'group-data-[size=lg]/input-group:h-[calc(var(--spacing-control-lg)-2px)]',\n);\n\n// eslint-disable-next-line react-refresh/only-export-components -- shared with InputNumber\nexport const inputGroupControlClassName = cn(\n 'min-w-0 flex-1 bg-transparent px-3 text-label text-foreground outline-hidden',\n inputGroupControlHeightBySize,\n 'placeholder:text-muted-foreground placeholder:transition-opacity placeholder:duration-normal',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n);\n\nexport type InputGroupInputProps = Omit<React.ComponentProps<'input'>, 'size'> & {\n testId?: string;\n /** @deprecated Wrap the group in `<Field invalid>`, or set `aria-invalid` on a control outside a `Field`. */\n error?: boolean;\n};\n\nfunction InputGroupInput({ className, testId, error, type = 'text', autoComplete, ...props }: InputGroupInputProps) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input-group-control\"\n data-testid={testId}\n className={cn(\n inputGroupControlClassName,\n // WebKit and Firefox use different selectors for native number spinners.\n '[&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none',\n '[&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none',\n '[&[type=number]]:[appearance:textfield]',\n // type=\"search\": drop WebKit's native clear button so it doesn't double up with a\n // custom clear control (e.g. the scorers toolbar's InputGroupButton).\n '[&::-webkit-search-cancel-button]:appearance-none',\n className,\n )}\n {...deprecatedErrorAria(error)}\n {...props}\n {...textFieldAutofillProps(autoComplete)}\n {...keepOwnAccessibleName(props)}\n />\n );\n}\n\nexport type InputGroupTextareaProps = React.ComponentProps<'textarea'> & {\n testId?: string;\n /** @deprecated Wrap the group in `<Field invalid>`, or set `aria-invalid` on a control outside a `Field`. */\n error?: boolean;\n};\n\nfunction InputGroupTextarea({ className, testId, error, ...props }: InputGroupTextareaProps) {\n return (\n <TextareaControl\n data-slot=\"input-group-control\"\n data-testid={testId}\n className={cn(\n 'min-h-15 min-w-0 flex-1 resize-y bg-transparent px-3 py-2 text-foreground outline-hidden',\n inputGroupControlTextBySize,\n 'placeholder:text-muted-foreground placeholder:transition-opacity placeholder:duration-normal',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n className,\n )}\n {...deprecatedErrorAria(error)}\n {...props}\n />\n );\n}\n\nexport type InputGroupTextProps = React.ComponentProps<'span'>;\n\nfunction InputGroupText({ className, ...props }: InputGroupTextProps) {\n return (\n <span\n className={cn(\n 'flex items-center gap-2 text-caption text-muted-foreground [&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport type InputGroupButtonProps = Omit<React.ComponentProps<typeof Button>, 'size' | 'variant'> & {\n size?: ButtonProps['size'];\n variant?: ButtonProps['variant'];\n};\n\nfunction InputGroupButton({ size = 'icon-sm', variant = 'ghost', type = 'button', ...props }: InputGroupButtonProps) {\n return <Button type={type} size={size} variant={variant} {...props} />;\n}\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupTextarea, InputGroupText, InputGroupButton };\n"],"names":["InputPrimitive"],"mappings":"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"}
|
|
@@ -6,8 +6,8 @@ require('../tabbed-container.css');const jsxRuntime = require('react/jsx-runtime
|
|
|
6
6
|
const lucideReact = require('lucide-react');
|
|
7
7
|
const React = require('react');
|
|
8
8
|
const combobox = require('../combobox-D9CFzzx8.cjs');
|
|
9
|
-
const dataList = require('../data-list-
|
|
10
|
-
const listSearch = require('../list-search-
|
|
9
|
+
const dataList = require('../data-list-DkVOwk8l.cjs');
|
|
10
|
+
const listSearch = require('../list-search-xHadeMHl.cjs');
|
|
11
11
|
const tabsContent = require('../tabs-content-C3VQRDXH.cjs');
|
|
12
12
|
const tabsContext = require('../tabs-context-pnspPkI-.cjs');
|
|
13
13
|
const tabsList = require('../tabs-list-xikY_dug.cjs');
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { ListFilterIcon } from 'lucide-react';
|
|
3
3
|
import { Children, isValidElement, useContext } from 'react';
|
|
4
|
-
import { C as Combobox } from '../combobox-
|
|
5
|
-
import {
|
|
6
|
-
import { L as ListSearch } from '../list-search-
|
|
4
|
+
import { C as Combobox } from '../combobox-DDUIREaG.js';
|
|
5
|
+
import { D as DataList } from '../data-list-Dv2lP-dU.js';
|
|
6
|
+
import { L as ListSearch } from '../list-search-BNnMwbpv.js';
|
|
7
7
|
import { T as TabContent } from '../tabs-content-6EaLEj8a.js';
|
|
8
8
|
import { T as TabsContext } from '../tabs-context-Cbuw7i0u.js';
|
|
9
9
|
import { T as TabList } from '../tabs-list-DY_hziv7.js';
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
const checkbox = require('../../../checkbox-DNlMGoJH.cjs');
|
|
7
7
|
const field = require('../../../field-D1SVMPMz.cjs');
|
|
8
|
+
require('../../../field-control-aria-WzMGs0A4.cjs');
|
|
8
9
|
|
|
9
10
|
const BooleanField = ({ field: field$1, label, inputProps }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
|
|
10
11
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boolean-field.cjs.js","sources":["../../../../src/lib/form/components/boolean-field.tsx"],"sourcesContent":["import type { AutoFormFieldProps } from '@autoform/react';\nimport React from 'react';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { FieldLabel } from '@/ds/components/Field';\n\nexport const BooleanField: React.FC<AutoFormFieldProps> = ({ field, label, inputProps }) => (\n <div className=\"flex items-center space-x-2\">\n <Checkbox\n onCheckedChange={checked => {\n // react-hook-form expects an event object\n const event = {\n target: {\n name: inputProps.name,\n value: checked,\n },\n };\n inputProps.onChange(event);\n }}\n defaultChecked={field.default}\n disabled={inputProps.disabled || inputProps.readOnly}\n />\n <FieldLabel required={field.required}>{label}</FieldLabel>\n </div>\n);\n"],"names":["field","jsxs","jsx","Checkbox","FieldLabel"],"mappings":"
|
|
1
|
+
{"version":3,"file":"boolean-field.cjs.js","sources":["../../../../src/lib/form/components/boolean-field.tsx"],"sourcesContent":["import type { AutoFormFieldProps } from '@autoform/react';\nimport React from 'react';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { FieldLabel } from '@/ds/components/Field';\n\nexport const BooleanField: React.FC<AutoFormFieldProps> = ({ field, label, inputProps }) => (\n <div className=\"flex items-center space-x-2\">\n <Checkbox\n onCheckedChange={checked => {\n // react-hook-form expects an event object\n const event = {\n target: {\n name: inputProps.name,\n value: checked,\n },\n };\n inputProps.onChange(event);\n }}\n defaultChecked={field.default}\n disabled={inputProps.disabled || inputProps.readOnly}\n />\n <FieldLabel required={field.required}>{label}</FieldLabel>\n </div>\n);\n"],"names":["field","jsxs","jsx","Checkbox","FieldLabel"],"mappings":";;;;;;;;;AAKO,MAAM,YAAA,GAA6C,CAAC,SAAEA,OAAA,EAAO,KAAA,EAAO,YAAW,qBACpFC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6BAAA,EACb,QAAA,EAAA;AAAA,kBAAAC,cAAA;AAAA,IAACC,iBAAA;AAAA,IAAA;AAAA,MACC,iBAAiB,CAAA,OAAA,KAAW;AAE1B,QAAA,MAAM,KAAA,GAAQ;AAAA,UACZ,MAAA,EAAQ;AAAA,YACN,MAAM,UAAA,CAAW,IAAA;AAAA,YACjB,KAAA,EAAO;AAAA;AACT,SACF;AACA,QAAA,UAAA,CAAW,SAAS,KAAK,CAAA;AAAA,MAC3B,CAAA;AAAA,MACA,gBAAgBH,OAAA,CAAM,OAAA;AAAA,MACtB,QAAA,EAAU,UAAA,CAAW,QAAA,IAAY,UAAA,CAAW;AAAA;AAAA,GAC9C;AAAA,kBACAE,cAAA,CAACE,gBAAA,EAAA,EAAW,QAAA,EAAUJ,OAAA,CAAM,UAAW,QAAA,EAAA,KAAA,EAAM;AAAA,CAAA,EAC/C;;;;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { C as Checkbox } from '../../../checkbox-
|
|
3
|
-
import { e as FieldLabel } from '../../../field-
|
|
2
|
+
import { C as Checkbox } from '../../../checkbox-mmR3rD2j.js';
|
|
3
|
+
import { e as FieldLabel } from '../../../field-B89BEZg4.js';
|
|
4
|
+
import '../../../field-control-aria-DB6y41tQ.js';
|
|
4
5
|
|
|
5
6
|
const BooleanField = ({ field, label, inputProps }) => /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-2", children: [
|
|
6
7
|
/* @__PURE__ */ jsx(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boolean-field.es.js","sources":["../../../../src/lib/form/components/boolean-field.tsx"],"sourcesContent":["import type { AutoFormFieldProps } from '@autoform/react';\nimport React from 'react';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { FieldLabel } from '@/ds/components/Field';\n\nexport const BooleanField: React.FC<AutoFormFieldProps> = ({ field, label, inputProps }) => (\n <div className=\"flex items-center space-x-2\">\n <Checkbox\n onCheckedChange={checked => {\n // react-hook-form expects an event object\n const event = {\n target: {\n name: inputProps.name,\n value: checked,\n },\n };\n inputProps.onChange(event);\n }}\n defaultChecked={field.default}\n disabled={inputProps.disabled || inputProps.readOnly}\n />\n <FieldLabel required={field.required}>{label}</FieldLabel>\n </div>\n);\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"boolean-field.es.js","sources":["../../../../src/lib/form/components/boolean-field.tsx"],"sourcesContent":["import type { AutoFormFieldProps } from '@autoform/react';\nimport React from 'react';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { FieldLabel } from '@/ds/components/Field';\n\nexport const BooleanField: React.FC<AutoFormFieldProps> = ({ field, label, inputProps }) => (\n <div className=\"flex items-center space-x-2\">\n <Checkbox\n onCheckedChange={checked => {\n // react-hook-form expects an event object\n const event = {\n target: {\n name: inputProps.name,\n value: checked,\n },\n };\n inputProps.onChange(event);\n }}\n defaultChecked={field.default}\n disabled={inputProps.disabled || inputProps.readOnly}\n />\n <FieldLabel required={field.required}>{label}</FieldLabel>\n </div>\n);\n"],"names":[],"mappings":";;;;;AAKO,MAAM,YAAA,GAA6C,CAAC,EAAE,KAAA,EAAO,KAAA,EAAO,YAAW,qBACpF,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6BAAA,EACb,QAAA,EAAA;AAAA,kBAAA,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,iBAAiB,CAAA,OAAA,KAAW;AAE1B,QAAA,MAAM,KAAA,GAAQ;AAAA,UACZ,MAAA,EAAQ;AAAA,YACN,MAAM,UAAA,CAAW,IAAA;AAAA,YACjB,KAAA,EAAO;AAAA;AACT,SACF;AACA,QAAA,UAAA,CAAW,SAAS,KAAK,CAAA;AAAA,MAC3B,CAAA;AAAA,MACA,gBAAgB,KAAA,CAAM,OAAA;AAAA,MACtB,QAAA,EAAU,UAAA,CAAW,QAAA,IAAY,UAAA,CAAW;AAAA;AAAA,GAC9C;AAAA,kBACA,GAAA,CAAC,UAAA,EAAA,EAAW,QAAA,EAAU,KAAA,CAAM,UAAW,QAAA,EAAA,KAAA,EAAM;AAAA,CAAA,EAC/C;;;;"}
|