@coinbase/cds-mcp-server 8.28.2 → 8.30.0
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/Accordion.txt +3 -1
- package/mcp-docs/mobile/components/Alert.txt +3 -1
- package/mcp-docs/mobile/components/Banner.txt +14 -14
- package/mcp-docs/mobile/components/Carousel.txt +24 -24
- package/mcp-docs/mobile/components/Combobox.txt +187 -0
- package/mcp-docs/mobile/components/ContainedAssetCard.txt +4 -4
- package/mcp-docs/mobile/components/ContentCard.txt +29 -27
- package/mcp-docs/mobile/components/ContentCardBody.txt +4 -4
- package/mcp-docs/mobile/components/ContentCardHeader.txt +2 -2
- package/mcp-docs/mobile/components/FloatingAssetCard.txt +6 -6
- package/mcp-docs/mobile/components/LineChart.txt +3 -2
- package/mcp-docs/mobile/components/MultiContentModule.txt +6 -6
- package/mcp-docs/mobile/components/Numpad.txt +2 -2
- package/mcp-docs/mobile/components/PageHeader.txt +3 -1
- package/mcp-docs/mobile/components/PeriodSelector.txt +4 -4
- package/mcp-docs/mobile/components/Pressable.txt +6 -2
- package/mcp-docs/mobile/components/ProgressBarWithFixedLabels.txt +4 -4
- package/mcp-docs/mobile/components/ProgressBarWithFloatLabel.txt +2 -2
- package/mcp-docs/mobile/components/ProgressCircle.txt +5 -1
- package/mcp-docs/mobile/components/SelectChip.txt +2 -0
- package/mcp-docs/mobile/components/SelectChipAlpha.txt +88 -1
- package/mcp-docs/mobile/components/SlideButton.txt +2 -2
- package/mcp-docs/mobile/components/Sparkline.txt +3 -1
- package/mcp-docs/mobile/components/SparklineGradient.txt +3 -1
- package/mcp-docs/mobile/components/SparklineInteractiveHeader.txt +3 -1
- package/mcp-docs/mobile/components/TabbedChips.txt +3 -1
- package/mcp-docs/mobile/components/TabbedChipsAlpha.txt +30 -0
- package/mcp-docs/mobile/components/Tag.txt +19 -9
- package/mcp-docs/mobile/components/TextInput.txt +9 -3
- package/mcp-docs/mobile/components/Tray.txt +2 -0
- package/mcp-docs/mobile/components/UpsellCard.txt +16 -16
- package/mcp-docs/mobile/hooks/useDimensions.txt +4 -4
- package/mcp-docs/mobile/hooks/useMergeRefs.txt +4 -4
- package/mcp-docs/mobile/hooks/usePreviousValue.txt +5 -5
- package/mcp-docs/mobile/hooks/useRefMap.txt +6 -6
- package/mcp-docs/mobile/routes.txt +1 -0
- package/mcp-docs/web/components/Accordion.txt +3 -1
- package/mcp-docs/web/components/Alert.txt +3 -1
- package/mcp-docs/web/components/Banner.txt +14 -14
- package/mcp-docs/web/components/Carousel.txt +71 -65
- package/mcp-docs/web/components/Chip.txt +1 -1
- package/mcp-docs/web/components/Combobox.txt +176 -0
- package/mcp-docs/web/components/ContainedAssetCard.txt +4 -4
- package/mcp-docs/web/components/ContentCard.txt +29 -27
- package/mcp-docs/web/components/ContentCardBody.txt +4 -4
- package/mcp-docs/web/components/ContentCardHeader.txt +2 -2
- package/mcp-docs/web/components/FloatingAssetCard.txt +6 -6
- package/mcp-docs/web/components/FullscreenModal.txt +12 -4
- package/mcp-docs/web/components/GridColumn.txt +12 -4
- package/mcp-docs/web/components/InputChip.txt +1 -1
- package/mcp-docs/web/components/LineChart.txt +3 -2
- package/mcp-docs/web/components/MediaChip.txt +1 -1
- package/mcp-docs/web/components/MultiContentModule.txt +6 -6
- package/mcp-docs/web/components/PageHeader.txt +11 -9
- package/mcp-docs/web/components/ProgressBarWithFixedLabels.txt +4 -4
- package/mcp-docs/web/components/ProgressBarWithFloatLabel.txt +2 -2
- package/mcp-docs/web/components/ProgressCircle.txt +5 -1
- package/mcp-docs/web/components/SelectChip.txt +1 -1
- package/mcp-docs/web/components/SelectChipAlpha.txt +87 -3
- package/mcp-docs/web/components/Sidebar.txt +2 -2
- package/mcp-docs/web/components/Sparkline.txt +3 -1
- package/mcp-docs/web/components/SparklineGradient.txt +3 -1
- package/mcp-docs/web/components/SparklineInteractiveHeader.txt +3 -1
- package/mcp-docs/web/components/TabbedChips.txt +3 -1
- package/mcp-docs/web/components/TabbedChipsAlpha.txt +35 -1
- package/mcp-docs/web/components/TableBody.txt +2 -2
- package/mcp-docs/web/components/TableCaption.txt +2 -2
- package/mcp-docs/web/components/TableCell.txt +6 -6
- package/mcp-docs/web/components/Tag.txt +19 -9
- package/mcp-docs/web/components/TextInput.txt +9 -3
- package/mcp-docs/web/components/Tray.txt +2 -1
- package/mcp-docs/web/components/UpsellCard.txt +16 -16
- package/mcp-docs/web/hooks/useDimensions.txt +4 -4
- package/mcp-docs/web/hooks/useHasMounted.txt +7 -3
- package/mcp-docs/web/hooks/useIsoEffect.txt +1 -1
- package/mcp-docs/web/hooks/useMergeRefs.txt +4 -4
- package/mcp-docs/web/hooks/useOverlayContentContext.txt +8 -8
- package/mcp-docs/web/hooks/usePreviousValue.txt +5 -5
- package/mcp-docs/web/hooks/useRefMap.txt +6 -6
- package/mcp-docs/web/hooks/useScrollBlocker.txt +1 -1
- package/mcp-docs/web/hooks/useTheme.txt +3 -3
- package/mcp-docs/web/routes.txt +1 -0
- package/package.json +1 -1
|
@@ -45,10 +45,10 @@ function Example() {
|
|
|
45
45
|
return (
|
|
46
46
|
<Box backgroundColor="bgAlternate" padding={3} borderRadius={300} width="100%">
|
|
47
47
|
<VStack gap={2}>
|
|
48
|
-
<
|
|
48
|
+
<Text font="headline">
|
|
49
49
|
Screen dimensions: {screenWidth}x{screenHeight}
|
|
50
|
-
</
|
|
51
|
-
<
|
|
50
|
+
</Text>
|
|
51
|
+
<Text font="headline">Status bar height: {statusBarHeight}px</Text>
|
|
52
52
|
</VStack>
|
|
53
53
|
</Box>
|
|
54
54
|
);
|
|
@@ -64,7 +64,7 @@ function Example() {
|
|
|
64
64
|
|
|
65
65
|
return (
|
|
66
66
|
<Box backgroundColor="bgAlternate" height={contentHeight} paddingTop={statusBarHeight}>
|
|
67
|
-
<
|
|
67
|
+
<Text font="headline">Content below status bar</Text>
|
|
68
68
|
</Box>
|
|
69
69
|
);
|
|
70
70
|
}
|
|
@@ -47,7 +47,7 @@ function Example() {
|
|
|
47
47
|
|
|
48
48
|
return (
|
|
49
49
|
<Box ref={refs} padding={3} background="bgAlternate" borderRadius={300}>
|
|
50
|
-
<
|
|
50
|
+
<Text font="body">This box uses a merged ref</Text>
|
|
51
51
|
</Box>
|
|
52
52
|
);
|
|
53
53
|
});
|
|
@@ -76,7 +76,7 @@ function Example() {
|
|
|
76
76
|
return (
|
|
77
77
|
<VStack gap={2}>
|
|
78
78
|
<Box ref={mergedRefs} padding={3} background="bgAlternate" borderRadius={300}>
|
|
79
|
-
<
|
|
79
|
+
<Text font="body">This element is referenced by three refs</Text>
|
|
80
80
|
</Box>
|
|
81
81
|
<Button onClick={checkRefs}>Check Refs</Button>
|
|
82
82
|
</VStack>
|
|
@@ -106,9 +106,9 @@ function Example() {
|
|
|
106
106
|
return (
|
|
107
107
|
<VStack gap={2}>
|
|
108
108
|
<Box ref={refs} padding={3} background="bgAlternate" borderRadius={300} width="100%">
|
|
109
|
-
<
|
|
109
|
+
<Text font="body">This box uses both function and object refs</Text>
|
|
110
110
|
</Box>
|
|
111
|
-
<
|
|
111
|
+
<Text font="body">Box width: {elementWidth}px</Text>
|
|
112
112
|
</VStack>
|
|
113
113
|
);
|
|
114
114
|
}
|
|
@@ -39,8 +39,8 @@ function Example() {
|
|
|
39
39
|
return (
|
|
40
40
|
<VStack gap={3} alignItems="start">
|
|
41
41
|
<VStack gap={1}>
|
|
42
|
-
<
|
|
43
|
-
<
|
|
42
|
+
<Text font="headline">Current count: {count}</Text>
|
|
43
|
+
<Text font="headline">Previous count: {previousCount ?? 'None'}</Text>
|
|
44
44
|
</VStack>
|
|
45
45
|
<Button onClick={() => setCount(count + 1)}>Increment</Button>
|
|
46
46
|
</VStack>
|
|
@@ -62,9 +62,9 @@ function Example() {
|
|
|
62
62
|
return (
|
|
63
63
|
<VStack gap={3} alignItems="start">
|
|
64
64
|
<VStack gap={1}>
|
|
65
|
-
<
|
|
66
|
-
<
|
|
67
|
-
<
|
|
65
|
+
<Text font="headline">Name: {user.name}</Text>
|
|
66
|
+
<Text font="headline">Age: {user.age}</Text>
|
|
67
|
+
<Text font="headline">Previous age: {previousUser?.age ?? 'None'}</Text>
|
|
68
68
|
</VStack>
|
|
69
69
|
<Button onClick={updateAge}>Add Year</Button>
|
|
70
70
|
</VStack>
|
|
@@ -56,7 +56,7 @@ function Example() {
|
|
|
56
56
|
background="bgAlternate"
|
|
57
57
|
borderRadius={300}
|
|
58
58
|
>
|
|
59
|
-
<
|
|
59
|
+
<Text font="body">This box is registered with ID 'box1'</Text>
|
|
60
60
|
</Box>
|
|
61
61
|
<Button onClick={handleClick}>Get Box Dimensions</Button>
|
|
62
62
|
</VStack>
|
|
@@ -103,7 +103,7 @@ function Example() {
|
|
|
103
103
|
background="bgAlternate"
|
|
104
104
|
borderRadius={300}
|
|
105
105
|
>
|
|
106
|
-
<
|
|
106
|
+
<Text font="body">Box 1</Text>
|
|
107
107
|
</Box>
|
|
108
108
|
|
|
109
109
|
<Box
|
|
@@ -112,7 +112,7 @@ function Example() {
|
|
|
112
112
|
background="bgAlternate"
|
|
113
113
|
borderRadius={300}
|
|
114
114
|
>
|
|
115
|
-
<
|
|
115
|
+
<Text font="body">Box 2</Text>
|
|
116
116
|
</Box>
|
|
117
117
|
|
|
118
118
|
<Box
|
|
@@ -121,7 +121,7 @@ function Example() {
|
|
|
121
121
|
background="bgAlternate"
|
|
122
122
|
borderRadius={300}
|
|
123
123
|
>
|
|
124
|
-
<
|
|
124
|
+
<Text font="body">Box 3</Text>
|
|
125
125
|
</Box>
|
|
126
126
|
</VStack>
|
|
127
127
|
</VStack>
|
|
@@ -158,7 +158,7 @@ function Example() {
|
|
|
158
158
|
background="bgAlternate"
|
|
159
159
|
borderRadius={300}
|
|
160
160
|
>
|
|
161
|
-
<
|
|
161
|
+
<Text font="body">Box 1</Text>
|
|
162
162
|
</Box>
|
|
163
163
|
|
|
164
164
|
<Box
|
|
@@ -167,7 +167,7 @@ function Example() {
|
|
|
167
167
|
background="bgAlternate"
|
|
168
168
|
borderRadius={300}
|
|
169
169
|
>
|
|
170
|
-
<
|
|
170
|
+
<Text font="body">Box 2</Text>
|
|
171
171
|
</Box>
|
|
172
172
|
|
|
173
173
|
<Button onClick={logRefs}>Log Refs</Button>
|
|
@@ -92,6 +92,7 @@
|
|
|
92
92
|
- [InputChip](mobile/components/InputChip.txt): A Chip used for removable selections.
|
|
93
93
|
- [IconButton](mobile/components/IconButton.txt): A Button with an Icon for content.
|
|
94
94
|
- [ControlGroup](mobile/components/ControlGroup.txt): A layout component that arranges and manages a group of related controls, such as radio buttons, switches, or checkboxes.
|
|
95
|
+
- [Combobox](mobile/components/Combobox.txt): A flexible combobox component for both single and multi-selection, built for mobile applications with comprehensive accessibility support.
|
|
95
96
|
- [Chip](mobile/components/Chip.txt): A compact, interactive content element.
|
|
96
97
|
- [CheckboxGroup](mobile/components/CheckboxGroup.txt): CheckboxGroup is a control component that allows users to select multiple options from a set of choices. It manages the state and layout of multiple checkbox inputs as a cohesive group.
|
|
97
98
|
- [CheckboxCell](mobile/components/CheckboxCell.txt): A selectable cell that pairs a checkbox with a title and description for multi-choice selections.
|
|
@@ -38,7 +38,9 @@ Check [here](/components/layout/AccordionItem) for AccordionItem Props.
|
|
|
38
38
|
media={<CellMedia active type="icon" name="wallet" title="BTC" />}
|
|
39
39
|
onClick={(itemKey) => console.log(itemKey)}
|
|
40
40
|
>
|
|
41
|
-
<
|
|
41
|
+
<Text as="p" font="body">
|
|
42
|
+
{loremIpsum.repeat(20)}
|
|
43
|
+
</Text>
|
|
42
44
|
</AccordionItem>
|
|
43
45
|
</Accordion>
|
|
44
46
|
```
|
|
@@ -117,7 +117,9 @@ function AlertOnModalExample() {
|
|
|
117
117
|
openModal(
|
|
118
118
|
<Modal visible onRequestClose={closeModal}>
|
|
119
119
|
<ModalBody>
|
|
120
|
-
<
|
|
120
|
+
<Text as="p" font="body">
|
|
121
|
+
{loremIpsum}
|
|
122
|
+
</Text>
|
|
121
123
|
</ModalBody>
|
|
122
124
|
<ModalFooter
|
|
123
125
|
primaryAction={<Button onClick={closeModal}>Save</Button>}
|
|
@@ -26,10 +26,10 @@ The global warning banner is used to communicate important alerts or warnings to
|
|
|
26
26
|
primaryAction={<Link to="https://www.coinbase.com">Primary</Link>}
|
|
27
27
|
secondaryAction={<Link to="https://www.coinbase.com">Secondary</Link>}
|
|
28
28
|
>
|
|
29
|
-
<
|
|
29
|
+
<Text as="p" font="label2">
|
|
30
30
|
Your funds are safe. We’re looking into it and expect our usual service to return soon.
|
|
31
31
|
<Link to="https://www.coinbase.com">Learn more</Link>
|
|
32
|
-
</
|
|
32
|
+
</Text>
|
|
33
33
|
</Banner>
|
|
34
34
|
```
|
|
35
35
|
|
|
@@ -47,10 +47,10 @@ The In-line Error Banner is used to display specific error messages directly ben
|
|
|
47
47
|
primaryAction={<Link to="https://www.coinbase.com">Primary</Link>}
|
|
48
48
|
secondaryAction={<Link to="https://www.coinbase.com">Secondary</Link>}
|
|
49
49
|
>
|
|
50
|
-
<
|
|
50
|
+
<Text as="p" font="label2">
|
|
51
51
|
Your funds are safe. We’re looking into it and expect our usual service to return soon.
|
|
52
52
|
<Link to="https://www.coinbase.com">Learn more</Link>
|
|
53
|
-
</
|
|
53
|
+
</Text>
|
|
54
54
|
</Banner>
|
|
55
55
|
```
|
|
56
56
|
|
|
@@ -66,10 +66,10 @@ The Contextual Promotional Banner is used to highlight special offers, promotion
|
|
|
66
66
|
title="Some features are temporarily unavailable"
|
|
67
67
|
variant="promotional"
|
|
68
68
|
>
|
|
69
|
-
<
|
|
69
|
+
<Text as="p" font="label2">
|
|
70
70
|
Your funds are safe. We’re looking into it and expect our usual service to return soon.
|
|
71
71
|
<Link to="https://www.coinbase.com">Learn more</Link>
|
|
72
|
-
</
|
|
72
|
+
</Text>
|
|
73
73
|
</Banner>
|
|
74
74
|
```
|
|
75
75
|
|
|
@@ -88,10 +88,10 @@ The in-line Informational Banner is used to provide users with additional inform
|
|
|
88
88
|
primaryAction={<Link to="https://www.coinbase.com">Primary</Link>}
|
|
89
89
|
secondaryAction={<Link to="https://www.coinbase.com">Secondary</Link>}
|
|
90
90
|
>
|
|
91
|
-
<
|
|
91
|
+
<Text as="p" font="label2">
|
|
92
92
|
Your funds are safe. We’re looking into it and expect our usual service to return soon.
|
|
93
93
|
<Link to="https://www.coinbase.com">Learn more</Link>
|
|
94
|
-
</
|
|
94
|
+
</Text>
|
|
95
95
|
</Banner>
|
|
96
96
|
<Banner
|
|
97
97
|
startIcon="warning"
|
|
@@ -100,9 +100,9 @@ The in-line Informational Banner is used to provide users with additional inform
|
|
|
100
100
|
title="Some features are temporarily unavailable"
|
|
101
101
|
variant="warning"
|
|
102
102
|
>
|
|
103
|
-
<
|
|
103
|
+
<Text as="p" font="label2">
|
|
104
104
|
<Link to="https://www.coinbase.com">Retry</Link>
|
|
105
|
-
</
|
|
105
|
+
</Text>
|
|
106
106
|
</Banner>
|
|
107
107
|
</VStack>
|
|
108
108
|
```
|
|
@@ -121,9 +121,9 @@ You can customize `borderRadius` to soften contextual and in-line banners.
|
|
|
121
121
|
title="Rounded contextual banner"
|
|
122
122
|
variant="informational"
|
|
123
123
|
>
|
|
124
|
-
<
|
|
124
|
+
<Text as="p" font="label2">
|
|
125
125
|
Rounded corners help align with softer surface treatments within a page section.
|
|
126
|
-
</
|
|
126
|
+
</Text>
|
|
127
127
|
</Banner>
|
|
128
128
|
<Banner
|
|
129
129
|
borderRadius={400}
|
|
@@ -135,9 +135,9 @@ You can customize `borderRadius` to soften contextual and in-line banners.
|
|
|
135
135
|
title="Rounded inline banner"
|
|
136
136
|
variant="promotional"
|
|
137
137
|
>
|
|
138
|
-
<
|
|
138
|
+
<Text as="p" font="label2">
|
|
139
139
|
You can incrementally increase the radius to match surrounding cards or panels.
|
|
140
|
-
</
|
|
140
|
+
</Text>
|
|
141
141
|
</Banner>
|
|
142
142
|
</VStack>
|
|
143
143
|
```
|
|
@@ -32,9 +32,9 @@ function MyCarousel() {
|
|
|
32
32
|
return (
|
|
33
33
|
<ContainedAssetCard
|
|
34
34
|
description={
|
|
35
|
-
<
|
|
35
|
+
<Text as="p" font="label2" color="fgPositive" numberOfLines={2}>
|
|
36
36
|
↗6.37%
|
|
37
|
-
</
|
|
37
|
+
</Text>
|
|
38
38
|
}
|
|
39
39
|
header={<RemoteImage height="32px" source={imageUrl} width="32px" />}
|
|
40
40
|
subtitle={name}
|
|
@@ -113,7 +113,9 @@ function DynamicSizingCarousel() {
|
|
|
113
113
|
return (
|
|
114
114
|
<VStack gap={2}>
|
|
115
115
|
<HStack justifyContent="flex-end" gap={2} alignItems="center">
|
|
116
|
-
<
|
|
116
|
+
<Text as="h3" font="headline">
|
|
117
|
+
Items per page
|
|
118
|
+
</Text>
|
|
117
119
|
<SegmentedTabs
|
|
118
120
|
activeTab={selectedItemsPerPage}
|
|
119
121
|
onChange={setSelectedItemsPerPage}
|
|
@@ -146,9 +148,9 @@ function DynamicSizingCarousel() {
|
|
|
146
148
|
}
|
|
147
149
|
minWidth="0"
|
|
148
150
|
title={
|
|
149
|
-
<
|
|
151
|
+
<Text as="h3" font="headline" id="recurring-buy-label">
|
|
150
152
|
Recurring Buy
|
|
151
|
-
</
|
|
153
|
+
</Text>
|
|
152
154
|
}
|
|
153
155
|
width="100%"
|
|
154
156
|
/>
|
|
@@ -164,9 +166,9 @@ function DynamicSizingCarousel() {
|
|
|
164
166
|
action={<ActionButton isVisible={isVisible}>Start earning</ActionButton>}
|
|
165
167
|
dangerouslySetBackground="rgb(var(--purple70))"
|
|
166
168
|
description={
|
|
167
|
-
<
|
|
169
|
+
<Text as="p" font="label2" numberOfLines={3} color="fgInverse">
|
|
168
170
|
Earn staking rewards on ETH by holding it on Coinbase
|
|
169
|
-
</
|
|
171
|
+
</Text>
|
|
170
172
|
}
|
|
171
173
|
media={
|
|
172
174
|
<Box left={16} position="relative" top={12}>
|
|
@@ -175,9 +177,9 @@ function DynamicSizingCarousel() {
|
|
|
175
177
|
}
|
|
176
178
|
minWidth="0"
|
|
177
179
|
title={
|
|
178
|
-
<
|
|
180
|
+
<Text id="eths-apr-label" color="fgInverse" as="h3">
|
|
179
181
|
Up to 3.29% APR on ETHs
|
|
180
|
-
</
|
|
182
|
+
</Text>
|
|
181
183
|
}
|
|
182
184
|
width="100%"
|
|
183
185
|
/>
|
|
@@ -193,9 +195,9 @@ function DynamicSizingCarousel() {
|
|
|
193
195
|
action={<ActionButton isVisible={isVisible}>Start chatting</ActionButton>}
|
|
194
196
|
dangerouslySetBackground="rgb(var(--teal70))"
|
|
195
197
|
description={
|
|
196
|
-
<
|
|
198
|
+
<Text as="p" font="label2" numberOfLines={3} color="fgInverse">
|
|
197
199
|
Chat with other devs in our Discord community
|
|
198
|
-
</
|
|
200
|
+
</Text>
|
|
199
201
|
}
|
|
200
202
|
media={
|
|
201
203
|
<Box left={16} position="relative" top={4}>
|
|
@@ -204,9 +206,9 @@ function DynamicSizingCarousel() {
|
|
|
204
206
|
}
|
|
205
207
|
minWidth="0"
|
|
206
208
|
title={
|
|
207
|
-
<
|
|
209
|
+
<Text id="join-the-community-label" color="fgInverse" as="h3">
|
|
208
210
|
Join the community
|
|
209
|
-
</
|
|
211
|
+
</Text>
|
|
210
212
|
}
|
|
211
213
|
width="100%"
|
|
212
214
|
/>
|
|
@@ -222,9 +224,9 @@ function DynamicSizingCarousel() {
|
|
|
222
224
|
action={<ActionButton isVisible={isVisible}>Get 60 days free</ActionButton>}
|
|
223
225
|
dangerouslySetBackground="rgb(var(--blue80))"
|
|
224
226
|
description={
|
|
225
|
-
<
|
|
227
|
+
<Text as="p" font="label2" numberOfLines={3} color="fgInverse">
|
|
226
228
|
Use code NOV60 when you sign up for Coinbase One
|
|
227
|
-
</
|
|
229
|
+
</Text>
|
|
228
230
|
}
|
|
229
231
|
media={
|
|
230
232
|
<Box left={16} position="relative" top={0}>
|
|
@@ -233,9 +235,9 @@ function DynamicSizingCarousel() {
|
|
|
233
235
|
}
|
|
234
236
|
minWidth="0"
|
|
235
237
|
title={
|
|
236
|
-
<
|
|
238
|
+
<Text id="coinbase-one-offer-label" color="fgInverse" as="h3">
|
|
237
239
|
Coinbase One offer
|
|
238
|
-
</
|
|
240
|
+
</Text>
|
|
239
241
|
}
|
|
240
242
|
width="100%"
|
|
241
243
|
/>
|
|
@@ -251,9 +253,9 @@ function DynamicSizingCarousel() {
|
|
|
251
253
|
action={<ActionButton isVisible={isVisible}>Get started</ActionButton>}
|
|
252
254
|
dangerouslySetBackground="rgb(var(--gray100))"
|
|
253
255
|
description={
|
|
254
|
-
<
|
|
256
|
+
<Text as="p" font="label2" numberOfLines={3} color="fgInverse">
|
|
255
257
|
Spend USDC to get rewards with our Visa® debit card
|
|
256
|
-
</
|
|
258
|
+
</Text>
|
|
257
259
|
}
|
|
258
260
|
media={
|
|
259
261
|
<Box left={16} position="relative" top={0}>
|
|
@@ -262,9 +264,9 @@ function DynamicSizingCarousel() {
|
|
|
262
264
|
}
|
|
263
265
|
minWidth="0"
|
|
264
266
|
title={
|
|
265
|
-
<
|
|
267
|
+
<Text id="coinbase-card-label" color="fgInverse" as="h3">
|
|
266
268
|
Coinbase Card
|
|
267
|
-
</
|
|
269
|
+
</Text>
|
|
268
270
|
}
|
|
269
271
|
width="100%"
|
|
270
272
|
/>
|
|
@@ -367,9 +369,9 @@ function VariedSizingCarousel() {
|
|
|
367
369
|
return (
|
|
368
370
|
<ContainedAssetCard
|
|
369
371
|
description={
|
|
370
|
-
<
|
|
372
|
+
<Text as="p" font="label2" color="fgPositive" numberOfLines={2}>
|
|
371
373
|
↗6.37%
|
|
372
|
-
</
|
|
374
|
+
</Text>
|
|
373
375
|
}
|
|
374
376
|
header={<RemoteImage height="32px" source={imageUrl} width="32px" />}
|
|
375
377
|
subtitle={name}
|
|
@@ -475,9 +477,9 @@ function DragCarousel() {
|
|
|
475
477
|
return (
|
|
476
478
|
<ContainedAssetCard
|
|
477
479
|
description={
|
|
478
|
-
<
|
|
480
|
+
<Text as="p" font="label2" color="fgPositive" numberOfLines={2}>
|
|
479
481
|
↗6.37%
|
|
480
|
-
</
|
|
482
|
+
</Text>
|
|
481
483
|
}
|
|
482
484
|
header={<RemoteImage height="32px" source={imageUrl} width="32px" />}
|
|
483
485
|
subtitle={name}
|
|
@@ -488,7 +490,9 @@ function DragCarousel() {
|
|
|
488
490
|
return (
|
|
489
491
|
<VStack gap={2}>
|
|
490
492
|
<HStack justifyContent="flex-end" gap={2} alignItems="center">
|
|
491
|
-
<
|
|
493
|
+
<Text as="h3" font="headline">
|
|
494
|
+
Drag
|
|
495
|
+
</Text>
|
|
492
496
|
<SegmentedTabs activeTab={drag} onChange={setDrag} tabs={dragOptions} />
|
|
493
497
|
</HStack>
|
|
494
498
|
<Box style={{ marginInline: 'calc(-1 * var(--space-3))' }}>
|
|
@@ -532,9 +536,9 @@ function SnapModeCarousel() {
|
|
|
532
536
|
return (
|
|
533
537
|
<ContainedAssetCard
|
|
534
538
|
description={
|
|
535
|
-
<
|
|
539
|
+
<Text as="p" font="label2" color="fgPositive" numberOfLines={2}>
|
|
536
540
|
↗6.37%
|
|
537
|
-
</
|
|
541
|
+
</Text>
|
|
538
542
|
}
|
|
539
543
|
header={<RemoteImage height="32px" source={imageUrl} width="32px" />}
|
|
540
544
|
subtitle={name}
|
|
@@ -545,7 +549,9 @@ function SnapModeCarousel() {
|
|
|
545
549
|
return (
|
|
546
550
|
<VStack gap={2}>
|
|
547
551
|
<HStack justifyContent="flex-end" gap={2} alignItems="center">
|
|
548
|
-
<
|
|
552
|
+
<Text as="h3" font="headline">
|
|
553
|
+
Snap mode
|
|
554
|
+
</Text>
|
|
549
555
|
<SegmentedTabs activeTab={snapMode} onChange={setSnapMode} tabs={snapModeOptions} />
|
|
550
556
|
</HStack>
|
|
551
557
|
<Box style={{ marginInline: 'calc(-1 * var(--space-3))' }}>
|
|
@@ -591,9 +597,9 @@ function OverflowCarousel() {
|
|
|
591
597
|
return (
|
|
592
598
|
<ContainedAssetCard
|
|
593
599
|
description={
|
|
594
|
-
<
|
|
600
|
+
<Text as="p" font="label2" color="fgPositive" numberOfLines={2}>
|
|
595
601
|
↗6.37%
|
|
596
|
-
</
|
|
602
|
+
</Text>
|
|
597
603
|
}
|
|
598
604
|
header={<RemoteImage height="32px" source={imageUrl} width="32px" />}
|
|
599
605
|
onClick={isVisible ? () => console.log('clicked') : undefined}
|
|
@@ -665,9 +671,9 @@ If you have elements that are focusable, you can use `isVisible` render prop to
|
|
|
665
671
|
}
|
|
666
672
|
minWidth="0"
|
|
667
673
|
title={
|
|
668
|
-
<
|
|
674
|
+
<Text as="h3" font="headline" id="recurring-buy-label">
|
|
669
675
|
Recurring Buy
|
|
670
|
-
</
|
|
676
|
+
</Text>
|
|
671
677
|
}
|
|
672
678
|
width="100%"
|
|
673
679
|
/>
|
|
@@ -686,11 +692,11 @@ You can customize the navigation and pagination components of the carousel using
|
|
|
686
692
|
function CustomComponentsCarousel() {
|
|
687
693
|
function SeeAllComponent({ style }) {
|
|
688
694
|
return (
|
|
689
|
-
<
|
|
695
|
+
<Text style={style}>
|
|
690
696
|
<Link openInNewWindow href="https://coinbase.com/">
|
|
691
697
|
See all
|
|
692
698
|
</Link>
|
|
693
|
-
</
|
|
699
|
+
</Text>
|
|
694
700
|
);
|
|
695
701
|
}
|
|
696
702
|
function PaginationComponent({ totalPages, activePageIndex, onClickPage, style }) {
|
|
@@ -773,9 +779,9 @@ function CustomComponentsCarousel() {
|
|
|
773
779
|
carousel: { gap: 'var(--space-1)' },
|
|
774
780
|
}}
|
|
775
781
|
title={
|
|
776
|
-
<
|
|
782
|
+
<Text as="h3" font="headline">
|
|
777
783
|
Learn more
|
|
778
|
-
</
|
|
784
|
+
</Text>
|
|
779
785
|
}
|
|
780
786
|
>
|
|
781
787
|
<CarouselItem id="recurring-buy" width={itemWidth}>
|
|
@@ -800,9 +806,9 @@ function CustomComponentsCarousel() {
|
|
|
800
806
|
action={<ActionButton isVisible={isVisible}>Start earning</ActionButton>}
|
|
801
807
|
dangerouslySetBackground="rgb(var(--purple70))"
|
|
802
808
|
description={
|
|
803
|
-
<
|
|
809
|
+
<Text as="p" font="label2" numberOfLines={3} color="fgInverse">
|
|
804
810
|
Earn staking rewards on ETH by holding it on Coinbase
|
|
805
|
-
</
|
|
811
|
+
</Text>
|
|
806
812
|
}
|
|
807
813
|
media={
|
|
808
814
|
<Box left={16} position="relative" top={12}>
|
|
@@ -811,9 +817,9 @@ function CustomComponentsCarousel() {
|
|
|
811
817
|
}
|
|
812
818
|
minWidth="0"
|
|
813
819
|
title={
|
|
814
|
-
<
|
|
820
|
+
<Text color="fgInverse" as="h3" font="headline">
|
|
815
821
|
Up to 3.29% APR on ETHs
|
|
816
|
-
</
|
|
822
|
+
</Text>
|
|
817
823
|
}
|
|
818
824
|
width="100%"
|
|
819
825
|
/>
|
|
@@ -825,9 +831,9 @@ function CustomComponentsCarousel() {
|
|
|
825
831
|
action={<ActionButton isVisible={isVisible}>Start chatting</ActionButton>}
|
|
826
832
|
dangerouslySetBackground="rgb(var(--teal70))"
|
|
827
833
|
description={
|
|
828
|
-
<
|
|
834
|
+
<Text as="p" font="label2" numberOfLines={3} color="fgInverse">
|
|
829
835
|
Chat with other devs in our Discord community
|
|
830
|
-
</
|
|
836
|
+
</Text>
|
|
831
837
|
}
|
|
832
838
|
media={
|
|
833
839
|
<Box left={16} position="relative" top={4}>
|
|
@@ -836,9 +842,9 @@ function CustomComponentsCarousel() {
|
|
|
836
842
|
}
|
|
837
843
|
minWidth="0"
|
|
838
844
|
title={
|
|
839
|
-
<
|
|
845
|
+
<Text color="fgInverse" as="h3" font="headline">
|
|
840
846
|
Join the community
|
|
841
|
-
</
|
|
847
|
+
</Text>
|
|
842
848
|
}
|
|
843
849
|
width="100%"
|
|
844
850
|
/>
|
|
@@ -850,9 +856,9 @@ function CustomComponentsCarousel() {
|
|
|
850
856
|
action={<ActionButton isVisible={isVisible}>Get 60 days free</ActionButton>}
|
|
851
857
|
dangerouslySetBackground="rgb(var(--blue80))"
|
|
852
858
|
description={
|
|
853
|
-
<
|
|
859
|
+
<Text as="p" font="label2" numberOfLines={3} color="fgInverse">
|
|
854
860
|
Use code NOV60 when you sign up for Coinbase One
|
|
855
|
-
</
|
|
861
|
+
</Text>
|
|
856
862
|
}
|
|
857
863
|
media={
|
|
858
864
|
<Box left={16} position="relative" top={0}>
|
|
@@ -861,9 +867,9 @@ function CustomComponentsCarousel() {
|
|
|
861
867
|
}
|
|
862
868
|
minWidth="0"
|
|
863
869
|
title={
|
|
864
|
-
<
|
|
870
|
+
<Text color="fgInverse" as="h3" font="headline">
|
|
865
871
|
Coinbase One offer
|
|
866
|
-
</
|
|
872
|
+
</Text>
|
|
867
873
|
}
|
|
868
874
|
width="100%"
|
|
869
875
|
/>
|
|
@@ -875,9 +881,9 @@ function CustomComponentsCarousel() {
|
|
|
875
881
|
action={<ActionButton isVisible={isVisible}>Get started</ActionButton>}
|
|
876
882
|
dangerouslySetBackground="rgb(var(--gray100))"
|
|
877
883
|
description={
|
|
878
|
-
<
|
|
884
|
+
<Text as="p" font="label2" numberOfLines={3} color="fgInverse">
|
|
879
885
|
Spend USDC to get rewards with our Visa® debit card
|
|
880
|
-
</
|
|
886
|
+
</Text>
|
|
881
887
|
}
|
|
882
888
|
media={
|
|
883
889
|
<Box left={16} position="relative" top={0}>
|
|
@@ -886,9 +892,9 @@ function CustomComponentsCarousel() {
|
|
|
886
892
|
}
|
|
887
893
|
minWidth="0"
|
|
888
894
|
title={
|
|
889
|
-
<
|
|
895
|
+
<Text color="fgInverse" as="h3" font="headline">
|
|
890
896
|
Coinbase Card
|
|
891
|
-
</
|
|
897
|
+
</Text>
|
|
892
898
|
}
|
|
893
899
|
width="100%"
|
|
894
900
|
/>
|
|
@@ -1002,9 +1008,9 @@ function DynamicContentCarousel() {
|
|
|
1002
1008
|
return (
|
|
1003
1009
|
<ContainedAssetCard
|
|
1004
1010
|
description={
|
|
1005
|
-
<
|
|
1011
|
+
<Text as="p" font="label2" color="fgPositive" numberOfLines={2}>
|
|
1006
1012
|
↗6.37%
|
|
1007
|
-
</
|
|
1013
|
+
</Text>
|
|
1008
1014
|
}
|
|
1009
1015
|
header={<RemoteImage height="32px" source={imageUrl} width="32px" />}
|
|
1010
1016
|
subtitle={name}
|
|
@@ -1069,9 +1075,9 @@ function AnimatedCarousel() {
|
|
|
1069
1075
|
>
|
|
1070
1076
|
<ContainedAssetCard
|
|
1071
1077
|
description={
|
|
1072
|
-
<
|
|
1078
|
+
<Text as="p" font="label2" color="fgPositive" numberOfLines={2}>
|
|
1073
1079
|
↗6.37%
|
|
1074
|
-
</
|
|
1080
|
+
</Text>
|
|
1075
1081
|
}
|
|
1076
1082
|
header={<RemoteImage height="32px" source={imageUrl} width="32px" />}
|
|
1077
1083
|
subtitle={name}
|
|
@@ -1146,9 +1152,9 @@ function AnimatedSelectionCarousel() {
|
|
|
1146
1152
|
>
|
|
1147
1153
|
<ContainedAssetCard
|
|
1148
1154
|
description={
|
|
1149
|
-
<
|
|
1155
|
+
<Text as="p" font="label2" color="fgPositive" numberOfLines={2}>
|
|
1150
1156
|
↗6.37%
|
|
1151
|
-
</
|
|
1157
|
+
</Text>
|
|
1152
1158
|
}
|
|
1153
1159
|
header={<RemoteImage height="32px" source={imageUrl} width="32px" />}
|
|
1154
1160
|
subtitle={name}
|
|
@@ -1205,9 +1211,9 @@ function HideNavigationAndPaginationCarousel() {
|
|
|
1205
1211
|
return (
|
|
1206
1212
|
<ContainedAssetCard
|
|
1207
1213
|
description={
|
|
1208
|
-
<
|
|
1214
|
+
<Text as="p" font="label2" color="fgPositive" numberOfLines={2}>
|
|
1209
1215
|
↗6.37%
|
|
1210
|
-
</
|
|
1216
|
+
</Text>
|
|
1211
1217
|
}
|
|
1212
1218
|
header={<RemoteImage height="32px" source={imageUrl} width="32px" />}
|
|
1213
1219
|
subtitle={name}
|
|
@@ -1282,9 +1288,9 @@ function AnimatedPaginationCarousel() {
|
|
|
1282
1288
|
return (
|
|
1283
1289
|
<ContainedAssetCard
|
|
1284
1290
|
description={
|
|
1285
|
-
<
|
|
1291
|
+
<Text as="p" font="label2" color="fgPositive" numberOfLines={2}>
|
|
1286
1292
|
↗6.37%
|
|
1287
|
-
</
|
|
1293
|
+
</Text>
|
|
1288
1294
|
}
|
|
1289
1295
|
header={<RemoteImage height="32px" source={imageUrl} width="32px" />}
|
|
1290
1296
|
subtitle={name}
|
|
@@ -1359,9 +1365,9 @@ function ImperativeApiCarousel() {
|
|
|
1359
1365
|
return (
|
|
1360
1366
|
<ContainedAssetCard
|
|
1361
1367
|
description={
|
|
1362
|
-
<
|
|
1368
|
+
<Text as="p" font="label2" color="fgPositive" numberOfLines={2}>
|
|
1363
1369
|
↗6.37%
|
|
1364
|
-
</
|
|
1370
|
+
</Text>
|
|
1365
1371
|
}
|
|
1366
1372
|
header={<RemoteImage height="32px" source={imageUrl} width="32px" />}
|
|
1367
1373
|
subtitle={name}
|
|
@@ -158,7 +158,7 @@ function Example() {
|
|
|
158
158
|
| `marginX` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
|
|
159
159
|
| `marginY` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
|
|
160
160
|
| `maxHeight` | `ResponsiveProp<MaxHeight<string \| number>>` | No | `-` | - |
|
|
161
|
-
| `maxWidth` | `
|
|
161
|
+
| `maxWidth` | `ResponsiveProp<MaxWidth<string \| number>>` | No | `200` | If text content overflows, it will get truncated with an ellipsis. |
|
|
162
162
|
| `minHeight` | `ResponsiveProp<MinHeight<string \| number>>` | No | `-` | - |
|
|
163
163
|
| `minWidth` | `ResponsiveProp<MinWidth<string \| number>>` | No | `-` | - |
|
|
164
164
|
| `noScaleOnPress` | `boolean` | No | `-` | Dont scale element on press. |
|