@coinbase/cds-mcp-server 8.52.0 → 8.52.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/mcp-docs/mobile/components/AreaChart.txt +12 -222
- package/mcp-docs/mobile/components/BarChart.txt +222 -333
- package/mcp-docs/mobile/components/CartesianChart.txt +6 -3
- package/mcp-docs/mobile/components/Checkbox.txt +2 -2
- package/mcp-docs/mobile/components/Chip.txt +74 -29
- package/mcp-docs/mobile/components/LineChart.txt +54 -134
- package/mcp-docs/mobile/components/Point.txt +1 -0
- package/mcp-docs/mobile/components/Radio.txt +2 -2
- package/mcp-docs/mobile/components/Scrubber.txt +2 -1
- package/mcp-docs/mobile/components/XAxis.txt +54 -1
- package/mcp-docs/mobile/components/YAxis.txt +3 -1
- package/mcp-docs/mobile/routes.txt +1 -1
- package/mcp-docs/web/components/AreaChart.txt +26 -118
- package/mcp-docs/web/components/BarChart.txt +228 -116
- package/mcp-docs/web/components/CartesianChart.txt +6 -3
- package/mcp-docs/web/components/Checkbox.txt +2 -2
- package/mcp-docs/web/components/Chip.txt +74 -29
- package/mcp-docs/web/components/FocusTrap.txt +2 -1
- package/mcp-docs/web/components/FullscreenModal.txt +2 -2
- package/mcp-docs/web/components/FullscreenModalLayout.txt +2 -2
- package/mcp-docs/web/components/LineChart.txt +42 -2
- package/mcp-docs/web/components/Modal.txt +67 -2
- package/mcp-docs/web/components/Point.txt +1 -0
- package/mcp-docs/web/components/Radio.txt +2 -2
- package/mcp-docs/web/components/ReferenceLine.txt +1 -1
- package/mcp-docs/web/components/Scrubber.txt +2 -1
- package/mcp-docs/web/components/Tray.txt +69 -2
- package/mcp-docs/web/components/XAxis.txt +55 -2
- package/mcp-docs/web/components/YAxis.txt +4 -2
- package/mcp-docs/web/routes.txt +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,14 @@ All notable changes to this project will be documented in this file.
|
|
|
8
8
|
|
|
9
9
|
<!-- template-start -->
|
|
10
10
|
|
|
11
|
+
## 8.52.2 ((3/11/2026, 10:02 AM PST))
|
|
12
|
+
|
|
13
|
+
This is an artificial version bump with no new change.
|
|
14
|
+
|
|
15
|
+
## 8.52.1 ((3/11/2026, 09:52 AM PST))
|
|
16
|
+
|
|
17
|
+
This is an artificial version bump with no new change.
|
|
18
|
+
|
|
11
19
|
## 8.52.0 ((3/10/2026, 08:50 AM PST))
|
|
12
20
|
|
|
13
21
|
This is an artificial version bump with no new change.
|
|
@@ -145,233 +145,22 @@ You can have different area styles for each series.
|
|
|
145
145
|
|
|
146
146
|
### Animations
|
|
147
147
|
|
|
148
|
-
You can configure chart transitions using the `transitions` prop
|
|
149
|
-
|
|
150
|
-
#### Customized Transitions
|
|
151
|
-
|
|
152
|
-
You can pass in a custom spring or timing based transition to your chart for custom update animations. Use `CartesianChart` with `Area` and `Line` components directly to configure `transitions` per element.
|
|
148
|
+
You can configure chart transitions using the `transitions` prop.
|
|
153
149
|
|
|
154
150
|
```jsx
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
const maxDataOffset = 15000;
|
|
160
|
-
const minStepOffset = 2500;
|
|
161
|
-
const maxStepOffset = 10000;
|
|
162
|
-
const updateInterval = 500;
|
|
163
|
-
const seriesSpacing = 2000;
|
|
164
|
-
const myTransition = {
|
|
151
|
+
<AreaChart
|
|
152
|
+
{...props}
|
|
153
|
+
transitions={{
|
|
154
|
+
enter: { type: 'spring', stiffness: 700, damping: 80 },
|
|
165
155
|
update: { type: 'spring', stiffness: 700, damping: 20 },
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
const seriesConfig = [
|
|
169
|
-
{ id: 'red', label: 'Red', color: `rgb(${theme.spectrum.red40})` },
|
|
170
|
-
{ id: 'orange', label: 'Orange', color: `rgb(${theme.spectrum.orange40})` },
|
|
171
|
-
{ id: 'yellow', label: 'Yellow', color: `rgb(${theme.spectrum.yellow40})` },
|
|
172
|
-
{ id: 'green', label: 'Green', color: `rgb(${theme.spectrum.green40})` },
|
|
173
|
-
{ id: 'blue', label: 'Blue', color: `rgb(${theme.spectrum.blue40})` },
|
|
174
|
-
{ id: 'indigo', label: 'Indigo', color: `rgb(${theme.spectrum.indigo40})` },
|
|
175
|
-
{ id: 'purple', label: 'Purple', color: `rgb(${theme.spectrum.purple40})` },
|
|
176
|
-
];
|
|
177
|
-
|
|
178
|
-
const domainLimit = maxDataOffset + seriesConfig.length * seriesSpacing;
|
|
179
|
-
|
|
180
|
-
function generateNextValue(previousValue) {
|
|
181
|
-
const range = maxStepOffset - minStepOffset;
|
|
182
|
-
const offset = Math.random() * range + minStepOffset;
|
|
183
|
-
|
|
184
|
-
let direction;
|
|
185
|
-
if (previousValue >= maxDataOffset) {
|
|
186
|
-
direction = -1;
|
|
187
|
-
} else if (previousValue <= minYValue) {
|
|
188
|
-
direction = 1;
|
|
189
|
-
} else {
|
|
190
|
-
direction = Math.random() < 0.5 ? -1 : 1;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
let newValue = previousValue + offset * direction;
|
|
194
|
-
newValue = Math.max(minYValue, Math.min(maxDataOffset, newValue));
|
|
195
|
-
return newValue;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
function generateInitialData() {
|
|
199
|
-
const data = [];
|
|
200
|
-
|
|
201
|
-
let previousValue = minYValue + Math.random() * (maxDataOffset - minYValue);
|
|
202
|
-
data.push(previousValue);
|
|
203
|
-
|
|
204
|
-
for (let i = 1; i < dataCount; i++) {
|
|
205
|
-
const newValue = generateNextValue(previousValue);
|
|
206
|
-
data.push(newValue);
|
|
207
|
-
previousValue = newValue;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
return data;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
const MemoizedDottedArea = memo((props) => (
|
|
214
|
-
<DottedArea {...props} baselineOpacity={1} peakOpacity={1} />
|
|
215
|
-
));
|
|
216
|
-
|
|
217
|
-
function AnimatedChart() {
|
|
218
|
-
const [data, setData] = useState(generateInitialData);
|
|
219
|
-
|
|
220
|
-
useEffect(() => {
|
|
221
|
-
const intervalId = setInterval(() => {
|
|
222
|
-
setData((currentData) => {
|
|
223
|
-
const lastValue = currentData[currentData.length - 1] ?? 0;
|
|
224
|
-
const newValue = generateNextValue(lastValue);
|
|
225
|
-
|
|
226
|
-
return [...currentData.slice(1), newValue];
|
|
227
|
-
});
|
|
228
|
-
}, updateInterval);
|
|
229
|
-
|
|
230
|
-
return () => clearInterval(intervalId);
|
|
231
|
-
}, []);
|
|
232
|
-
|
|
233
|
-
const series = seriesConfig.map((config, index) => ({
|
|
234
|
-
id: config.id,
|
|
235
|
-
label: config.label,
|
|
236
|
-
color: config.color,
|
|
237
|
-
data: index === 0 ? data : Array(dataCount).fill(seriesSpacing),
|
|
238
|
-
}));
|
|
239
|
-
|
|
240
|
-
return (
|
|
241
|
-
<AreaChart
|
|
242
|
-
stacked
|
|
243
|
-
height={300}
|
|
244
|
-
series={series}
|
|
245
|
-
type="dotted"
|
|
246
|
-
showLines
|
|
247
|
-
AreaComponent={MemoizedDottedArea}
|
|
248
|
-
transition={myTransition.update}
|
|
249
|
-
inset={0}
|
|
250
|
-
showYAxis
|
|
251
|
-
yAxis={{
|
|
252
|
-
showGrid: true,
|
|
253
|
-
width: 0,
|
|
254
|
-
tickLabelFormatter: () => '',
|
|
255
|
-
domain: { min: 0, max: domainLimit },
|
|
256
|
-
}}
|
|
257
|
-
/>
|
|
258
|
-
);
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
return <AnimatedChart />;
|
|
262
|
-
}
|
|
156
|
+
}}
|
|
157
|
+
/>
|
|
263
158
|
```
|
|
264
159
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
You can also disable animations by setting the `animate` prop to `false`.
|
|
160
|
+
Also, you can toggle animations by setting `animate` to `true` or `false`.
|
|
268
161
|
|
|
269
162
|
```jsx
|
|
270
|
-
|
|
271
|
-
const theme = useTheme();
|
|
272
|
-
const dataCount = 20;
|
|
273
|
-
const minYValue = 5000;
|
|
274
|
-
const maxDataOffset = 15000;
|
|
275
|
-
const minStepOffset = 2500;
|
|
276
|
-
const maxStepOffset = 10000;
|
|
277
|
-
const updateInterval = 500;
|
|
278
|
-
const seriesSpacing = 2000;
|
|
279
|
-
|
|
280
|
-
const seriesConfig = [
|
|
281
|
-
{ id: 'red', label: 'Red', color: `rgb(${theme.spectrum.red40})` },
|
|
282
|
-
{ id: 'orange', label: 'Orange', color: `rgb(${theme.spectrum.orange40})` },
|
|
283
|
-
{ id: 'yellow', label: 'Yellow', color: `rgb(${theme.spectrum.yellow40})` },
|
|
284
|
-
{ id: 'green', label: 'Green', color: `rgb(${theme.spectrum.green40})` },
|
|
285
|
-
{ id: 'blue', label: 'Blue', color: `rgb(${theme.spectrum.blue40})` },
|
|
286
|
-
{ id: 'indigo', label: 'Indigo', color: `rgb(${theme.spectrum.indigo40})` },
|
|
287
|
-
{ id: 'purple', label: 'Purple', color: `rgb(${theme.spectrum.purple40})` },
|
|
288
|
-
];
|
|
289
|
-
|
|
290
|
-
const domainLimit = maxDataOffset + seriesConfig.length * seriesSpacing;
|
|
291
|
-
|
|
292
|
-
function generateNextValue(previousValue) {
|
|
293
|
-
const range = maxStepOffset - minStepOffset;
|
|
294
|
-
const offset = Math.random() * range + minStepOffset;
|
|
295
|
-
|
|
296
|
-
let direction;
|
|
297
|
-
if (previousValue >= maxDataOffset) {
|
|
298
|
-
direction = -1;
|
|
299
|
-
} else if (previousValue <= minYValue) {
|
|
300
|
-
direction = 1;
|
|
301
|
-
} else {
|
|
302
|
-
direction = Math.random() < 0.5 ? -1 : 1;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
let newValue = previousValue + offset * direction;
|
|
306
|
-
newValue = Math.max(minYValue, Math.min(maxDataOffset, newValue));
|
|
307
|
-
return newValue;
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
function generateInitialData() {
|
|
311
|
-
const data = [];
|
|
312
|
-
|
|
313
|
-
let previousValue = minYValue + Math.random() * (maxDataOffset - minYValue);
|
|
314
|
-
data.push(previousValue);
|
|
315
|
-
|
|
316
|
-
for (let i = 1; i < dataCount; i++) {
|
|
317
|
-
const newValue = generateNextValue(previousValue);
|
|
318
|
-
data.push(newValue);
|
|
319
|
-
previousValue = newValue;
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
return data;
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
const MemoizedDottedArea = memo((props) => (
|
|
326
|
-
<DottedArea {...props} baselineOpacity={1} peakOpacity={1} />
|
|
327
|
-
));
|
|
328
|
-
|
|
329
|
-
function AnimatedChart() {
|
|
330
|
-
const [data, setData] = useState(generateInitialData);
|
|
331
|
-
|
|
332
|
-
useEffect(() => {
|
|
333
|
-
const intervalId = setInterval(() => {
|
|
334
|
-
setData((currentData) => {
|
|
335
|
-
const lastValue = currentData[currentData.length - 1] ?? 0;
|
|
336
|
-
const newValue = generateNextValue(lastValue);
|
|
337
|
-
|
|
338
|
-
return [...currentData.slice(1), newValue];
|
|
339
|
-
});
|
|
340
|
-
}, updateInterval);
|
|
341
|
-
|
|
342
|
-
return () => clearInterval(intervalId);
|
|
343
|
-
}, []);
|
|
344
|
-
|
|
345
|
-
const series = seriesConfig.map((config, index) => ({
|
|
346
|
-
id: config.id,
|
|
347
|
-
label: config.label,
|
|
348
|
-
color: config.color,
|
|
349
|
-
data: index === 0 ? data : Array(dataCount).fill(seriesSpacing),
|
|
350
|
-
}));
|
|
351
|
-
|
|
352
|
-
return (
|
|
353
|
-
<AreaChart
|
|
354
|
-
animate={false}
|
|
355
|
-
stacked
|
|
356
|
-
height={300}
|
|
357
|
-
series={series}
|
|
358
|
-
type="dotted"
|
|
359
|
-
showLines
|
|
360
|
-
AreaComponent={MemoizedDottedArea}
|
|
361
|
-
inset={0}
|
|
362
|
-
showYAxis
|
|
363
|
-
yAxis={{
|
|
364
|
-
showGrid: true,
|
|
365
|
-
width: 0,
|
|
366
|
-
tickLabelFormatter: () => '',
|
|
367
|
-
domain: { min: 0, max: domainLimit },
|
|
368
|
-
}}
|
|
369
|
-
/>
|
|
370
|
-
);
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
return <AnimatedChart />;
|
|
374
|
-
}
|
|
163
|
+
<AreaChart {...props} animate={false} />
|
|
375
164
|
```
|
|
376
165
|
|
|
377
166
|
### Gradients
|
|
@@ -673,6 +462,7 @@ function XAxisGradient() {
|
|
|
673
462
|
| `inset` | `number \| Partial<ChartInset>` | No | `-` | Inset around the entire chart (outside the axes). |
|
|
674
463
|
| `justifyContent` | `flex-start \| flex-end \| center \| space-between \| space-around \| space-evenly` | No | `-` | - |
|
|
675
464
|
| `key` | `Key \| null` | No | `-` | - |
|
|
465
|
+
| `layout` | `horizontal \| vertical` | No | `'vertical'` | Chart layout - describes the direction bars/areas grow. - vertical (default): Bars grow vertically. X is category axis, Y is value axis. - horizontal: Bars grow horizontally. Y is category axis, X is value axis. |
|
|
676
466
|
| `left` | `string \| number` | No | `-` | - |
|
|
677
467
|
| `legend` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | Whether to show the legend or a custom legend element. - true renders the default Legend component - A React element renders that element as the legend - false or omitted hides the legend |
|
|
678
468
|
| `legendAccessibilityLabel` | `string` | No | `'Legend'` | Accessibility label for the legend group. |
|
|
@@ -737,8 +527,8 @@ function XAxisGradient() {
|
|
|
737
527
|
| `type` | `solid \| dotted \| gradient` | No | `'solid'` | The type of area to render. |
|
|
738
528
|
| `userSelect` | `none \| auto \| text \| contain \| all` | No | `-` | - |
|
|
739
529
|
| `width` | `string \| number` | No | `-` | - |
|
|
740
|
-
| `xAxis` | `(Partial<
|
|
741
|
-
| `yAxis` | `(Partial<
|
|
530
|
+
| `xAxis` | `(Partial<CartesianAxisConfigProps> & AxisBaseProps & { GridLineComponent?: LineComponent; LineComponent?: LineComponent \| undefined; TickMarkLineComponent?: LineComponent \| undefined; tickLabelFormatter?: ((value: number) => ChartTextChildren) \| undefined; TickLabelComponent?: AxisTickLabelComponent \| undefined; } & { axisId?: string \| undefined; position?: top \| bottom \| undefined; height?: number \| undefined; }) \| undefined` | No | `-` | Configuration for x-axis. Accepts axis config and axis props. To show the axis, set showXAxis to true. |
|
|
531
|
+
| `yAxis` | `(Partial<CartesianAxisConfigProps> & AxisBaseProps & { GridLineComponent?: LineComponent; LineComponent?: LineComponent \| undefined; TickMarkLineComponent?: LineComponent \| undefined; tickLabelFormatter?: ((value: number) => ChartTextChildren) \| undefined; TickLabelComponent?: AxisTickLabelComponent \| undefined; } & { axisId?: string \| undefined; position?: left \| right \| undefined; width?: number \| undefined; }) \| undefined` | No | `-` | Configuration for y-axis. Accepts axis config and axis props. To show the axis, set showYAxis to true. |
|
|
742
532
|
| `zIndex` | `number` | No | `-` | - |
|
|
743
533
|
|
|
744
534
|
|