@coinbase/cds-mcp-server 8.47.0 → 8.47.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
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.47.2 ((2/19/2026, 03:18 PM PST))
|
|
12
|
+
|
|
13
|
+
This is an artificial version bump with no new change.
|
|
14
|
+
|
|
15
|
+
## 8.47.1 ((2/19/2026, 01:18 PM PST))
|
|
16
|
+
|
|
17
|
+
This is an artificial version bump with no new change.
|
|
18
|
+
|
|
11
19
|
## 8.47.0 ((2/19/2026, 08:05 AM PST))
|
|
12
20
|
|
|
13
21
|
This is an artificial version bump with no new change.
|
|
@@ -87,7 +87,12 @@ Use `mediaPlacement` to control the position of media content.
|
|
|
87
87
|
|
|
88
88
|
### Upsell Card Styles
|
|
89
89
|
|
|
90
|
-
MessagingCard with `type="upsell"` supports various background colors to match different promotional purposes. Use the `background` prop for semantic tokens
|
|
90
|
+
MessagingCard with `type="upsell"` supports various background colors to match different promotional purposes. Use the `background` prop for semantic tokens.
|
|
91
|
+
|
|
92
|
+
For **custom background colors**, use the recommended approach:
|
|
93
|
+
|
|
94
|
+
- **Non-interactive cards** (`renderAsPressable={false}` or omitted): set the background via `styles.root` (e.g. `styles={{ root: { backgroundColor: 'rgb(...)' } }}`).
|
|
95
|
+
- **Interactive cards** (`renderAsPressable` with `onPress`): set the background via `blendStyles.background` (e.g. `blendStyles={{ background: 'rgb(...)' }}`) so press states are handled correctly.
|
|
91
96
|
|
|
92
97
|
#### General Upsell
|
|
93
98
|
|
|
@@ -152,7 +157,7 @@ function FeatureUpsell() {
|
|
|
152
157
|
<MessagingCard
|
|
153
158
|
key={i}
|
|
154
159
|
type="upsell"
|
|
155
|
-
|
|
160
|
+
styles={{ root: { backgroundColor: card.bg } }}
|
|
156
161
|
title={
|
|
157
162
|
<Text color="fgInverse" font="headline">
|
|
158
163
|
Up to 3.29% APR on ETH
|
|
@@ -194,7 +199,7 @@ function CommunityUpsell() {
|
|
|
194
199
|
<MessagingCard
|
|
195
200
|
key={i}
|
|
196
201
|
type="upsell"
|
|
197
|
-
|
|
202
|
+
styles={{ root: { backgroundColor: card.bg } }}
|
|
198
203
|
title={
|
|
199
204
|
<Text color="fgInverse" font="headline">
|
|
200
205
|
Join the community
|
|
@@ -256,7 +261,7 @@ function ProductUpsell() {
|
|
|
256
261
|
<MessagingCard
|
|
257
262
|
key={card.title}
|
|
258
263
|
type="upsell"
|
|
259
|
-
|
|
264
|
+
styles={{ root: { backgroundColor: card.bg } }}
|
|
260
265
|
title={
|
|
261
266
|
<Text color="fgInverse" font="headline">
|
|
262
267
|
{card.title}
|
|
@@ -303,7 +308,7 @@ function NewsUpsell() {
|
|
|
303
308
|
<MessagingCard
|
|
304
309
|
key={i}
|
|
305
310
|
type="upsell"
|
|
306
|
-
|
|
311
|
+
styles={{ root: { backgroundColor: card.bg } }}
|
|
307
312
|
title={
|
|
308
313
|
<Text color="fgInverse" font="headline">
|
|
309
314
|
Help defend crypto in America
|
|
@@ -378,7 +383,7 @@ function DismissibleCards() {
|
|
|
378
383
|
<VStack gap={2}>
|
|
379
384
|
<MessagingCard
|
|
380
385
|
type="upsell"
|
|
381
|
-
|
|
386
|
+
styles={{ root: { backgroundColor: `rgb(${spectrum.teal70})` } }}
|
|
382
387
|
title="Dismissible Upsell"
|
|
383
388
|
description="Upsell card with dismiss button"
|
|
384
389
|
width={320}
|
|
@@ -578,8 +583,10 @@ function DismissibleCardsList() {
|
|
|
578
583
|
<MessagingCard
|
|
579
584
|
key={card.id}
|
|
580
585
|
type={card.type}
|
|
581
|
-
|
|
582
|
-
card.type === 'upsell'
|
|
586
|
+
styles={
|
|
587
|
+
card.type === 'upsell'
|
|
588
|
+
? { root: { backgroundColor: `rgb(${spectrum.gray100})` } }
|
|
589
|
+
: undefined
|
|
583
590
|
}
|
|
584
591
|
title={card.title}
|
|
585
592
|
description={card.description}
|
|
@@ -629,7 +636,7 @@ function InteractiveCards() {
|
|
|
629
636
|
renderAsPressable
|
|
630
637
|
onPress={() => console.log('Card pressed!')}
|
|
631
638
|
type="upsell"
|
|
632
|
-
|
|
639
|
+
blendStyles={{ background: `rgb(${spectrum.teal70})` }}
|
|
633
640
|
title="Interactive Upsell"
|
|
634
641
|
description="Tap to interact"
|
|
635
642
|
width={320}
|
|
@@ -757,7 +764,7 @@ function MultipleCards() {
|
|
|
757
764
|
renderAsPressable
|
|
758
765
|
onPress={() => console.log('clicked')}
|
|
759
766
|
type="upsell"
|
|
760
|
-
|
|
767
|
+
blendStyles={{ background: `rgb(${spectrum.purple70})` }}
|
|
761
768
|
title="Card 3"
|
|
762
769
|
description="Card with onPress handler"
|
|
763
770
|
tag="Action"
|
|
@@ -832,7 +839,7 @@ When you need both `onDismissButtonPress` and want the entire card to be pressab
|
|
|
832
839
|
|
|
833
840
|
#### Color Contrast
|
|
834
841
|
|
|
835
|
-
MessagingCard supports custom backgrounds via `background` and `
|
|
842
|
+
MessagingCard supports custom backgrounds via the `background` prop and, for custom colors, `styles.root` (non-interactive) or `blendStyles.background` (interactive). When using custom background colors, ensure sufficient color contrast between text and background:
|
|
836
843
|
|
|
837
844
|
- Use `fgInverse` text color with dark backgrounds (e.g., `accentBoldPurple`, `bgInverse`)
|
|
838
845
|
- Use `fg` text color with light backgrounds (e.g., `bgPrimaryWash`, `bgAlternate`)
|
|
@@ -87,7 +87,12 @@ Use `mediaPlacement` to control the position of media content.
|
|
|
87
87
|
|
|
88
88
|
### Upsell Card Styles
|
|
89
89
|
|
|
90
|
-
MessagingCard with `type="upsell"` supports various background colors to match different promotional purposes. Use the `background` prop for semantic tokens
|
|
90
|
+
MessagingCard with `type="upsell"` supports various background colors to match different promotional purposes. Use the `background` prop for semantic tokens.
|
|
91
|
+
|
|
92
|
+
For **custom background colors**, use the recommended approach:
|
|
93
|
+
|
|
94
|
+
- **Non-interactive cards** (default `as="article"` or `renderAsPressable={false}`): set the background via `styles.root` or `classNames.root` (e.g. `styles={{ root: { backgroundColor: 'rgb(var(--blue80))' } }}`).
|
|
95
|
+
- **Interactive cards** (`renderAsPressable` with `as="a"` or `as="button"`): set the background via `blendStyles.background` (e.g. `blendStyles={{ background: 'rgb(var(--blue80))' }}`) so press states are handled correctly.
|
|
91
96
|
|
|
92
97
|
#### General Upsell
|
|
93
98
|
|
|
@@ -142,7 +147,7 @@ function FeatureUpsell() {
|
|
|
142
147
|
<MessagingCard
|
|
143
148
|
key={card.label}
|
|
144
149
|
type="upsell"
|
|
145
|
-
|
|
150
|
+
styles={{ root: { backgroundColor: card.bg } }}
|
|
146
151
|
title={
|
|
147
152
|
<Text color="fgInverse" as="h3" font="headline">
|
|
148
153
|
Up to 3.29% APR on ETH
|
|
@@ -191,7 +196,7 @@ function CommunityUpsell() {
|
|
|
191
196
|
<MessagingCard
|
|
192
197
|
key={i}
|
|
193
198
|
type="upsell"
|
|
194
|
-
|
|
199
|
+
styles={{ root: { backgroundColor: card.bg } }}
|
|
195
200
|
title={
|
|
196
201
|
<Text color="fgInverse" as="h3" font="headline">
|
|
197
202
|
Join the community
|
|
@@ -252,7 +257,7 @@ function ProductUpsell() {
|
|
|
252
257
|
<MessagingCard
|
|
253
258
|
key={card.title}
|
|
254
259
|
type="upsell"
|
|
255
|
-
|
|
260
|
+
styles={{ root: { backgroundColor: card.bg } }}
|
|
256
261
|
title={
|
|
257
262
|
<Text color="fgInverse" as="h3" font="headline">
|
|
258
263
|
{card.title}
|
|
@@ -298,7 +303,7 @@ function NewsUpsell() {
|
|
|
298
303
|
<MessagingCard
|
|
299
304
|
key={i}
|
|
300
305
|
type="upsell"
|
|
301
|
-
|
|
306
|
+
styles={{ root: { backgroundColor: card.bg } }}
|
|
302
307
|
title={
|
|
303
308
|
<Text color="fgInverse" as="h3" font="headline">
|
|
304
309
|
Help defend crypto in America
|
|
@@ -385,7 +390,7 @@ Use `onDismissButtonClick` to add a dismiss button.
|
|
|
385
390
|
mediaPlacement="end"
|
|
386
391
|
onDismissButtonClick={() => alert('Card dismissed!')}
|
|
387
392
|
dismissButtonAccessibilityLabel="Close card"
|
|
388
|
-
|
|
393
|
+
styles={{ root: { backgroundColor: 'rgb(var(--teal70))' } }}
|
|
389
394
|
/>
|
|
390
395
|
<MessagingCard
|
|
391
396
|
type="nudge"
|
|
@@ -567,7 +572,11 @@ function DismissibleCards() {
|
|
|
567
572
|
<MessagingCard
|
|
568
573
|
key={card.id}
|
|
569
574
|
type={card.type}
|
|
570
|
-
|
|
575
|
+
styles={
|
|
576
|
+
card.type === 'upsell'
|
|
577
|
+
? { root: { backgroundColor: 'rgb(var(--gray100))' } }
|
|
578
|
+
: undefined
|
|
579
|
+
}
|
|
571
580
|
title={card.title}
|
|
572
581
|
description={card.description}
|
|
573
582
|
width={360}
|
|
@@ -612,7 +621,7 @@ MessagingCard supports polymorphic rendering with `as` and can be made interacti
|
|
|
612
621
|
<MessagingCard
|
|
613
622
|
as="article"
|
|
614
623
|
type="upsell"
|
|
615
|
-
|
|
624
|
+
styles={{ root: { backgroundColor: 'rgb(var(--teal70))' } }}
|
|
616
625
|
title="Title"
|
|
617
626
|
description="Description"
|
|
618
627
|
width={320}
|
|
@@ -633,7 +642,7 @@ MessagingCard supports polymorphic rendering with `as` and can be made interacti
|
|
|
633
642
|
href="https://www.coinbase.com"
|
|
634
643
|
target="_blank"
|
|
635
644
|
type="upsell"
|
|
636
|
-
|
|
645
|
+
blendStyles={{ background: 'rgb(var(--purple70))' }}
|
|
637
646
|
title="Interactive Upsell"
|
|
638
647
|
description="Clickable card with href"
|
|
639
648
|
width={320}
|
|
@@ -665,7 +674,7 @@ MessagingCard supports polymorphic rendering with `as` and can be made interacti
|
|
|
665
674
|
as="button"
|
|
666
675
|
onClick={() => alert('Card clicked!')}
|
|
667
676
|
type="upsell"
|
|
668
|
-
|
|
677
|
+
blendStyles={{ background: 'rgb(var(--gray100))' }}
|
|
669
678
|
title="Interactive Card"
|
|
670
679
|
description="Clickable card with onClick handler"
|
|
671
680
|
width={320}
|
|
@@ -783,7 +792,7 @@ Display multiple cards in a carousel.
|
|
|
783
792
|
as="button"
|
|
784
793
|
onClick={() => console.log('clicked')}
|
|
785
794
|
type="upsell"
|
|
786
|
-
|
|
795
|
+
blendStyles={{ background: 'rgb(var(--purple70))' }}
|
|
787
796
|
title="Card 3"
|
|
788
797
|
description="Card with onClick handler"
|
|
789
798
|
tag="Action"
|
|
@@ -862,7 +871,7 @@ When you need both `onDismissButtonClick` and want the entire card to be clickab
|
|
|
862
871
|
|
|
863
872
|
#### Color Contrast
|
|
864
873
|
|
|
865
|
-
MessagingCard supports custom backgrounds via `background` and `
|
|
874
|
+
MessagingCard supports custom backgrounds via the `background` prop and, for custom colors, `styles.root` / `classNames.root` (non-interactive) or `blendStyles.background` (interactive). When using custom background colors, ensure sufficient color contrast between text and background:
|
|
866
875
|
|
|
867
876
|
- Use `fgInverse` text color with dark backgrounds (e.g., `accentBoldPurple`, `bgInverse`)
|
|
868
877
|
- Use `fg` text color with light backgrounds (e.g., `bgPrimaryWash`, `bgAlternate`)
|