@mastra/playground-ui 41.1.0-alpha.2 → 42.0.0-alpha.13
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/CHANGELOG.md +114 -0
- package/dist/Card-BjFMX3pD.js +96 -0
- package/dist/Card-BjFMX3pD.js.map +1 -0
- package/dist/Card-WU2qkiHB.cjs +123 -0
- package/dist/Card-WU2qkiHB.cjs.map +1 -0
- package/dist/{Txt-p33XTnu8.js → Txt-Df42XG5p.js} +3 -3
- package/dist/Txt-Df42XG5p.js.map +1 -0
- package/dist/{Txt-BT8_EkuZ.cjs → Txt-I5lK8zy7.cjs} +3 -3
- package/dist/Txt-I5lK8zy7.cjs.map +1 -0
- package/dist/{buttons-group-b6an6uao.js → buttons-group-DJh4wnMs.js} +4 -4
- package/dist/{buttons-group-b6an6uao.js.map → buttons-group-DJh4wnMs.js.map} +1 -1
- package/dist/{buttons-group-C0fJastT.cjs → buttons-group-Dw8Wu4sj.cjs} +4 -4
- package/dist/{buttons-group-C0fJastT.cjs.map → buttons-group-Dw8Wu4sj.cjs.map} +1 -1
- package/dist/components/Avatar.cjs.js +1 -1
- package/dist/components/Avatar.es.js +1 -1
- package/dist/components/Breadcrumb.cjs.js +2 -2
- package/dist/components/Breadcrumb.cjs.js.map +1 -1
- package/dist/components/Breadcrumb.es.js +2 -2
- package/dist/components/Breadcrumb.es.js.map +1 -1
- package/dist/components/ButtonsGroup.cjs.js +1 -1
- package/dist/components/ButtonsGroup.es.js +1 -1
- package/dist/components/Card.cjs.js +8 -84
- package/dist/components/Card.cjs.js.map +1 -1
- package/dist/components/Card.es.js +1 -63
- package/dist/components/Card.es.js.map +1 -1
- package/dist/components/ClampedText.cjs.js +51 -0
- package/dist/components/ClampedText.cjs.js.map +1 -0
- package/dist/components/ClampedText.d.ts +2 -0
- package/dist/components/ClampedText.es.js +47 -0
- package/dist/components/ClampedText.es.js.map +1 -0
- package/dist/components/Composer.cjs.js +2 -2
- package/dist/components/Composer.cjs.js.map +1 -1
- package/dist/components/Composer.es.js +2 -2
- package/dist/components/Composer.es.js.map +1 -1
- package/dist/components/ContentBlocks.cjs.js.map +1 -1
- package/dist/components/ContentBlocks.es.js.map +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataDetailsPanel.cjs.js +4 -4
- package/dist/components/DataDetailsPanel.cjs.js.map +1 -1
- package/dist/components/DataDetailsPanel.es.js +4 -4
- package/dist/components/DataDetailsPanel.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 -1
- package/dist/components/DateTimePicker.es.js +1 -1
- package/dist/components/Drawer.cjs.js +1 -1
- package/dist/components/Drawer.es.js +1 -1
- package/dist/components/Entity.cjs.js +1 -1
- package/dist/components/Entity.es.js +1 -1
- package/dist/components/EntityHeader.cjs.js +1 -1
- package/dist/components/EntityHeader.es.js +1 -1
- package/dist/components/Entry.cjs.js +1 -1
- package/dist/components/Entry.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +2 -2
- package/dist/components/EnvironmentVariablesEditor.es.js +2 -2
- package/dist/components/FormFieldBlocks.cjs.js +4 -4
- package/dist/components/FormFieldBlocks.es.js +4 -4
- package/dist/components/Header.cjs.js +1 -1
- package/dist/components/Header.es.js +1 -1
- package/dist/components/JSONSchemaForm.cjs.js +2 -2
- package/dist/components/JSONSchemaForm.es.js +2 -2
- package/dist/components/ListSearch.cjs.js +1 -1
- package/dist/components/ListSearch.es.js +1 -1
- package/dist/components/MainContent.cjs.js +3 -3
- package/dist/components/MainContent.cjs.js.map +1 -1
- package/dist/components/MainContent.es.js +3 -3
- package/dist/components/MainContent.es.js.map +1 -1
- package/dist/components/MainSidebar.cjs.js +1 -1
- package/dist/components/MainSidebar.es.js +1 -1
- package/dist/components/PrevNextNav.cjs.js +1 -1
- package/dist/components/PrevNextNav.es.js +1 -1
- package/dist/components/PropertyFilter.cjs.js +1 -1
- package/dist/components/PropertyFilter.es.js +2 -2
- package/dist/components/SankeyChart.cjs.js +68 -75
- package/dist/components/SankeyChart.cjs.js.map +1 -1
- package/dist/components/SankeyChart.es.js +60 -71
- package/dist/components/SankeyChart.es.js.map +1 -1
- package/dist/components/SideDialog.cjs.js +2 -2
- package/dist/components/SideDialog.es.js +2 -2
- package/dist/components/Table.cjs.js +1 -1
- package/dist/components/Table.es.js +1 -1
- package/dist/components/ThreadList.cjs.js +1 -1
- package/dist/components/ThreadList.es.js +1 -1
- package/dist/components/Toaster.cjs.js +1 -0
- package/dist/components/Toaster.cjs.js.map +1 -1
- package/dist/components/Toaster.es.js +1 -1
- package/dist/components/Truncate.cjs.js +1 -1
- package/dist/components/Truncate.es.js +1 -1
- package/dist/components/Txt.cjs.js +1 -1
- package/dist/components/Txt.es.js +1 -1
- package/dist/components/ai/ask-user.cjs.js +147 -0
- package/dist/components/ai/ask-user.cjs.js.map +1 -0
- package/dist/components/ai/ask-user.d.ts +2 -0
- package/dist/components/ai/ask-user.es.js +136 -0
- package/dist/components/ai/ask-user.es.js.map +1 -0
- package/dist/components/ai/plan.cjs.js +1 -1
- package/dist/components/ai/plan.es.js +1 -1
- package/dist/components/ai/task-list.cjs.js +90 -0
- package/dist/components/ai/task-list.cjs.js.map +1 -0
- package/dist/components/ai/task-list.d.ts +2 -0
- package/dist/components/ai/task-list.es.js +80 -0
- package/dist/components/ai/task-list.es.js.map +1 -0
- package/dist/{data-code-section-Crs5wpnX.js → data-code-section-BjqDCzy3.js} +3 -3
- package/dist/{data-code-section-Crs5wpnX.js.map → data-code-section-BjqDCzy3.js.map} +1 -1
- package/dist/{data-code-section-DYy_n9I1.cjs → data-code-section-D0BwpqvV.cjs} +3 -3
- package/dist/{data-code-section-DYy_n9I1.cjs.map → data-code-section-D0BwpqvV.cjs.map} +1 -1
- package/dist/{data-panel-Otc4qdKL.js → data-panel-BGpCzY5K.js} +3 -3
- package/dist/{data-panel-Otc4qdKL.js.map → data-panel-BGpCzY5K.js.map} +1 -1
- package/dist/{data-panel-CAbxKoPF.cjs → data-panel-CsonAnlK.cjs} +3 -3
- package/dist/{data-panel-CAbxKoPF.cjs.map → data-panel-CsonAnlK.cjs.map} +1 -1
- package/dist/domains/logs/components/log-details-view.cjs.js +1 -1
- package/dist/domains/logs/components/log-details-view.es.js +1 -1
- package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
- package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
- package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
- package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +2 -2
- package/dist/domains/traces/components/span-data-panel-view.es.js +2 -2
- 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/traces-toolbar.cjs.js +1 -1
- package/dist/domains/traces/components/traces-toolbar.es.js +1 -1
- package/dist/{drawer-DtEZQBXj.cjs → drawer-DvuUmhic.cjs} +3 -3
- package/dist/{drawer-DtEZQBXj.cjs.map → drawer-DvuUmhic.cjs.map} +1 -1
- package/dist/{drawer-Djerm1Lo.js → drawer-Dyx25o_o.js} +3 -3
- package/dist/{drawer-Djerm1Lo.js.map → drawer-Dyx25o_o.js.map} +1 -1
- package/dist/ee/signals/components/signals-empty-state.cjs.js +152 -0
- package/dist/ee/signals/components/signals-empty-state.cjs.js.map +1 -0
- package/dist/ee/signals/components/signals-empty-state.d.ts +2 -0
- package/dist/ee/signals/components/signals-empty-state.es.js +148 -0
- package/dist/ee/signals/components/signals-empty-state.es.js.map +1 -0
- package/dist/ee/signals/components/signals-overview-page.cjs.js +3 -201
- package/dist/ee/signals/components/signals-overview-page.cjs.js.map +1 -1
- package/dist/ee/signals/components/signals-overview-page.es.js +5 -201
- package/dist/ee/signals/components/signals-overview-page.es.js.map +1 -1
- package/dist/ee/signals/components.cjs.js +0 -10
- package/dist/ee/signals/components.cjs.js.map +1 -1
- package/dist/ee/signals/components.es.js +1 -3
- package/dist/ee/signals/components.es.js.map +1 -1
- package/dist/ee/signals/signal-colors.cjs.js +28 -0
- package/dist/ee/signals/signal-colors.cjs.js.map +1 -0
- package/dist/ee/signals/signal-colors.d.ts +2 -0
- package/dist/ee/signals/signal-colors.es.js +23 -0
- package/dist/ee/signals/signal-colors.es.js.map +1 -0
- package/dist/ee/signals.cjs.js +3 -27
- package/dist/ee/signals.cjs.js.map +1 -1
- package/dist/ee/signals.es.js +2 -7
- package/dist/ee/signals.es.js.map +1 -1
- package/dist/{field-block-CC_EYPWe.js → field-block-CBdMcT-i.js} +2 -2
- package/dist/{field-block-CC_EYPWe.js.map → field-block-CBdMcT-i.js.map} +1 -1
- package/dist/{field-block-Dx-fDIP9.cjs → field-block-CEbnWKc0.cjs} +2 -2
- package/dist/{field-block-Dx-fDIP9.cjs.map → field-block-CEbnWKc0.cjs.map} +1 -1
- package/dist/hooks/use-is-clamped.cjs.js +36 -0
- package/dist/hooks/use-is-clamped.cjs.js.map +1 -0
- package/dist/hooks/use-is-clamped.d.ts +2 -0
- package/dist/hooks/use-is-clamped.es.js +32 -0
- package/dist/hooks/use-is-clamped.es.js.map +1 -0
- package/dist/primitives/portal-container.cjs.js.map +1 -1
- package/dist/primitives/portal-container.es.js.map +1 -1
- package/dist/{property-filter-applied-Ca0UdU5P.js → property-filter-applied-Bs1Ck691.js} +2 -2
- package/dist/{property-filter-applied-Ca0UdU5P.js.map → property-filter-applied-Bs1Ck691.js.map} +1 -1
- package/dist/{property-filter-applied-BYKTDczo.cjs → property-filter-applied-DgmkZVbl.cjs} +2 -2
- package/dist/{property-filter-applied-BYKTDczo.cjs.map → property-filter-applied-DgmkZVbl.cjs.map} +1 -1
- package/dist/resize/panel-drawer.cjs.js +1 -1
- package/dist/resize/panel-drawer.es.js +1 -1
- package/dist/sankeyColor-CQ5nkgtL.js +48 -0
- package/dist/sankeyColor-CQ5nkgtL.js.map +1 -0
- package/dist/sankeyColor-DONd5cg9.cjs +53 -0
- package/dist/sankeyColor-DONd5cg9.cjs.map +1 -0
- package/dist/{search-field-block-e9qthuwY.js → search-field-block-CMoQ9fjl.js} +4 -3
- package/dist/search-field-block-CMoQ9fjl.js.map +1 -0
- package/dist/{search-field-block-C4njnmUx.cjs → search-field-block-DmqZsrrI.cjs} +4 -3
- package/dist/search-field-block-DmqZsrrI.cjs.map +1 -0
- package/dist/{select-field-block-dq1ZmZVb.cjs → select-field-block-BI_NZs2R.cjs} +2 -2
- package/dist/{select-field-block-dq1ZmZVb.cjs.map → select-field-block-BI_NZs2R.cjs.map} +1 -1
- package/dist/{select-field-block-BWuqWh4k.js → select-field-block-BSlngEHK.js} +2 -2
- package/dist/{select-field-block-BWuqWh4k.js.map → select-field-block-BSlngEHK.js.map} +1 -1
- package/dist/signals-empty-state.css +54 -0
- package/dist/src/ds/components/Card/Card.d.ts +15 -2
- package/dist/src/ds/components/Card/index.d.ts +2 -2
- package/dist/src/ds/components/ClampedText/clamped-text.d.ts +20 -0
- package/dist/src/ds/components/ClampedText/clamped-text.stories.d.ts +8 -0
- package/dist/src/ds/components/ClampedText/index.d.ts +1 -0
- package/dist/src/ds/components/Composer/composer.d.ts +5 -1
- package/dist/src/ds/components/Composer/index.d.ts +1 -1
- package/dist/src/ds/components/SankeyChart/index.d.ts +2 -1
- package/dist/src/ds/components/SankeyChart/sankey-chart-utils.d.ts +2 -1
- package/dist/src/ds/components/SankeyChart/sankey-chart.d.ts +4 -2
- package/dist/src/ds/components/SankeyChart/sankey-context.d.ts +3 -1
- package/dist/src/ds/components/Toaster/index.d.ts +1 -1
- package/dist/src/ds/components/Txt/Txt.d.ts +3 -2
- package/dist/src/ds/components/ai/ask-user/ask-user.d.ts +42 -0
- package/dist/src/ds/components/ai/ask-user/ask-user.stories.d.ts +11 -0
- package/dist/src/ds/components/ai/ask-user/index.d.ts +1 -0
- package/dist/src/ds/components/ai/task-list/index.d.ts +1 -0
- package/dist/src/ds/components/ai/task-list/task-list.d.ts +31 -0
- package/dist/src/ds/components/ai/task-list/task-list.stories.d.ts +9 -0
- package/dist/src/ee/signals/components/index.d.ts +0 -2
- package/dist/src/ee/signals/components/signals-empty-state.d.ts +7 -0
- package/dist/src/ee/signals/components/signals-overview-page.d.ts +2 -22
- package/dist/src/ee/signals/index.d.ts +1 -4
- package/dist/src/ee/signals/signal-colors.d.ts +7 -0
- package/dist/src/hooks/use-is-clamped.d.ts +11 -0
- package/dist/style.css +289 -40
- package/dist/{text-field-block-CpKq1NCV.cjs → text-field-block-BUvxjW9m.cjs} +2 -2
- package/dist/{text-field-block-CpKq1NCV.cjs.map → text-field-block-BUvxjW9m.cjs.map} +1 -1
- package/dist/{text-field-block-CrFqgdKx.js → text-field-block-DxtR1Ft4.js} +2 -2
- package/dist/{text-field-block-CrFqgdKx.js.map → text-field-block-DxtR1Ft4.js.map} +1 -1
- package/package.json +10 -10
- package/theme.css +1 -0
- package/dist/Txt-BT8_EkuZ.cjs.map +0 -1
- package/dist/Txt-p33XTnu8.js.map +0 -1
- package/dist/ee/signals/components/signal-details-page.cjs.js +0 -288
- package/dist/ee/signals/components/signal-details-page.cjs.js.map +0 -1
- package/dist/ee/signals/components/signal-details-page.d.ts +0 -2
- package/dist/ee/signals/components/signal-details-page.es.js +0 -280
- package/dist/ee/signals/components/signal-details-page.es.js.map +0 -1
- package/dist/ee/signals/components/signals-entity-filter.cjs.js +0 -27
- package/dist/ee/signals/components/signals-entity-filter.cjs.js.map +0 -1
- package/dist/ee/signals/components/signals-entity-filter.d.ts +0 -2
- package/dist/ee/signals/components/signals-entity-filter.es.js +0 -23
- package/dist/ee/signals/components/signals-entity-filter.es.js.map +0 -1
- package/dist/ee/signals/hooks/use-entity-learning-config.cjs.js +0 -35
- package/dist/ee/signals/hooks/use-entity-learning-config.cjs.js.map +0 -1
- package/dist/ee/signals/hooks/use-entity-learning-config.d.ts +0 -2
- package/dist/ee/signals/hooks/use-entity-learning-config.es.js +0 -31
- package/dist/ee/signals/hooks/use-entity-learning-config.es.js.map +0 -1
- package/dist/ee/signals/hooks/use-entity-learning.cjs.js +0 -96
- package/dist/ee/signals/hooks/use-entity-learning.cjs.js.map +0 -1
- package/dist/ee/signals/hooks/use-entity-learning.d.ts +0 -2
- package/dist/ee/signals/hooks/use-entity-learning.es.js +0 -84
- package/dist/ee/signals/hooks/use-entity-learning.es.js.map +0 -1
- package/dist/ee/signals/hooks.cjs.js +0 -20
- package/dist/ee/signals/hooks.cjs.js.map +0 -1
- package/dist/ee/signals/hooks.d.ts +0 -2
- package/dist/ee/signals/hooks.es.js +0 -3
- package/dist/ee/signals/hooks.es.js.map +0 -1
- package/dist/ee/signals/services/entity-learning-service.cjs.js +0 -88
- package/dist/ee/signals/services/entity-learning-service.cjs.js.map +0 -1
- package/dist/ee/signals/services/entity-learning-service.d.ts +0 -2
- package/dist/ee/signals/services/entity-learning-service.es.js +0 -84
- package/dist/ee/signals/services/entity-learning-service.es.js.map +0 -1
- package/dist/ee/signals/services/entity-learning-types.cjs.js +0 -3
- package/dist/ee/signals/services/entity-learning-types.cjs.js.map +0 -1
- package/dist/ee/signals/services/entity-learning-types.d.ts +0 -1
- package/dist/ee/signals/services/entity-learning-types.es.js +0 -2
- package/dist/ee/signals/services/entity-learning-types.es.js.map +0 -1
- package/dist/ee/signals/services.cjs.js +0 -10
- package/dist/ee/signals/services.cjs.js.map +0 -1
- package/dist/ee/signals/services.d.ts +0 -2
- package/dist/ee/signals/services.es.js +0 -2
- package/dist/ee/signals/services.es.js.map +0 -1
- package/dist/ee/signals/signals-data.cjs.js +0 -53
- package/dist/ee/signals/signals-data.cjs.js.map +0 -1
- package/dist/ee/signals/signals-data.d.ts +0 -2
- package/dist/ee/signals/signals-data.es.js +0 -48
- package/dist/ee/signals/signals-data.es.js.map +0 -1
- package/dist/ee/signals/types.cjs.js +0 -3
- package/dist/ee/signals/types.cjs.js.map +0 -1
- package/dist/ee/signals/types.d.ts +0 -1
- package/dist/ee/signals/types.es.js +0 -2
- package/dist/ee/signals/types.es.js.map +0 -1
- package/dist/search-field-block-C4njnmUx.cjs.map +0 -1
- package/dist/search-field-block-e9qthuwY.js.map +0 -1
- package/dist/src/ee/signals/components/signal-details-page.d.ts +0 -40
- package/dist/src/ee/signals/components/signals-entity-filter.d.ts +0 -13
- package/dist/src/ee/signals/hooks/index.d.ts +0 -2
- package/dist/src/ee/signals/hooks/use-entity-learning-config.d.ts +0 -14
- package/dist/src/ee/signals/hooks/use-entity-learning.d.ts +0 -24
- package/dist/src/ee/signals/services/entity-learning-service.d.ts +0 -43
- package/dist/src/ee/signals/services/entity-learning-types.d.ts +0 -123
- package/dist/src/ee/signals/services/index.d.ts +0 -2
- package/dist/src/ee/signals/signals-data.d.ts +0 -10
- package/dist/src/ee/signals/types.d.ts +0 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-field-block-
|
|
1
|
+
{"version":3,"file":"text-field-block-DxtR1Ft4.js","sources":["../src/ds/components/FormFieldBlocks/fields/text-field-block.tsx"],"sourcesContent":["import { Input } from '../../Input';\nimport type { InputProps } from '../../Input';\nimport { FieldBlock } from '../block/field-block';\nimport type { FieldBlockErrorMsgProps } from '../block/field-block-error-msg';\nimport type { FieldBlockHelpTextProps } from '../block/field-block-help-text';\nimport type { FieldBlockLabelProps } from '../block/field-block-label';\nimport type { FieldBlockLayoutProps } from '../block/field-block-layout';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\n\nexport type TextFieldBlockProps = Pick<FieldBlockLayoutProps, 'layout' | 'labelColumnWidth'> &\n Omit<InputProps, 'name' | 'size'> & {\n name: string;\n labelIsHidden?: boolean;\n label?: FieldBlockLabelProps['children'];\n labelSize?: FieldBlockLabelProps['size'];\n helpText?: FieldBlockHelpTextProps['children'];\n errorMsg?: FieldBlockErrorMsgProps['children'];\n size?: InputProps['size'];\n };\n\nexport function TextFieldBlock({\n name,\n value,\n label,\n labelIsHidden = false,\n labelColumnWidth,\n helpText,\n errorMsg,\n required = false,\n disabled = false,\n labelSize,\n layout = 'vertical',\n placeholder,\n size = 'default',\n testId,\n className,\n ...props\n}: TextFieldBlockProps) {\n return (\n <FieldBlock.Layout layout={layout} labelColumnWidth={labelColumnWidth} className={className}>\n {layout === 'horizontal' ? (\n <FieldBlock.Column>\n <FieldBlock.Label name={name} required={required} size={labelSize || 'bigger'}>\n {labelIsHidden ? <VisuallyHidden>{label}</VisuallyHidden> : label}\n </FieldBlock.Label>\n </FieldBlock.Column>\n ) : null}\n <FieldBlock.Column>\n {!labelIsHidden && layout === 'vertical' ? (\n <FieldBlock.Label name={name} required={required} size={labelSize || 'default'}>\n {label}\n </FieldBlock.Label>\n ) : null}\n <Input\n name={name}\n disabled={disabled}\n required={required}\n value={value}\n placeholder={placeholder}\n data-testid={testId}\n size={size}\n {...props}\n />\n {helpText && <FieldBlock.HelpText>{helpText}</FieldBlock.HelpText>}\n {errorMsg && <FieldBlock.ErrorMsg>{errorMsg}</FieldBlock.ErrorMsg>}\n </FieldBlock.Column>\n </FieldBlock.Layout>\n );\n}\n"],"names":[],"mappings":";;;;;AAoBO,SAAS,cAAA,CAAe;AAAA,EAC7B,IAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA,GAAgB,KAAA;AAAA,EAChB,gBAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,QAAA,GAAW,KAAA;AAAA,EACX,SAAA;AAAA,EACA,MAAA,GAAS,UAAA;AAAA,EACT,WAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,MAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwB;AACtB,EAAA,4BACG,UAAA,CAAW,MAAA,EAAX,EAAkB,MAAA,EAAgB,kBAAoC,SAAA,EACpE,QAAA,EAAA;AAAA,IAAA,MAAA,KAAW,YAAA,uBACT,UAAA,CAAW,MAAA,EAAX,EACC,QAAA,kBAAA,GAAA,CAAC,UAAA,CAAW,OAAX,EAAiB,IAAA,EAAY,UAAoB,IAAA,EAAM,SAAA,IAAa,UAClE,QAAA,EAAA,aAAA,mBAAgB,GAAA,CAAC,kBAAgB,QAAA,EAAA,KAAA,EAAM,CAAA,GAAoB,KAAA,EAC9D,CAAA,EACF,CAAA,GACE,IAAA;AAAA,oBACJ,IAAA,CAAC,UAAA,CAAW,MAAA,EAAX,EACE,QAAA,EAAA;AAAA,MAAA,CAAC,aAAA,IAAiB,MAAA,KAAW,UAAA,mBAC5B,GAAA,CAAC,UAAA,CAAW,KAAA,EAAX,EAAiB,IAAA,EAAY,QAAA,EAAoB,IAAA,EAAM,SAAA,IAAa,SAAA,EAClE,iBACH,CAAA,GACE,IAAA;AAAA,sBACJ,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,IAAA;AAAA,UACA,QAAA;AAAA,UACA,QAAA;AAAA,UACA,KAAA;AAAA,UACA,WAAA;AAAA,UACA,aAAA,EAAa,MAAA;AAAA,UACb,IAAA;AAAA,UACC,GAAG;AAAA;AAAA,OACN;AAAA,MACC,QAAA,oBAAY,GAAA,CAAC,UAAA,CAAW,QAAA,EAAX,EAAqB,QAAA,EAAA,QAAA,EAAS,CAAA;AAAA,MAC3C,QAAA,oBAAY,GAAA,CAAC,UAAA,CAAW,QAAA,EAAX,EAAqB,QAAA,EAAA,QAAA,EAAS;AAAA,KAAA,EAC9C;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/playground-ui",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "42.0.0-alpha.13",
|
|
5
5
|
"description": "Mastra Playground components",
|
|
6
6
|
"sideEffects": [
|
|
7
7
|
"**/*.css"
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
"@uiw/react-codemirror": "^4.25.11",
|
|
132
132
|
"cmdk": "^1.1.1",
|
|
133
133
|
"date-fns": "4.4.0",
|
|
134
|
-
"prettier": "^3.
|
|
134
|
+
"prettier": "^3.9.5",
|
|
135
135
|
"react-day-picker": "^8.10.1",
|
|
136
136
|
"react-markdown": "^9.1.0",
|
|
137
137
|
"react-resizable-panels": "^4.7.3",
|
|
@@ -150,8 +150,8 @@
|
|
|
150
150
|
"react": ">=19.0.0",
|
|
151
151
|
"react-dom": ">=19.0.0",
|
|
152
152
|
"tailwindcss": "^4.0.0",
|
|
153
|
-
"@mastra/client-js": "^1.
|
|
154
|
-
"@mastra/react": "1.
|
|
153
|
+
"@mastra/client-js": "^1.33.0-alpha.11",
|
|
154
|
+
"@mastra/react": "1.3.0-alpha.11"
|
|
155
155
|
},
|
|
156
156
|
"devDependencies": {
|
|
157
157
|
"@storybook/addon-a11y": "^10.4.1",
|
|
@@ -172,8 +172,8 @@
|
|
|
172
172
|
"class-variance-authority": "^0.7.1",
|
|
173
173
|
"clsx": "^2.1.1",
|
|
174
174
|
"eslint-plugin-react-hooks": "^7.1.1",
|
|
175
|
-
"eslint-plugin-react-refresh": "^0.5.
|
|
176
|
-
"eslint-plugin-storybook": "^10.
|
|
175
|
+
"eslint-plugin-react-refresh": "^0.5.3",
|
|
176
|
+
"eslint-plugin-storybook": "^10.5.0",
|
|
177
177
|
"eslint-plugin-tailwindcss": "^4.1.0",
|
|
178
178
|
"jsdom": "^26.1.0",
|
|
179
179
|
"msw": "^2.12.11",
|
|
@@ -190,10 +190,10 @@
|
|
|
190
190
|
"vite-plugin-lib-inject-css": "^2.2.2",
|
|
191
191
|
"vitest": "4.1.10",
|
|
192
192
|
"@internal/lint": "0.0.114",
|
|
193
|
-
"@mastra/
|
|
194
|
-
"@mastra/
|
|
195
|
-
"@mastra/memory": "1.23.1-alpha.
|
|
196
|
-
"@mastra/react": "1.
|
|
193
|
+
"@mastra/client-js": "^1.33.0-alpha.11",
|
|
194
|
+
"@mastra/core": "1.52.0-alpha.11",
|
|
195
|
+
"@mastra/memory": "1.23.1-alpha.1",
|
|
196
|
+
"@mastra/react": "1.3.0-alpha.11"
|
|
197
197
|
},
|
|
198
198
|
"homepage": "https://mastra.ai",
|
|
199
199
|
"repository": {
|
package/theme.css
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Txt-BT8_EkuZ.cjs","sources":["../src/ds/components/Txt/Txt.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport type { FontSizes } from '../../tokens';\nimport { cn } from '@/lib/utils';\n\nexport interface TxtProps extends HTMLAttributes<HTMLDivElement | HTMLLabelElement> {\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' | 'label' | 'div';\n variant?: keyof typeof FontSizes;\n font?: 'mono';\n htmlFor?: string;\n className?: string;\n title?: string;\n children?: ReactNode;\n}\n\nconst variants = {\n // UI text sizes\n 'ui-xs': 'text-ui-xs leading-ui-xs',\n 'ui-sm': 'text-ui-sm leading-ui-sm',\n 'ui-smd': 'text-ui-smd leading-ui-smd',\n 'ui-md': 'text-ui-md leading-ui-md',\n 'ui-lg': 'text-ui-lg leading-ui-lg',\n // Header sizes\n 'header-xs': 'text-header-xs leading-header-xs',\n 'header-sm': 'text-header-sm leading-header-sm',\n 'header-md': 'text-header-md leading-header-md',\n 'header-lg': 'text-header-lg leading-header-lg',\n 'header-xl': 'text-header-xl leading-header-xl',\n};\n\nconst fonts = {\n mono: 'font-mono',\n};\n\nexport const Txt = ({ as: Root = 'p', className, variant = 'ui-md', font, ...props }: TxtProps) => {\n return <Root className={cn(variants[variant], font && fonts[font], className)} {...props} />;\n};\n"],"names":["jsx","cn"],"mappings":";;;;;AAeA,MAAM,QAAA,GAAW;AAAA;AAAA,EAEf,OAAA,EAAS,0BAAA;AAAA,EACT,OAAA,EAAS,0BAAA;AAAA,EACT,QAAA,EAAU,4BAAA;AAAA,EACV,OAAA,EAAS,0BAAA;AAAA,EACT,OAAA,EAAS,0BAAA;AAAA;AAAA,EAET,WAAA,EAAa,kCAAA;AAAA,EACb,WAAA,EAAa,kCAAA;AAAA,EACb,WAAA,EAAa,kCAAA;AAAA,EACb,WAAA,EAAa,kCAAA;AAAA,EACb,WAAA,EAAa;AACf,CAAA;AAEA,MAAM,KAAA,GAAQ;AAAA,EACZ,IAAA,EAAM;AACR,CAAA;AAEO,MAAM,GAAA,GAAM,CAAC,EAAE,EAAA,EAAI,IAAA,GAAO,GAAA,EAAK,SAAA,EAAW,OAAA,GAAU,OAAA,EAAS,IAAA,EAAM,GAAG,KAAA,EAAM,KAAgB;AACjG,EAAA,uBAAOA,cAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAWC,WAAA,CAAG,SAAS,OAAO,CAAA,EAAG,IAAA,IAAQ,KAAA,CAAM,IAAI,CAAA,EAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAC5F;;;;"}
|
package/dist/Txt-p33XTnu8.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Txt-p33XTnu8.js","sources":["../src/ds/components/Txt/Txt.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport type { FontSizes } from '../../tokens';\nimport { cn } from '@/lib/utils';\n\nexport interface TxtProps extends HTMLAttributes<HTMLDivElement | HTMLLabelElement> {\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' | 'label' | 'div';\n variant?: keyof typeof FontSizes;\n font?: 'mono';\n htmlFor?: string;\n className?: string;\n title?: string;\n children?: ReactNode;\n}\n\nconst variants = {\n // UI text sizes\n 'ui-xs': 'text-ui-xs leading-ui-xs',\n 'ui-sm': 'text-ui-sm leading-ui-sm',\n 'ui-smd': 'text-ui-smd leading-ui-smd',\n 'ui-md': 'text-ui-md leading-ui-md',\n 'ui-lg': 'text-ui-lg leading-ui-lg',\n // Header sizes\n 'header-xs': 'text-header-xs leading-header-xs',\n 'header-sm': 'text-header-sm leading-header-sm',\n 'header-md': 'text-header-md leading-header-md',\n 'header-lg': 'text-header-lg leading-header-lg',\n 'header-xl': 'text-header-xl leading-header-xl',\n};\n\nconst fonts = {\n mono: 'font-mono',\n};\n\nexport const Txt = ({ as: Root = 'p', className, variant = 'ui-md', font, ...props }: TxtProps) => {\n return <Root className={cn(variants[variant], font && fonts[font], className)} {...props} />;\n};\n"],"names":[],"mappings":";;;AAeA,MAAM,QAAA,GAAW;AAAA;AAAA,EAEf,OAAA,EAAS,0BAAA;AAAA,EACT,OAAA,EAAS,0BAAA;AAAA,EACT,QAAA,EAAU,4BAAA;AAAA,EACV,OAAA,EAAS,0BAAA;AAAA,EACT,OAAA,EAAS,0BAAA;AAAA;AAAA,EAET,WAAA,EAAa,kCAAA;AAAA,EACb,WAAA,EAAa,kCAAA;AAAA,EACb,WAAA,EAAa,kCAAA;AAAA,EACb,WAAA,EAAa,kCAAA;AAAA,EACb,WAAA,EAAa;AACf,CAAA;AAEA,MAAM,KAAA,GAAQ;AAAA,EACZ,IAAA,EAAM;AACR,CAAA;AAEO,MAAM,GAAA,GAAM,CAAC,EAAE,EAAA,EAAI,IAAA,GAAO,GAAA,EAAK,SAAA,EAAW,OAAA,GAAU,OAAA,EAAS,IAAA,EAAM,GAAG,KAAA,EAAM,KAAgB;AACjG,EAAA,uBAAO,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,SAAS,OAAO,CAAA,EAAG,IAAA,IAAQ,KAAA,CAAM,IAAI,CAAA,EAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAC5F;;;;"}
|
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
-
|
|
5
|
-
const jsxRuntime = require('react/jsx-runtime');
|
|
6
|
-
const lucideReact = require('lucide-react');
|
|
7
|
-
const React = require('react');
|
|
8
|
-
const Button = require('../../../Button-B5RnKrGb.cjs');
|
|
9
|
-
const dataList = require('../../../data-list-BwGRWaNd.cjs');
|
|
10
|
-
const inputGroup = require('../../../input-group-QaBen5tC.cjs');
|
|
11
|
-
const skeleton = require('../../../skeleton-C0zXt2_f.cjs');
|
|
12
|
-
const utils_cn = require('../../../cn-vA5sWo9W.cjs');
|
|
13
|
-
const ee_topics_components_topicsLayout = require('../../topics/components/topics-layout.cjs.js');
|
|
14
|
-
const ee_topics_components_topicTraceDetailsPanel = require('../../topics/components/topic-trace-details-panel.cjs.js');
|
|
15
|
-
const ee_signals_hooks_useEntityLearning = require('../hooks/use-entity-learning.cjs.js');
|
|
16
|
-
const ee_signals_signalsData = require('../signals-data.cjs.js');
|
|
17
|
-
|
|
18
|
-
const SignalTraceDetailsPanel = ee_topics_components_topicTraceDetailsPanel.TopicTraceDetailsPanel;
|
|
19
|
-
const SignalsLayout = ee_topics_components_topicsLayout.TopicsLayout;
|
|
20
|
-
function clusterColor(topicId) {
|
|
21
|
-
let hash = 0;
|
|
22
|
-
for (let i = 0; i < topicId.length; i++) {
|
|
23
|
-
hash = topicId.charCodeAt(i) + ((hash << 5) - hash);
|
|
24
|
-
hash = hash & hash;
|
|
25
|
-
}
|
|
26
|
-
const hue = Math.abs(hash * 137.508) % 360;
|
|
27
|
-
return `hsl(${hue}, 70%, 55%)`;
|
|
28
|
-
}
|
|
29
|
-
function SignalClusterSidebar({
|
|
30
|
-
topics,
|
|
31
|
-
selectedTopicIds,
|
|
32
|
-
onTopicSelect,
|
|
33
|
-
multiple = false,
|
|
34
|
-
ariaLabel = "Signal clusters"
|
|
35
|
-
}) {
|
|
36
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
37
|
-
"aside",
|
|
38
|
-
{
|
|
39
|
-
className: "min-h-0 w-72 shrink-0 overflow-y-auto border-r border-border1/60 py-4 pr-4",
|
|
40
|
-
"aria-label": ariaLabel,
|
|
41
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-1", role: multiple ? "group" : void 0, children: topics.map((topic) => {
|
|
42
|
-
const selected = selectedTopicIds.includes(topic.topicId);
|
|
43
|
-
return /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
44
|
-
"button",
|
|
45
|
-
{
|
|
46
|
-
type: "button",
|
|
47
|
-
role: multiple ? "checkbox" : void 0,
|
|
48
|
-
"aria-checked": multiple ? selected : void 0,
|
|
49
|
-
"aria-pressed": multiple ? void 0 : selected,
|
|
50
|
-
className: "group w-full cursor-pointer rounded-xl px-3 py-2 text-left transition-colors hover:bg-surface3 focus-visible:ring-2 focus-visible:ring-accent1 focus-visible:outline-none aria-checked:bg-surface3 aria-pressed:bg-surface3",
|
|
51
|
-
onClick: () => onTopicSelect(topic.topicId),
|
|
52
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-start gap-2", children: [
|
|
53
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
54
|
-
"span",
|
|
55
|
-
{
|
|
56
|
-
className: utils_cn.cn("mt-1.5 size-2 shrink-0 rounded-full", multiple && !selected && "invisible"),
|
|
57
|
-
style: { backgroundColor: clusterColor(topic.topicId) }
|
|
58
|
-
}
|
|
59
|
-
),
|
|
60
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "min-w-0 space-y-1", children: [
|
|
61
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62
|
-
"span",
|
|
63
|
-
{
|
|
64
|
-
className: utils_cn.cn(
|
|
65
|
-
"block text-sm font-medium",
|
|
66
|
-
multiple && !selected ? "text-neutral3" : "text-neutral5"
|
|
67
|
-
),
|
|
68
|
-
children: topic.name
|
|
69
|
-
}
|
|
70
|
-
),
|
|
71
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
72
|
-
"span",
|
|
73
|
-
{
|
|
74
|
-
className: utils_cn.cn(
|
|
75
|
-
"line-clamp-2 block text-sm",
|
|
76
|
-
multiple && !selected ? "text-neutral1" : "text-neutral2"
|
|
77
|
-
),
|
|
78
|
-
children: topic.description
|
|
79
|
-
}
|
|
80
|
-
)
|
|
81
|
-
] })
|
|
82
|
-
] })
|
|
83
|
-
}
|
|
84
|
-
) }, topic.topicId);
|
|
85
|
-
}) })
|
|
86
|
-
}
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
|
-
function SignalTraceListSkeleton({ rows = 8 }) {
|
|
90
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1 px-2 py-1", "aria-label": "Loading traces", "aria-busy": "true", children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-9 w-full rounded-lg" }, index)) });
|
|
91
|
-
}
|
|
92
|
-
function SignalClusterSidebarSkeleton({ rows = 5 }) {
|
|
93
|
-
return /* @__PURE__ */ jsxRuntime.jsx("aside", { className: "min-h-0 w-72 shrink-0 overflow-y-auto border-r border-border1/60 py-4 pr-4", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-1", children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start gap-2 px-3 py-2", children: [
|
|
94
|
-
/* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "mt-1.5 size-2 shrink-0 rounded-full" }),
|
|
95
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1 space-y-1.5", children: [
|
|
96
|
-
/* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-1/2" }),
|
|
97
|
-
/* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-3 w-full" })
|
|
98
|
-
] })
|
|
99
|
-
] }, index)) }) });
|
|
100
|
-
}
|
|
101
|
-
function SignalDetailsSkeleton() {
|
|
102
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "flex h-full min-w-0 flex-col gap-4", "aria-label": "Loading signal", "aria-busy": "true", children: [
|
|
103
|
-
/* @__PURE__ */ jsxRuntime.jsxs("header", { className: "space-y-2", children: [
|
|
104
|
-
/* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-7 w-48" }),
|
|
105
|
-
/* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-64" })
|
|
106
|
-
] }),
|
|
107
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-0 flex-1 gap-6 overflow-hidden", children: [
|
|
108
|
-
/* @__PURE__ */ jsxRuntime.jsx(SignalClusterSidebarSkeleton, {}),
|
|
109
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1 space-y-4 py-4", children: [
|
|
110
|
-
/* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-9 w-full rounded-lg" }),
|
|
111
|
-
/* @__PURE__ */ jsxRuntime.jsx(SignalTraceListSkeleton, {})
|
|
112
|
-
] })
|
|
113
|
-
] })
|
|
114
|
-
] });
|
|
115
|
-
}
|
|
116
|
-
function SignalTraceListTab({
|
|
117
|
-
examples,
|
|
118
|
-
selectedTraceId,
|
|
119
|
-
onTraceSelect,
|
|
120
|
-
loading = false,
|
|
121
|
-
pageSize = 25
|
|
122
|
-
}) {
|
|
123
|
-
const [search, setSearch] = React.useState("");
|
|
124
|
-
const [page, setPage] = React.useState(1);
|
|
125
|
-
const filtered = React.useMemo(() => {
|
|
126
|
-
const query = search.trim().toLowerCase();
|
|
127
|
-
if (!query) return examples;
|
|
128
|
-
return examples.filter((example) => example.signalText.toLowerCase().includes(query));
|
|
129
|
-
}, [examples, search]);
|
|
130
|
-
const visible = React.useMemo(() => filtered.slice(0, page * pageSize), [filtered, page, pageSize]);
|
|
131
|
-
const hasMore = visible.length < filtered.length;
|
|
132
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
133
|
-
"section",
|
|
134
|
-
{
|
|
135
|
-
className: "grid h-full min-h-0 grid-rows-[auto_1fr] gap-4 overflow-y-auto",
|
|
136
|
-
"aria-label": "Topic trace summaries",
|
|
137
|
-
children: [
|
|
138
|
-
/* @__PURE__ */ jsxRuntime.jsxs(inputGroup.InputGroup, { variant: "outline", children: [
|
|
139
|
-
/* @__PURE__ */ jsxRuntime.jsx(inputGroup.InputGroupAddon, { align: "inline-start", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SearchIcon, {}) }),
|
|
140
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
141
|
-
inputGroup.InputGroupInput,
|
|
142
|
-
{
|
|
143
|
-
type: "search",
|
|
144
|
-
"aria-label": "Search traces",
|
|
145
|
-
placeholder: "Search traces",
|
|
146
|
-
onChange: (event) => {
|
|
147
|
-
setSearch(event.target.value);
|
|
148
|
-
setPage(1);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
)
|
|
152
|
-
] }),
|
|
153
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
154
|
-
dataList.DataList,
|
|
155
|
-
{
|
|
156
|
-
columns: "minmax(12rem,1fr)",
|
|
157
|
-
className: "h-full min-h-0 overflow-y-auto rounded-lg border border-border1/60",
|
|
158
|
-
children: [
|
|
159
|
-
/* @__PURE__ */ jsxRuntime.jsx(dataList.DataList.Top, { children: /* @__PURE__ */ jsxRuntime.jsx(dataList.DataList.TopCells, { children: /* @__PURE__ */ jsxRuntime.jsx(dataList.DataList.TopCell, { children: "Trace summary" }) }) }),
|
|
160
|
-
loading ? /* @__PURE__ */ jsxRuntime.jsx(SignalTraceListSkeleton, {}) : visible.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(dataList.DataList.NoMatch, { message: "No traces match this subtopic." }) : visible.map((example) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
161
|
-
dataList.DataList.RowButton,
|
|
162
|
-
{
|
|
163
|
-
featured: selectedTraceId === example.traceId,
|
|
164
|
-
onClick: () => onTraceSelect(example.traceId),
|
|
165
|
-
"aria-pressed": selectedTraceId === example.traceId,
|
|
166
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(dataList.DataList.TextCell, { children: example.signalText })
|
|
167
|
-
},
|
|
168
|
-
example.exampleId
|
|
169
|
-
))
|
|
170
|
-
]
|
|
171
|
-
}
|
|
172
|
-
),
|
|
173
|
-
hasMore && !loading ? /* @__PURE__ */ jsxRuntime.jsxs(Button.Button, { variant: "outline", size: "sm", onClick: () => setPage((currentPage) => currentPage + 1), children: [
|
|
174
|
-
"Load more traces (",
|
|
175
|
-
visible.length,
|
|
176
|
-
" of ",
|
|
177
|
-
filtered.length,
|
|
178
|
-
")"
|
|
179
|
-
] }) : null
|
|
180
|
-
]
|
|
181
|
-
}
|
|
182
|
-
);
|
|
183
|
-
}
|
|
184
|
-
function SignalClusterTraceList({
|
|
185
|
-
topics,
|
|
186
|
-
examples,
|
|
187
|
-
examplesLoading,
|
|
188
|
-
selectedTopicId,
|
|
189
|
-
selectedTraceId,
|
|
190
|
-
onTopicSelect,
|
|
191
|
-
onTraceSelect
|
|
192
|
-
}) {
|
|
193
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full min-w-0 gap-6 overflow-y-auto", children: [
|
|
194
|
-
/* @__PURE__ */ jsxRuntime.jsx(SignalClusterSidebar, { topics, selectedTopicIds: [selectedTopicId], onTopicSelect }),
|
|
195
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-full min-w-0 flex-1 overflow-y-auto py-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
196
|
-
SignalTraceListTab,
|
|
197
|
-
{
|
|
198
|
-
examples,
|
|
199
|
-
loading: examplesLoading,
|
|
200
|
-
selectedTraceId,
|
|
201
|
-
onTraceSelect
|
|
202
|
-
}
|
|
203
|
-
) })
|
|
204
|
-
] });
|
|
205
|
-
}
|
|
206
|
-
function SignalDetailsPage({
|
|
207
|
-
signalId,
|
|
208
|
-
entity,
|
|
209
|
-
selectedTraceId,
|
|
210
|
-
initialTopicId,
|
|
211
|
-
tracePanel,
|
|
212
|
-
onTraceSelect
|
|
213
|
-
}) {
|
|
214
|
-
const { data: entities = [], isLoading: entitiesLoading, isError: entitiesError } = ee_signals_hooks_useEntityLearning.useEntities();
|
|
215
|
-
const resolvedEntity = entities.find((item) => item.entityId === entity?.entityId);
|
|
216
|
-
const {
|
|
217
|
-
data: topicsData,
|
|
218
|
-
isLoading: topicsLoading,
|
|
219
|
-
isError: topicsError
|
|
220
|
-
} = ee_signals_hooks_useEntityLearning.useEntityTopics(resolvedEntity?.entityId, signalId);
|
|
221
|
-
const topics = React.useMemo(() => topicsData?.topics ?? [], [topicsData?.topics]);
|
|
222
|
-
const runId = topicsData?.run?.runId;
|
|
223
|
-
const topicSelectionScope = `${signalId ?? ""}:${entity?.entityId ?? ""}:${runId ?? ""}:${initialTopicId ?? ""}`;
|
|
224
|
-
const topicIds = React.useMemo(() => topics.map((topic) => topic.topicId), [topics]);
|
|
225
|
-
const topicIdSet = React.useMemo(() => new Set(topicIds), [topicIds]);
|
|
226
|
-
const [selectedTopic, setSelectedTopic] = React.useState(() => ({
|
|
227
|
-
scope: topicSelectionScope,
|
|
228
|
-
topicId: initialTopicId ?? null
|
|
229
|
-
}));
|
|
230
|
-
const requestedTopicId = selectedTopic.scope === topicSelectionScope ? selectedTopic.topicId : initialTopicId ?? null;
|
|
231
|
-
const resolvedTopicId = requestedTopicId && topicIdSet.has(requestedTopicId) ? requestedTopicId : topics[0]?.topicId;
|
|
232
|
-
const selectedTopicData = topics.find((topic) => topic.topicId === resolvedTopicId);
|
|
233
|
-
const examplesEnabled = Boolean(resolvedEntity?.entityId && signalId && runId && selectedTopicData);
|
|
234
|
-
const {
|
|
235
|
-
data: examplesData,
|
|
236
|
-
isLoading: examplesLoading,
|
|
237
|
-
isFetching: examplesFetching,
|
|
238
|
-
isError: examplesError
|
|
239
|
-
} = ee_signals_hooks_useEntityLearning.useEntityTopicExamples(
|
|
240
|
-
resolvedEntity?.entityId,
|
|
241
|
-
selectedTopicData?.topicId,
|
|
242
|
-
examplesEnabled && runId && signalId ? { signalName: signalId, runId } : void 0
|
|
243
|
-
);
|
|
244
|
-
const examples = examplesData?.examples ?? [];
|
|
245
|
-
const examplesPending = examplesLoading || examplesFetching && examplesData === void 0;
|
|
246
|
-
const handleTraceSelect = (traceId) => {
|
|
247
|
-
if (!signalId) return;
|
|
248
|
-
onTraceSelect(signalId, traceId);
|
|
249
|
-
};
|
|
250
|
-
const handleTopicSelect = (topicId) => {
|
|
251
|
-
setSelectedTopic({ scope: topicSelectionScope, topicId });
|
|
252
|
-
};
|
|
253
|
-
if (entitiesLoading || topicsLoading) {
|
|
254
|
-
return /* @__PURE__ */ jsxRuntime.jsx(SignalsLayout, { sidebar: null, children: /* @__PURE__ */ jsxRuntime.jsx(SignalDetailsSkeleton, {}) });
|
|
255
|
-
}
|
|
256
|
-
if (entitiesError || topicsError || examplesEnabled && examplesError) {
|
|
257
|
-
return /* @__PURE__ */ jsxRuntime.jsx(SignalsLayout, { sidebar: null, children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-ui-md text-accent2", children: "Failed to load this signal from the observability endpoint." }) });
|
|
258
|
-
}
|
|
259
|
-
if (!resolvedEntity || !selectedTopicData) {
|
|
260
|
-
return /* @__PURE__ */ jsxRuntime.jsx(SignalsLayout, { sidebar: null, children: "Signal not found" });
|
|
261
|
-
}
|
|
262
|
-
const signalName = ee_signals_signalsData.getSignalCatalogEntry(signalId ?? "").name;
|
|
263
|
-
return /* @__PURE__ */ jsxRuntime.jsx(SignalsLayout, { sidebar: null, tracePanel, children: /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "flex h-full min-w-0 flex-col gap-4", children: [
|
|
264
|
-
/* @__PURE__ */ jsxRuntime.jsxs("header", { className: "space-y-1", children: [
|
|
265
|
-
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-icon-xl font-semibold text-neutral6", children: signalName }),
|
|
266
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-ui-sm text-neutral3", children: "Explore trace patterns by cluster." })
|
|
267
|
-
] }),
|
|
268
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-0 flex-1 overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
269
|
-
SignalClusterTraceList,
|
|
270
|
-
{
|
|
271
|
-
topics,
|
|
272
|
-
examples,
|
|
273
|
-
examplesLoading: examplesPending,
|
|
274
|
-
selectedTopicId: selectedTopicData.topicId,
|
|
275
|
-
selectedTraceId,
|
|
276
|
-
onTopicSelect: handleTopicSelect,
|
|
277
|
-
onTraceSelect: handleTraceSelect
|
|
278
|
-
}
|
|
279
|
-
) })
|
|
280
|
-
] }) });
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
exports.SignalClusterSidebar = SignalClusterSidebar;
|
|
284
|
-
exports.SignalClusterTraceList = SignalClusterTraceList;
|
|
285
|
-
exports.SignalDetailsPage = SignalDetailsPage;
|
|
286
|
-
exports.SignalTraceDetailsPanel = SignalTraceDetailsPanel;
|
|
287
|
-
exports.SignalTraceListTab = SignalTraceListTab;
|
|
288
|
-
//# sourceMappingURL=signal-details-page.cjs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signal-details-page.cjs.js","sources":["../../../../src/ee/signals/components/signal-details-page.tsx"],"sourcesContent":["import { SearchIcon } from 'lucide-react';\nimport { useMemo, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport { Button } from '../../../ds/components/Button';\nimport { DataList } from '../../../ds/components/DataList/data-list';\nimport { InputGroup, InputGroupAddon, InputGroupInput } from '../../../ds/components/InputGroup';\nimport { Skeleton } from '../../../ds/components/Skeleton';\nimport { cn } from '../../../lib/utils';\nimport { TopicTraceDetailsPanel, TopicsLayout } from '../../topics';\nimport { useEntities, useEntityTopicExamples, useEntityTopics } from '../hooks';\nimport type { EntityLearningTopic, EntityLearningTopicExample } from '../services';\nimport { getSignalCatalogEntry } from '../signals-data';\nimport type { SelectedEntity } from '../types';\n\nexport const SignalTraceDetailsPanel = TopicTraceDetailsPanel;\nconst SignalsLayout = TopicsLayout;\n\nfunction clusterColor(topicId: string) {\n let hash = 0;\n for (let i = 0; i < topicId.length; i++) {\n hash = topicId.charCodeAt(i) + ((hash << 5) - hash);\n hash = hash & hash;\n }\n // Multiply by the golden-angle so close ids (e.g. \"1\",\"2\",\"3\") map to well-separated hues.\n const hue = Math.abs(hash * 137.508) % 360;\n return `hsl(${hue}, 70%, 55%)`;\n}\n\ninterface SignalClusterSidebarProps {\n topics: EntityLearningTopic[];\n selectedTopicIds: string[];\n onTopicSelect: (topicId: string) => void;\n multiple?: boolean;\n ariaLabel?: string;\n}\n\nexport function SignalClusterSidebar({\n topics,\n selectedTopicIds,\n onTopicSelect,\n multiple = false,\n ariaLabel = 'Signal clusters',\n}: SignalClusterSidebarProps) {\n return (\n <aside\n className=\"min-h-0 w-72 shrink-0 overflow-y-auto border-r border-border1/60 py-4 pr-4\"\n aria-label={ariaLabel}\n >\n <ul className=\"space-y-1\" role={multiple ? 'group' : undefined}>\n {topics.map(topic => {\n const selected = selectedTopicIds.includes(topic.topicId);\n return (\n <li key={topic.topicId}>\n <button\n type=\"button\"\n role={multiple ? 'checkbox' : undefined}\n aria-checked={multiple ? selected : undefined}\n aria-pressed={multiple ? undefined : selected}\n className=\"group w-full cursor-pointer rounded-xl px-3 py-2 text-left transition-colors hover:bg-surface3 focus-visible:ring-2 focus-visible:ring-accent1 focus-visible:outline-none aria-checked:bg-surface3 aria-pressed:bg-surface3\"\n onClick={() => onTopicSelect(topic.topicId)}\n >\n <span className=\"flex items-start gap-2\">\n <span\n className={cn('mt-1.5 size-2 shrink-0 rounded-full', multiple && !selected && 'invisible')}\n style={{ backgroundColor: clusterColor(topic.topicId) }}\n />\n <span className=\"min-w-0 space-y-1\">\n <span\n className={cn(\n 'block text-sm font-medium',\n multiple && !selected ? 'text-neutral3' : 'text-neutral5',\n )}\n >\n {topic.name}\n </span>\n <span\n className={cn(\n 'line-clamp-2 block text-sm',\n multiple && !selected ? 'text-neutral1' : 'text-neutral2',\n )}\n >\n {topic.description}\n </span>\n </span>\n </span>\n </button>\n </li>\n );\n })}\n </ul>\n </aside>\n );\n}\n\nfunction SignalTraceListSkeleton({ rows = 8 }: { rows?: number }) {\n return (\n <div className=\"space-y-1 px-2 py-1\" aria-label=\"Loading traces\" aria-busy=\"true\">\n {Array.from({ length: rows }).map((_, index) => (\n <Skeleton key={index} className=\"h-9 w-full rounded-lg\" />\n ))}\n </div>\n );\n}\n\nfunction SignalClusterSidebarSkeleton({ rows = 5 }: { rows?: number }) {\n return (\n <aside className=\"min-h-0 w-72 shrink-0 overflow-y-auto border-r border-border1/60 py-4 pr-4\" aria-hidden=\"true\">\n <ul className=\"space-y-1\">\n {Array.from({ length: rows }).map((_, index) => (\n <li key={index} className=\"flex items-start gap-2 px-3 py-2\">\n <Skeleton className=\"mt-1.5 size-2 shrink-0 rounded-full\" />\n <div className=\"min-w-0 flex-1 space-y-1.5\">\n <Skeleton className=\"h-4 w-1/2\" />\n <Skeleton className=\"h-3 w-full\" />\n </div>\n </li>\n ))}\n </ul>\n </aside>\n );\n}\n\nfunction SignalDetailsSkeleton() {\n return (\n <section className=\"flex h-full min-w-0 flex-col gap-4\" aria-label=\"Loading signal\" aria-busy=\"true\">\n <header className=\"space-y-2\">\n <Skeleton className=\"h-7 w-48\" />\n <Skeleton className=\"h-4 w-64\" />\n </header>\n <div className=\"flex min-h-0 flex-1 gap-6 overflow-hidden\">\n <SignalClusterSidebarSkeleton />\n <div className=\"min-w-0 flex-1 space-y-4 py-4\">\n <Skeleton className=\"h-9 w-full rounded-lg\" />\n <SignalTraceListSkeleton />\n </div>\n </div>\n </section>\n );\n}\n\nexport function SignalTraceListTab({\n examples,\n selectedTraceId,\n onTraceSelect,\n loading = false,\n pageSize = 25,\n}: {\n examples: EntityLearningTopicExample[];\n selectedTraceId: string | null;\n onTraceSelect: (traceId: string) => void;\n loading?: boolean;\n pageSize?: number;\n}) {\n const [search, setSearch] = useState('');\n const [page, setPage] = useState(1);\n\n const filtered = useMemo(() => {\n const query = search.trim().toLowerCase();\n if (!query) return examples;\n return examples.filter(example => example.signalText.toLowerCase().includes(query));\n }, [examples, search]);\n\n const visible = useMemo(() => filtered.slice(0, page * pageSize), [filtered, page, pageSize]);\n const hasMore = visible.length < filtered.length;\n\n return (\n <section\n className=\"grid h-full min-h-0 grid-rows-[auto_1fr] gap-4 overflow-y-auto\"\n aria-label=\"Topic trace summaries\"\n >\n <InputGroup variant=\"outline\">\n <InputGroupAddon align=\"inline-start\">\n <SearchIcon />\n </InputGroupAddon>\n <InputGroupInput\n type=\"search\"\n aria-label=\"Search traces\"\n placeholder=\"Search traces\"\n onChange={event => {\n setSearch(event.target.value);\n setPage(1);\n }}\n />\n </InputGroup>\n\n <DataList\n columns=\"minmax(12rem,1fr)\"\n className=\"h-full min-h-0 overflow-y-auto rounded-lg border border-border1/60\"\n >\n <DataList.Top>\n <DataList.TopCells>\n <DataList.TopCell>Trace summary</DataList.TopCell>\n </DataList.TopCells>\n </DataList.Top>\n\n {loading ? (\n <SignalTraceListSkeleton />\n ) : visible.length === 0 ? (\n <DataList.NoMatch message=\"No traces match this subtopic.\" />\n ) : (\n visible.map(example => (\n <DataList.RowButton\n key={example.exampleId}\n featured={selectedTraceId === example.traceId}\n onClick={() => onTraceSelect(example.traceId)}\n aria-pressed={selectedTraceId === example.traceId}\n >\n <DataList.TextCell>{example.signalText}</DataList.TextCell>\n </DataList.RowButton>\n ))\n )}\n </DataList>\n\n {hasMore && !loading ? (\n <Button variant=\"outline\" size=\"sm\" onClick={() => setPage(currentPage => currentPage + 1)}>\n Load more traces ({visible.length} of {filtered.length})\n </Button>\n ) : null}\n </section>\n );\n}\n\ninterface SignalClusterTraceListProps {\n topics: EntityLearningTopic[];\n examples: EntityLearningTopicExample[];\n examplesLoading: boolean;\n selectedTopicId: string;\n selectedTraceId: string | null;\n onTopicSelect: (topicId: string) => void;\n onTraceSelect: (traceId: string) => void;\n}\n\nexport function SignalClusterTraceList({\n topics,\n examples,\n examplesLoading,\n selectedTopicId,\n selectedTraceId,\n onTopicSelect,\n onTraceSelect,\n}: SignalClusterTraceListProps) {\n return (\n <div className=\"flex h-full min-w-0 gap-6 overflow-y-auto\">\n <SignalClusterSidebar topics={topics} selectedTopicIds={[selectedTopicId]} onTopicSelect={onTopicSelect} />\n <div className=\"h-full min-w-0 flex-1 overflow-y-auto py-4\">\n <SignalTraceListTab\n examples={examples}\n loading={examplesLoading}\n selectedTraceId={selectedTraceId}\n onTraceSelect={onTraceSelect}\n />\n </div>\n </div>\n );\n}\n\nexport interface SignalDetailsPageProps {\n signalId?: string;\n entity: SelectedEntity | null;\n selectedTraceId: string | null;\n initialTopicId?: string | null;\n tracePanel?: ReactNode;\n onTraceSelect: (signalId: string, traceId: string) => void;\n}\n\nexport function SignalDetailsPage({\n signalId,\n entity,\n selectedTraceId,\n initialTopicId,\n tracePanel,\n onTraceSelect,\n}: SignalDetailsPageProps) {\n const { data: entities = [], isLoading: entitiesLoading, isError: entitiesError } = useEntities();\n const resolvedEntity = entities.find(item => item.entityId === entity?.entityId);\n\n // No runId: the API resolves the latest run for this signal (the entity-wide\n // `latestRunId` belongs to a single signal). Examples below reuse the run\n // resolved by the topics response.\n const {\n data: topicsData,\n isLoading: topicsLoading,\n isError: topicsError,\n } = useEntityTopics(resolvedEntity?.entityId, signalId);\n const topics = useMemo<EntityLearningTopic[]>(() => topicsData?.topics ?? [], [topicsData?.topics]);\n const runId = topicsData?.run?.runId;\n\n const topicSelectionScope = `${signalId ?? ''}:${entity?.entityId ?? ''}:${runId ?? ''}:${initialTopicId ?? ''}`;\n const topicIds = useMemo(() => topics.map(topic => topic.topicId), [topics]);\n const topicIdSet = useMemo(() => new Set(topicIds), [topicIds]);\n const [selectedTopic, setSelectedTopic] = useState<{ scope: string; topicId: string | null }>(() => ({\n scope: topicSelectionScope,\n topicId: initialTopicId ?? null,\n }));\n\n const requestedTopicId =\n selectedTopic.scope === topicSelectionScope ? selectedTopic.topicId : (initialTopicId ?? null);\n const resolvedTopicId = requestedTopicId && topicIdSet.has(requestedTopicId) ? requestedTopicId : topics[0]?.topicId;\n const selectedTopicData = topics.find(topic => topic.topicId === resolvedTopicId);\n const examplesEnabled = Boolean(resolvedEntity?.entityId && signalId && runId && selectedTopicData);\n const {\n data: examplesData,\n isLoading: examplesLoading,\n isFetching: examplesFetching,\n isError: examplesError,\n } = useEntityTopicExamples(\n resolvedEntity?.entityId,\n selectedTopicData?.topicId,\n examplesEnabled && runId && signalId ? { signalName: signalId, runId } : undefined,\n );\n const examples: EntityLearningTopicExample[] = examplesData?.examples ?? [];\n // Show the skeleton on the first load and while switching topics refetches,\n // so the trace list never flashes the empty-state copy between datasets.\n const examplesPending = examplesLoading || (examplesFetching && examplesData === undefined);\n\n const handleTraceSelect = (traceId: string) => {\n if (!signalId) return;\n onTraceSelect(signalId, traceId);\n };\n\n const handleTopicSelect = (topicId: string) => {\n setSelectedTopic({ scope: topicSelectionScope, topicId });\n };\n\n if (entitiesLoading || topicsLoading) {\n return (\n <SignalsLayout sidebar={null}>\n <SignalDetailsSkeleton />\n </SignalsLayout>\n );\n }\n\n if (entitiesError || topicsError || (examplesEnabled && examplesError)) {\n return (\n <SignalsLayout sidebar={null}>\n <p className=\"text-ui-md text-accent2\">Failed to load this signal from the observability endpoint.</p>\n </SignalsLayout>\n );\n }\n\n if (!resolvedEntity || !selectedTopicData) {\n return <SignalsLayout sidebar={null}>Signal not found</SignalsLayout>;\n }\n\n const signalName = getSignalCatalogEntry(signalId ?? '').name;\n\n return (\n <SignalsLayout sidebar={null} tracePanel={tracePanel}>\n <section className=\"flex h-full min-w-0 flex-col gap-4\">\n <header className=\"space-y-1\">\n <h1 className=\"text-icon-xl font-semibold text-neutral6\">{signalName}</h1>\n <p className=\"text-ui-sm text-neutral3\">Explore trace patterns by cluster.</p>\n </header>\n <div className=\"min-h-0 flex-1 overflow-hidden\">\n <SignalClusterTraceList\n topics={topics}\n examples={examples}\n examplesLoading={examplesPending}\n selectedTopicId={selectedTopicData.topicId}\n selectedTraceId={selectedTraceId}\n onTopicSelect={handleTopicSelect}\n onTraceSelect={handleTraceSelect}\n />\n </div>\n </section>\n </SignalsLayout>\n );\n}\n"],"names":["TopicTraceDetailsPanel","TopicsLayout","jsx","jsxs","cn","Skeleton","useState","useMemo","InputGroup","InputGroupAddon","SearchIcon","InputGroupInput","DataList","Button","useEntities","useEntityTopics","useEntityTopicExamples","getSignalCatalogEntry"],"mappings":"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"}
|