@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
@@ -18,9 +18,9 @@ import { TableCell } from '@coinbase/cds-web/tables/TableCell'
18
18
  <TableRow backgroundColor="bgAlternate">
19
19
  <TableCell title="First Header" />
20
20
  <TableCell>
21
- <TextHeadline as="p" color="currentColor">
21
+ <Text as="p" font="headline" color="currentColor">
22
22
  Second Header
23
- </TextHeadline>
23
+ </Text>
24
24
  </TableCell>
25
25
  <TableCell title="Third Header" />
26
26
  </TableRow>
@@ -47,12 +47,12 @@ import { TableCell } from '@coinbase/cds-web/tables/TableCell'
47
47
  subtitle="0.11882557"
48
48
  />
49
49
  <TableCell>
50
- <TextHeadline as="h2" color="currentColor">
50
+ <Text as="h2" font="headline" color="currentColor">
51
51
  $2,221.01
52
- </TextHeadline>
53
- <TextLabel2 as="p" color="foregroundMuted">
52
+ </Text>
53
+ <Text as="p" font="label2" color="foregroundMuted">
54
54
  0.1519581 BTC
55
- </TextLabel2>
55
+ </Text>
56
56
  </TableCell>
57
57
  </TableRow>
58
58
  </TableBody>
@@ -110,10 +110,14 @@ You can control the visual prominence of the Tag using the `emphasis` prop. By d
110
110
  <HStack justifyContent="space-between" gap="2" alignItems="center">
111
111
  <VStack gap={0.5}>
112
112
  <HStack gap={1}>
113
- <TextHeadline as="p">Tax account status</TextHeadline>
113
+ <Text as="p" font="headline">
114
+ Tax account status
115
+ </Text>
114
116
  <Tag colorScheme="red">Not verified</Tag>
115
117
  </HStack>
116
- <TextBody as="p">Verify your info for tax reporting purposes.</TextBody>
118
+ <Text as="p" font="body">
119
+ Verify your info for tax reporting purposes.
120
+ </Text>
117
121
  </VStack>
118
122
  <Button>Get started</Button>
119
123
  </HStack>
@@ -125,9 +129,9 @@ You can control the visual prominence of the Tag using the `emphasis` prop. By d
125
129
  function MarginExample() {
126
130
  const renderStartLabelNum = useCallback((num, disabled) => {
127
131
  return (
128
- <TextTitle3 disabled={disabled} as="span">
132
+ <Text disabled={disabled} as="span" font="title3">
129
133
  ${num.toLocaleString()} (10%)
130
- </TextTitle3>
134
+ </Text>
131
135
  );
132
136
  }, []);
133
137
 
@@ -149,12 +153,14 @@ function MarginExample() {
149
153
  >
150
154
  <VStack gap={0.5}>
151
155
  <HStack gap={1}>
152
- <TextHeadline as="p">Margin ratio</TextHeadline>
156
+ <Text as="p" font="headline">
157
+ Margin ratio
158
+ </Text>
153
159
  <Tag colorScheme="green">Low</Tag>
154
160
  </HStack>
155
- <TextBody as="p">
161
+ <Text as="p" font="body">
156
162
  The portion of your balance being held on margin is low. No action is required.
157
- </TextBody>
163
+ </Text>
158
164
  </VStack>
159
165
  <ProgressBarWithFixedLabels
160
166
  startLabel={{ value: 400, render: renderStartLabelNum }}
@@ -176,10 +182,14 @@ function MarginExample() {
176
182
  >
177
183
  <VStack gap={0.5}>
178
184
  <HStack gap={1}>
179
- <TextHeadline as="p">Margin ratio</TextHeadline>
185
+ <Text as="p" font="headline">
186
+ Margin ratio
187
+ </Text>
180
188
  <Tag colorScheme="red">high</Tag>
181
189
  </HStack>
182
- <TextBody as="p">Margin usage is high. Deposit funds to avoid liquidation</TextBody>
190
+ <Text as="p" font="body">
191
+ Margin usage is high. Deposit funds to avoid liquidation
192
+ </Text>
183
193
  </VStack>
184
194
  <ProgressBarWithFixedLabels
185
195
  startLabel={{ value: 60000, render: renderStartLabelNum }}
@@ -126,7 +126,9 @@ with a TypeAhead component.
126
126
  ```jsx live
127
127
  <VStack gap={3}>
128
128
  <VStack>
129
- <TextHeadline as="p">Default sentiment</TextHeadline>
129
+ <Text as="p" font="headline">
130
+ Default sentiment
131
+ </Text>
130
132
  <TextInput
131
133
  label="Campaign title"
132
134
  placeholder="Title"
@@ -135,7 +137,9 @@ with a TypeAhead component.
135
137
  </VStack>
136
138
 
137
139
  <VStack>
138
- <TextHeadline as="p">Positive sentiment</TextHeadline>
140
+ <Text as="p" font="headline">
141
+ Positive sentiment
142
+ </Text>
139
143
  <TextInput
140
144
  label="Address"
141
145
  helperText="Valid BTC address"
@@ -146,7 +150,9 @@ with a TypeAhead component.
146
150
  </VStack>
147
151
 
148
152
  <VStack>
149
- <TextHeadline as="p">Negative Sentiment</TextHeadline>
153
+ <Text as="p" font="headline">
154
+ Negative Sentiment
155
+ </Text>
150
156
  <TextInput
151
157
  label="Address"
152
158
  helperText="Invalid BTC address"
@@ -271,7 +271,8 @@ Note: The Tray component is an elevated container that is pinned to the bottom o
271
271
  | `closeAccessibilityHint` | `string` | No | `-` | Sets an accessible hint or description for the close button. On web, maps to aria-describedby and lists the id(s) of the element(s) that describe the element on which the attribute is set. On mobile, a string that helps users understand what will happen when they perform an action on the accessibility element when that result is not clear from the accessibility label. |
272
272
  | `closeAccessibilityLabel` | `string` | No | `-` | Sets an accessible label for the close button. On web, maps to aria-label and defines a string value that labels an interactive element. On mobile, VoiceOver will read this string when a user selects the associated element. |
273
273
  | `focusTabIndexElements` | `boolean` | No | `false` | Allow any element with tabIndex attribute to be focusable in FocusTrap, rather than only focusing specific interactive element types like button. This can be useful when having long content in a Modal. |
274
- | `footer` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | Optional footer content that will be fixed to the bottom of the tray |
274
+ | `footer` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | ReactNode to render as the Drawer footer |
275
+ | `header` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | ReactNode to render as the Drawer header |
275
276
  | `id` | `string` | No | `-` | HTML ID for the tray |
276
277
  | `key` | `Key \| null` | No | `-` | - |
277
278
  | `onBlur` | `(() => void)` | No | `-` | Callback fired when the overlay is pressed, or swipe to close |
@@ -98,14 +98,14 @@ function Example() {
98
98
  <UpsellCard
99
99
  {...card}
100
100
  title={
101
- <TextHeadline color="fgInverse" as="h3">
101
+ <Text color="fgInverse" as="h3" font="headline">
102
102
  {card.title}
103
- </TextHeadline>
103
+ </Text>
104
104
  }
105
105
  description={
106
- <TextLabel2 as="p" numberOfLines={3} color="fgInverse">
106
+ <Text as="p" font="label2" numberOfLines={3} color="fgInverse">
107
107
  {card.description}
108
- </TextLabel2>
108
+ </Text>
109
109
  }
110
110
  />
111
111
  );
@@ -160,14 +160,14 @@ function Example() {
160
160
  <UpsellCard
161
161
  {...card}
162
162
  title={
163
- <TextHeadline color="fgInverse" as="h3">
163
+ <Text color="fgInverse" as="h3" font="headline">
164
164
  {card.title}
165
- </TextHeadline>
165
+ </Text>
166
166
  }
167
167
  description={
168
- <TextLabel2 as="p" numberOfLines={3} color="fgInverse">
168
+ <Text as="p" font="label2" numberOfLines={3} color="fgInverse">
169
169
  {card.description}
170
- </TextLabel2>
170
+ </Text>
171
171
  }
172
172
  />
173
173
  );
@@ -222,14 +222,14 @@ function Example() {
222
222
  <UpsellCard
223
223
  {...card}
224
224
  title={
225
- <TextHeadline color="fgInverse" as="h3">
225
+ <Text color="fgInverse" as="h3" font="headline">
226
226
  {card.title}
227
- </TextHeadline>
227
+ </Text>
228
228
  }
229
229
  description={
230
- <TextLabel2 as="p" numberOfLines={3} color="fgInverse">
230
+ <Text as="p" font="label2" numberOfLines={3} color="fgInverse">
231
231
  {card.description}
232
- </TextLabel2>
232
+ </Text>
233
233
  }
234
234
  />
235
235
  );
@@ -284,14 +284,14 @@ function Example() {
284
284
  <UpsellCard
285
285
  {...card}
286
286
  title={
287
- <TextHeadline color="fgInverse" as="h3">
287
+ <Text color="fgInverse" as="h3" font="headline">
288
288
  {card.title}
289
- </TextHeadline>
289
+ </Text>
290
290
  }
291
291
  description={
292
- <TextLabel2 as="p" numberOfLines={3} color="fgInverse">
292
+ <Text as="p" font="label2" numberOfLines={3} color="fgInverse">
293
293
  {card.description}
294
- </TextLabel2>
294
+ </Text>
295
295
  }
296
296
  />
297
297
  );
@@ -79,9 +79,9 @@ function Example() {
79
79
 
80
80
  return (
81
81
  <Box ref={ref} padding={3} background="bgAlternate" borderRadius={300} width="100%">
82
- <TextHeadline>
82
+ <Text font="headline">
83
83
  This box is {width}px wide and {height}px tall
84
- </TextHeadline>
84
+ </Text>
85
85
  </Box>
86
86
  );
87
87
  }
@@ -104,8 +104,8 @@ function Example() {
104
104
  return (
105
105
  <Box ref={ref} padding={3} background="bgAlternate" borderRadius={300} width="100%">
106
106
  <VStack gap={2}>
107
- <TextHeadline>Width: {width}px</TextHeadline>
108
- <TextHeadline>Current breakpoint: {currentBreakpoint || 'none'}</TextHeadline>
107
+ <Text font="headline">Width: {width}px</Text>
108
+ <Text font="headline">Current breakpoint: {currentBreakpoint || 'none'}</Text>
109
109
  </VStack>
110
110
  </Box>
111
111
  );
@@ -41,7 +41,11 @@ const hasMounted = useHasMounted();
41
41
 
42
42
  // in component render
43
43
  {
44
- hasMounted && isPhone && <TextHeadline as="h3">Welcome {username}!</TextHeadline>;
44
+ hasMounted && isPhone && (
45
+ <Text as="h3" font="headline">
46
+ Welcome {username}!
47
+ </Text>
48
+ );
45
49
  }
46
50
  ```
47
51
 
@@ -51,7 +55,7 @@ const hasMounted = useHasMounted();
51
55
  function Example() {
52
56
  const hasMounted = useHasMounted();
53
57
 
54
- return <TextHeadline>Component has {hasMounted ? 'mounted' : 'not mounted'}</TextHeadline>;
58
+ return <Text font="headline">Component has {hasMounted ? 'mounted' : 'not mounted'}</Text>;
55
59
  }
56
60
  ```
57
61
 
@@ -69,7 +73,7 @@ function Example() {
69
73
  }
70
74
  }, [hasMounted]);
71
75
 
72
- return <TextHeadline>{hasMounted ? `Current time: ${currentTime}` : 'Loading...'}</TextHeadline>;
76
+ return <Text font="headline">{hasMounted ? `Current time: ${currentTime}` : 'Loading...'}</Text>;
73
77
  }
74
78
  ```
75
79
 
@@ -48,7 +48,7 @@ function Example() {
48
48
 
49
49
  return (
50
50
  <VStack gap={2}>
51
- <TextHeadline>Mouse Position</TextHeadline>
51
+ <Text font="headline">Mouse Position</Text>
52
52
  <Text>X: {position.x}</Text>
53
53
  <Text>Y: {position.y}</Text>
54
54
  </VStack>
@@ -47,7 +47,7 @@ function Example() {
47
47
 
48
48
  return (
49
49
  <Box ref={refs} padding={3} background="bgAlternate" borderRadius={300}>
50
- <TextBody>This box uses a merged ref</TextBody>
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
- <TextBody>This element is referenced by three refs</TextBody>
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
- <TextBody>This box uses both function and object refs</TextBody>
109
+ <Text font="body">This box uses both function and object refs</Text>
110
110
  </Box>
111
- <TextBody>Box width: {elementWidth}px</TextBody>
111
+ <Text font="body">Box width: {elementWidth}px</Text>
112
112
  </VStack>
113
113
  );
114
114
  }
@@ -83,7 +83,7 @@ function ExampleComponent() {
83
83
 
84
84
  return (
85
85
  <VStack gap={2}>
86
- <TextHeadline>Overlay Context Information</TextHeadline>
86
+ <Text font="headline">Overlay Context Information</Text>
87
87
  <Text>Is inside any overlay: {isOverlay ? 'Yes' : 'No'}</Text>
88
88
  <Text>Is inside modal: {isModal ? 'Yes' : 'No'}</Text>
89
89
  <Text>Is inside drawer/tray: {isDrawer ? 'Yes' : 'No'}</Text>
@@ -106,7 +106,7 @@ function ModalExample() {
106
106
 
107
107
  return (
108
108
  <VStack gap={2}>
109
- <TextHeadline>Overlay Context Information</TextHeadline>
109
+ <Text font="headline">Overlay Context Information</Text>
110
110
  <Text>Is inside any overlay: {isOverlay ? 'Yes' : 'No'}</Text>
111
111
  <Text>Is inside modal: {isModal ? 'Yes' : 'No'}</Text>
112
112
  <Text>Is inside drawer/tray: {isDrawer ? 'Yes' : 'No'}</Text>
@@ -118,7 +118,7 @@ function ModalExample() {
118
118
  return (
119
119
  <VStack gap={3}>
120
120
  <VStack gap={2} padding={3} background="bgSecondary" borderRadius={400}>
121
- <TextHeadline>Outside Modal</TextHeadline>
121
+ <Text font="headline">Outside Modal</Text>
122
122
  <ExampleComponent />
123
123
  </VStack>
124
124
 
@@ -156,7 +156,7 @@ function ContextProviderExample() {
156
156
 
157
157
  return (
158
158
  <VStack gap={2}>
159
- <TextHeadline>Overlay Context Information</TextHeadline>
159
+ <Text font="headline">Overlay Context Information</Text>
160
160
  <Text>Is inside any overlay: {isOverlay ? 'Yes' : 'No'}</Text>
161
161
  <Text>Is inside modal: {isModal ? 'Yes' : 'No'}</Text>
162
162
  <Text>Is inside drawer/tray: {isDrawer ? 'Yes' : 'No'}</Text>
@@ -174,7 +174,7 @@ function ContextProviderExample() {
174
174
  return (
175
175
  <OverlayContentContext.Provider value={contextValue}>
176
176
  <VStack gap={2} padding={3} background="bgSecondary" borderRadius={400}>
177
- <TextHeadline>Inside Context Provider</TextHeadline>
177
+ <Text font="headline">Inside Context Provider</Text>
178
178
  <ExampleComponent />
179
179
  </VStack>
180
180
  </OverlayContentContext.Provider>
@@ -195,7 +195,7 @@ function ConditionalRenderingExample() {
195
195
 
196
196
  return (
197
197
  <VStack gap={2}>
198
- <TextHeadline>Conditional Content</TextHeadline>
198
+ <Text font="headline">Conditional Content</Text>
199
199
  {isOverlay ? (
200
200
  <VStack gap={1}>
201
201
  <Text color="fgPositive">✓ This content shows when inside an overlay</Text>
@@ -211,7 +211,7 @@ function ConditionalRenderingExample() {
211
211
  return (
212
212
  <VStack gap={3}>
213
213
  <VStack gap={2} padding={3} background="bgSecondary" borderRadius={400}>
214
- <TextHeadline>Outside Modal</TextHeadline>
214
+ <Text font="headline">Outside Modal</Text>
215
215
  <ConditionalContent />
216
216
  </VStack>
217
217
 
@@ -251,7 +251,7 @@ function StylingExample() {
251
251
 
252
252
  return (
253
253
  <VStack padding={3} background={getBackgroundColor()} borderRadius={400} gap={2}>
254
- <TextHeadline>Dynamic Styling</TextHeadline>
254
+ <Text font="headline">Dynamic Styling</Text>
255
255
  <Text>{getStatusText()}</Text>
256
256
  <Text color="fgMuted" font="caption">
257
257
  Background color: {getBackgroundColor()}
@@ -39,8 +39,8 @@ function Example() {
39
39
  return (
40
40
  <VStack gap={3} alignItems="start">
41
41
  <VStack gap={1}>
42
- <TextHeadline>Current count: {count}</TextHeadline>
43
- <TextHeadline>Previous count: {previousCount ?? 'None'}</TextHeadline>
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
- <TextHeadline>Name: {user.name}</TextHeadline>
66
- <TextHeadline>Age: {user.age}</TextHeadline>
67
- <TextHeadline>Previous age: {previousUser?.age ?? 'None'}</TextHeadline>
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
- <TextBody>This box is registered with ID 'box1'</TextBody>
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
- <TextBody>Box 1</TextBody>
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
- <TextBody>Box 2</TextBody>
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
- <TextBody>Box 3</TextBody>
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
- <TextBody>Box 1</TextBody>
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
- <TextBody>Box 2</TextBody>
170
+ <Text font="body">Box 2</Text>
171
171
  </Box>
172
172
 
173
173
  <Button onClick={logRefs}>Log Refs</Button>
@@ -44,7 +44,7 @@ function Example() {
44
44
 
45
45
  return (
46
46
  <VStack gap={3} alignItems="start">
47
- <TextHeadline>Scroll is currently {isBlocked ? 'blocked' : 'enabled'}</TextHeadline>
47
+ <Text font="headline">Scroll is currently {isBlocked ? 'blocked' : 'enabled'}</Text>
48
48
  <Button onClick={toggleScroll}>{isBlocked ? 'Enable Scroll' : 'Block Scroll'}</Button>
49
49
  </VStack>
50
50
  );
@@ -300,7 +300,7 @@ function Example() {
300
300
  return (
301
301
  <VStack gap={2}>
302
302
  <Box padding={3} background="bgAlternate" borderRadius={300}>
303
- <TextHeadline>Current Color Scheme: {theme.activeColorScheme}</TextHeadline>
303
+ <Text font="headline">Current Color Scheme: {theme.activeColorScheme}</Text>
304
304
  </Box>
305
305
 
306
306
  <VStack padding={3} background="bgAlternate" borderRadius={300}>
@@ -354,9 +354,9 @@ function Example() {
354
354
  return (
355
355
  <Box gap={0.5} borderRadius={300} alignItems="baseline">
356
356
  <Text as="span">This box adapts to {isDarkMode ? 'dark' : 'light'} mode</Text>
357
- <TextHeadline as="span" color={isDarkMode ? 'fgMuted' : 'fgPrimary'}>
357
+ <Text as="span" font="headline" color={isDarkMode ? 'fgMuted' : 'fgPrimary'}>
358
358
  with adaptive text colors
359
- </TextHeadline>
359
+ </Text>
360
360
  </Box>
361
361
  );
362
362
  }
@@ -103,6 +103,7 @@
103
103
  - [InputChip](web/components/InputChip.txt): A Chip used for removable selections.
104
104
  - [IconButton](web/components/IconButton.txt): A Button with an Icon for content.
105
105
  - [ControlGroup](web/components/ControlGroup.txt): A layout component that arranges and manages a group of related controls, such as radio buttons, switches, or checkboxes.
106
+ - [Combobox](web/components/Combobox.txt): A flexible combobox component for both single and multi-selection, built for web applications with comprehensive accessibility support.
106
107
  - [Chip](web/components/Chip.txt): A compact, interactive content element.
107
108
  - [CheckboxGroup](web/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.
108
109
  - [CheckboxCell](web/components/CheckboxCell.txt): A selectable cell that pairs a checkbox with a title and description for multi-choice selections.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coinbase/cds-mcp-server",
3
- "version": "8.28.1",
3
+ "version": "8.29.0",
4
4
  "description": "Coinbase Design System - MCP Server",
5
5
  "repository": {
6
6
  "type": "git",