@coinbase/cds-mcp-server 8.56.1 → 8.57.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 +8 -0
- package/mcp-docs/mobile/components/BarChart.txt +235 -223
- package/mcp-docs/mobile/components/DateInput.txt +43 -1
- package/mcp-docs/mobile/components/DatePicker.txt +2 -1
- package/mcp-docs/mobile/components/SearchInput.txt +22 -0
- package/mcp-docs/mobile/components/TextInput.txt +15 -7
- package/mcp-docs/web/components/BarChart.txt +192 -282
- package/mcp-docs/web/components/DateInput.txt +43 -1
- package/mcp-docs/web/components/DatePicker.txt +2 -1
- package/mcp-docs/web/components/SearchInput.txt +15 -2
- package/mcp-docs/web/components/TextInput.txt +15 -7
- 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.57.1 ((3/24/2026, 01:14 PM PST))
|
|
12
|
+
|
|
13
|
+
This is an artificial version bump with no new change.
|
|
14
|
+
|
|
15
|
+
## 8.57.0 ((3/24/2026, 12:46 PM PST))
|
|
16
|
+
|
|
17
|
+
This is an artificial version bump with no new change.
|
|
18
|
+
|
|
11
19
|
## 8.56.1 ((3/24/2026, 08:39 AM PST))
|
|
12
20
|
|
|
13
21
|
This is an artificial version bump with no new change.
|
|
@@ -34,9 +34,9 @@ To start, pass in a series of data to the chart.
|
|
|
34
34
|
/>
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
#### Layout
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
You can set `layout` to `horizontal` to render the chart horizontally.
|
|
40
40
|
|
|
41
41
|
```jsx
|
|
42
42
|
function HorizontalBars() {
|
|
@@ -87,46 +87,44 @@ function HorizontalBars() {
|
|
|
87
87
|
You can also provide multiple series of data to the chart. Series will have their bars for each data point rendered side by side.
|
|
88
88
|
|
|
89
89
|
```tsx
|
|
90
|
-
function
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
const tickFormatter = useCallback(
|
|
94
|
-
(amount) =>
|
|
95
|
-
new Intl.NumberFormat('en-US', {
|
|
96
|
-
style: 'currency',
|
|
97
|
-
currency: 'USD',
|
|
98
|
-
}).format(amount),
|
|
99
|
-
[],
|
|
100
|
-
);
|
|
90
|
+
function MultipleSeries() {
|
|
91
|
+
const theme = useTheme();
|
|
101
92
|
|
|
102
93
|
return (
|
|
103
94
|
<BarChart
|
|
104
|
-
height={
|
|
105
|
-
inset={{ top: 8, bottom: 8, left: 0, right: 0 }}
|
|
95
|
+
height={400}
|
|
106
96
|
series={[
|
|
107
97
|
{
|
|
108
|
-
id: '
|
|
109
|
-
data: [
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
98
|
+
id: 'series1',
|
|
99
|
+
data: [5, 1, 3],
|
|
100
|
+
color: `rgb(${theme.spectrum.blue40})`,
|
|
101
|
+
label: 'Series 1',
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
id: 'series2',
|
|
105
|
+
data: [2, 4, 6],
|
|
106
|
+
color: `rgb(${theme.spectrum.yellow40})`,
|
|
107
|
+
label: 'Series 2',
|
|
114
108
|
},
|
|
115
109
|
{
|
|
116
|
-
id: '
|
|
117
|
-
data: [
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
],
|
|
121
|
-
color: assets.eth.color,
|
|
110
|
+
id: 'series3',
|
|
111
|
+
data: [1, 2, 3],
|
|
112
|
+
color: `rgb(${theme.spectrum.red40})`,
|
|
113
|
+
label: 'Series 3',
|
|
122
114
|
},
|
|
123
115
|
]}
|
|
116
|
+
legend
|
|
117
|
+
showXAxis
|
|
124
118
|
showYAxis
|
|
119
|
+
xAxis={{
|
|
120
|
+
data: ['Group A', 'Group B', 'Group C'],
|
|
121
|
+
showLine: true,
|
|
122
|
+
showTickMarks: true,
|
|
123
|
+
}}
|
|
125
124
|
yAxis={{
|
|
125
|
+
showLine: true,
|
|
126
126
|
showGrid: true,
|
|
127
|
-
|
|
128
|
-
tickLabelFormatter: tickFormatter,
|
|
129
|
-
width: 70,
|
|
127
|
+
showTickMarks: true,
|
|
130
128
|
}}
|
|
131
129
|
/>
|
|
132
130
|
);
|
|
@@ -138,63 +136,45 @@ function MonthlyGainsByAsset() {
|
|
|
138
136
|
You can also configure stacking for your chart using the `stacked` prop.
|
|
139
137
|
|
|
140
138
|
```tsx
|
|
141
|
-
function
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
const tickFormatter = useCallback(
|
|
145
|
-
(amount) =>
|
|
146
|
-
new Intl.NumberFormat('en-US', {
|
|
147
|
-
style: 'currency',
|
|
148
|
-
currency: 'USD',
|
|
149
|
-
}).format(amount),
|
|
150
|
-
[],
|
|
151
|
-
);
|
|
139
|
+
function StackedBars() {
|
|
140
|
+
const theme = useTheme();
|
|
152
141
|
|
|
153
142
|
return (
|
|
154
143
|
<BarChart
|
|
155
|
-
|
|
156
|
-
|
|
144
|
+
stacked
|
|
145
|
+
height={400}
|
|
157
146
|
series={[
|
|
158
147
|
{
|
|
159
|
-
id: '
|
|
160
|
-
data: [
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
],
|
|
164
|
-
color: assets.xrp.color,
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
id: 'ltc',
|
|
168
|
-
data: [
|
|
169
|
-
450.77, 615.33, 355.68, 880.15, 810.99, 520.46, 590.29, 960.52, 910.07, 1020.41, 851.89,
|
|
170
|
-
750.61,
|
|
171
|
-
],
|
|
172
|
-
color: assets.ltc.color,
|
|
148
|
+
id: 'series1',
|
|
149
|
+
data: [5, 1, 3, 3, 0, 2, 1],
|
|
150
|
+
color: `rgb(${theme.spectrum.blue40})`,
|
|
151
|
+
label: 'Series 1',
|
|
173
152
|
},
|
|
174
153
|
{
|
|
175
|
-
id: '
|
|
176
|
-
data: [
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
],
|
|
180
|
-
color: assets.eth.color,
|
|
154
|
+
id: 'series2',
|
|
155
|
+
data: [2, 4, 6, 0, 3, 1, 2],
|
|
156
|
+
color: `rgb(${theme.spectrum.yellow40})`,
|
|
157
|
+
label: 'Series 2',
|
|
181
158
|
},
|
|
182
159
|
{
|
|
183
|
-
id: '
|
|
184
|
-
data: [
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
],
|
|
188
|
-
color: assets.btc.color,
|
|
160
|
+
id: 'series3',
|
|
161
|
+
data: [1, 2, 3, 1, 0, 2, 3],
|
|
162
|
+
color: `rgb(${theme.spectrum.red40})`,
|
|
163
|
+
label: 'Series 3',
|
|
189
164
|
},
|
|
190
165
|
]}
|
|
191
|
-
|
|
166
|
+
legend
|
|
167
|
+
showXAxis
|
|
192
168
|
showYAxis
|
|
169
|
+
xAxis={{
|
|
170
|
+
data: ['Group A', 'Group B', 'Group C', 'Group D', 'Group E', 'Group F', 'Group G'],
|
|
171
|
+
showLine: true,
|
|
172
|
+
showTickMarks: true,
|
|
173
|
+
}}
|
|
193
174
|
yAxis={{
|
|
175
|
+
showLine: true,
|
|
194
176
|
showGrid: true,
|
|
195
|
-
|
|
196
|
-
tickLabelFormatter: tickFormatter,
|
|
197
|
-
width: 70,
|
|
177
|
+
showTickMarks: true,
|
|
198
178
|
}}
|
|
199
179
|
/>
|
|
200
180
|
);
|
|
@@ -205,66 +185,60 @@ You can also configure multiple stacks by setting the `stackId` prop on each ser
|
|
|
205
185
|
|
|
206
186
|
```tsx
|
|
207
187
|
function MonthlyGainsMultipleStacks() {
|
|
208
|
-
const
|
|
209
|
-
|
|
210
|
-
const tickFormatter = useCallback(
|
|
211
|
-
(amount) =>
|
|
212
|
-
new Intl.NumberFormat('en-US', {
|
|
213
|
-
style: 'currency',
|
|
214
|
-
currency: 'USD',
|
|
215
|
-
}).format(amount),
|
|
216
|
-
[],
|
|
217
|
-
);
|
|
188
|
+
const theme = useTheme();
|
|
218
189
|
|
|
219
190
|
return (
|
|
220
191
|
<BarChart
|
|
221
|
-
height={
|
|
222
|
-
inset={{ top: 8, bottom: 8, left: 0, right: 0 }}
|
|
192
|
+
height={400}
|
|
223
193
|
series={[
|
|
224
194
|
{
|
|
225
|
-
id: '
|
|
226
|
-
data: [
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
195
|
+
id: 'series1',
|
|
196
|
+
data: [5, 1, 3],
|
|
197
|
+
color: `rgb(${theme.spectrum.blue40})`,
|
|
198
|
+
stackId: 'stack1',
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
id: 'series2',
|
|
202
|
+
data: [2, 4, 6],
|
|
203
|
+
color: `rgb(${theme.spectrum.yellow40})`,
|
|
204
|
+
stackId: 'stack1',
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
id: 'series3',
|
|
208
|
+
data: [1, 2, 3],
|
|
209
|
+
color: `rgb(${theme.spectrum.red40})`,
|
|
210
|
+
stackId: 'stack1',
|
|
232
211
|
},
|
|
233
212
|
{
|
|
234
|
-
id: '
|
|
235
|
-
data: [
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
],
|
|
239
|
-
color: assets.ltc.color,
|
|
240
|
-
stackId: 'shortTerm',
|
|
213
|
+
id: 'series4',
|
|
214
|
+
data: [3, 0, 2],
|
|
215
|
+
color: `rgb(${theme.spectrum.purple40})`,
|
|
216
|
+
stackId: 'stack2',
|
|
241
217
|
},
|
|
242
218
|
{
|
|
243
|
-
id: '
|
|
244
|
-
data: [
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
],
|
|
248
|
-
color: assets.eth.color,
|
|
249
|
-
stackId: 'longTerm',
|
|
219
|
+
id: 'series5',
|
|
220
|
+
data: [0, 3, 1],
|
|
221
|
+
color: `rgb(${theme.spectrum.teal40})`,
|
|
222
|
+
stackId: 'stack2',
|
|
250
223
|
},
|
|
251
224
|
{
|
|
252
|
-
id: '
|
|
253
|
-
data: [
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
],
|
|
257
|
-
color: assets.btc.color,
|
|
258
|
-
stackId: 'longTerm',
|
|
225
|
+
id: 'series6',
|
|
226
|
+
data: [1, 0, 2],
|
|
227
|
+
color: `rgb(${theme.spectrum.green40})`,
|
|
228
|
+
stackId: 'stack2',
|
|
259
229
|
},
|
|
260
230
|
]}
|
|
261
|
-
|
|
231
|
+
showXAxis
|
|
262
232
|
showYAxis
|
|
233
|
+
xAxis={{
|
|
234
|
+
data: ['Group A', 'Group B', 'Group C'],
|
|
235
|
+
showLine: true,
|
|
236
|
+
showTickMarks: true,
|
|
237
|
+
}}
|
|
263
238
|
yAxis={{
|
|
239
|
+
showLine: true,
|
|
264
240
|
showGrid: true,
|
|
265
|
-
|
|
266
|
-
tickLabelFormatter: tickFormatter,
|
|
267
|
-
width: 70,
|
|
241
|
+
showTickMarks: true,
|
|
268
242
|
}}
|
|
269
243
|
/>
|
|
270
244
|
);
|
|
@@ -274,65 +248,63 @@ function MonthlyGainsMultipleStacks() {
|
|
|
274
248
|
#### Stack Gap
|
|
275
249
|
|
|
276
250
|
```tsx
|
|
277
|
-
function
|
|
278
|
-
const
|
|
279
|
-
|
|
280
|
-
const tickFormatter = useCallback(
|
|
281
|
-
(amount) =>
|
|
282
|
-
new Intl.NumberFormat('en-US', {
|
|
283
|
-
style: 'currency',
|
|
284
|
-
currency: 'USD',
|
|
285
|
-
}).format(amount),
|
|
286
|
-
[],
|
|
287
|
-
);
|
|
251
|
+
function StackGap() {
|
|
252
|
+
const theme = useTheme();
|
|
288
253
|
|
|
289
254
|
return (
|
|
290
255
|
<BarChart
|
|
291
|
-
height={
|
|
292
|
-
inset={{ top: 8, bottom: 8, left: 0, right: 0 }}
|
|
256
|
+
height={400}
|
|
293
257
|
series={[
|
|
294
258
|
{
|
|
295
|
-
id: '
|
|
296
|
-
data: [
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
259
|
+
id: 'series1',
|
|
260
|
+
data: [5, 1, 3],
|
|
261
|
+
color: `rgb(${theme.spectrum.blue40})`,
|
|
262
|
+
stackId: 'stack1',
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
id: 'series2',
|
|
266
|
+
data: [2, 4, 6],
|
|
267
|
+
color: `rgb(${theme.spectrum.yellow40})`,
|
|
268
|
+
stackId: 'stack1',
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
id: 'series3',
|
|
272
|
+
data: [1, 2, 3],
|
|
273
|
+
color: `rgb(${theme.spectrum.red40})`,
|
|
274
|
+
stackId: 'stack1',
|
|
301
275
|
},
|
|
302
276
|
{
|
|
303
|
-
id: '
|
|
304
|
-
data: [
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
],
|
|
308
|
-
color: assets.ltc.color,
|
|
277
|
+
id: 'series4',
|
|
278
|
+
data: [3, 0, 2],
|
|
279
|
+
color: `rgb(${theme.spectrum.purple40})`,
|
|
280
|
+
stackId: 'stack2',
|
|
309
281
|
},
|
|
310
282
|
{
|
|
311
|
-
id: '
|
|
312
|
-
data: [
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
],
|
|
316
|
-
color: assets.eth.color,
|
|
283
|
+
id: 'series5',
|
|
284
|
+
data: [0, 3, 1],
|
|
285
|
+
color: `rgb(${theme.spectrum.teal40})`,
|
|
286
|
+
stackId: 'stack2',
|
|
317
287
|
},
|
|
318
288
|
{
|
|
319
|
-
id: '
|
|
320
|
-
data: [
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
],
|
|
324
|
-
color: assets.btc.color,
|
|
289
|
+
id: 'series6',
|
|
290
|
+
data: [1, 0, 2],
|
|
291
|
+
color: `rgb(${theme.spectrum.green40})`,
|
|
292
|
+
stackId: 'stack2',
|
|
325
293
|
},
|
|
326
294
|
]}
|
|
327
295
|
stackGap={4}
|
|
328
|
-
|
|
296
|
+
barMinSize={8}
|
|
297
|
+
showXAxis
|
|
329
298
|
showYAxis
|
|
299
|
+
xAxis={{
|
|
300
|
+
data: ['Group A', 'Group B', 'Group C'],
|
|
301
|
+
showLine: true,
|
|
302
|
+
showTickMarks: true,
|
|
303
|
+
}}
|
|
330
304
|
yAxis={{
|
|
305
|
+
showLine: true,
|
|
331
306
|
showGrid: true,
|
|
332
|
-
|
|
333
|
-
tickLabelFormatter: tickFormatter,
|
|
334
|
-
width: 70,
|
|
335
|
-
domainLimit: 'strict',
|
|
307
|
+
showTickMarks: true,
|
|
336
308
|
}}
|
|
337
309
|
/>
|
|
338
310
|
);
|
|
@@ -346,34 +318,53 @@ Bars have a default borderRadius of `4`. You can change this by setting the `bor
|
|
|
346
318
|
Stacks will only round the top corners of touching bars.
|
|
347
319
|
|
|
348
320
|
```jsx
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
321
|
+
function RoundedStacks() {
|
|
322
|
+
const theme = useTheme();
|
|
323
|
+
|
|
324
|
+
return (
|
|
325
|
+
<BarChart
|
|
326
|
+
stacked
|
|
327
|
+
borderRadius={1000}
|
|
328
|
+
height={300}
|
|
329
|
+
maxWidth={384}
|
|
330
|
+
padding={0}
|
|
331
|
+
series={[
|
|
332
|
+
{
|
|
333
|
+
id: 'purple',
|
|
334
|
+
data: [null, 6, 8, 10, 7, 6, 6, 8, 9, 12, 10, 4],
|
|
335
|
+
color: `rgb(${theme.spectrum.purple30})`,
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
id: 'blue',
|
|
339
|
+
data: [null, 10, 12, 11, 10, 9, 10, 11, 7, 4, 12, 18],
|
|
340
|
+
color: `rgb(${theme.spectrum.blue30})`,
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
id: 'cyan',
|
|
344
|
+
data: [null, 7, 10, 12, 11, 10, 8, 11, 5, 12, 2, 9],
|
|
345
|
+
color: `rgb(${theme.spectrum.teal30})`,
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
id: 'green',
|
|
349
|
+
data: [10, null, null, null, 1, null, null, 6, null, null, null, null],
|
|
350
|
+
color: `rgb(${theme.spectrum.green30})`,
|
|
351
|
+
},
|
|
352
|
+
]}
|
|
353
|
+
showXAxis
|
|
354
|
+
xAxis={{
|
|
355
|
+
data: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
|
|
356
|
+
tickLabelFormatter: (value) => {
|
|
357
|
+
if (value === 'D') {
|
|
358
|
+
return <TSpan style={{ fontWeight: 'bold' }}>{value}</TSpan>;
|
|
359
|
+
}
|
|
360
|
+
return value;
|
|
361
|
+
},
|
|
362
|
+
categoryPadding: 0.25,
|
|
363
|
+
}}
|
|
364
|
+
style={{ margin: '0 auto' }}
|
|
365
|
+
/>
|
|
366
|
+
);
|
|
367
|
+
}
|
|
377
368
|
```
|
|
378
369
|
|
|
379
370
|
#### Round Baseline
|
|
@@ -381,35 +372,56 @@ Stacks will only round the top corners of touching bars.
|
|
|
381
372
|
You can also round the baseline of the bars by setting the `roundBaseline` prop on the chart.
|
|
382
373
|
|
|
383
374
|
```jsx
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
375
|
+
function MonthlyRewards() {
|
|
376
|
+
const theme = useTheme();
|
|
377
|
+
const months = ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'];
|
|
378
|
+
|
|
379
|
+
return (
|
|
380
|
+
<BarChart
|
|
381
|
+
roundBaseline
|
|
382
|
+
stacked
|
|
383
|
+
borderRadius={1000}
|
|
384
|
+
height={300}
|
|
385
|
+
maxWidth={384}
|
|
386
|
+
inset={0}
|
|
387
|
+
series={[
|
|
388
|
+
{
|
|
389
|
+
id: 'purple',
|
|
390
|
+
data: [null, 6, 8, 10, 7, 6, 6, 8, 9, 12, 10, 4],
|
|
391
|
+
color: `rgb(${theme.spectrum.purple30})`,
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
id: 'blue',
|
|
395
|
+
data: [null, 10, 12, 11, 10, 9, 10, 11, 7, 4, 12, 18],
|
|
396
|
+
color: `rgb(${theme.spectrum.blue30})`,
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
id: 'cyan',
|
|
400
|
+
data: [null, 7, 10, 12, 11, 10, 8, 11, 5, 12, 2, 9],
|
|
401
|
+
color: `rgb(${theme.spectrum.teal30})`,
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
id: 'green',
|
|
405
|
+
data: [10, null, null, null, 1, null, null, 6, null, null, null, null],
|
|
406
|
+
color: `rgb(${theme.spectrum.green30})`,
|
|
407
|
+
},
|
|
408
|
+
]}
|
|
409
|
+
showXAxis
|
|
410
|
+
xAxis={{
|
|
411
|
+
data: months,
|
|
412
|
+
tickLabelFormatter: (value) => {
|
|
413
|
+
if (value === 11) {
|
|
414
|
+
return <TSpan style={{ fontWeight: 'bold' }}>{months[value]}</TSpan>;
|
|
415
|
+
}
|
|
416
|
+
return months[value];
|
|
417
|
+
},
|
|
418
|
+
categoryPadding: 0.25,
|
|
419
|
+
}}
|
|
420
|
+
stackMinSize={24}
|
|
421
|
+
style={{ margin: '0 auto' }}
|
|
422
|
+
/>
|
|
423
|
+
);
|
|
424
|
+
}
|
|
413
425
|
```
|
|
414
426
|
|
|
415
427
|
### Data
|
|
@@ -491,6 +503,7 @@ You can also use the `BarStackComponent` prop to render an empty circle for zero
|
|
|
491
503
|
|
|
492
504
|
```tsx
|
|
493
505
|
function MonthlyRewards() {
|
|
506
|
+
const theme = useTheme();
|
|
494
507
|
const months = ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'];
|
|
495
508
|
const currentMonth = 7;
|
|
496
509
|
const purple = [null, 6, 8, 10, 7, 6, 6, 8, null, null, null, null];
|
|
@@ -499,10 +512,10 @@ function MonthlyRewards() {
|
|
|
499
512
|
const green = [10, null, null, null, 1, null, null, 6, null, null, null, null];
|
|
500
513
|
|
|
501
514
|
const series = [
|
|
502
|
-
{ id: 'purple', data: purple, color:
|
|
503
|
-
{ id: 'blue', data: blue, color:
|
|
504
|
-
{ id: 'cyan', data: cyan, color:
|
|
505
|
-
{ id: 'green', data: green, color:
|
|
515
|
+
{ id: 'purple', data: purple, color: `rgb(${theme.spectrum.purple30})` },
|
|
516
|
+
{ id: 'blue', data: blue, color: `rgb(${theme.spectrum.blue30})` },
|
|
517
|
+
{ id: 'cyan', data: cyan, color: `rgb(${theme.spectrum.teal30})` },
|
|
518
|
+
{ id: 'green', data: green, color: `rgb(${theme.spectrum.green30})` },
|
|
506
519
|
];
|
|
507
520
|
|
|
508
521
|
const CustomBarStackComponent = ({ children, ...props }: BarStackComponentProps) => {
|
|
@@ -537,7 +550,7 @@ function MonthlyRewards() {
|
|
|
537
550
|
series={series}
|
|
538
551
|
showYAxis={false}
|
|
539
552
|
stackMinSize={3}
|
|
540
|
-
width={
|
|
553
|
+
width={384}
|
|
541
554
|
xAxis={{
|
|
542
555
|
tickLabelFormatter: (index) => {
|
|
543
556
|
if (index == currentMonth) {
|
|
@@ -545,7 +558,7 @@ function MonthlyRewards() {
|
|
|
545
558
|
}
|
|
546
559
|
return months[index];
|
|
547
560
|
},
|
|
548
|
-
categoryPadding: 0.
|
|
561
|
+
categoryPadding: 0.25,
|
|
549
562
|
}}
|
|
550
563
|
/>
|
|
551
564
|
);
|
|
@@ -623,7 +636,6 @@ There are two ways to control the spacing between bars. You can set the `barPadd
|
|
|
623
636
|
#### Minimum Size
|
|
624
637
|
|
|
625
638
|
To better emphasize small values, you can set the `stackMinSize` or `barMinSize` prop to control the minimum size for entire stacks or individual bar.
|
|
626
|
-
It is recommended to only use `stackMinSize` for stacked charts and `barMinSize` for non-stacked charts.
|
|
627
639
|
|
|
628
640
|
##### Minimum Stack Size
|
|
629
641
|
|
|
@@ -260,6 +260,47 @@ function Example() {
|
|
|
260
260
|
}
|
|
261
261
|
```
|
|
262
262
|
|
|
263
|
+
#### Borderless
|
|
264
|
+
|
|
265
|
+
For borderless DateInput usage, prefer adding a focus border with `focusedBorderWidth`.
|
|
266
|
+
If you need a fully borderless input (including focus), use that pattern with a TypeAhead
|
|
267
|
+
composition.
|
|
268
|
+
|
|
269
|
+
```jsx
|
|
270
|
+
function Example() {
|
|
271
|
+
const [defaultBorderlessDate, setDefaultBorderlessDate] = useState(null);
|
|
272
|
+
const [defaultBorderlessError, setDefaultBorderlessError] = useState(null);
|
|
273
|
+
const [focusBorderDate, setFocusBorderDate] = useState(null);
|
|
274
|
+
const [focusBorderError, setFocusBorderError] = useState(null);
|
|
275
|
+
|
|
276
|
+
return (
|
|
277
|
+
<VStack gap={3}>
|
|
278
|
+
<DateInput
|
|
279
|
+
bordered={false}
|
|
280
|
+
date={defaultBorderlessDate}
|
|
281
|
+
error={defaultBorderlessError}
|
|
282
|
+
helperText="Default borderless behavior with no focus border."
|
|
283
|
+
invalidDateError="Please enter a valid date"
|
|
284
|
+
label="Borderless date input"
|
|
285
|
+
onChangeDate={setDefaultBorderlessDate}
|
|
286
|
+
onErrorDate={setDefaultBorderlessError}
|
|
287
|
+
/>
|
|
288
|
+
<DateInput
|
|
289
|
+
bordered={false}
|
|
290
|
+
date={focusBorderDate}
|
|
291
|
+
error={focusBorderError}
|
|
292
|
+
focusedBorderWidth={200}
|
|
293
|
+
helperText="Set focusedBorderWidth to opt into a focus border."
|
|
294
|
+
invalidDateError="Please enter a valid date"
|
|
295
|
+
label="Borderless date input with focus border"
|
|
296
|
+
onChangeDate={setFocusBorderDate}
|
|
297
|
+
onErrorDate={setFocusBorderError}
|
|
298
|
+
/>
|
|
299
|
+
</VStack>
|
|
300
|
+
);
|
|
301
|
+
}
|
|
302
|
+
```
|
|
303
|
+
|
|
263
304
|
#### Helper text
|
|
264
305
|
|
|
265
306
|
```jsx
|
|
@@ -456,7 +497,7 @@ The DateInput fires events in a specific order:
|
|
|
456
497
|
| `autoFocus` | `boolean` | No | `-` | If true, focuses the input on componentDidMount. The default value is false. |
|
|
457
498
|
| `blurOnSubmit` | `boolean` | No | `-` | If true, the text field will blur when submitted. The default value is true. |
|
|
458
499
|
| `borderRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `200` | Leverage one of the borderRadius styles we offer to round the corners of the input. |
|
|
459
|
-
| `bordered` | `boolean` | No | `true` | Determines if the input should have a border |
|
|
500
|
+
| `bordered` | `boolean` | No | `true` | Determines if the input should have a border. When set to false, focus border styling is disabled by default. |
|
|
460
501
|
| `caretHidden` | `boolean` | No | `-` | If true, caret is hidden. The default value is false. |
|
|
461
502
|
| `clearButtonMode` | `never \| while-editing \| unless-editing \| always` | No | `-` | enum(never, while-editing, unless-editing, always) When the clear button should appear on the right side of the text view |
|
|
462
503
|
| `clearTextOnFocus` | `boolean` | No | `-` | If true, clears the text field automatically when editing begins |
|
|
@@ -473,6 +514,7 @@ The DateInput fires events in a specific order:
|
|
|
473
514
|
| `enablesReturnKeyAutomatically` | `boolean` | No | `-` | If true, the keyboard disables the return key when there is no text and automatically enables it when there is text. The default value is false. |
|
|
474
515
|
| `end` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | Adds content to the end of the inner input. Refer to diagram for location of endNode in InputStack component |
|
|
475
516
|
| `enterKeyHint` | `search \| done \| go \| next \| send \| previous \| enter` | No | `-` | Determines what text should be shown to the return key on virtual keyboards. Has precedence over the returnKeyType prop. |
|
|
517
|
+
| `focusedBorderWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `borderWidth` | Additional border width when focused. |
|
|
476
518
|
| `height` | `string \| number` | No | `-` | Height of input |
|
|
477
519
|
| `helperText` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | For cases where label is not enough information to describe what the text input is for. Can also be used for showing positive/negative messages |
|
|
478
520
|
| `helperTextErrorIconAccessibilityLabel` | `string` | No | `'error'` | Accessibility label for helper text error icon when variant=negative |
|