@mastra/playground-ui 48.0.0 → 48.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -0
- package/dist/Composer.css +2 -2
- package/dist/{code-C5KVVzOZ.js → code-Cj09LVys.js} +2 -2
- package/dist/{code-C5KVVzOZ.js.map → code-Cj09LVys.js.map} +1 -1
- package/dist/{code-B3WONxnA.cjs → code-FZwLnf_f.cjs} +2 -2
- package/dist/{code-B3WONxnA.cjs.map → code-FZwLnf_f.cjs.map} +1 -1
- package/dist/code-block-Dn0K3DkE.cjs +88 -0
- package/dist/code-block-Dn0K3DkE.cjs.map +1 -0
- package/dist/code-block-DqKXZajq.js +86 -0
- package/dist/code-block-DqKXZajq.js.map +1 -0
- package/dist/components/Code.cjs.js +1 -1
- package/dist/components/Code.es.js +1 -1
- package/dist/components/CodeBlock.cjs.js +3 -83
- package/dist/components/CodeBlock.cjs.js.map +1 -1
- package/dist/components/CodeBlock.es.js +1 -85
- package/dist/components/CodeBlock.es.js.map +1 -1
- package/dist/components/CodeEditor.cjs.js +2 -2
- package/dist/components/CodeEditor.es.js +2 -2
- package/dist/components/CopyButton.cjs.js +1 -1
- package/dist/components/CopyButton.es.js +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataDetailsPanel.cjs.js +1 -1
- package/dist/components/DataDetailsPanel.es.js +1 -1
- package/dist/components/DataPanel.cjs.js +1 -1
- package/dist/components/DataPanel.es.js +1 -1
- package/dist/components/MarkdownRenderer.cjs.js +1 -1
- package/dist/components/MarkdownRenderer.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +1 -1
- package/dist/components/SideDialog.es.js +1 -1
- package/dist/components/Truncate.cjs.js +1 -1
- package/dist/components/Truncate.es.js +1 -1
- package/dist/components/ai/plan.cjs.js +2 -2
- package/dist/components/ai/plan.cjs.js.map +1 -1
- package/dist/components/ai/plan.es.js +2 -2
- package/dist/components/ai/plan.es.js.map +1 -1
- package/dist/components/ai/task-list.cjs.js +44 -18
- package/dist/components/ai/task-list.cjs.js.map +1 -1
- package/dist/components/ai/task-list.es.js +47 -21
- package/dist/components/ai/task-list.es.js.map +1 -1
- package/dist/{copy-button-B1GWIQ-x.js → copy-button-BLGUkVE8.js} +4 -2
- package/dist/copy-button-BLGUkVE8.js.map +1 -0
- package/dist/{copy-button-DwZ3c7D4.cjs → copy-button-BfawWA4t.cjs} +4 -2
- package/dist/copy-button-BfawWA4t.cjs.map +1 -0
- package/dist/{data-code-section-PJM5l3aS.js → data-code-section-DHbytoQ2.js} +2 -2
- package/dist/{data-code-section-PJM5l3aS.js.map → data-code-section-DHbytoQ2.js.map} +1 -1
- package/dist/{data-code-section-BjmFgJpC.cjs → data-code-section-bqvIovEN.cjs} +2 -2
- package/dist/{data-code-section-BjmFgJpC.cjs.map → data-code-section-bqvIovEN.cjs.map} +1 -1
- package/dist/{data-panel-BQqPr6ew.js → data-panel-BX_78wCj.js} +2 -2
- package/dist/{data-panel-BQqPr6ew.js.map → data-panel-BX_78wCj.js.map} +1 -1
- package/dist/{data-panel-C85h9XvH.cjs → data-panel-DT6LgTVX.cjs} +2 -2
- package/dist/{data-panel-C85h9XvH.cjs.map → data-panel-DT6LgTVX.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/traces/components/span-data-panel-view.cjs.js +1 -1
- package/dist/domains/traces/components/span-data-panel-view.es.js +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.es.js +1 -1
- package/dist/ee/signals/entity-learning-api.cjs.js +8 -2
- package/dist/ee/signals/entity-learning-api.cjs.js.map +1 -1
- package/dist/ee/signals/entity-learning-api.es.js +8 -3
- package/dist/ee/signals/entity-learning-api.es.js.map +1 -1
- package/dist/ee/signals/hooks/use-noise-examples.cjs.js +5 -3
- package/dist/ee/signals/hooks/use-noise-examples.cjs.js.map +1 -1
- package/dist/ee/signals/hooks/use-noise-examples.es.js +6 -4
- package/dist/ee/signals/hooks/use-noise-examples.es.js.map +1 -1
- package/dist/ee/signals/hooks/use-theme-examples.cjs.js +6 -3
- package/dist/ee/signals/hooks/use-theme-examples.cjs.js.map +1 -1
- package/dist/ee/signals/hooks/use-theme-examples.es.js +7 -4
- package/dist/ee/signals/hooks/use-theme-examples.es.js.map +1 -1
- package/dist/ee/signals/hooks/use-theme-paths.cjs.js +2 -2
- package/dist/ee/signals/hooks/use-theme-paths.cjs.js.map +1 -1
- package/dist/ee/signals/hooks/use-theme-paths.es.js +3 -3
- package/dist/ee/signals/hooks/use-theme-paths.es.js.map +1 -1
- package/dist/ee/signals/lifeline-row.cjs.js +1 -1
- package/dist/ee/signals/lifeline-row.cjs.js.map +1 -1
- package/dist/ee/signals/lifeline-row.es.js +1 -1
- package/dist/ee/signals/lifeline-row.es.js.map +1 -1
- package/dist/ee/signals/noise-detail-panel.cjs.js +18 -5
- package/dist/ee/signals/noise-detail-panel.cjs.js.map +1 -1
- package/dist/ee/signals/noise-detail-panel.es.js +18 -5
- package/dist/ee/signals/noise-detail-panel.es.js.map +1 -1
- package/dist/ee/signals/sankey-signals.cjs.js +50 -34
- package/dist/ee/signals/sankey-signals.cjs.js.map +1 -1
- package/dist/ee/signals/sankey-signals.es.js +52 -36
- package/dist/ee/signals/sankey-signals.es.js.map +1 -1
- package/dist/ee/signals/signal-delta-column.cjs.js +1 -1
- package/dist/ee/signals/signal-delta-column.cjs.js.map +1 -1
- package/dist/ee/signals/signal-delta-column.es.js +1 -1
- package/dist/ee/signals/signal-delta-column.es.js.map +1 -1
- package/dist/ee/signals/theme-detail-panel.cjs.js +11 -4
- package/dist/ee/signals/theme-detail-panel.cjs.js.map +1 -1
- package/dist/ee/signals/theme-detail-panel.es.js +11 -4
- package/dist/ee/signals/theme-detail-panel.es.js.map +1 -1
- package/dist/ee/signals/theme-drilldown-data.cjs.js +41 -13
- package/dist/ee/signals/theme-drilldown-data.cjs.js.map +1 -1
- package/dist/ee/signals/theme-drilldown-data.es.js +40 -14
- package/dist/ee/signals/theme-drilldown-data.es.js.map +1 -1
- package/dist/ee/signals/theme-filter-banner.cjs.js +53 -28
- package/dist/ee/signals/theme-filter-banner.cjs.js.map +1 -1
- package/dist/ee/signals/theme-filter-banner.es.js +53 -28
- package/dist/ee/signals/theme-filter-banner.es.js.map +1 -1
- package/dist/{highlight-C2uRVhiA.cjs → highlight-CEt2vhD8.cjs} +20 -3
- package/dist/highlight-CEt2vhD8.cjs.map +1 -0
- package/dist/{highlight-Dis62bkj.js → highlight-CSJjjoqh.js} +20 -3
- package/dist/highlight-CSJjjoqh.js.map +1 -0
- package/dist/markdown-renderer-D1vSFfp9.cjs +86 -0
- package/dist/markdown-renderer-D1vSFfp9.cjs.map +1 -0
- package/dist/markdown-renderer-DmYYQHxu.js +84 -0
- package/dist/markdown-renderer-DmYYQHxu.js.map +1 -0
- package/dist/markdown-renderer.css +182 -0
- package/dist/src/ds/components/CopyButton/copy-button.d.ts +2 -1
- package/dist/src/ds/components/MarkdownRenderer/markdown-renderer.d.ts +9 -5
- package/dist/src/ds/components/ai/task-list/task-list.d.ts +4 -2
- package/dist/src/ds/components/ai/task-list/task-list.stories.d.ts +2 -0
- package/dist/src/ee/signals/entity-learning-api.d.ts +4 -2
- package/dist/src/ee/signals/hooks/use-noise-examples.d.ts +2 -1
- package/dist/src/ee/signals/hooks/use-theme-examples.d.ts +2 -1
- package/dist/src/ee/signals/hooks/use-theme-paths.d.ts +1 -1
- package/dist/src/ee/signals/noise-detail-panel.d.ts +4 -1
- package/dist/src/ee/signals/theme-detail-panel.d.ts +5 -3
- package/dist/src/ee/signals/theme-drilldown-data.d.ts +17 -4
- package/dist/src/ee/signals/theme-filter-banner.d.ts +5 -3
- package/dist/style.css +5 -98
- package/package.json +7 -7
- package/dist/copy-button-B1GWIQ-x.js.map +0 -1
- package/dist/copy-button-DwZ3c7D4.cjs.map +0 -1
- package/dist/highlight-C2uRVhiA.cjs.map +0 -1
- package/dist/highlight-Dis62bkj.js.map +0 -1
- package/dist/markdown-renderer-DszxuuNM.js +0 -117
- package/dist/markdown-renderer-DszxuuNM.js.map +0 -1
- package/dist/markdown-renderer-g8xNLOc0.cjs +0 -119
- package/dist/markdown-renderer-g8xNLOc0.cjs.map +0 -1
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/* Markdown typography. Plain CSS rather than one React wrapper per element:
|
|
2
|
+
* markers, task lists and tables need selectors no `[&_x]` class string carries
|
|
3
|
+
* readably. Declared in `@layer components`, so a surface that needs another
|
|
4
|
+
* tone or size overrides it with a utility on the renderer itself.
|
|
5
|
+
*
|
|
6
|
+
* A component stylesheet can load before the app's Tailwind entry, and the
|
|
7
|
+
* first sheet to name a layer fixes its rank. Restating the full order keeps
|
|
8
|
+
* preflight from winning over these rules whichever one lands first. */
|
|
9
|
+
@layer properties, theme, base, components, utilities;
|
|
10
|
+
|
|
11
|
+
@layer components {
|
|
12
|
+
.mastra-markdown {
|
|
13
|
+
color: var(--neutral5);
|
|
14
|
+
font-size: var(--text-ui-md);
|
|
15
|
+
line-height: 1.7;
|
|
16
|
+
overflow-wrap: break-word;
|
|
17
|
+
text-wrap: pretty;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.mastra-markdown > :first-child {
|
|
21
|
+
margin-top: 0;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.mastra-markdown > :last-child {
|
|
25
|
+
margin-bottom: 0;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* `pre-wrap` keeps single newlines as line breaks, the way chat authors expect. */
|
|
29
|
+
.mastra-markdown p {
|
|
30
|
+
margin: 0.7em 0;
|
|
31
|
+
white-space: pre-wrap;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.mastra-markdown :is(h1, h2, h3, h4, h5, h6) {
|
|
35
|
+
margin: 1.6em 0 0.6em;
|
|
36
|
+
color: var(--neutral6);
|
|
37
|
+
font-weight: 600;
|
|
38
|
+
letter-spacing: -0.012em;
|
|
39
|
+
line-height: 1.35;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.mastra-markdown h1 {
|
|
43
|
+
font-size: 1.3em;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.mastra-markdown h2 {
|
|
47
|
+
font-size: 1.15em;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.mastra-markdown h3 {
|
|
51
|
+
font-size: 1.05em;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.mastra-markdown :is(h4, h5, h6) {
|
|
55
|
+
font-size: 1em;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.mastra-markdown strong {
|
|
59
|
+
color: var(--neutral6);
|
|
60
|
+
font-weight: 600;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.mastra-markdown em {
|
|
64
|
+
font-style: italic;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.mastra-markdown del {
|
|
68
|
+
color: var(--neutral3);
|
|
69
|
+
text-decoration: line-through;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.mastra-markdown a {
|
|
73
|
+
color: var(--accent1);
|
|
74
|
+
text-decoration: underline;
|
|
75
|
+
text-decoration-color: color-mix(in oklab, var(--accent1) 30%, transparent);
|
|
76
|
+
text-underline-offset: 0.15em;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.mastra-markdown a:hover {
|
|
80
|
+
text-decoration-color: currentcolor;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/* Tailwind's preflight drops list markers; markdown is the one place we want
|
|
84
|
+
* them back, per nesting level. */
|
|
85
|
+
.mastra-markdown :is(ul, ol) {
|
|
86
|
+
margin: 0.7em 0;
|
|
87
|
+
padding-left: 1.35em;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.mastra-markdown ul {
|
|
91
|
+
list-style: disc;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.mastra-markdown ol {
|
|
95
|
+
list-style: decimal;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.mastra-markdown ul ul {
|
|
99
|
+
list-style: circle;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.mastra-markdown ul ul ul {
|
|
103
|
+
list-style: square;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.mastra-markdown :is(ul, ol) :is(ul, ol) {
|
|
107
|
+
margin: 0.3em 0;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.mastra-markdown li {
|
|
111
|
+
margin: 0.3em 0;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.mastra-markdown li::marker {
|
|
115
|
+
color: var(--neutral3);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.mastra-markdown li > p {
|
|
119
|
+
margin: 0.3em 0;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.mastra-markdown .contains-task-list {
|
|
123
|
+
padding-left: 0.15em;
|
|
124
|
+
list-style: none;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.mastra-markdown .task-list-item input {
|
|
128
|
+
margin-right: 0.5em;
|
|
129
|
+
accent-color: var(--accent1);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.mastra-markdown blockquote {
|
|
133
|
+
margin: 0.9em 0;
|
|
134
|
+
border-left: 2px solid var(--border2);
|
|
135
|
+
padding-left: 0.9em;
|
|
136
|
+
color: var(--neutral4);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.mastra-markdown hr {
|
|
140
|
+
margin: 1.5em 0;
|
|
141
|
+
border: 0;
|
|
142
|
+
border-top: 1px solid var(--border1);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/* Fenced blocks render through the design-system CodeBlock, so this only ever
|
|
146
|
+
* matches inline spans. */
|
|
147
|
+
.mastra-markdown :not(pre) > code {
|
|
148
|
+
border-radius: 4px;
|
|
149
|
+
background: var(--surface-overlay-strong);
|
|
150
|
+
padding: 0.1em 0.35em;
|
|
151
|
+
color: var(--neutral6);
|
|
152
|
+
font-family: var(--font-mono);
|
|
153
|
+
font-size: 0.875em;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.mastra-markdown table {
|
|
157
|
+
display: block;
|
|
158
|
+
overflow-x: auto;
|
|
159
|
+
width: max-content;
|
|
160
|
+
max-width: 100%;
|
|
161
|
+
margin: 0.9em 0;
|
|
162
|
+
border-collapse: collapse;
|
|
163
|
+
font-size: 0.95em;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.mastra-markdown :is(th, td) {
|
|
167
|
+
border: 1px solid var(--border1);
|
|
168
|
+
padding: 0.4em 0.7em;
|
|
169
|
+
text-align: left;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.mastra-markdown th {
|
|
173
|
+
background: var(--surface-overlay-soft);
|
|
174
|
+
color: var(--neutral6);
|
|
175
|
+
font-weight: 600;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.mastra-markdown img {
|
|
179
|
+
max-width: 100%;
|
|
180
|
+
border-radius: 8px;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
@@ -2,9 +2,10 @@ import { ButtonProps } from '../Button';
|
|
|
2
2
|
export type CopyButtonProps = {
|
|
3
3
|
content: string;
|
|
4
4
|
copyMessage?: string;
|
|
5
|
+
showToast?: boolean;
|
|
5
6
|
tooltip?: string;
|
|
6
7
|
className?: string;
|
|
7
8
|
size?: ButtonProps['size'];
|
|
8
9
|
variant?: ButtonProps['variant'];
|
|
9
10
|
};
|
|
10
|
-
export declare function CopyButton({ content, copyMessage, tooltip, size, variant, className, }: CopyButtonProps): import("react").JSX.Element;
|
|
11
|
+
export declare function CopyButton({ content, copyMessage, showToast, tooltip, size, variant, className, }: CopyButtonProps): import("react").JSX.Element;
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
1
|
export type MarkdownExternalLinkTarget = 'tab' | 'window';
|
|
3
|
-
export
|
|
2
|
+
export interface MarkdownRendererProps {
|
|
4
3
|
children: string;
|
|
4
|
+
className?: string;
|
|
5
5
|
externalLinkTarget?: MarkdownExternalLinkTarget;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Renders a markdown string. Agent output can carry attacker-influenced text
|
|
9
|
+
* (file contents, tool output, web pages): react-markdown escapes raw HTML and
|
|
10
|
+
* drops dangerous link schemes, so nothing here reaches the DOM as markup.
|
|
11
|
+
*/
|
|
12
|
+
export declare function MarkdownRenderer({ children, className, externalLinkTarget }: MarkdownRendererProps): import("react").JSX.Element;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { TaskItem } from '@mastra/core/signals';
|
|
2
2
|
import { ComponentProps, ReactNode } from 'react';
|
|
3
|
+
import { CollapsibleTrigger } from '../../Collapsible';
|
|
3
4
|
export type TaskListItem = TaskItem;
|
|
4
5
|
export declare const TaskListContainer: ({ className, ...props }: ComponentProps<"section">) => import("react").JSX.Element;
|
|
5
|
-
export declare const TaskListHeader: ({ className, ...props }: ComponentProps<
|
|
6
|
+
export declare const TaskListHeader: ({ className, ...props }: ComponentProps<typeof CollapsibleTrigger>) => import("react").JSX.Element;
|
|
6
7
|
export interface TaskListCountProps extends ComponentProps<'span'> {
|
|
7
8
|
completed: number;
|
|
8
9
|
total: number;
|
|
@@ -27,5 +28,6 @@ export interface TaskListProps extends Omit<ComponentProps<typeof TaskListContai
|
|
|
27
28
|
hideWhenEmpty?: boolean;
|
|
28
29
|
hideWhenComplete?: boolean;
|
|
29
30
|
scrollActiveIntoView?: boolean;
|
|
31
|
+
defaultOpen?: boolean;
|
|
30
32
|
}
|
|
31
|
-
export declare const TaskList: ({ tasks, title, hideWhenEmpty, hideWhenComplete, scrollActiveIntoView, ...props }: TaskListProps) => import("react").JSX.Element | null;
|
|
33
|
+
export declare const TaskList: ({ tasks, title, hideWhenEmpty, hideWhenComplete, scrollActiveIntoView, defaultOpen, ...props }: TaskListProps) => import("react").JSX.Element | null;
|
|
@@ -5,5 +5,7 @@ export default meta;
|
|
|
5
5
|
type Story = StoryObj<typeof TaskList>;
|
|
6
6
|
export declare const MixedProgress: Story;
|
|
7
7
|
export declare const OneActiveTask: Story;
|
|
8
|
+
export declare const Collapsed: Story;
|
|
9
|
+
export declare const LongList: Story;
|
|
8
10
|
export declare const Empty: Story;
|
|
9
11
|
export declare const Completed: Story;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ThemeSelection } from './theme-drilldown-data';
|
|
1
2
|
import { TraceIntelligenceRequest } from './trace-intelligence-context';
|
|
2
3
|
import { NoiseResponse, ThemeDetailResponse, EntityLearningProgressResponse, ThemeEntitiesResponse, ThemeExamplesResponse, ThemeFlowResponse, ThemeHistoryResponse, ThemePathsResponse, ThemeSnapshotsResponse, TraceInsightResponse, TraceSignalName } from './types';
|
|
3
4
|
export declare function fetchThemeEntities(request: TraceIntelligenceRequest, entityType: string): Promise<ThemeEntitiesResponse>;
|
|
@@ -5,9 +6,10 @@ export declare function fetchEntityLearningProgress(request: TraceIntelligenceRe
|
|
|
5
6
|
export declare function fetchThemeSnapshots(request: TraceIntelligenceRequest, entityId: string, entityType: string, signalNames: string[], dateFrom?: Date, dateTo?: Date, limit?: number): Promise<ThemeSnapshotsResponse>;
|
|
6
7
|
export declare function fetchThemeFlow(request: TraceIntelligenceRequest, entityId: string, entityType: string, signalNames: string[], snapshotId: string, themeLimitPerStage?: number): Promise<ThemeFlowResponse>;
|
|
7
8
|
export declare function fetchThemeDetail(request: TraceIntelligenceRequest, entityId: string, entityType: string, signalName: TraceSignalName, snapshotId: string, themeId: string): Promise<ThemeDetailResponse>;
|
|
8
|
-
export declare function
|
|
9
|
+
export declare function serializeThemeFilters(filters: ThemeSelection[]): string;
|
|
10
|
+
export declare function fetchThemeExamples(request: TraceIntelligenceRequest, entityId: string, entityType: string, signalName: TraceSignalName, snapshotId: string, themeId: string, limit?: number, offset?: number, filters?: ThemeSelection[]): Promise<ThemeExamplesResponse>;
|
|
9
11
|
export declare function fetchThemeHistory(request: TraceIntelligenceRequest, entityId: string, entityType: string, signalName: TraceSignalName, themeId: string, limit?: number): Promise<ThemeHistoryResponse>;
|
|
10
12
|
export declare function fetchNoise(request: TraceIntelligenceRequest, entityId: string, entityType: string, signalName: TraceSignalName, snapshotId: string): Promise<NoiseResponse>;
|
|
11
|
-
export declare function fetchNoiseExamples(request: TraceIntelligenceRequest, entityId: string, entityType: string, signalName: TraceSignalName, snapshotId: string, limit?: number, offset?: number): Promise<ThemeExamplesResponse>;
|
|
13
|
+
export declare function fetchNoiseExamples(request: TraceIntelligenceRequest, entityId: string, entityType: string, signalName: TraceSignalName, snapshotId: string, limit?: number, offset?: number, filters?: ThemeSelection[]): Promise<ThemeExamplesResponse>;
|
|
12
14
|
export declare function fetchThemePaths(request: TraceIntelligenceRequest, entityId: string, entityType: string, signalNames: TraceSignalName[], snapshotId: string): Promise<ThemePathsResponse>;
|
|
13
15
|
export declare function fetchTraceInsight(request: TraceIntelligenceRequest, traceId: string): Promise<TraceInsightResponse>;
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
import { ThemeSelection } from '../theme-drilldown-data';
|
|
1
2
|
import { TraceSignalName } from '../types';
|
|
2
|
-
export declare function useNoiseExamples(entityId: string, entityType: string, signalName: TraceSignalName | undefined, snapshotId: string | undefined, limit?: number, offset?: number): import('@tanstack/react-query').UseQueryResult<import('@mastra/client-js').ThemeExamplesResponse, Error>;
|
|
3
|
+
export declare function useNoiseExamples(entityId: string, entityType: string, signalName: TraceSignalName | undefined, snapshotId: string | undefined, limit?: number, offset?: number, filterThemes?: ThemeSelection[]): import('@tanstack/react-query').UseQueryResult<import('@mastra/client-js').ThemeExamplesResponse, Error>;
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
import { ThemeSelection } from '../theme-drilldown-data';
|
|
1
2
|
import { TraceSignalName } from '../types';
|
|
2
|
-
export declare function useThemeExamples(entityId: string, entityType: string, signalName: TraceSignalName, snapshotId: string | undefined, themeId: string | undefined, limit?: number, offset?: number): import('@tanstack/react-query').UseQueryResult<import('@mastra/client-js').ThemeExamplesResponse, Error>;
|
|
3
|
+
export declare function useThemeExamples(entityId: string, entityType: string, signalName: TraceSignalName, snapshotId: string | undefined, themeId: string | undefined, limit?: number, offset?: number, filterThemes?: ThemeSelection[]): import('@tanstack/react-query').UseQueryResult<import('@mastra/client-js').ThemeExamplesResponse, Error>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { TraceSignalName } from '../types';
|
|
2
|
-
export declare function useThemePaths(entityId: string, entityType: string, signalNames: TraceSignalName[], snapshotId: string | undefined,
|
|
2
|
+
export declare function useThemePaths(entityId: string, entityType: string, signalNames: TraceSignalName[], snapshotId: string | undefined, enabled: boolean | undefined): import('@tanstack/react-query').UseQueryResult<import('@mastra/client-js').ThemePathsResponse, Error>;
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
import { ThemeSelection, ThemeSelectionStats } from './theme-drilldown-data';
|
|
1
2
|
import { TraceSignalName } from './types';
|
|
2
3
|
interface NoiseDetailPanelProps {
|
|
3
4
|
entityId: string;
|
|
4
5
|
entityType: string;
|
|
5
6
|
snapshotId: string;
|
|
6
7
|
signalName: TraceSignalName | undefined;
|
|
8
|
+
filters?: ThemeSelection[];
|
|
9
|
+
filteredStats?: ThemeSelectionStats;
|
|
7
10
|
onClose: () => void;
|
|
8
11
|
}
|
|
9
|
-
export declare function NoiseDetailPanel({ entityId, entityType, snapshotId, signalName, onClose }: NoiseDetailPanelProps): import("react").JSX.Element;
|
|
12
|
+
export declare function NoiseDetailPanel({ entityId, entityType, snapshotId, signalName, filters, filteredStats, onClose, }: NoiseDetailPanelProps): import("react").JSX.Element;
|
|
10
13
|
export {};
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { ThemeSelection } from './theme-drilldown-data';
|
|
1
|
+
import { SelectedTheme, ThemeSelection, ThemeSelectionStats } from './theme-drilldown-data';
|
|
2
2
|
interface ThemeDetailPanelProps {
|
|
3
3
|
entityId: string;
|
|
4
4
|
entityType: string;
|
|
5
5
|
snapshotId: string;
|
|
6
6
|
snapshotTotal: number;
|
|
7
|
-
selection:
|
|
7
|
+
selection: SelectedTheme | undefined;
|
|
8
|
+
filters?: ThemeSelection[];
|
|
9
|
+
filteredStats?: ThemeSelectionStats;
|
|
8
10
|
onClose: () => void;
|
|
9
11
|
}
|
|
10
|
-
export declare function ThemeDetailPanel({ entityId, entityType, snapshotId, snapshotTotal, selection, onClose, }: ThemeDetailPanelProps): import("react").JSX.Element;
|
|
12
|
+
export declare function ThemeDetailPanel({ entityId, entityType, snapshotId, snapshotTotal, selection, filters, filteredStats, onClose, }: ThemeDetailPanelProps): import("react").JSX.Element;
|
|
11
13
|
export {};
|
|
@@ -1,10 +1,23 @@
|
|
|
1
1
|
import { ThemeFlowResponse, ThemePathsResponse, TraceSignalName } from './types';
|
|
2
2
|
export type ThemeSelection = {
|
|
3
|
+
kind: 'theme';
|
|
3
4
|
signalName: TraceSignalName;
|
|
4
5
|
themeId: string;
|
|
5
6
|
label: string;
|
|
7
|
+
} | {
|
|
8
|
+
kind: 'noise';
|
|
9
|
+
signalName: TraceSignalName;
|
|
6
10
|
};
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
export
|
|
11
|
+
export type SelectedTheme = Extract<ThemeSelection, {
|
|
12
|
+
kind: 'theme';
|
|
13
|
+
}>;
|
|
14
|
+
export interface ThemeSelectionStats {
|
|
15
|
+
traceCount: number;
|
|
16
|
+
stageShare: number;
|
|
17
|
+
}
|
|
18
|
+
export declare function findSelectionStats(flow: ThemeFlowResponse, drillStack: ThemeSelection[], selection: ThemeSelection | undefined): ThemeSelectionStats | undefined;
|
|
19
|
+
export declare function mergeVisibleSignalOrder(signalNames: TraceSignalName[], nextVisibleSignalNames: TraceSignalName[]): TraceSignalName[];
|
|
20
|
+
export declare function findThemeSelection(flow: ThemeFlowResponse, signalName: string, nodeId: string | number): SelectedTheme | undefined;
|
|
21
|
+
/** Resolves a chart node to a noise selection when the node is that stage's noise bucket. */
|
|
22
|
+
export declare function findNoiseSelection(flow: ThemeFlowResponse, signalName: string, nodeId: string | number): ThemeSelection | undefined;
|
|
23
|
+
export declare function buildDrilledThemeFlow(flow: ThemeFlowResponse, pathsResponse: ThemePathsResponse, selections: ThemeSelection[]): ThemeFlowResponse;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { ThemeSelection } from './theme-drilldown-data';
|
|
2
|
-
export declare function ThemeFilterBanner({
|
|
3
|
-
|
|
2
|
+
export declare function ThemeFilterBanner({ selections, filteredTraceCount, totalTraceCount, isUnavailable, onViewDetails, onRemove, onClear, }: {
|
|
3
|
+
selections: ThemeSelection[];
|
|
4
4
|
filteredTraceCount?: number;
|
|
5
5
|
totalTraceCount: number;
|
|
6
|
-
|
|
6
|
+
isUnavailable?: boolean;
|
|
7
|
+
onViewDetails: (selection: ThemeSelection) => void;
|
|
8
|
+
onRemove: (signalName: ThemeSelection['signalName']) => void;
|
|
7
9
|
onClear: () => void;
|
|
8
10
|
}): import("react").JSX.Element;
|
package/dist/style.css
CHANGED
|
@@ -163,8 +163,6 @@
|
|
|
163
163
|
--text-xs--line-height: calc(1 / .75);
|
|
164
164
|
--text-sm: .875rem;
|
|
165
165
|
--text-sm--line-height: calc(1.25 / .875);
|
|
166
|
-
--text-base: 1rem;
|
|
167
|
-
--text-base--line-height: calc(1.5 / 1);
|
|
168
166
|
--text-lg: 1.125rem;
|
|
169
167
|
--text-lg--line-height: calc(1.75 / 1.125);
|
|
170
168
|
--text-xl: 1.25rem;
|
|
@@ -1051,14 +1049,14 @@
|
|
|
1051
1049
|
margin-block: var(--spacing-1);
|
|
1052
1050
|
}
|
|
1053
1051
|
|
|
1054
|
-
.my-1\.5 {
|
|
1055
|
-
margin-block: var(--spacing-1_5);
|
|
1056
|
-
}
|
|
1057
|
-
|
|
1058
1052
|
.my-2 {
|
|
1059
1053
|
margin-block: var(--spacing-2);
|
|
1060
1054
|
}
|
|
1061
1055
|
|
|
1056
|
+
.my-3 {
|
|
1057
|
+
margin-block: var(--spacing-3);
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1062
1060
|
.my-8 {
|
|
1063
1061
|
margin-block: var(--spacing-8);
|
|
1064
1062
|
}
|
|
@@ -1681,10 +1679,6 @@
|
|
|
1681
1679
|
height: var(--height-table-header);
|
|
1682
1680
|
}
|
|
1683
1681
|
|
|
1684
|
-
.max-h-32 {
|
|
1685
|
-
max-height: var(--spacing-32);
|
|
1686
|
-
}
|
|
1687
|
-
|
|
1688
1682
|
.max-h-64 {
|
|
1689
1683
|
max-height: var(--spacing-64);
|
|
1690
1684
|
}
|
|
@@ -2547,14 +2541,6 @@
|
|
|
2547
2541
|
resize: vertical;
|
|
2548
2542
|
}
|
|
2549
2543
|
|
|
2550
|
-
.\[scrollbar-width\:none\] {
|
|
2551
|
-
scrollbar-width: none;
|
|
2552
|
-
}
|
|
2553
|
-
|
|
2554
|
-
.list-decimal {
|
|
2555
|
-
list-style-type: decimal;
|
|
2556
|
-
}
|
|
2557
|
-
|
|
2558
2544
|
.list-disc {
|
|
2559
2545
|
list-style-type: disc;
|
|
2560
2546
|
}
|
|
@@ -3061,10 +3047,6 @@
|
|
|
3061
3047
|
overflow-x: hidden;
|
|
3062
3048
|
}
|
|
3063
3049
|
|
|
3064
|
-
.overflow-x-scroll {
|
|
3065
|
-
overflow-x: scroll;
|
|
3066
|
-
}
|
|
3067
|
-
|
|
3068
3050
|
.overflow-y-auto {
|
|
3069
3051
|
overflow-y: auto;
|
|
3070
3052
|
}
|
|
@@ -3089,10 +3071,6 @@
|
|
|
3089
3071
|
border-radius: .3125rem;
|
|
3090
3072
|
}
|
|
3091
3073
|
|
|
3092
|
-
.rounded-\[2px\] {
|
|
3093
|
-
border-radius: 2px;
|
|
3094
|
-
}
|
|
3095
|
-
|
|
3096
3074
|
.rounded-\[22px\] {
|
|
3097
3075
|
border-radius: 22px;
|
|
3098
3076
|
}
|
|
@@ -3421,17 +3399,7 @@
|
|
|
3421
3399
|
}
|
|
3422
3400
|
}
|
|
3423
3401
|
|
|
3424
|
-
.border-neutral6, .border-neutral6
|
|
3425
|
-
border-color: var(--color-neutral6);
|
|
3426
|
-
}
|
|
3427
|
-
|
|
3428
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
3429
|
-
.border-neutral6\/20 {
|
|
3430
|
-
border-color: color-mix(in oklab, var(--color-neutral6) 20%, transparent);
|
|
3431
|
-
}
|
|
3432
|
-
}
|
|
3433
|
-
|
|
3434
|
-
.border-neutral6\/\[0\.06\] {
|
|
3402
|
+
.border-neutral6, .border-neutral6\/\[0\.06\] {
|
|
3435
3403
|
border-color: var(--color-neutral6);
|
|
3436
3404
|
}
|
|
3437
3405
|
|
|
@@ -4109,16 +4077,6 @@
|
|
|
4109
4077
|
}
|
|
4110
4078
|
}
|
|
4111
4079
|
|
|
4112
|
-
.bg-surface1\/50 {
|
|
4113
|
-
background-color: var(--color-surface1);
|
|
4114
|
-
}
|
|
4115
|
-
|
|
4116
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
4117
|
-
.bg-surface1\/50 {
|
|
4118
|
-
background-color: color-mix(in oklab, var(--color-surface1) 50%, transparent);
|
|
4119
|
-
}
|
|
4120
|
-
}
|
|
4121
|
-
|
|
4122
4080
|
.bg-surface2, .bg-surface2\/60 {
|
|
4123
4081
|
background-color: var(--color-surface2);
|
|
4124
4082
|
}
|
|
@@ -4790,11 +4748,6 @@
|
|
|
4790
4748
|
line-height: var(--tw-leading, var(--text-2xl--line-height));
|
|
4791
4749
|
}
|
|
4792
4750
|
|
|
4793
|
-
.text-base {
|
|
4794
|
-
font-size: var(--text-base);
|
|
4795
|
-
line-height: var(--tw-leading, var(--text-base--line-height));
|
|
4796
|
-
}
|
|
4797
|
-
|
|
4798
4751
|
.text-lg {
|
|
4799
4752
|
font-size: var(--text-lg);
|
|
4800
4753
|
line-height: var(--tw-leading, var(--text-lg--line-height));
|
|
@@ -5317,10 +5270,6 @@
|
|
|
5317
5270
|
text-decoration-line: underline;
|
|
5318
5271
|
}
|
|
5319
5272
|
|
|
5320
|
-
.underline-offset-2 {
|
|
5321
|
-
text-underline-offset: 2px;
|
|
5322
|
-
}
|
|
5323
|
-
|
|
5324
5273
|
.accent-current {
|
|
5325
5274
|
accent-color: currentColor;
|
|
5326
5275
|
}
|
|
@@ -5993,14 +5942,6 @@
|
|
|
5993
5942
|
opacity: 1;
|
|
5994
5943
|
}
|
|
5995
5944
|
|
|
5996
|
-
.group-hover\/code\:visible:is(:where(.group\/code):hover *) {
|
|
5997
|
-
visibility: visible;
|
|
5998
|
-
}
|
|
5999
|
-
|
|
6000
|
-
.group-hover\/code\:opacity-100:is(:where(.group\/code):hover *) {
|
|
6001
|
-
opacity: 1;
|
|
6002
|
-
}
|
|
6003
|
-
|
|
6004
5945
|
.group-hover\/expand\:pointer-events-auto:is(:where(.group\/expand):hover *) {
|
|
6005
5946
|
pointer-events: auto;
|
|
6006
5947
|
}
|
|
@@ -6651,10 +6592,6 @@
|
|
|
6651
6592
|
padding-right: var(--spacing-3);
|
|
6652
6593
|
}
|
|
6653
6594
|
|
|
6654
|
-
.even\:bg-surface4:nth-child(2n) {
|
|
6655
|
-
background-color: var(--color-surface4);
|
|
6656
|
-
}
|
|
6657
|
-
|
|
6658
6595
|
.first-of-type\:mt-3:first-of-type {
|
|
6659
6596
|
margin-top: var(--spacing-3);
|
|
6660
6597
|
}
|
|
@@ -9445,14 +9382,6 @@
|
|
|
9445
9382
|
opacity: 1;
|
|
9446
9383
|
}
|
|
9447
9384
|
|
|
9448
|
-
.\[\[align\=center\]\]\:text-center[align="center"] {
|
|
9449
|
-
text-align: center;
|
|
9450
|
-
}
|
|
9451
|
-
|
|
9452
|
-
.\[\[align\=right\]\]\:text-right[align="right"] {
|
|
9453
|
-
text-align: right;
|
|
9454
|
-
}
|
|
9455
|
-
|
|
9456
9385
|
:is(.\*\*\:\[\[cmdk-group-heading\]\]\:px-2 *)[cmdk-group-heading] {
|
|
9457
9386
|
padding-inline: var(--spacing-2);
|
|
9458
9387
|
}
|
|
@@ -10145,28 +10074,6 @@
|
|
|
10145
10074
|
border-top-right-radius: var(--radius-none);
|
|
10146
10075
|
}
|
|
10147
10076
|
|
|
10148
|
-
:not(pre) > .\[\:not\(pre\)\>\&\]\:rounded-md {
|
|
10149
|
-
border-radius: var(--radius-md);
|
|
10150
|
-
}
|
|
10151
|
-
|
|
10152
|
-
:not(pre) > .\[\:not\(pre\)\>\&\]\:bg-surface1\/50 {
|
|
10153
|
-
background-color: var(--color-surface1);
|
|
10154
|
-
}
|
|
10155
|
-
|
|
10156
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
10157
|
-
:not(pre) > .\[\:not\(pre\)\>\&\]\:bg-surface1\/50 {
|
|
10158
|
-
background-color: color-mix(in oklab, var(--color-surface1) 50%, transparent);
|
|
10159
|
-
}
|
|
10160
|
-
}
|
|
10161
|
-
|
|
10162
|
-
:not(pre) > .\[\:not\(pre\)\>\&\]\:px-1 {
|
|
10163
|
-
padding-inline: var(--spacing-1);
|
|
10164
|
-
}
|
|
10165
|
-
|
|
10166
|
-
:not(pre) > .\[\:not\(pre\)\>\&\]\:py-0\.5 {
|
|
10167
|
-
padding-block: var(--spacing-0_5);
|
|
10168
|
-
}
|
|
10169
|
-
|
|
10170
10077
|
[data-sidebar-mobile="false"] .\[\[data-sidebar-mobile\=\'false\'\]_\&\]\:hidden {
|
|
10171
10078
|
display: none;
|
|
10172
10079
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/playground-ui",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "48.0.
|
|
4
|
+
"version": "48.1.0-alpha.1",
|
|
5
5
|
"description": "Mastra Playground components",
|
|
6
6
|
"sideEffects": [
|
|
7
7
|
"**/*.css"
|
|
@@ -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.39.
|
|
154
|
-
"@mastra/react": "1.4.
|
|
153
|
+
"@mastra/client-js": "^1.39.1-alpha.1",
|
|
154
|
+
"@mastra/react": "1.4.3-alpha.1"
|
|
155
155
|
},
|
|
156
156
|
"devDependencies": {
|
|
157
157
|
"@storybook/addon-a11y": "^10.4.1",
|
|
@@ -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.122",
|
|
193
|
-
"@mastra/client-js": "^1.39.
|
|
194
|
-
"@mastra/
|
|
195
|
-
"@mastra/
|
|
196
|
-
"@mastra/react": "1.4.
|
|
193
|
+
"@mastra/client-js": "^1.39.1-alpha.1",
|
|
194
|
+
"@mastra/core": "1.59.0-alpha.1",
|
|
195
|
+
"@mastra/memory": "1.26.2-alpha.0",
|
|
196
|
+
"@mastra/react": "1.4.3-alpha.1"
|
|
197
197
|
},
|
|
198
198
|
"homepage": "https://mastra.ai",
|
|
199
199
|
"repository": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"copy-button-B1GWIQ-x.js","sources":["../src/ds/components/CopyButton/copy-button.tsx"],"sourcesContent":["import { CopyIcon, CheckIcon } from 'lucide-react';\nimport { useState } from 'react';\n\nimport type { ButtonProps } from '../Button';\nimport { Button } from '../Button';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { useCopyToClipboard } from '@/hooks/use-copy-to-clipboard';\n\nexport type CopyButtonProps = {\n content: string;\n copyMessage?: string;\n tooltip?: string;\n className?: string;\n size?: ButtonProps['size'];\n variant?: ButtonProps['variant'];\n};\n\nexport function CopyButton({\n content,\n copyMessage,\n tooltip = 'Copy to clipboard',\n size = 'sm',\n variant,\n className,\n}: CopyButtonProps) {\n const [copied, setCopied] = useState(false);\n const { handleCopy: originalHandleCopy } = useCopyToClipboard({\n text: content,\n copyMessage,\n });\n\n const handleCopy = () => {\n originalHandleCopy();\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n };\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n onClick={handleCopy}\n type=\"button\"\n size={size}\n variant={variant}\n className={className}\n aria-label={copied ? 'Copied!' : tooltip}\n >\n {copied ? <CheckIcon /> : <CopyIcon />}\n </Button>\n </TooltipTrigger>\n <TooltipContent>{copied ? 'Copied!' : tooltip}</TooltipContent>\n </Tooltip>\n );\n}\n"],"names":[],"mappings":";;;;;;;AAiBO,SAAS,UAAA,CAAW;AAAA,EACzB,OAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA,GAAU,mBAAA;AAAA,EACV,IAAA,GAAO,IAAA;AAAA,EACP,OAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,EAAE,UAAA,EAAY,kBAAA,EAAmB,GAAI,kBAAA,CAAmB;AAAA,IAC5D,IAAA,EAAM,OAAA;AAAA,IACN;AAAA,GACD,CAAA;AAED,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,kBAAA,EAAmB;AACnB,IAAA,SAAA,CAAU,IAAI,CAAA;AACd,IAAA,UAAA,CAAW,MAAM,SAAA,CAAU,KAAK,CAAA,EAAG,GAAI,CAAA;AAAA,EACzC,CAAA;AAEA,EAAA,4BACG,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,SAAO,IAAA,EACrB,QAAA,kBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,UAAA;AAAA,QACT,IAAA,EAAK,QAAA;AAAA,QACL,IAAA;AAAA,QACA,OAAA;AAAA,QACA,SAAA;AAAA,QACA,YAAA,EAAY,SAAS,SAAA,GAAY,OAAA;AAAA,QAEhC,QAAA,EAAA,MAAA,mBAAS,GAAA,CAAC,SAAA,EAAA,EAAU,CAAA,uBAAM,QAAA,EAAA,EAAS;AAAA;AAAA,KACtC,EACF,CAAA;AAAA,oBACA,GAAA,CAAC,cAAA,EAAA,EAAgB,QAAA,EAAA,MAAA,GAAS,SAAA,GAAY,OAAA,EAAQ;AAAA,GAAA,EAChD,CAAA;AAEJ;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"copy-button-DwZ3c7D4.cjs","sources":["../src/ds/components/CopyButton/copy-button.tsx"],"sourcesContent":["import { CopyIcon, CheckIcon } from 'lucide-react';\nimport { useState } from 'react';\n\nimport type { ButtonProps } from '../Button';\nimport { Button } from '../Button';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { useCopyToClipboard } from '@/hooks/use-copy-to-clipboard';\n\nexport type CopyButtonProps = {\n content: string;\n copyMessage?: string;\n tooltip?: string;\n className?: string;\n size?: ButtonProps['size'];\n variant?: ButtonProps['variant'];\n};\n\nexport function CopyButton({\n content,\n copyMessage,\n tooltip = 'Copy to clipboard',\n size = 'sm',\n variant,\n className,\n}: CopyButtonProps) {\n const [copied, setCopied] = useState(false);\n const { handleCopy: originalHandleCopy } = useCopyToClipboard({\n text: content,\n copyMessage,\n });\n\n const handleCopy = () => {\n originalHandleCopy();\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n };\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n onClick={handleCopy}\n type=\"button\"\n size={size}\n variant={variant}\n className={className}\n aria-label={copied ? 'Copied!' : tooltip}\n >\n {copied ? <CheckIcon /> : <CopyIcon />}\n </Button>\n </TooltipTrigger>\n <TooltipContent>{copied ? 'Copied!' : tooltip}</TooltipContent>\n </Tooltip>\n );\n}\n"],"names":["tooltip","useState","useCopyToClipboard","Tooltip","jsx","TooltipTrigger","Button","CheckIcon","CopyIcon","TooltipContent"],"mappings":";;;;;;;;;AAiBO,SAAS,UAAA,CAAW;AAAA,EACzB,OAAA;AAAA,EACA,WAAA;AAAA,WACAA,SAAA,GAAU,mBAAA;AAAA,EACV,IAAA,GAAO,IAAA;AAAA,EACP,OAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIC,eAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,EAAE,UAAA,EAAY,kBAAA,EAAmB,GAAIC,2CAAA,CAAmB;AAAA,IAC5D,IAAA,EAAM,OAAA;AAAA,IACN;AAAA,GACD,CAAA;AAED,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,kBAAA,EAAmB;AACnB,IAAA,SAAA,CAAU,IAAI,CAAA;AACd,IAAA,UAAA,CAAW,MAAM,SAAA,CAAU,KAAK,CAAA,EAAG,GAAI,CAAA;AAAA,EACzC,CAAA;AAEA,EAAA,uCACGC,eAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAC,cAAA,CAACC,sBAAA,EAAA,EAAe,SAAO,IAAA,EACrB,QAAA,kBAAAD,cAAA;AAAA,MAACE,aAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,UAAA;AAAA,QACT,IAAA,EAAK,QAAA;AAAA,QACL,IAAA;AAAA,QACA,OAAA;AAAA,QACA,SAAA;AAAA,QACA,YAAA,EAAY,SAAS,SAAA,GAAYN,SAAA;AAAA,QAEhC,QAAA,EAAA,MAAA,mBAASI,cAAA,CAACG,qBAAA,EAAA,EAAU,CAAA,kCAAMC,oBAAA,EAAA,EAAS;AAAA;AAAA,KACtC,EACF,CAAA;AAAA,oBACAJ,cAAA,CAACK,sBAAA,EAAA,EAAgB,QAAA,EAAA,MAAA,GAAS,SAAA,GAAYT,SAAA,EAAQ;AAAA,GAAA,EAChD,CAAA;AAEJ;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"highlight-C2uRVhiA.cjs","sources":["../src/ds/components/CodeEditor/highlight.ts"],"sourcesContent":["import type { HighlighterCore, ThemedToken } from 'shiki/core';\n\n/**\n * Languages we support for syntax highlighting in code blocks. Kept in sync\n * with the CodeMirror `codeLanguages` set. Using fine-grained Shiki imports\n * (rather than the full `shiki` bundle) means only these grammars are bundled,\n * instead of a chunk for every language Shiki knows about.\n */\nconst langAliases: Record<string, string> = {\n js: 'javascript',\n javascript: 'javascript',\n mjs: 'javascript',\n cjs: 'javascript',\n node: 'javascript',\n ts: 'typescript',\n typescript: 'typescript',\n mts: 'typescript',\n cts: 'typescript',\n tsx: 'tsx',\n jsx: 'jsx',\n json: 'json',\n json5: 'json',\n md: 'markdown',\n markdown: 'markdown',\n py: 'python',\n python: 'python',\n sh: 'bash',\n bash: 'bash',\n shell: 'bash',\n zsh: 'bash',\n};\n\nlet highlighterPromise: Promise<HighlighterCore> | null = null;\n\nfunction getHighlighter(): Promise<HighlighterCore> {\n if (!highlighterPromise) {\n highlighterPromise = (async () => {\n const [{ createHighlighterCore }, { createJavaScriptRegexEngine }] = await Promise.all([\n import('shiki/core'),\n import('shiki/engine/javascript'),\n ]);\n\n return createHighlighterCore({\n themes: [import('shiki/themes/github-light.mjs'), import('shiki/themes/github-dark.mjs')],\n langs: [\n import('shiki/langs/javascript.mjs'),\n import('shiki/langs/typescript.mjs'),\n import('shiki/langs/tsx.mjs'),\n import('shiki/langs/jsx.mjs'),\n import('shiki/langs/json.mjs'),\n import('shiki/langs/bash.mjs'),\n import('shiki/langs/markdown.mjs'),\n import('shiki/langs/python.mjs'),\n ],\n engine: createJavaScriptRegexEngine(),\n });\n })();\n }\n\n return highlighterPromise;\n}\n\nexport async function highlight(code: string, language: string): Promise<ThemedToken[][] | null> {\n const lang = langAliases[language?.toLowerCase()];\n if (!lang) return null;\n\n const highlighter = await getHighlighter();\n\n const { tokens } = highlighter.codeToTokens(code, {\n lang,\n defaultColor: false,\n themes: {\n light: 'github-light',\n dark: 'github-dark',\n },\n });\n\n return tokens;\n}\n"],"names":[],"mappings":";;AAQA,MAAM,WAAA,GAAsC;AAAA,EAC1C,EAAA,EAAI,YAAA;AAAA,EACJ,UAAA,EAAY,YAAA;AAAA,EACZ,GAAA,EAAK,YAAA;AAAA,EACL,GAAA,EAAK,YAAA;AAAA,EACL,IAAA,EAAM,YAAA;AAAA,EACN,EAAA,EAAI,YAAA;AAAA,EACJ,UAAA,EAAY,YAAA;AAAA,EACZ,GAAA,EAAK,YAAA;AAAA,EACL,GAAA,EAAK,YAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO,MAAA;AAAA,EACP,EAAA,EAAI,UAAA;AAAA,EACJ,QAAA,EAAU,UAAA;AAAA,EACV,EAAA,EAAI,QAAA;AAAA,EACJ,MAAA,EAAQ,QAAA;AAAA,EACR,EAAA,EAAI,MAAA;AAAA,EACJ,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO,MAAA;AAAA,EACP,GAAA,EAAK;AACP,CAAA;AAEA,IAAI,kBAAA,GAAsD,IAAA;AAE1D,SAAS,cAAA,GAA2C;AAClD,EAAA,IAAI,CAAC,kBAAA,EAAoB;AACvB,IAAA,kBAAA,GAAA,CAAsB,YAAY;AAChC,MAAA,MAAM,CAAC,EAAE,qBAAA,EAAsB,EAAG,EAAE,6BAA6B,CAAA,GAAI,MAAM,OAAA,CAAQ,GAAA,CAAI;AAAA,QACrF,OAAO,YAAY,CAAA;AAAA,QACnB,OAAO,yBAAyB;AAAA,OACjC,CAAA;AAED,MAAA,OAAO,qBAAA,CAAsB;AAAA,QAC3B,QAAQ,CAAC,OAAO,+BAA+B,CAAA,EAAG,OAAO,8BAA8B,CAAC,CAAA;AAAA,QACxF,KAAA,EAAO;AAAA,UACL,OAAO,4BAA4B,CAAA;AAAA,UACnC,OAAO,4BAA4B,CAAA;AAAA,UACnC,OAAO,qBAAqB,CAAA;AAAA,UAC5B,OAAO,qBAAqB,CAAA;AAAA,UAC5B,OAAO,sBAAsB,CAAA;AAAA,UAC7B,OAAO,sBAAsB,CAAA;AAAA,UAC7B,OAAO,0BAA0B,CAAA;AAAA,UACjC,OAAO,wBAAwB;AAAA,SACjC;AAAA,QACA,QAAQ,2BAAA;AAA4B,OACrC,CAAA;AAAA,IACH,CAAA,GAAG;AAAA,EACL;AAEA,EAAA,OAAO,kBAAA;AACT;AAEA,eAAsB,SAAA,CAAU,MAAc,QAAA,EAAmD;AAC/F,EAAA,MAAM,IAAA,GAAO,WAAA,CAAY,QAAA,EAAU,WAAA,EAAa,CAAA;AAChD,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,EAAA,MAAM,WAAA,GAAc,MAAM,cAAA,EAAe;AAEzC,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,WAAA,CAAY,aAAa,IAAA,EAAM;AAAA,IAChD,IAAA;AAAA,IACA,YAAA,EAAc,KAAA;AAAA,IACd,MAAA,EAAQ;AAAA,MACN,KAAA,EAAO,cAAA;AAAA,MACP,IAAA,EAAM;AAAA;AACR,GACD,CAAA;AAED,EAAA,OAAO,MAAA;AACT;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"highlight-Dis62bkj.js","sources":["../src/ds/components/CodeEditor/highlight.ts"],"sourcesContent":["import type { HighlighterCore, ThemedToken } from 'shiki/core';\n\n/**\n * Languages we support for syntax highlighting in code blocks. Kept in sync\n * with the CodeMirror `codeLanguages` set. Using fine-grained Shiki imports\n * (rather than the full `shiki` bundle) means only these grammars are bundled,\n * instead of a chunk for every language Shiki knows about.\n */\nconst langAliases: Record<string, string> = {\n js: 'javascript',\n javascript: 'javascript',\n mjs: 'javascript',\n cjs: 'javascript',\n node: 'javascript',\n ts: 'typescript',\n typescript: 'typescript',\n mts: 'typescript',\n cts: 'typescript',\n tsx: 'tsx',\n jsx: 'jsx',\n json: 'json',\n json5: 'json',\n md: 'markdown',\n markdown: 'markdown',\n py: 'python',\n python: 'python',\n sh: 'bash',\n bash: 'bash',\n shell: 'bash',\n zsh: 'bash',\n};\n\nlet highlighterPromise: Promise<HighlighterCore> | null = null;\n\nfunction getHighlighter(): Promise<HighlighterCore> {\n if (!highlighterPromise) {\n highlighterPromise = (async () => {\n const [{ createHighlighterCore }, { createJavaScriptRegexEngine }] = await Promise.all([\n import('shiki/core'),\n import('shiki/engine/javascript'),\n ]);\n\n return createHighlighterCore({\n themes: [import('shiki/themes/github-light.mjs'), import('shiki/themes/github-dark.mjs')],\n langs: [\n import('shiki/langs/javascript.mjs'),\n import('shiki/langs/typescript.mjs'),\n import('shiki/langs/tsx.mjs'),\n import('shiki/langs/jsx.mjs'),\n import('shiki/langs/json.mjs'),\n import('shiki/langs/bash.mjs'),\n import('shiki/langs/markdown.mjs'),\n import('shiki/langs/python.mjs'),\n ],\n engine: createJavaScriptRegexEngine(),\n });\n })();\n }\n\n return highlighterPromise;\n}\n\nexport async function highlight(code: string, language: string): Promise<ThemedToken[][] | null> {\n const lang = langAliases[language?.toLowerCase()];\n if (!lang) return null;\n\n const highlighter = await getHighlighter();\n\n const { tokens } = highlighter.codeToTokens(code, {\n lang,\n defaultColor: false,\n themes: {\n light: 'github-light',\n dark: 'github-dark',\n },\n });\n\n return tokens;\n}\n"],"names":[],"mappings":"AAQA,MAAM,WAAA,GAAsC;AAAA,EAC1C,EAAA,EAAI,YAAA;AAAA,EACJ,UAAA,EAAY,YAAA;AAAA,EACZ,GAAA,EAAK,YAAA;AAAA,EACL,GAAA,EAAK,YAAA;AAAA,EACL,IAAA,EAAM,YAAA;AAAA,EACN,EAAA,EAAI,YAAA;AAAA,EACJ,UAAA,EAAY,YAAA;AAAA,EACZ,GAAA,EAAK,YAAA;AAAA,EACL,GAAA,EAAK,YAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO,MAAA;AAAA,EACP,EAAA,EAAI,UAAA;AAAA,EACJ,QAAA,EAAU,UAAA;AAAA,EACV,EAAA,EAAI,QAAA;AAAA,EACJ,MAAA,EAAQ,QAAA;AAAA,EACR,EAAA,EAAI,MAAA;AAAA,EACJ,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO,MAAA;AAAA,EACP,GAAA,EAAK;AACP,CAAA;AAEA,IAAI,kBAAA,GAAsD,IAAA;AAE1D,SAAS,cAAA,GAA2C;AAClD,EAAA,IAAI,CAAC,kBAAA,EAAoB;AACvB,IAAA,kBAAA,GAAA,CAAsB,YAAY;AAChC,MAAA,MAAM,CAAC,EAAE,qBAAA,EAAsB,EAAG,EAAE,6BAA6B,CAAA,GAAI,MAAM,OAAA,CAAQ,GAAA,CAAI;AAAA,QACrF,OAAO,YAAY,CAAA;AAAA,QACnB,OAAO,yBAAyB;AAAA,OACjC,CAAA;AAED,MAAA,OAAO,qBAAA,CAAsB;AAAA,QAC3B,QAAQ,CAAC,OAAO,+BAA+B,CAAA,EAAG,OAAO,8BAA8B,CAAC,CAAA;AAAA,QACxF,KAAA,EAAO;AAAA,UACL,OAAO,4BAA4B,CAAA;AAAA,UACnC,OAAO,4BAA4B,CAAA;AAAA,UACnC,OAAO,qBAAqB,CAAA;AAAA,UAC5B,OAAO,qBAAqB,CAAA;AAAA,UAC5B,OAAO,sBAAsB,CAAA;AAAA,UAC7B,OAAO,sBAAsB,CAAA;AAAA,UAC7B,OAAO,0BAA0B,CAAA;AAAA,UACjC,OAAO,wBAAwB;AAAA,SACjC;AAAA,QACA,QAAQ,2BAAA;AAA4B,OACrC,CAAA;AAAA,IACH,CAAA,GAAG;AAAA,EACL;AAEA,EAAA,OAAO,kBAAA;AACT;AAEA,eAAsB,SAAA,CAAU,MAAc,QAAA,EAAmD;AAC/F,EAAA,MAAM,IAAA,GAAO,WAAA,CAAY,QAAA,EAAU,WAAA,EAAa,CAAA;AAChD,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,EAAA,MAAM,WAAA,GAAc,MAAM,cAAA,EAAe;AAEzC,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,WAAA,CAAY,aAAa,IAAA,EAAM;AAAA,IAChD,IAAA;AAAA,IACA,YAAA,EAAc,KAAA;AAAA,IACd,MAAA,EAAQ;AAAA,MACN,KAAA,EAAO,cAAA;AAAA,MACP,IAAA,EAAM;AAAA;AACR,GACD,CAAA;AAED,EAAA,OAAO,MAAA;AACT;;;;"}
|