@coinbase/cds-mcp-server 8.28.1 → 8.29.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.
Files changed (82) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/mcp-docs/mobile/components/Accordion.txt +3 -1
  3. package/mcp-docs/mobile/components/Alert.txt +3 -1
  4. package/mcp-docs/mobile/components/Banner.txt +14 -14
  5. package/mcp-docs/mobile/components/Button.txt +173 -30
  6. package/mcp-docs/mobile/components/Carousel.txt +24 -24
  7. package/mcp-docs/mobile/components/Combobox.txt +187 -0
  8. package/mcp-docs/mobile/components/ContainedAssetCard.txt +4 -4
  9. package/mcp-docs/mobile/components/ContentCard.txt +29 -27
  10. package/mcp-docs/mobile/components/ContentCardBody.txt +4 -4
  11. package/mcp-docs/mobile/components/ContentCardHeader.txt +2 -2
  12. package/mcp-docs/mobile/components/FloatingAssetCard.txt +6 -6
  13. package/mcp-docs/mobile/components/IconButton.txt +126 -51
  14. package/mcp-docs/mobile/components/LineChart.txt +3 -2
  15. package/mcp-docs/mobile/components/MultiContentModule.txt +6 -6
  16. package/mcp-docs/mobile/components/Numpad.txt +2 -2
  17. package/mcp-docs/mobile/components/PageHeader.txt +3 -1
  18. package/mcp-docs/mobile/components/PeriodSelector.txt +4 -4
  19. package/mcp-docs/mobile/components/Pressable.txt +6 -2
  20. package/mcp-docs/mobile/components/ProgressBarWithFixedLabels.txt +4 -4
  21. package/mcp-docs/mobile/components/ProgressBarWithFloatLabel.txt +2 -2
  22. package/mcp-docs/mobile/components/ProgressCircle.txt +5 -1
  23. package/mcp-docs/mobile/components/SelectChip.txt +2 -0
  24. package/mcp-docs/mobile/components/SelectChipAlpha.txt +1 -1
  25. package/mcp-docs/mobile/components/SlideButton.txt +2 -2
  26. package/mcp-docs/mobile/components/Sparkline.txt +3 -1
  27. package/mcp-docs/mobile/components/SparklineGradient.txt +3 -1
  28. package/mcp-docs/mobile/components/SparklineInteractiveHeader.txt +3 -1
  29. package/mcp-docs/mobile/components/TabbedChips.txt +3 -1
  30. package/mcp-docs/mobile/components/Tag.txt +19 -9
  31. package/mcp-docs/mobile/components/TextInput.txt +9 -3
  32. package/mcp-docs/mobile/components/Tray.txt +2 -0
  33. package/mcp-docs/mobile/components/UpsellCard.txt +16 -16
  34. package/mcp-docs/mobile/hooks/useDimensions.txt +4 -4
  35. package/mcp-docs/mobile/hooks/useMergeRefs.txt +4 -4
  36. package/mcp-docs/mobile/hooks/usePreviousValue.txt +5 -5
  37. package/mcp-docs/mobile/hooks/useRefMap.txt +6 -6
  38. package/mcp-docs/mobile/routes.txt +1 -0
  39. package/mcp-docs/web/components/Accordion.txt +3 -1
  40. package/mcp-docs/web/components/Alert.txt +3 -1
  41. package/mcp-docs/web/components/Banner.txt +14 -14
  42. package/mcp-docs/web/components/Button.txt +188 -34
  43. package/mcp-docs/web/components/Carousel.txt +71 -65
  44. package/mcp-docs/web/components/Combobox.txt +176 -0
  45. package/mcp-docs/web/components/ContainedAssetCard.txt +4 -4
  46. package/mcp-docs/web/components/ContentCard.txt +29 -27
  47. package/mcp-docs/web/components/ContentCardBody.txt +4 -4
  48. package/mcp-docs/web/components/ContentCardHeader.txt +2 -2
  49. package/mcp-docs/web/components/FloatingAssetCard.txt +6 -6
  50. package/mcp-docs/web/components/FullscreenModal.txt +12 -4
  51. package/mcp-docs/web/components/GridColumn.txt +12 -4
  52. package/mcp-docs/web/components/IconButton.txt +164 -189
  53. package/mcp-docs/web/components/LineChart.txt +3 -2
  54. package/mcp-docs/web/components/MultiContentModule.txt +6 -6
  55. package/mcp-docs/web/components/PageHeader.txt +11 -9
  56. package/mcp-docs/web/components/ProgressBarWithFixedLabels.txt +4 -4
  57. package/mcp-docs/web/components/ProgressBarWithFloatLabel.txt +2 -2
  58. package/mcp-docs/web/components/ProgressCircle.txt +5 -1
  59. package/mcp-docs/web/components/SelectChipAlpha.txt +1 -1
  60. package/mcp-docs/web/components/Sidebar.txt +2 -2
  61. package/mcp-docs/web/components/Sparkline.txt +3 -1
  62. package/mcp-docs/web/components/SparklineGradient.txt +3 -1
  63. package/mcp-docs/web/components/SparklineInteractiveHeader.txt +3 -1
  64. package/mcp-docs/web/components/TabbedChips.txt +3 -1
  65. package/mcp-docs/web/components/TableBody.txt +2 -2
  66. package/mcp-docs/web/components/TableCaption.txt +2 -2
  67. package/mcp-docs/web/components/TableCell.txt +6 -6
  68. package/mcp-docs/web/components/Tag.txt +19 -9
  69. package/mcp-docs/web/components/TextInput.txt +9 -3
  70. package/mcp-docs/web/components/Tray.txt +2 -1
  71. package/mcp-docs/web/components/UpsellCard.txt +16 -16
  72. package/mcp-docs/web/hooks/useDimensions.txt +4 -4
  73. package/mcp-docs/web/hooks/useHasMounted.txt +7 -3
  74. package/mcp-docs/web/hooks/useIsoEffect.txt +1 -1
  75. package/mcp-docs/web/hooks/useMergeRefs.txt +4 -4
  76. package/mcp-docs/web/hooks/useOverlayContentContext.txt +8 -8
  77. package/mcp-docs/web/hooks/usePreviousValue.txt +5 -5
  78. package/mcp-docs/web/hooks/useRefMap.txt +6 -6
  79. package/mcp-docs/web/hooks/useScrollBlocker.txt +1 -1
  80. package/mcp-docs/web/hooks/useTheme.txt +3 -3
  81. package/mcp-docs/web/routes.txt +1 -0
  82. package/package.json +1 -1
@@ -10,204 +10,99 @@ import { IconButton } from '@coinbase/cds-web/buttons/IconButton'
10
10
 
11
11
  ## Examples
12
12
 
13
- Icon buttons must have a name (which determines the icon), and can use variants to denote intent and importance.
13
+ IconButton is a compact button that displays only an icon. Use it for actions where the icon alone clearly communicates the purpose.
14
14
 
15
- :::tip Accessibility tip
15
+ ### Basics
16
16
 
17
- To ensure your `IconButton` implementation is accessible, it must have an `accessibilityLabel` that describes the purpose of the button.
18
-
19
- <br />
20
-
21
- In cases where you're composing a button next to a label or some text that describes the buttons
22
- action, you can setup your system using `accessibilityLabelledBy` prop mapping to the `id` on the
23
- label node (See [Composed example](#composed-example)).
24
-
25
- :::
17
+ The only required props are `name` (which determines the icon) and `accessibilityLabel` (for screen readers).
26
18
 
27
19
  ```jsx live
28
- <VStack gap={4}>
29
- <VStack gap={2}>
30
- <Text font="title3">Basic variants</Text>
31
- <HStack gap={2}>
32
- <IconButton
33
- active
34
- name="orderHistory"
35
- accessibilityLabel="View transaction history"
36
- variant="primary"
37
- onClick={console.log}
38
- />
39
- <IconButton
40
- active
41
- name="gear"
42
- accessibilityLabel="View settings"
43
- variant="secondary"
44
- onClick={console.log}
45
- />
46
- <IconButton
47
- name="phone"
48
- accessibilityLabel="View settings"
49
- variant="tertiary"
50
- onClick={console.log}
51
- />
52
- <IconButton
53
- name="checkmark"
54
- accessibilityLabel="Approve transaction"
55
- variant="foregroundMuted"
56
- onClick={console.log}
57
- />
58
- </HStack>
59
- </VStack>
20
+ <HStack gap={2} flexWrap="wrap">
21
+ <IconButton name="gear" accessibilityLabel="Open settings" onClick={console.log} />
22
+ <IconButton name="close" accessibilityLabel="Close modal" onClick={console.log} />
23
+ <IconButton name="refresh" accessibilityLabel="Refresh data" onClick={console.log} />
24
+ </HStack>
25
+ ```
60
26
 
61
- <VStack gap={2}>
62
- <Text font="title3">Transparent variants</Text>
63
- <HStack gap={2}>
64
- <IconButton
65
- active
66
- name="orderHistory"
67
- accessibilityLabel="View past order history"
68
- variant="primary"
69
- transparent
70
- onClick={console.log}
71
- />
72
- <IconButton
73
- name="phone"
74
- accessibilityLabel="View settings"
75
- variant="tertiary"
76
- transparent
77
- onClick={console.log}
78
- />
79
- <IconButton
80
- active
81
- name="gear"
82
- accessibilityLabel="Update settings"
83
- variant="secondary"
84
- transparent
85
- onClick={console.log}
86
- />
87
- <IconButton
88
- name="checkmark"
89
- accessibilityLabel="Verify your identity"
90
- variant="foregroundMuted"
91
- transparent
92
- onClick={console.log}
93
- />
94
- </HStack>
95
- </VStack>
27
+ ### Variants
96
28
 
97
- <VStack gap={2}>
98
- <Text font="title3">Loading states</Text>
99
- <HStack gap={2}>
100
- <IconButton
101
- active
102
- name="orderHistory"
103
- accessibilityLabel="Loading transaction history"
104
- variant="primary"
105
- loading
106
- onClick={console.log}
107
- />
108
- <IconButton
109
- active
110
- name="gear"
111
- accessibilityLabel="Loading settings"
112
- variant="secondary"
113
- loading
114
- onClick={console.log}
115
- />
116
- <IconButton
117
- name="checkmark"
118
- accessibilityLabel="Processing approval"
119
- variant="foregroundMuted"
120
- loading
121
- onClick={console.log}
122
- />
123
- </HStack>
124
- </VStack>
125
-
126
- <VStack gap={2}>
127
- <Text font="title3">Disabled states</Text>
128
- <HStack gap={2}>
129
- <IconButton
130
- active
131
- name="orderHistory"
132
- accessibilityLabel="View transaction history"
133
- variant="primary"
134
- disabled
135
- onClick={console.log}
136
- />
137
- <IconButton
138
- active
139
- name="gear"
140
- accessibilityLabel="View settings"
141
- variant="secondary"
142
- disabled
143
- onClick={console.log}
144
- />
145
- <IconButton
146
- name="checkmark"
147
- accessibilityLabel="Approve transaction"
148
- variant="foregroundMuted"
149
- disabled
150
- onClick={console.log}
151
- />
152
- </HStack>
153
- </VStack>
29
+ Use variants to denote intent and importance. The `active` prop fills the icon when enabled.
154
30
 
155
- <VStack gap={2}>
156
- <Text font="title3">Sizing</Text>
157
- <HStack gap={2} alignItems="center">
158
- <IconButton
159
- active
160
- name="gear"
161
- accessibilityLabel="Settings - compact"
162
- variant="primary"
163
- compact
164
- onClick={console.log}
165
- />
166
- <IconButton
167
- active
168
- name="gear"
169
- accessibilityLabel="Settings - regular"
170
- variant="primary"
171
- compact={false}
172
- onClick={console.log}
173
- />
174
- </HStack>
175
- </VStack>
176
- </VStack>
31
+ ```jsx live
32
+ <HStack gap={2} flexWrap="wrap">
33
+ <IconButton
34
+ active
35
+ name="orderHistory"
36
+ accessibilityLabel="View transaction history"
37
+ variant="primary"
38
+ onClick={console.log}
39
+ />
40
+ <IconButton
41
+ active
42
+ name="gear"
43
+ accessibilityLabel="View settings"
44
+ variant="secondary"
45
+ onClick={console.log}
46
+ />
47
+ <IconButton
48
+ name="phone"
49
+ accessibilityLabel="Call support"
50
+ variant="tertiary"
51
+ onClick={console.log}
52
+ />
53
+ <IconButton
54
+ name="checkmark"
55
+ accessibilityLabel="Approve transaction"
56
+ variant="foregroundMuted"
57
+ onClick={console.log}
58
+ />
59
+ </HStack>
177
60
  ```
178
61
 
179
- ### Composed example
62
+ #### Transparent
180
63
 
181
- As referenced above, if you're building a composed system, use the `accessibilityLabelledBy` prop and an `id` on the text node.
64
+ Use the `transparent` prop to remove the background until the user interacts with the button.
182
65
 
183
66
  ```jsx live
184
- function composedExample() {
185
- const [active, setActive] = useState(false);
186
- const name = useMemo(() => (active ? 'dropsActive' : 'dropsInactive'), [active]);
187
- const variant = useMemo(() => (active ? 'primary' : 'foregroundMuted'), [active]);
188
- const label = useMemo(() => (active ? 'Reject drop' : 'Claim drop'), [active]);
189
-
190
- return (
191
- <HStack gap={2} alignItems="center">
192
- <IconButton
193
- name={name}
194
- variant={variant}
195
- onClick={() => setActive((active) => !active)}
196
- // Accessibility props
197
- id="my-icon--id"
198
- accessibilityLabelledBy="my-label--id"
199
- />
200
- <Text font="label1" as="label" htmlFor="my-icon--id" id="my-label--id">
201
- {label}
202
- </Text>
203
- </HStack>
204
- );
205
- }
67
+ <HStack gap={2} flexWrap="wrap">
68
+ <IconButton
69
+ active
70
+ name="orderHistory"
71
+ accessibilityLabel="View past order history"
72
+ variant="primary"
73
+ transparent
74
+ onClick={console.log}
75
+ />
76
+ <IconButton
77
+ active
78
+ name="gear"
79
+ accessibilityLabel="Update settings"
80
+ variant="secondary"
81
+ transparent
82
+ onClick={console.log}
83
+ />
84
+ <IconButton
85
+ name="phone"
86
+ accessibilityLabel="Call support"
87
+ variant="tertiary"
88
+ transparent
89
+ onClick={console.log}
90
+ />
91
+ <IconButton
92
+ name="checkmark"
93
+ accessibilityLabel="Verify your identity"
94
+ variant="foregroundMuted"
95
+ transparent
96
+ onClick={console.log}
97
+ />
98
+ </HStack>
206
99
  ```
207
100
 
208
- ### Loading state
101
+ ### States
102
+
103
+ #### Loading
209
104
 
210
- Use the `loading` prop to show a spinner when an action is in progress. The button becomes non-interactive and shows a loading spinner instead of the icon.
105
+ Use the `loading` prop to show a spinner when an action is in progress. The button becomes non-interactive and displays a loading spinner instead of the icon.
211
106
 
212
107
  ```jsx live
213
108
  function LoadingExample() {
@@ -215,12 +110,11 @@ function LoadingExample() {
215
110
 
216
111
  const handleSubmit = () => {
217
112
  setIsLoading(true);
218
- // Simulate async operation
219
113
  setTimeout(() => setIsLoading(false), 2000);
220
114
  };
221
115
 
222
116
  return (
223
- <HStack gap={2}>
117
+ <HStack gap={2} flexWrap="wrap">
224
118
  <IconButton
225
119
  name="checkmark"
226
120
  accessibilityLabel={isLoading ? 'Processing submission' : 'Submit form'}
@@ -240,18 +134,51 @@ function LoadingExample() {
240
134
  }
241
135
  ```
242
136
 
137
+ #### Disabled
138
+
139
+ Use the `disabled` prop to prevent interaction and show a disabled visual state.
140
+
141
+ ```jsx live
142
+ <HStack gap={2} flexWrap="wrap">
143
+ <IconButton
144
+ active
145
+ name="orderHistory"
146
+ accessibilityLabel="View transaction history"
147
+ variant="primary"
148
+ disabled
149
+ onClick={console.log}
150
+ />
151
+ <IconButton
152
+ active
153
+ name="gear"
154
+ accessibilityLabel="View settings"
155
+ variant="secondary"
156
+ disabled
157
+ onClick={console.log}
158
+ />
159
+ <IconButton
160
+ name="checkmark"
161
+ accessibilityLabel="Approve transaction"
162
+ variant="foregroundMuted"
163
+ disabled
164
+ onClick={console.log}
165
+ />
166
+ </HStack>
167
+ ```
168
+
243
169
  ### Sizing
244
170
 
245
- IconButtons come in two sizes: compact (default) and regular. Use `compact={false}` for larger touch targets.
171
+ IconButtons are compact by default. Use `compact={false}` for larger touch targets.
246
172
 
247
173
  ```jsx live
248
- <HStack gap={2} alignItems="center">
174
+ <HStack gap={2} flexWrap="wrap" alignItems="center">
249
175
  <IconButton
250
176
  active
251
177
  name="gear"
252
178
  accessibilityLabel="Settings - compact"
253
179
  variant="primary"
254
180
  compact
181
+ onClick={console.log}
255
182
  />
256
183
  <IconButton
257
184
  active
@@ -259,18 +186,66 @@ IconButtons come in two sizes: compact (default) and regular. Use `compact={fals
259
186
  accessibilityLabel="Settings - regular"
260
187
  variant="primary"
261
188
  compact={false}
189
+ onClick={console.log}
262
190
  />
263
191
  </HStack>
264
192
  ```
265
193
 
266
- ### A11y
194
+ ### Accessibility
267
195
 
268
- Since icon buttons have no descriptive text or children, an accessibility label must be provided.
196
+ Since icon buttons have no visible text, an `accessibilityLabel` is required to describe the button's purpose for screen readers.
269
197
 
270
198
  ```jsx
271
199
  <IconButton name="close" accessibilityLabel="Close trade modal" />
272
200
  ```
273
201
 
202
+ When composing a button with a visible label, use `accessibilityLabelledBy` to reference the label's `id` instead. See the [Claim Drop example](#claim-drop) below.
203
+
204
+ ### Composed Examples
205
+
206
+ #### Claim Drop
207
+
208
+ A toggleable icon button with an adjacent label. Uses `accessibilityLabelledBy` to associate the button with its visible label.
209
+
210
+ ```jsx live
211
+ function ClaimDropExample() {
212
+ const [active, setActive] = useState(false);
213
+ const variant = useMemo(() => (active ? 'primary' : 'foregroundMuted'), [active]);
214
+ const label = useMemo(() => (active ? 'Reject drop' : 'Claim drop'), [active]);
215
+
216
+ return (
217
+ <HStack gap={2} alignItems="center">
218
+ <IconButton
219
+ name="drops"
220
+ active={active}
221
+ variant={variant}
222
+ onClick={() => setActive((active) => !active)}
223
+ id="claim-drop-button"
224
+ accessibilityLabelledBy="claim-drop-label"
225
+ />
226
+ <Text font="label1" as="label" htmlFor="claim-drop-button" id="claim-drop-label">
227
+ {label}
228
+ </Text>
229
+ </HStack>
230
+ );
231
+ }
232
+ ```
233
+
234
+ #### Notification Bell
235
+
236
+ An icon button with a badge showing the notification count. Uses `DotCount` to display the number of unread notifications.
237
+
238
+ ```jsx live
239
+ <DotCount count={3} overlap="circular" pin="top-end">
240
+ <IconButton
241
+ name="bell"
242
+ accessibilityLabel="Notifications, 3 unread"
243
+ variant="secondary"
244
+ onClick={console.log}
245
+ />
246
+ </DotCount>
247
+ ```
248
+
274
249
  ## Props
275
250
 
276
251
  | Prop | Type | Required | Default | Description |
@@ -1268,14 +1268,15 @@ function AssetPriceWithDottedArea() {
1268
1268
  <SegmentedTab
1269
1269
  ref={ref}
1270
1270
  label={
1271
- <TextLabel1
1271
+ <Text
1272
+ font="label1"
1272
1273
  style={{
1273
1274
  transition: 'color 0.2s ease',
1274
1275
  color: isActive ? assets.btc.color : undefined,
1275
1276
  }}
1276
1277
  >
1277
1278
  {label}
1278
- </TextLabel1>
1279
+ </Text>
1279
1280
  }
1280
1281
  {...props}
1281
1282
  />
@@ -215,9 +215,9 @@ function Example() {
215
215
  <VStack>
216
216
  <HStack justifyContent="center" zIndex={1}>
217
217
  <Box background="background" paddingHorizontal={1.5}>
218
- <TextBody as="span" color="foregroundMuted">
218
+ <Text as="span" font="body" color="foregroundMuted">
219
219
  OR
220
- </TextBody>
220
+ </Text>
221
221
  </Box>
222
222
  </HStack>
223
223
  <Divider marginTop={-1.5} paddingBottom={1.5} />
@@ -235,9 +235,9 @@ function Example() {
235
235
  >
236
236
  <Box padding={2}>{icon}</Box>
237
237
  </Pressable>
238
- <TextLabel2 as="span" color="foregroundMuted" paddingTop={1}>
238
+ <Text as="span" font="label2" color="foregroundMuted" paddingTop={1}>
239
239
  {name}
240
- </TextLabel2>
240
+ </Text>
241
241
  </VStack>
242
242
  ))}
243
243
  </HStack>
@@ -251,13 +251,13 @@ function Example() {
251
251
  actionAccessibilityLabel="Continue"
252
252
  title="Sign in to Coinbase"
253
253
  description={
254
- <TextBody as="p" color="foregroundMuted">
254
+ <Text as="p" font="body" color="foregroundMuted">
255
255
  By signing in, you agree to our{' '}
256
256
  <Link to="https://www.google.com/" openInNewWindow underline={false}>
257
257
  Privacy Policy
258
258
  </Link>
259
259
  . Not your device? Use a private window.
260
- </TextBody>
260
+ </Text>
261
261
  }
262
262
  accessibilityLabel="Login section"
263
263
  pictogram={<LogoMark size={32} />}
@@ -85,17 +85,17 @@ function Example() {
85
85
  />
86
86
  <Box padding={3} background="bgPositiveWash">
87
87
  <VStack gap={3} background="bgPrimaryWash">
88
- <TextTitle2>Configure Your Trading Preferences</TextTitle2>
89
- <TextBody>
88
+ <Text font="title2">Configure Your Trading Preferences</Text>
89
+ <Text font="body">
90
90
  Customize your trading experience by adjusting the settings below. These preferences
91
91
  will apply to all your trading activities and can be modified at any time.
92
- </TextBody>
93
- <TextTitle4>Order Types</TextTitle4>
94
- <TextBody color="fgSecondary">
92
+ </Text>
93
+ <Text font="title4">Order Types</Text>
94
+ <Text font="body" color="fgSecondary">
95
95
  Choose your preferred default order types for buying and selling. Market orders execute
96
96
  immediately at current prices, while limit orders allow you to set specific price
97
97
  targets.
98
- </TextBody>
98
+ </Text>
99
99
  </VStack>
100
100
  </Box>
101
101
  </>
@@ -123,10 +123,12 @@ function Example() {
123
123
  paddingY={10}
124
124
  >
125
125
  <HeroSquare name="bigWarning" />
126
- <TextTitle1 as="h3">You need to X before you Y</TextTitle1>
127
- <TextBody align="center" as="sub">
126
+ <Text as="h3" font="title1">
127
+ You need to X before you Y
128
+ </Text>
129
+ <Text font="body" align="center" as="sub">
128
130
  You&apos;ll need to [add funds] before you can [complete this transaction]
129
- </TextBody>
131
+ </Text>
130
132
  </VStack>
131
133
  </Box>
132
134
  </VStack>
@@ -63,17 +63,17 @@ function Example() {
63
63
 
64
64
  const renderStartLabelNum = useCallback((num, disabled) => {
65
65
  return (
66
- <TextTitle3 disabled={disabled} as="span">
66
+ <Text disabled={disabled} as="span" font="title3">
67
67
  ${num.toLocaleString()}
68
- </TextTitle3>
68
+ </Text>
69
69
  );
70
70
  }, []);
71
71
 
72
72
  const renderEndLabelNum = useCallback((num, disabled) => {
73
73
  return (
74
- <TextLabel2 disabled={disabled} as="span" align="end" noWrap>
74
+ <Text disabled={disabled} as="span" font="label2" align="end" noWrap>
75
75
  ${num.toLocaleString()} left
76
- </TextLabel2>
76
+ </Text>
77
77
  );
78
78
  }, []);
79
79
 
@@ -56,9 +56,9 @@ function Example() {
56
56
 
57
57
  const renderLabelNum = useCallback((num, disabled) => {
58
58
  return (
59
- <TextTitle3 as="span" disabled={disabled}>
59
+ <Text as="span" font="title3" disabled={disabled}>
60
60
  ${num.toLocaleString()}
61
- </TextTitle3>
61
+ </Text>
62
62
  );
63
63
  }, []);
64
64
 
@@ -351,7 +351,11 @@ The progress circle can be customized with styles and class names.
351
351
  stroke: 'transparent',
352
352
  },
353
353
  }}
354
- contentNode={<TextTitle1 color="fgPrimary">40%</TextTitle1>}
354
+ contentNode={
355
+ <Text font="title1" color="fgPrimary">
356
+ 40%
357
+ </Text>
358
+ }
355
359
  weight="semiheavy"
356
360
  />
357
361
  <ProgressCircle
@@ -349,6 +349,6 @@ function ExampleDisabled() {
349
349
  | `style` | `CSSProperties` | No | `-` | Inline styles for the root element |
350
350
  | `styles` | `{ root?: CSSProperties; control?: CSSProperties \| undefined; controlStartNode?: CSSProperties \| undefined; controlInputNode?: CSSProperties \| undefined; controlValueNode?: CSSProperties \| undefined; controlLabelNode?: CSSProperties \| undefined; controlHelperTextNode?: CSSProperties \| undefined; controlEndNode?: CSSProperties \| undefined; controlBlendStyles?: InteractableBlendStyles \| undefined; dropdown?: CSSProperties \| undefined; option?: CSSProperties \| undefined; optionCell?: CSSProperties \| undefined; optionContent?: CSSProperties \| undefined; optionLabel?: CSSProperties \| undefined; optionDescription?: CSSProperties \| undefined; optionBlendStyles?: InteractableBlendStyles \| undefined; selectAllDivider?: CSSProperties \| undefined; emptyContentsContainer?: CSSProperties \| undefined; emptyContentsText?: CSSProperties \| undefined; optionGroup?: CSSProperties \| undefined; } \| undefined` | No | `-` | Custom styles for different parts of the select |
351
351
  | `testID` | `string` | No | `-` | Test ID for the root element |
352
- | `type` | `single \| multi` | No | `-` | Whether the select allows single or multiple selections |
352
+ | `type` | `multi \| single` | No | `-` | Whether the select allows single or multiple selections |
353
353
 
354
354
 
@@ -57,9 +57,9 @@ function Example() {
57
57
  testID="sidebar-item-primary"
58
58
  >
59
59
  <Icon name="documentation" />
60
- <TextHeadline as="span" color="foreground">
60
+ <Text as="span" font="headline" color="foreground">
61
61
  End item
62
- </TextHeadline>
62
+ </Text>
63
63
  </HStack>
64
64
  </Pressable>
65
65
  );
@@ -76,7 +76,9 @@ function Example() {
76
76
  const path = useSparklinePath({ ...dimensions, data: prices, yAxisScalingFactor });
77
77
  return (
78
78
  <VStack gap={2}>
79
- <TextLabel1 as="p">Scale {yAxisScalingFactor}</TextLabel1>
79
+ <Text as="p" font="label1">
80
+ Scale {yAxisScalingFactor}
81
+ </Text>
80
82
  <Sparkline {...dimensions} path={path} color="auto" yAxisScalingFactor={yAxisScalingFactor} />
81
83
  </VStack>
82
84
  );
@@ -55,7 +55,9 @@ function Example() {
55
55
  const path = useSparklinePath({ ...dimensions, data: prices, yAxisScalingFactor });
56
56
  return (
57
57
  <VStack gap={2}>
58
- <TextLabel1 as="p">Scale {yAxisScalingFactor}</TextLabel1>
58
+ <Text as="p" font="label1">
59
+ Scale {yAxisScalingFactor}
60
+ </Text>
59
61
  <SparklineGradient
60
62
  {...dimensions}
61
63
  path={path}
@@ -55,7 +55,9 @@ The fill will be added by default
55
55
  labelNode={
56
56
  <HStack gap={1} alignItems="center">
57
57
  <Icon active name="wallet" size="s" />
58
- <TextTitle3 as="span">CustomHeader</TextTitle3>
58
+ <Text as="span" font="title3">
59
+ CustomHeader
60
+ </Text>
59
61
  </HStack>
60
62
  }
61
63
  />
@@ -36,7 +36,9 @@ function TabbedChipsExample() {
36
36
  return (
37
37
  <VStack maxWidth={375} borderRadius={400} bordered paddingX={3} gap={2} paddingY={3}>
38
38
  <VStack paddingTop={1}>
39
- <TextTitle3 as="p">Popular assets</TextTitle3>
39
+ <Text as="p" font="title3">
40
+ Popular assets
41
+ </Text>
40
42
  </VStack>
41
43
  <SearchInput compact placeholder="Search by name" />
42
44
  <OldTabbedChips value={value} onChange={setValue} tabs={tabs} />
@@ -40,9 +40,9 @@ import { TableBody } from '@coinbase/cds-web/tables/TableBody'
40
40
  <TableRow>
41
41
  <TableCell height={320} alignItems="center" justifyContent="center">
42
42
  <Spinner size={4} color="primary" />
43
- <TextHeadline as="p" spacingTop={2} color="foregroundMuted">
43
+ <Text as="p" font="headline" spacingTop={2} color="foregroundMuted">
44
44
  Loading content...
45
- </TextHeadline>
45
+ </Text>
46
46
  </TableCell>
47
47
  </TableRow>
48
48
  </TableBody>
@@ -36,9 +36,9 @@ import { TableCaption } from '@coinbase/cds-web/tables/TableCaption'
36
36
  <Table bordered>
37
37
  <TableCaption>
38
38
  <VStack gap={1}>
39
- <TextTitle2 as="h2" color="primary">
39
+ <Text as="h2" font="title2" color="primary">
40
40
  Project Team
41
- </TextTitle2>
41
+ </Text>
42
42
  <Text as="p" color="foregroundMuted">
43
43
  Updated as of March 2024
44
44
  </Text>