@mastra/playground-ui 40.0.0 → 40.0.1-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.
Files changed (35) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/components/ScatterPlotChart.cjs.js +163 -6
  3. package/dist/components/ScatterPlotChart.cjs.js.map +1 -1
  4. package/dist/components/ScatterPlotChart.es.js +162 -1
  5. package/dist/components/ScatterPlotChart.es.js.map +1 -1
  6. package/dist/ee/signals/components/signal-details-page.cjs.js +66 -157
  7. package/dist/ee/signals/components/signal-details-page.cjs.js.map +1 -1
  8. package/dist/ee/signals/components/signal-details-page.es.js +68 -158
  9. package/dist/ee/signals/components/signal-details-page.es.js.map +1 -1
  10. package/dist/ee/signals/components.cjs.js +1 -2
  11. package/dist/ee/signals/components.cjs.js.map +1 -1
  12. package/dist/ee/signals/components.es.js +1 -1
  13. package/dist/ee/signals/hooks/use-entity-learning.cjs.js +0 -17
  14. package/dist/ee/signals/hooks/use-entity-learning.cjs.js.map +1 -1
  15. package/dist/ee/signals/hooks/use-entity-learning.es.js +1 -17
  16. package/dist/ee/signals/hooks/use-entity-learning.es.js.map +1 -1
  17. package/dist/ee/signals/hooks.cjs.js +0 -1
  18. package/dist/ee/signals/hooks.cjs.js.map +1 -1
  19. package/dist/ee/signals/hooks.es.js +1 -1
  20. package/dist/ee/signals/services/entity-learning-service.cjs.js +0 -10
  21. package/dist/ee/signals/services/entity-learning-service.cjs.js.map +1 -1
  22. package/dist/ee/signals/services/entity-learning-service.es.js +0 -10
  23. package/dist/ee/signals/services/entity-learning-service.es.js.map +1 -1
  24. package/dist/ee/signals.cjs.js +1 -3
  25. package/dist/ee/signals.cjs.js.map +1 -1
  26. package/dist/ee/signals.es.js +2 -2
  27. package/dist/src/ee/signals/components/signal-details-page.d.ts +3 -16
  28. package/dist/src/ee/signals/hooks/use-entity-learning.d.ts +1 -3
  29. package/dist/src/ee/signals/services/entity-learning-service.d.ts +1 -8
  30. package/dist/src/ee/signals/services/entity-learning-types.d.ts +0 -13
  31. package/package.json +6 -6
  32. package/dist/scatter-plot-chart-B3hfFMKS.js +0 -163
  33. package/dist/scatter-plot-chart-B3hfFMKS.js.map +0 -1
  34. package/dist/scatter-plot-chart-CFZO31md.cjs +0 -169
  35. package/dist/scatter-plot-chart-CFZO31md.cjs.map +0 -1
@@ -1,169 +0,0 @@
1
- 'use strict';
2
-
3
- const jsxRuntime = require('react/jsx-runtime');
4
- const recharts = require('recharts');
5
- const spacings = require('./spacings-BP8L49kn.cjs');
6
- const utils_cn = require('./cn-vA5sWo9W.cjs');
7
-
8
- function ScatterPlotChartTooltip({
9
- active,
10
- payload,
11
- xKey,
12
- yKey,
13
- nameKey,
14
- formatX,
15
- formatY,
16
- formatTooltipLabel
17
- }) {
18
- const point = payload?.[0]?.payload;
19
- if (!active || !point) return null;
20
- const label = formatTooltipLabel?.(point) ?? (nameKey ? point[nameKey] : void 0);
21
- const xValue = point[xKey];
22
- const yValue = point[yKey];
23
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-md border border-border1 bg-surface2 px-3 py-2 text-xs shadow-lg", children: [
24
- label !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 font-medium text-icon6", children: String(label) }),
25
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-1 text-icon2", children: [
26
- /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
27
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-neutral3", children: "X:" }),
28
- " ",
29
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono", children: formatX ? formatX(xValue, point) : String(xValue) })
30
- ] }),
31
- /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
32
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-neutral3", children: "Y:" }),
33
- " ",
34
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono", children: formatY ? formatY(yValue, point) : String(yValue) })
35
- ] })
36
- ] })
37
- ] });
38
- }
39
-
40
- function getScatterPlotPointColor(point, colorKey) {
41
- const color = colorKey ? point[colorKey] : void 0;
42
- return typeof color === "string" && color.length > 0 ? color : spacings.Colors.accent3;
43
- }
44
- function getScatterPlotClickedPoint(payload) {
45
- return payload?.payload;
46
- }
47
- function formatScatterPlotAxisTick(value, formatter) {
48
- return (formatter?.(value, {}) ?? String(value)).replace(/\s+/g, " ");
49
- }
50
-
51
- const LABEL_COLOR = "#a1a1aa";
52
- const DEFAULT_POINT_SIZE = 48;
53
- const CHART_MARGIN = { top: 16, right: 16, bottom: 16, left: 16 };
54
- function ScatterPlotChart({
55
- data,
56
- xKey,
57
- yKey,
58
- nameKey,
59
- colorKey,
60
- height = 210,
61
- xLabel,
62
- yLabel,
63
- xDomain,
64
- yDomain,
65
- formatX,
66
- formatY,
67
- formatTooltipLabel,
68
- onPointClick,
69
- className
70
- }) {
71
- const isClickable = typeof onPointClick === "function";
72
- const fillsContainer = height === "100%";
73
- if (data.length === 0) {
74
- return /* @__PURE__ */ jsxRuntime.jsx(
75
- "div",
76
- {
77
- className: utils_cn.cn(
78
- "flex items-center justify-center rounded-md border border-border1 text-ui-sm text-neutral3",
79
- className
80
- ),
81
- style: { height },
82
- children: "No data to display"
83
- }
84
- );
85
- }
86
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: utils_cn.cn(fillsContainer && "flex h-full min-h-0 flex-col", className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: utils_cn.cn(fillsContainer && "min-h-0 flex-1"), style: { height: fillsContainer ? void 0 : height }, children: /* @__PURE__ */ jsxRuntime.jsx(recharts.ResponsiveContainer, { width: "100%", height: "100%", children: /* @__PURE__ */ jsxRuntime.jsxs(recharts.ScatterChart, { data, margin: CHART_MARGIN, children: [
87
- /* @__PURE__ */ jsxRuntime.jsx(recharts.CartesianGrid, { stroke: spacings.Colors.neutral3, strokeDasharray: "4 4", strokeOpacity: 0.18, vertical: false }),
88
- /* @__PURE__ */ jsxRuntime.jsx(
89
- recharts.XAxis,
90
- {
91
- dataKey: xKey,
92
- name: xLabel,
93
- type: "number",
94
- tick: { fontSize: 10, fill: LABEL_COLOR, fontFamily: "var(--font-mono)" },
95
- tickLine: false,
96
- axisLine: false,
97
- domain: xDomain,
98
- tickFormatter: (value) => formatScatterPlotAxisTick(value, formatX)
99
- }
100
- ),
101
- /* @__PURE__ */ jsxRuntime.jsx(
102
- recharts.YAxis,
103
- {
104
- dataKey: yKey,
105
- name: yLabel,
106
- type: "number",
107
- tick: { fontSize: 10, fill: LABEL_COLOR, fontFamily: "var(--font-mono)" },
108
- tickLine: false,
109
- axisLine: false,
110
- width: 44,
111
- domain: yDomain,
112
- tickFormatter: (value) => formatScatterPlotAxisTick(value, formatY)
113
- }
114
- ),
115
- /* @__PURE__ */ jsxRuntime.jsx(recharts.ZAxis, { range: [DEFAULT_POINT_SIZE, DEFAULT_POINT_SIZE] }),
116
- /* @__PURE__ */ jsxRuntime.jsx(
117
- recharts.Tooltip,
118
- {
119
- cursor: { stroke: spacings.Colors.neutral3, strokeOpacity: 0.16 },
120
- content: /* @__PURE__ */ jsxRuntime.jsx(
121
- ScatterPlotChartTooltip,
122
- {
123
- xKey,
124
- yKey,
125
- nameKey,
126
- formatX,
127
- formatY,
128
- formatTooltipLabel
129
- }
130
- )
131
- }
132
- ),
133
- /* @__PURE__ */ jsxRuntime.jsx(
134
- recharts.Scatter,
135
- {
136
- data,
137
- fill: spacings.Colors.accent3,
138
- shape: (props) => {
139
- const point = props.payload ?? {};
140
- const cx = props.cx;
141
- const cy = props.cy;
142
- if (typeof cx !== "number" || typeof cy !== "number") return /* @__PURE__ */ jsxRuntime.jsx("g", {});
143
- return /* @__PURE__ */ jsxRuntime.jsx(
144
- "circle",
145
- {
146
- cx,
147
- cy,
148
- r: 4,
149
- fill: getScatterPlotPointColor(point, colorKey),
150
- opacity: 0.9,
151
- style: { cursor: isClickable ? "pointer" : void 0 }
152
- }
153
- );
154
- },
155
- onClick: (_, payload) => {
156
- const point = getScatterPlotClickedPoint(payload);
157
- if (point) onPointClick?.(point);
158
- }
159
- }
160
- )
161
- ] }) }) }) });
162
- }
163
-
164
- exports.ScatterPlotChart = ScatterPlotChart;
165
- exports.ScatterPlotChartTooltip = ScatterPlotChartTooltip;
166
- exports.formatScatterPlotAxisTick = formatScatterPlotAxisTick;
167
- exports.getScatterPlotClickedPoint = getScatterPlotClickedPoint;
168
- exports.getScatterPlotPointColor = getScatterPlotPointColor;
169
- //# sourceMappingURL=scatter-plot-chart-CFZO31md.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scatter-plot-chart-CFZO31md.cjs","sources":["../src/ds/components/ScatterPlotChart/scatter-plot-chart-tooltip.tsx","../src/ds/components/ScatterPlotChart/scatter-plot-chart-utils.ts","../src/ds/components/ScatterPlotChart/scatter-plot-chart.tsx"],"sourcesContent":["import type { ScatterPlotChartFormatter } from './scatter-plot-chart';\n\ntype ScatterTooltipPayload = Array<{\n color?: string;\n payload?: Record<string, unknown>;\n}>;\n\nexport function ScatterPlotChartTooltip({\n active,\n payload,\n xKey,\n yKey,\n nameKey,\n formatX,\n formatY,\n formatTooltipLabel,\n}: {\n active?: boolean;\n payload?: ScatterTooltipPayload;\n xKey: string;\n yKey: string;\n nameKey?: string;\n formatX?: ScatterPlotChartFormatter;\n formatY?: ScatterPlotChartFormatter;\n formatTooltipLabel?: (point: Record<string, unknown>) => string;\n}) {\n const point = payload?.[0]?.payload;\n if (!active || !point) return null;\n\n const label = formatTooltipLabel?.(point) ?? (nameKey ? point[nameKey] : undefined);\n const xValue = point[xKey];\n const yValue = point[yKey];\n\n return (\n <div className=\"rounded-md border border-border1 bg-surface2 px-3 py-2 text-xs shadow-lg\">\n {label !== undefined && <p className=\"mb-1 font-medium text-icon6\">{String(label)}</p>}\n <div className=\"grid gap-1 text-icon2\">\n <p>\n <span className=\"text-neutral3\">X:</span>{' '}\n <span className=\"font-mono\">{formatX ? formatX(xValue, point) : String(xValue)}</span>\n </p>\n <p>\n <span className=\"text-neutral3\">Y:</span>{' '}\n <span className=\"font-mono\">{formatY ? formatY(yValue, point) : String(yValue)}</span>\n </p>\n </div>\n </div>\n );\n}\n","import type { ScatterPlotChartFormatter } from './scatter-plot-chart';\nimport { Colors } from '@/ds/tokens';\n\nexport function getScatterPlotPointColor(point: Record<string, unknown>, colorKey?: string) {\n const color = colorKey ? point[colorKey] : undefined;\n return typeof color === 'string' && color.length > 0 ? color : Colors.accent3;\n}\n\nexport function getScatterPlotClickedPoint(payload: unknown) {\n return (payload as { payload?: Record<string, unknown> } | undefined)?.payload;\n}\n\nexport function formatScatterPlotAxisTick(value: unknown, formatter?: ScatterPlotChartFormatter) {\n return (formatter?.(value, {}) ?? String(value)).replace(/\\s+/g, '\\u00A0');\n}\n","import { CartesianGrid, ResponsiveContainer, Scatter, ScatterChart, Tooltip, XAxis, YAxis, ZAxis } from 'recharts';\nimport { ScatterPlotChartTooltip } from './scatter-plot-chart-tooltip';\nimport {\n formatScatterPlotAxisTick,\n getScatterPlotClickedPoint,\n getScatterPlotPointColor,\n} from './scatter-plot-chart-utils';\nimport { Colors } from '@/ds/tokens';\nimport { cn } from '@/lib/utils';\n\nconst LABEL_COLOR = '#a1a1aa';\nconst DEFAULT_POINT_SIZE = 48;\nconst CHART_MARGIN = { top: 16, right: 16, bottom: 16, left: 16 };\n\nexport type ScatterPlotChartDomain = [number | 'auto', number | 'auto'];\nexport type ScatterPlotChartFormatter = (value: unknown, point: Record<string, unknown>) => string;\nexport type ScatterPlotChartPointClickHandler = (point: Record<string, unknown>) => void;\n\nexport type ScatterPlotChartProps = {\n data: Array<Record<string, unknown>>;\n xKey: string;\n yKey: string;\n nameKey?: string;\n colorKey?: string;\n height?: React.CSSProperties['height'];\n xLabel?: string;\n yLabel?: string;\n xDomain?: ScatterPlotChartDomain;\n yDomain?: ScatterPlotChartDomain;\n formatX?: ScatterPlotChartFormatter;\n formatY?: ScatterPlotChartFormatter;\n formatTooltipLabel?: (point: Record<string, unknown>) => string;\n onPointClick?: ScatterPlotChartPointClickHandler;\n className?: string;\n};\n\nexport function ScatterPlotChart({\n data,\n xKey,\n yKey,\n nameKey,\n colorKey,\n height = 210,\n xLabel,\n yLabel,\n xDomain,\n yDomain,\n formatX,\n formatY,\n formatTooltipLabel,\n onPointClick,\n className,\n}: ScatterPlotChartProps) {\n const isClickable = typeof onPointClick === 'function';\n const fillsContainer = height === '100%';\n\n if (data.length === 0) {\n return (\n <div\n className={cn(\n 'flex items-center justify-center rounded-md border border-border1 text-ui-sm text-neutral3',\n className,\n )}\n style={{ height }}\n >\n No data to display\n </div>\n );\n }\n\n return (\n <div className={cn(fillsContainer && 'flex h-full min-h-0 flex-col', className)}>\n <div className={cn(fillsContainer && 'min-h-0 flex-1')} style={{ height: fillsContainer ? undefined : height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <ScatterChart data={data} margin={CHART_MARGIN}>\n <CartesianGrid stroke={Colors.neutral3} strokeDasharray=\"4 4\" strokeOpacity={0.18} vertical={false} />\n <XAxis\n dataKey={xKey}\n name={xLabel}\n type=\"number\"\n tick={{ fontSize: 10, fill: LABEL_COLOR, fontFamily: 'var(--font-mono)' }}\n tickLine={false}\n axisLine={false}\n domain={xDomain}\n tickFormatter={value => formatScatterPlotAxisTick(value, formatX)}\n />\n <YAxis\n dataKey={yKey}\n name={yLabel}\n type=\"number\"\n tick={{ fontSize: 10, fill: LABEL_COLOR, fontFamily: 'var(--font-mono)' }}\n tickLine={false}\n axisLine={false}\n width={44}\n domain={yDomain}\n tickFormatter={value => formatScatterPlotAxisTick(value, formatY)}\n />\n <ZAxis range={[DEFAULT_POINT_SIZE, DEFAULT_POINT_SIZE]} />\n <Tooltip\n cursor={{ stroke: Colors.neutral3, strokeOpacity: 0.16 }}\n content={\n <ScatterPlotChartTooltip\n xKey={xKey}\n yKey={yKey}\n nameKey={nameKey}\n formatX={formatX}\n formatY={formatY}\n formatTooltipLabel={formatTooltipLabel}\n />\n }\n />\n <Scatter\n data={data}\n fill={Colors.accent3}\n shape={(props: unknown) => {\n const point = (props as { payload?: Record<string, unknown> }).payload ?? {};\n const cx = (props as { cx?: number }).cx;\n const cy = (props as { cy?: number }).cy;\n if (typeof cx !== 'number' || typeof cy !== 'number') return <g />;\n return (\n <circle\n cx={cx}\n cy={cy}\n r={4}\n fill={getScatterPlotPointColor(point, colorKey)}\n opacity={0.9}\n style={{ cursor: isClickable ? 'pointer' : undefined }}\n />\n );\n }}\n onClick={(_: unknown, payload: unknown) => {\n const point = getScatterPlotClickedPoint(payload);\n if (point) onPointClick?.(point);\n }}\n />\n </ScatterChart>\n </ResponsiveContainer>\n </div>\n </div>\n );\n}\n"],"names":["jsxs","jsx","Colors","cn","ResponsiveContainer","ScatterChart","CartesianGrid","XAxis","YAxis","ZAxis","Tooltip","Scatter"],"mappings":"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"}