@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 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
- ### Horizontal Bars
37
+ #### Layout
38
38
 
39
- To render horizontal bars, set the `layout` prop to `"horizontal"`. In this layout, the Y axis becomes the categorical axis and the X axis becomes the value axis.
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 MonthlyGainsByAsset() {
91
- const ThinSolidLine = memo((props: SolidLineProps) => <SolidLine {...props} strokeWidth={1} />);
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={150}
105
- inset={{ top: 8, bottom: 8, left: 0, right: 0 }}
95
+ height={400}
106
96
  series={[
107
97
  {
108
- id: 'btc',
109
- data: [
110
- 345.82, 510.63, 280.19, 720.5, 655.37, 410.23, 580.96, 815.44, 740.18, 910.71, 975.02,
111
- 620.57,
112
- ],
113
- color: assets.btc.color,
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: 'eth',
117
- data: [
118
- 270.49, 425.21, 190.75, 680.91, 610.88, 350.67, 440.11, 780.08, 705.83, 840.26, 920.65,
119
- 550.93,
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
- GridLineComponent: ThinSolidLine,
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 MonthlyGainsByAsset() {
142
- const ThinSolidLine = memo((props: SolidLineProps) => <SolidLine {...props} strokeWidth={1} />);
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
- height={150}
156
- inset={{ top: 8, bottom: 8, left: 0, right: 0 }}
144
+ stacked
145
+ height={400}
157
146
  series={[
158
147
  {
159
- id: 'xrp',
160
- data: [
161
- 170.22, 340.34, 305.98, 225.39, 250.76, 130.53, 115.81, 195.04, 210.28, 60.42, 120.94,
162
- 85.12,
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: 'eth',
176
- data: [
177
- 270.49, 425.21, 190.75, 680.91, 610.88, 350.67, 440.11, 780.08, 705.83, 840.26, 920.65,
178
- 550.93,
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: 'btc',
184
- data: [
185
- 345.82, 510.63, 280.19, 720.5, 655.37, 410.23, 580.96, 815.44, 740.18, 910.71, 975.02,
186
- 620.57,
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
- stacked
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
- GridLineComponent: ThinSolidLine,
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 ThinSolidLine = memo((props: SolidLineProps) => <SolidLine {...props} strokeWidth={1} />);
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={150}
222
- inset={{ top: 8, bottom: 8, left: 0, right: 0 }}
192
+ height={400}
223
193
  series={[
224
194
  {
225
- id: 'xrp',
226
- data: [
227
- 170.22, 340.34, 305.98, 225.39, 250.76, 130.53, 115.81, 195.04, 210.28, 60.42, 120.94,
228
- 85.12,
229
- ],
230
- color: assets.xrp.color,
231
- stackId: 'shortTerm',
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: 'ltc',
235
- data: [
236
- 450.77, 615.33, 355.68, 880.15, 810.99, 520.46, 590.29, 960.52, 910.07, 1020.41, 851.89,
237
- 750.61,
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: 'eth',
244
- data: [
245
- 270.49, 425.21, 190.75, 680.91, 610.88, 350.67, 440.11, 780.08, 705.83, 840.26, 920.65,
246
- 550.93,
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: 'btc',
253
- data: [
254
- 345.82, 510.63, 280.19, 720.5, 655.37, 410.23, 580.96, 815.44, 740.18, 910.71, 975.02,
255
- 620.57,
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
- stacked
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
- GridLineComponent: ThinSolidLine,
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 MonthlyGainsByAsset() {
278
- const ThinSolidLine = memo((props: SolidLineProps) => <SolidLine {...props} strokeWidth={1} />);
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={150}
292
- inset={{ top: 8, bottom: 8, left: 0, right: 0 }}
256
+ height={400}
293
257
  series={[
294
258
  {
295
- id: 'xrp',
296
- data: [
297
- 170.22, 340.34, 305.98, 225.39, 250.76, 130.53, 115.81, 195.04, 210.28, 60.42, 120.94,
298
- 500,
299
- ],
300
- color: assets.xrp.color,
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: 'ltc',
304
- data: [
305
- 450.77, 615.33, 355.68, 880.15, 810.99, 520.46, 590.29, 960.52, 910.07, 1020.41, 851.89,
306
- 500,
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: 'eth',
312
- data: [
313
- 270.49, 425.21, 190.75, 680.91, 610.88, 350.67, 440.11, 780.08, 705.83, 840.26, 920.65,
314
- 500,
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: 'btc',
320
- data: [
321
- 345.82, 510.63, 280.19, 720.5, 655.37, 410.23, 580.96, 815.44, 740.18, 910.71, 975.02,
322
- 500,
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
- stacked
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
- GridLineComponent: ThinSolidLine,
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
- <BarChart
350
- stacked
351
- borderRadius={1000}
352
- height={300}
353
- maxWidth={400}
354
- padding={0}
355
- series={[
356
- { id: 'purple', data: [null, 6, 8, 10, 7, 6, 6, 8, 9, 12, 10, 4], color: '#b399ff' },
357
- { id: 'blue', data: [null, 10, 12, 11, 10, 9, 10, 11, 7, 4, 12, 18], color: '#4f7cff' },
358
- { id: 'cyan', data: [null, 7, 10, 12, 11, 10, 8, 11, 5, 12, 2, 9], color: '#00c2df' },
359
- {
360
- id: 'green',
361
- data: [10, null, null, null, 1, null, null, 6, null, null, null, null],
362
- color: '#33c481',
363
- },
364
- ]}
365
- showXAxis
366
- xAxis={{
367
- data: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
368
- tickLabelFormatter: (value) => {
369
- if (value === 'D') {
370
- return <Tspan style={{ fontWeight: 'bold' }}>{value}</TSpan>;
371
- }
372
- return value;
373
- },
374
- }}
375
- style={{ margin: '0 auto' }}
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
- <BarChart
385
- roundBaseline
386
- stacked
387
- borderRadius={1000}
388
- height={300}
389
- maxWidth={400}
390
- padding={0}
391
- series={[
392
- { id: 'purple', data: [null, 6, 8, 10, 7, 6, 6, 8, 9, 12, 10, 4], color: '#b399ff' },
393
- { id: 'blue', data: [null, 10, 12, 11, 10, 9, 10, 11, 7, 4, 12, 18], color: '#4f7cff' },
394
- { id: 'cyan', data: [null, 7, 10, 12, 11, 10, 8, 11, 5, 12, 2, 9], color: '#00c2df' },
395
- {
396
- id: 'green',
397
- data: [10, null, null, null, 1, null, null, 6, null, null, null, null],
398
- color: '#33c481',
399
- },
400
- ]}
401
- showXAxis
402
- xAxis={{
403
- data: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
404
- tickLabelFormatter: (value) => {
405
- if (value === 'D') {
406
- return <TSpan style={{ fontWeight: 'bold' }}>{value}</TSpan>;
407
- }
408
- return value;
409
- },
410
- }}
411
- style={{ margin: '0 auto' }}
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: '#b399ff' },
503
- { id: 'blue', data: blue, color: '#4f7cff' },
504
- { id: 'cyan', data: cyan, color: '#00c2df' },
505
- { id: 'green', data: green, color: '#33c481' },
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={403}
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.27,
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 |