@coinbase/cds-mcp-server 8.41.0 → 8.42.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 +4 -0
- package/mcp-docs/mobile/components/ContainedAssetCard.txt +1 -1
- package/mcp-docs/mobile/components/ContentCard.txt +220 -174
- package/mcp-docs/mobile/components/ContentCardBody.txt +127 -19
- package/mcp-docs/mobile/components/ContentCardFooter.txt +63 -1
- package/mcp-docs/mobile/components/ContentCardHeader.txt +71 -16
- package/mcp-docs/mobile/components/DataCard.txt +723 -0
- package/mcp-docs/mobile/components/FloatingAssetCard.txt +1 -1
- package/mcp-docs/mobile/components/MediaCard.txt +526 -0
- package/mcp-docs/mobile/components/MessagingCard.txt +1025 -0
- package/mcp-docs/mobile/components/Scrubber.txt +140 -0
- package/mcp-docs/mobile/routes.txt +6 -3
- package/mcp-docs/web/components/ContentCard.txt +419 -327
- package/mcp-docs/web/components/ContentCardBody.txt +91 -16
- package/mcp-docs/web/components/ContentCardFooter.txt +231 -165
- package/mcp-docs/web/components/ContentCardHeader.txt +237 -177
- package/mcp-docs/web/components/DataCard.txt +800 -0
- package/mcp-docs/web/components/MediaCard.txt +559 -0
- package/mcp-docs/web/components/MessagingCard.txt +1054 -0
- package/mcp-docs/web/components/ReferenceLine.txt +1 -0
- package/mcp-docs/web/components/Scrubber.txt +106 -0
- package/mcp-docs/web/routes.txt +3 -0
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# FloatingAssetCard
|
|
2
2
|
|
|
3
|
-
Asset Cards display current and potential future assets, offering a straightforward method to view and manage a customer's holdings.
|
|
3
|
+
Asset Cards display current and potential future assets, offering a straightforward method to view and manage a customer's holdings.
|
|
4
4
|
|
|
5
5
|
## Import
|
|
6
6
|
|
|
@@ -0,0 +1,526 @@
|
|
|
1
|
+
# MediaCard
|
|
2
|
+
|
|
3
|
+
MediaCard displays content with optional media in a contained card layout. Use it to showcase assets, products, or content with a thumbnail, title, subtitle, description, and optional media placement. MediaCard replaces the deprecated FloatingAssetCard and ContainedAssetCard components.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { MediaCard } from '@coinbase/cds-mobile/cards/MediaCard'
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Examples
|
|
12
|
+
|
|
13
|
+
MediaCard provides a contained card layout with optional media, ideal for showcasing assets, products, or promotional content.
|
|
14
|
+
|
|
15
|
+
:::info Migrating from FloatingAssetCard or ContainedAssetCard?
|
|
16
|
+
See the [Migration Guide](#migration-from-deprecated-components) at the end of this page.
|
|
17
|
+
:::
|
|
18
|
+
|
|
19
|
+
### Basic
|
|
20
|
+
|
|
21
|
+
At minimum, provide a `thumbnail` to display visual content and a `title` for the card heading.
|
|
22
|
+
|
|
23
|
+
```jsx
|
|
24
|
+
<VStack gap={2}>
|
|
25
|
+
<MediaCard
|
|
26
|
+
thumbnail={
|
|
27
|
+
<RemoteImage accessibilityLabel="Ethereum" shape="circle" size="l" source={ethBackground} />
|
|
28
|
+
}
|
|
29
|
+
title="Title"
|
|
30
|
+
subtitle="Subtitle"
|
|
31
|
+
description="Description"
|
|
32
|
+
width={320}
|
|
33
|
+
/>
|
|
34
|
+
<MediaCard
|
|
35
|
+
thumbnail={
|
|
36
|
+
<RemoteImage
|
|
37
|
+
accessibilityLabel="Ethereum"
|
|
38
|
+
shape="circle"
|
|
39
|
+
size="l"
|
|
40
|
+
source={CDSDataAssets.ethBackground}
|
|
41
|
+
/>
|
|
42
|
+
}
|
|
43
|
+
title="Title"
|
|
44
|
+
subtitle="Subtitle"
|
|
45
|
+
description="Description"
|
|
46
|
+
width={320}
|
|
47
|
+
media={
|
|
48
|
+
<RemoteImage
|
|
49
|
+
accessibilityLabel="Media"
|
|
50
|
+
height="100%"
|
|
51
|
+
resizeMode="cover"
|
|
52
|
+
shape="rectangle"
|
|
53
|
+
source={ethBackground}
|
|
54
|
+
width="100%"
|
|
55
|
+
/>
|
|
56
|
+
}
|
|
57
|
+
/>
|
|
58
|
+
</VStack>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Media Placement
|
|
62
|
+
|
|
63
|
+
Use the `media` prop to display larger visual content. Control its position with `mediaPlacement`:
|
|
64
|
+
|
|
65
|
+
- `start`: Media on the left
|
|
66
|
+
- `end` (default): Media on the right
|
|
67
|
+
|
|
68
|
+
```jsx
|
|
69
|
+
<VStack gap={2}>
|
|
70
|
+
<MediaCard
|
|
71
|
+
thumbnail={
|
|
72
|
+
<RemoteImage accessibilityLabel="Ethereum" shape="circle" size="l" source={ethBackground} />
|
|
73
|
+
}
|
|
74
|
+
title="Title"
|
|
75
|
+
subtitle="Subtitle"
|
|
76
|
+
description="Description"
|
|
77
|
+
width={320}
|
|
78
|
+
media={
|
|
79
|
+
<RemoteImage
|
|
80
|
+
accessibilityLabel="Media"
|
|
81
|
+
height="100%"
|
|
82
|
+
resizeMode="cover"
|
|
83
|
+
shape="rectangle"
|
|
84
|
+
source={ethBackground}
|
|
85
|
+
width="100%"
|
|
86
|
+
/>
|
|
87
|
+
}
|
|
88
|
+
mediaPlacement="start"
|
|
89
|
+
/>
|
|
90
|
+
<MediaCard
|
|
91
|
+
thumbnail={
|
|
92
|
+
<RemoteImage accessibilityLabel="Ethereum" shape="circle" size="l" source={ethBackground} />
|
|
93
|
+
}
|
|
94
|
+
title="Title"
|
|
95
|
+
subtitle="Subtitle"
|
|
96
|
+
description="Description"
|
|
97
|
+
width={320}
|
|
98
|
+
media={
|
|
99
|
+
<RemoteImage
|
|
100
|
+
accessibilityLabel="Media"
|
|
101
|
+
height="100%"
|
|
102
|
+
resizeMode="cover"
|
|
103
|
+
shape="rectangle"
|
|
104
|
+
source={ethBackground}
|
|
105
|
+
width="100%"
|
|
106
|
+
/>
|
|
107
|
+
}
|
|
108
|
+
mediaPlacement="end"
|
|
109
|
+
/>
|
|
110
|
+
</VStack>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Interactive
|
|
114
|
+
|
|
115
|
+
MediaCard can be made interactive with the `onPress` prop and `renderAsPressable`.
|
|
116
|
+
|
|
117
|
+
```jsx
|
|
118
|
+
<MediaCard
|
|
119
|
+
renderAsPressable
|
|
120
|
+
accessibilityLabel="View Ethereum details"
|
|
121
|
+
thumbnail={
|
|
122
|
+
<RemoteImage accessibilityLabel="Ethereum" shape="circle" size="l" source={ethBackground} />
|
|
123
|
+
}
|
|
124
|
+
title="Interactive Card"
|
|
125
|
+
subtitle="Button"
|
|
126
|
+
description="Clickable card with onPress handler"
|
|
127
|
+
width={320}
|
|
128
|
+
media={
|
|
129
|
+
<RemoteImage
|
|
130
|
+
accessibilityLabel="Media"
|
|
131
|
+
height="100%"
|
|
132
|
+
resizeMode="cover"
|
|
133
|
+
shape="rectangle"
|
|
134
|
+
source={ethBackground}
|
|
135
|
+
width="100%"
|
|
136
|
+
/>
|
|
137
|
+
}
|
|
138
|
+
onPress={() => console.log('Card clicked!')}
|
|
139
|
+
/>
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Text Content
|
|
143
|
+
|
|
144
|
+
#### Long Text
|
|
145
|
+
|
|
146
|
+
The card handles long text content with truncation.
|
|
147
|
+
|
|
148
|
+
```jsx
|
|
149
|
+
<MediaCard
|
|
150
|
+
thumbnail={
|
|
151
|
+
<RemoteImage accessibilityLabel="Ethereum" shape="circle" size="l" source={ethBackground} />
|
|
152
|
+
}
|
|
153
|
+
title="This is a very long title text that will get truncated"
|
|
154
|
+
subtitle="This is a very long subtitle text that will get truncated"
|
|
155
|
+
description="This is a very long description text that demonstrates how the card handles longer content"
|
|
156
|
+
width={320}
|
|
157
|
+
media={
|
|
158
|
+
<RemoteImage
|
|
159
|
+
accessibilityLabel="Media"
|
|
160
|
+
height="100%"
|
|
161
|
+
resizeMode="cover"
|
|
162
|
+
shape="rectangle"
|
|
163
|
+
source={ethBackground}
|
|
164
|
+
width="100%"
|
|
165
|
+
/>
|
|
166
|
+
}
|
|
167
|
+
/>
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
#### Custom Content
|
|
171
|
+
|
|
172
|
+
Use React nodes for custom styled text content.
|
|
173
|
+
|
|
174
|
+
```jsx
|
|
175
|
+
<MediaCard
|
|
176
|
+
thumbnail={
|
|
177
|
+
<RemoteImage accessibilityLabel="Ethereum" shape="circle" size="l" source={ethBackground} />
|
|
178
|
+
}
|
|
179
|
+
title={<Text font="title3">Custom Title</Text>}
|
|
180
|
+
subtitle={
|
|
181
|
+
<Text font="headline" color="fgPositive">
|
|
182
|
+
Custom Subtitle
|
|
183
|
+
</Text>
|
|
184
|
+
}
|
|
185
|
+
description={
|
|
186
|
+
<Text font="label2">
|
|
187
|
+
Custom description with <Text font="headline">bold text</Text> and{' '}
|
|
188
|
+
<Text font="label1">italic text</Text>
|
|
189
|
+
</Text>
|
|
190
|
+
}
|
|
191
|
+
width={320}
|
|
192
|
+
media={
|
|
193
|
+
<RemoteImage
|
|
194
|
+
accessibilityLabel="Media"
|
|
195
|
+
height="100%"
|
|
196
|
+
resizeMode="cover"
|
|
197
|
+
shape="rectangle"
|
|
198
|
+
source={ethBackground}
|
|
199
|
+
width="100%"
|
|
200
|
+
/>
|
|
201
|
+
}
|
|
202
|
+
/>
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Styling
|
|
206
|
+
|
|
207
|
+
Use the `styles` prop to customize specific parts of the card.
|
|
208
|
+
|
|
209
|
+
```jsx
|
|
210
|
+
<VStack gap={2}>
|
|
211
|
+
<MediaCard
|
|
212
|
+
thumbnail={
|
|
213
|
+
<RemoteImage accessibilityLabel="Ethereum" shape="circle" size="l" source={ethBackground} />
|
|
214
|
+
}
|
|
215
|
+
title="Title"
|
|
216
|
+
subtitle="Subtitle"
|
|
217
|
+
description="Description"
|
|
218
|
+
width={320}
|
|
219
|
+
media={
|
|
220
|
+
<RemoteImage
|
|
221
|
+
accessibilityLabel="Media"
|
|
222
|
+
height="100%"
|
|
223
|
+
resizeMode="cover"
|
|
224
|
+
shape="rectangle"
|
|
225
|
+
source={ethBackground}
|
|
226
|
+
width="100%"
|
|
227
|
+
/>
|
|
228
|
+
}
|
|
229
|
+
styles={{
|
|
230
|
+
layoutContainer: { gap: 3 },
|
|
231
|
+
contentContainer: { padding: 3, gap: 2 },
|
|
232
|
+
textContainer: { gap: 1 },
|
|
233
|
+
headerContainer: { gap: 1 },
|
|
234
|
+
mediaContainer: { borderRadius: 300 },
|
|
235
|
+
}}
|
|
236
|
+
/>
|
|
237
|
+
<MediaCard
|
|
238
|
+
thumbnail={
|
|
239
|
+
<RemoteImage accessibilityLabel="Ethereum" shape="circle" size="l" source={ethBackground} />
|
|
240
|
+
}
|
|
241
|
+
title="Title"
|
|
242
|
+
subtitle="Subtitle"
|
|
243
|
+
description="Description"
|
|
244
|
+
width={320}
|
|
245
|
+
media={
|
|
246
|
+
<RemoteImage
|
|
247
|
+
accessibilityLabel="Media"
|
|
248
|
+
height="100%"
|
|
249
|
+
resizeMode="cover"
|
|
250
|
+
shape="rectangle"
|
|
251
|
+
source={ethBackground}
|
|
252
|
+
width="100%"
|
|
253
|
+
/>
|
|
254
|
+
}
|
|
255
|
+
styles={{
|
|
256
|
+
root: { borderWidth: 2, borderColor: 'blue' },
|
|
257
|
+
}}
|
|
258
|
+
/>
|
|
259
|
+
</VStack>
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### Multiple Cards
|
|
263
|
+
|
|
264
|
+
Display multiple cards in a carousel.
|
|
265
|
+
|
|
266
|
+
```jsx
|
|
267
|
+
<Carousel styles={{ carousel: { gap: 16 } }}>
|
|
268
|
+
<CarouselItem id="card1">
|
|
269
|
+
<MediaCard
|
|
270
|
+
thumbnail={
|
|
271
|
+
<RemoteImage accessibilityLabel="Ethereum" shape="circle" size="l" source={ethBackground} />
|
|
272
|
+
}
|
|
273
|
+
title="Title"
|
|
274
|
+
subtitle="Subtitle"
|
|
275
|
+
description="Description"
|
|
276
|
+
width={320}
|
|
277
|
+
media={
|
|
278
|
+
<RemoteImage
|
|
279
|
+
accessibilityLabel="Media"
|
|
280
|
+
height="100%"
|
|
281
|
+
resizeMode="cover"
|
|
282
|
+
shape="rectangle"
|
|
283
|
+
source={ethBackground}
|
|
284
|
+
width="100%"
|
|
285
|
+
/>
|
|
286
|
+
}
|
|
287
|
+
/>
|
|
288
|
+
</CarouselItem>
|
|
289
|
+
<CarouselItem id="card2">
|
|
290
|
+
<MediaCard
|
|
291
|
+
renderAsPressable
|
|
292
|
+
accessibilityLabel="View Bitcoin details"
|
|
293
|
+
thumbnail={
|
|
294
|
+
<RemoteImage
|
|
295
|
+
accessibilityLabel="Bitcoin thumbnail"
|
|
296
|
+
shape="square"
|
|
297
|
+
size="l"
|
|
298
|
+
source={assets.btc.imageUrl}
|
|
299
|
+
/>
|
|
300
|
+
}
|
|
301
|
+
title="Bitcoin"
|
|
302
|
+
subtitle="BTC"
|
|
303
|
+
description="Another card with different content"
|
|
304
|
+
width={320}
|
|
305
|
+
media={
|
|
306
|
+
<RemoteImage
|
|
307
|
+
accessibilityLabel="Ethereum background media"
|
|
308
|
+
height="100%"
|
|
309
|
+
resizeMode="cover"
|
|
310
|
+
shape="rectangle"
|
|
311
|
+
source={ethBackground}
|
|
312
|
+
width="100%"
|
|
313
|
+
/>
|
|
314
|
+
}
|
|
315
|
+
/>
|
|
316
|
+
</CarouselItem>
|
|
317
|
+
<CarouselItem id="card3">
|
|
318
|
+
<MediaCard
|
|
319
|
+
renderAsPressable
|
|
320
|
+
accessibilityLabel="View Ethereum details"
|
|
321
|
+
thumbnail={
|
|
322
|
+
<RemoteImage
|
|
323
|
+
accessibilityLabel="Ethereum thumbnail"
|
|
324
|
+
shape="circle"
|
|
325
|
+
size="l"
|
|
326
|
+
source={ethBackground}
|
|
327
|
+
/>
|
|
328
|
+
}
|
|
329
|
+
title="Ethereum"
|
|
330
|
+
subtitle="ETH"
|
|
331
|
+
description="Card with onPress handler"
|
|
332
|
+
width={320}
|
|
333
|
+
onPress={() => {}}
|
|
334
|
+
/>
|
|
335
|
+
</CarouselItem>
|
|
336
|
+
</Carousel>
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### Accessibility
|
|
340
|
+
|
|
341
|
+
#### Interactive Cards
|
|
342
|
+
|
|
343
|
+
When making MediaCard interactive with `renderAsPressable`:
|
|
344
|
+
|
|
345
|
+
- Add an `accessibilityLabel` to summarize the card's action for VoiceOver users (e.g., `accessibilityLabel="View Ethereum details"`)
|
|
346
|
+
|
|
347
|
+
:::warning Avoid Nested Interactive Elements
|
|
348
|
+
Don't place buttons or pressables inside an interactive card, as this creates accessibility issues for VoiceOver users and can cause unexpected behavior when tapping.
|
|
349
|
+
:::
|
|
350
|
+
|
|
351
|
+
#### Color Contrast
|
|
352
|
+
|
|
353
|
+
When customizing card backgrounds, ensure sufficient color contrast between text and background colors. WCAG AA requires a minimum contrast ratio of 4.5:1 for normal text.
|
|
354
|
+
|
|
355
|
+
### Migration from Deprecated Components
|
|
356
|
+
|
|
357
|
+
#### Migrating from ContainedAssetCard
|
|
358
|
+
|
|
359
|
+
Replace `ContainedAssetCard` with `MediaCard`:
|
|
360
|
+
|
|
361
|
+
```jsx
|
|
362
|
+
// Before
|
|
363
|
+
<ContainedAssetCard
|
|
364
|
+
header={<RemoteImage source={assets.btc.imageUrl} width={32} height={32} />}
|
|
365
|
+
title="$309.43"
|
|
366
|
+
subtitle="Bitcoin"
|
|
367
|
+
description={<Text color="fgPositive">↗3.37%</Text>}
|
|
368
|
+
size="l"
|
|
369
|
+
>
|
|
370
|
+
<RemoteImage source={ethBackground} ... />
|
|
371
|
+
</ContainedAssetCard>
|
|
372
|
+
|
|
373
|
+
// After
|
|
374
|
+
<MediaCard
|
|
375
|
+
thumbnail={<RemoteImage source={assets.btc.imageUrl} shape="circle" size="l" />}
|
|
376
|
+
title="$309.43"
|
|
377
|
+
subtitle="Bitcoin"
|
|
378
|
+
description={<Text color="fgPositive">↗3.37%</Text>}
|
|
379
|
+
media={<RemoteImage source={ethBackground} height="100%" width="100%" resizeMode="cover" />}
|
|
380
|
+
mediaPlacement="end"
|
|
381
|
+
/>
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
#### Migrating from FloatingAssetCard
|
|
385
|
+
|
|
386
|
+
Replace `FloatingAssetCard` with `MediaCard`. Note that the floating variation (media outside the card container) is no longer supported:
|
|
387
|
+
|
|
388
|
+
```jsx
|
|
389
|
+
// Before
|
|
390
|
+
<FloatingAssetCard
|
|
391
|
+
title="Balancing the Air"
|
|
392
|
+
subtitle="Amber V's Artwork"
|
|
393
|
+
description="0.5 ETH"
|
|
394
|
+
media={<RemoteImage source={{ uri: '...' }} ... />}
|
|
395
|
+
/>
|
|
396
|
+
|
|
397
|
+
// After
|
|
398
|
+
<MediaCard
|
|
399
|
+
thumbnail={<RemoteImage source={{ uri: '...' }} shape="circle" size="l" />}
|
|
400
|
+
title="Balancing the Air"
|
|
401
|
+
subtitle="Amber V's Artwork"
|
|
402
|
+
description="0.5 ETH"
|
|
403
|
+
/>
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
## Props
|
|
407
|
+
|
|
408
|
+
| Prop | Type | Required | Default | Description |
|
|
409
|
+
| --- | --- | --- | --- | --- |
|
|
410
|
+
| `thumbnail` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | Yes | `-` | React node to display as a thumbnail in the content area. |
|
|
411
|
+
| `alignContent` | `flex-start \| flex-end \| center \| stretch \| space-between \| space-around \| space-evenly` | No | `-` | - |
|
|
412
|
+
| `alignItems` | `flex-start \| flex-end \| center \| stretch \| baseline` | No | `-` | - |
|
|
413
|
+
| `alignSelf` | `auto \| FlexAlignType` | No | `-` | - |
|
|
414
|
+
| `aspectRatio` | `string \| number` | No | `-` | - |
|
|
415
|
+
| `background` | `currentColor \| fg \| fgMuted \| fgInverse \| fgPrimary \| fgWarning \| fgPositive \| fgNegative \| bg \| bgAlternate \| bgInverse \| bgOverlay \| bgElevation1 \| bgElevation2 \| bgPrimary \| bgPrimaryWash \| bgSecondary \| bgTertiary \| bgSecondaryWash \| bgNegative \| bgNegativeWash \| bgPositive \| bgPositiveWash \| bgWarning \| bgWarningWash \| bgLine \| bgLineHeavy \| bgLineInverse \| bgLinePrimary \| bgLinePrimarySubtle \| accentSubtleRed \| accentBoldRed \| accentSubtleGreen \| accentBoldGreen \| accentSubtleBlue \| accentBoldBlue \| accentSubtlePurple \| accentBoldPurple \| accentSubtleYellow \| accentBoldYellow \| accentSubtleGray \| accentBoldGray \| transparent` | No | `-` | Background color of the overlay (element being interacted with). |
|
|
416
|
+
| `blendStyles` | `InteractableBlendStyles` | No | `-` | - |
|
|
417
|
+
| `block` | `boolean` | No | `-` | Set element to block and expand to 100% width. |
|
|
418
|
+
| `borderBottomLeftRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
|
|
419
|
+
| `borderBottomRightRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
|
|
420
|
+
| `borderBottomWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
|
|
421
|
+
| `borderColor` | `currentColor \| fg \| fgMuted \| fgInverse \| fgPrimary \| fgWarning \| fgPositive \| fgNegative \| bg \| bgAlternate \| bgInverse \| bgOverlay \| bgElevation1 \| bgElevation2 \| bgPrimary \| bgPrimaryWash \| bgSecondary \| bgTertiary \| bgSecondaryWash \| bgNegative \| bgNegativeWash \| bgPositive \| bgPositiveWash \| bgWarning \| bgWarningWash \| bgLine \| bgLineHeavy \| bgLineInverse \| bgLinePrimary \| bgLinePrimarySubtle \| accentSubtleRed \| accentBoldRed \| accentSubtleGreen \| accentBoldGreen \| accentSubtleBlue \| accentBoldBlue \| accentSubtlePurple \| accentBoldPurple \| accentSubtleYellow \| accentBoldYellow \| accentSubtleGray \| accentBoldGray \| transparent` | No | `-` | - |
|
|
422
|
+
| `borderEndWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
|
|
423
|
+
| `borderRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
|
|
424
|
+
| `borderStartWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
|
|
425
|
+
| `borderTopLeftRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
|
|
426
|
+
| `borderTopRightRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
|
|
427
|
+
| `borderTopWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
|
|
428
|
+
| `borderWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
|
|
429
|
+
| `bordered` | `boolean` | No | `-` | Add a border around all sides of the box. |
|
|
430
|
+
| `borderedBottom` | `boolean` | No | `-` | Add a border to the bottom side of the box. |
|
|
431
|
+
| `borderedEnd` | `boolean` | No | `-` | Add a border to the trailing side of the box. |
|
|
432
|
+
| `borderedHorizontal` | `boolean` | No | `-` | Add a border to the leading and trailing sides of the box. |
|
|
433
|
+
| `borderedStart` | `boolean` | No | `-` | Add a border to the leading side of the box. |
|
|
434
|
+
| `borderedTop` | `boolean` | No | `-` | Add a border to the top side of the box. |
|
|
435
|
+
| `borderedVertical` | `boolean` | No | `-` | Add a border to the top and bottom sides of the box. |
|
|
436
|
+
| `bottom` | `string \| number` | No | `-` | - |
|
|
437
|
+
| `color` | `currentColor \| fg \| fgMuted \| fgInverse \| fgPrimary \| fgWarning \| fgPositive \| fgNegative \| bg \| bgAlternate \| bgInverse \| bgOverlay \| bgElevation1 \| bgElevation2 \| bgPrimary \| bgPrimaryWash \| bgSecondary \| bgTertiary \| bgSecondaryWash \| bgNegative \| bgNegativeWash \| bgPositive \| bgPositiveWash \| bgWarning \| bgWarningWash \| bgLine \| bgLineHeavy \| bgLineInverse \| bgLinePrimary \| bgLinePrimarySubtle \| accentSubtleRed \| accentBoldRed \| accentSubtleGreen \| accentBoldGreen \| accentSubtleBlue \| accentBoldBlue \| accentSubtlePurple \| accentBoldPurple \| accentSubtleYellow \| accentBoldYellow \| accentSubtleGray \| accentBoldGray \| transparent` | No | `-` | - |
|
|
438
|
+
| `columnGap` | `0 \| 1 \| 2 \| 0.25 \| 0.5 \| 0.75 \| 1.5 \| 3 \| 4 \| 5 \| 6 \| 7 \| 8 \| 9 \| 10` | No | `-` | - |
|
|
439
|
+
| `contentStyle` | `null \| false \| ViewStyle \| RegisteredStyle<ViewStyle> \| RecursiveArray<ViewStyle \| Falsy \| RegisteredStyle<ViewStyle>>` | No | `-` | Apply animated styles to the inner container. |
|
|
440
|
+
| `dangerouslySetBackground` | `string` | No | `-` | - |
|
|
441
|
+
| `debounceTime` | `number` | No | `500` | The amount of time to wait (in milliseconds) before invoking the debounced function. This prop is used in conjunction with the disableDebounce prop. The debounce function is configured to be invoked as soon as its called, but subsequent calls within the debounceTime period will be ignored. |
|
|
442
|
+
| `description` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | Text or React node to display as the card description. Use a Text component to override default color and font. |
|
|
443
|
+
| `disableDebounce` | `boolean` | No | `-` | React Native is historically trash at debouncing touch events. This can cause a lot of unwanted behavior such as double navigations where we push a screen onto the stack 2 times. Debouncing the event 500 miliseconds, but taking the leading event prevents this effect and the accidental double-tap. |
|
|
444
|
+
| `disabled` | `boolean` | No | `-` | Is the element currently disabled. Whether the press behavior is disabled. |
|
|
445
|
+
| `display` | `flex \| none` | No | `-` | - |
|
|
446
|
+
| `elevation` | `0 \| 1 \| 2` | No | `-` | Determines box shadow styles. Parent should have overflow set to visible to ensure styles are not clipped. Is the element elevated. |
|
|
447
|
+
| `feedback` | `none \| light \| normal \| heavy` | No | `none` | Haptic feedback to trigger when being pressed. |
|
|
448
|
+
| `flexBasis` | `string \| number` | No | `-` | - |
|
|
449
|
+
| `flexDirection` | `row \| column \| row-reverse \| column-reverse` | No | `-` | - |
|
|
450
|
+
| `flexGrow` | `number` | No | `-` | - |
|
|
451
|
+
| `flexShrink` | `number` | No | `-` | - |
|
|
452
|
+
| `flexWrap` | `wrap \| nowrap \| wrap-reverse` | No | `-` | - |
|
|
453
|
+
| `font` | `inherit \| FontFamily` | No | `-` | - |
|
|
454
|
+
| `fontFamily` | `inherit \| FontFamily` | No | `-` | - |
|
|
455
|
+
| `fontSize` | `inherit \| FontSize` | No | `-` | - |
|
|
456
|
+
| `fontWeight` | `inherit \| FontWeight` | No | `-` | - |
|
|
457
|
+
| `gap` | `0 \| 1 \| 2 \| 0.25 \| 0.5 \| 0.75 \| 1.5 \| 3 \| 4 \| 5 \| 6 \| 7 \| 8 \| 9 \| 10` | No | `-` | - |
|
|
458
|
+
| `height` | `string \| number` | No | `-` | - |
|
|
459
|
+
| `justifyContent` | `flex-start \| flex-end \| center \| space-between \| space-around \| space-evenly` | No | `-` | - |
|
|
460
|
+
| `key` | `Key \| null` | No | `-` | - |
|
|
461
|
+
| `left` | `string \| number` | No | `-` | - |
|
|
462
|
+
| `lineHeight` | `inherit \| LineHeight` | No | `-` | - |
|
|
463
|
+
| `loading` | `boolean` | No | `-` | Is the element currenty loading. When set to true, will disable element from press and keyboard events Is the element currenty loading. |
|
|
464
|
+
| `margin` | `0 \| -1 \| -2 \| -0.25 \| -0.5 \| -0.75 \| -1.5 \| -3 \| -4 \| -5 \| -6 \| -7 \| -8 \| -9 \| -10` | No | `-` | - |
|
|
465
|
+
| `marginBottom` | `0 \| -1 \| -2 \| -0.25 \| -0.5 \| -0.75 \| -1.5 \| -3 \| -4 \| -5 \| -6 \| -7 \| -8 \| -9 \| -10` | No | `-` | - |
|
|
466
|
+
| `marginEnd` | `0 \| -1 \| -2 \| -0.25 \| -0.5 \| -0.75 \| -1.5 \| -3 \| -4 \| -5 \| -6 \| -7 \| -8 \| -9 \| -10` | No | `-` | - |
|
|
467
|
+
| `marginStart` | `0 \| -1 \| -2 \| -0.25 \| -0.5 \| -0.75 \| -1.5 \| -3 \| -4 \| -5 \| -6 \| -7 \| -8 \| -9 \| -10` | No | `-` | - |
|
|
468
|
+
| `marginTop` | `0 \| -1 \| -2 \| -0.25 \| -0.5 \| -0.75 \| -1.5 \| -3 \| -4 \| -5 \| -6 \| -7 \| -8 \| -9 \| -10` | No | `-` | - |
|
|
469
|
+
| `marginX` | `0 \| -1 \| -2 \| -0.25 \| -0.5 \| -0.75 \| -1.5 \| -3 \| -4 \| -5 \| -6 \| -7 \| -8 \| -9 \| -10` | No | `-` | - |
|
|
470
|
+
| `marginY` | `0 \| -1 \| -2 \| -0.25 \| -0.5 \| -0.75 \| -1.5 \| -3 \| -4 \| -5 \| -6 \| -7 \| -8 \| -9 \| -10` | No | `-` | - |
|
|
471
|
+
| `maxHeight` | `string \| number` | No | `-` | - |
|
|
472
|
+
| `maxWidth` | `string \| number` | No | `-` | - |
|
|
473
|
+
| `media` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | React node to display as the main media content. When provided, it will be rendered in an HStack container taking up 50% of the card width. |
|
|
474
|
+
| `mediaPlacement` | `end \| start` | No | `'end'` | The position of the media within the card. |
|
|
475
|
+
| `minHeight` | `string \| number` | No | `-` | - |
|
|
476
|
+
| `minWidth` | `string \| number` | No | `-` | - |
|
|
477
|
+
| `noScaleOnPress` | `boolean` | No | `-` | Dont scale element on press. |
|
|
478
|
+
| `onPointerCancel` | `((event: PointerEvent) => void)` | No | `-` | - |
|
|
479
|
+
| `onPointerCancelCapture` | `((event: PointerEvent) => void)` | No | `-` | - |
|
|
480
|
+
| `onPointerDown` | `((event: PointerEvent) => void)` | No | `-` | - |
|
|
481
|
+
| `onPointerDownCapture` | `((event: PointerEvent) => void)` | No | `-` | - |
|
|
482
|
+
| `onPointerEnter` | `((event: PointerEvent) => void)` | No | `-` | - |
|
|
483
|
+
| `onPointerEnterCapture` | `((event: PointerEvent) => void)` | No | `-` | - |
|
|
484
|
+
| `onPointerLeave` | `((event: PointerEvent) => void)` | No | `-` | - |
|
|
485
|
+
| `onPointerLeaveCapture` | `((event: PointerEvent) => void)` | No | `-` | - |
|
|
486
|
+
| `onPointerMove` | `((event: PointerEvent) => void)` | No | `-` | - |
|
|
487
|
+
| `onPointerMoveCapture` | `((event: PointerEvent) => void)` | No | `-` | - |
|
|
488
|
+
| `onPointerUp` | `((event: PointerEvent) => void)` | No | `-` | - |
|
|
489
|
+
| `onPointerUpCapture` | `((event: PointerEvent) => void)` | No | `-` | - |
|
|
490
|
+
| `onPress` | `((event: GestureResponderEvent) => void) \| null` | No | `-` | Called when a single tap gesture is detected. |
|
|
491
|
+
| `onPressIn` | `(((event: GestureResponderEvent) => void) & ((event: GestureResponderEvent) => void))` | No | `-` | Callback fired before onPress when button is pressed. Called when a touch is engaged before onPress. |
|
|
492
|
+
| `onPressOut` | `(((event: GestureResponderEvent) => void) & ((event: GestureResponderEvent) => void))` | No | `-` | Callback fired before onPress when button is released. Called when a touch is released before onPress. |
|
|
493
|
+
| `opacity` | `number \| AnimatedNode` | No | `-` | - |
|
|
494
|
+
| `overflow` | `visible \| hidden \| scroll` | No | `-` | - |
|
|
495
|
+
| `padding` | `0 \| 1 \| 2 \| 0.25 \| 0.5 \| 0.75 \| 1.5 \| 3 \| 4 \| 5 \| 6 \| 7 \| 8 \| 9 \| 10` | No | `-` | - |
|
|
496
|
+
| `paddingBottom` | `0 \| 1 \| 2 \| 0.25 \| 0.5 \| 0.75 \| 1.5 \| 3 \| 4 \| 5 \| 6 \| 7 \| 8 \| 9 \| 10` | No | `-` | - |
|
|
497
|
+
| `paddingEnd` | `0 \| 1 \| 2 \| 0.25 \| 0.5 \| 0.75 \| 1.5 \| 3 \| 4 \| 5 \| 6 \| 7 \| 8 \| 9 \| 10` | No | `-` | - |
|
|
498
|
+
| `paddingStart` | `0 \| 1 \| 2 \| 0.25 \| 0.5 \| 0.75 \| 1.5 \| 3 \| 4 \| 5 \| 6 \| 7 \| 8 \| 9 \| 10` | No | `-` | - |
|
|
499
|
+
| `paddingTop` | `0 \| 1 \| 2 \| 0.25 \| 0.5 \| 0.75 \| 1.5 \| 3 \| 4 \| 5 \| 6 \| 7 \| 8 \| 9 \| 10` | No | `-` | - |
|
|
500
|
+
| `paddingX` | `0 \| 1 \| 2 \| 0.25 \| 0.5 \| 0.75 \| 1.5 \| 3 \| 4 \| 5 \| 6 \| 7 \| 8 \| 9 \| 10` | No | `-` | - |
|
|
501
|
+
| `paddingY` | `0 \| 1 \| 2 \| 0.25 \| 0.5 \| 0.75 \| 1.5 \| 3 \| 4 \| 5 \| 6 \| 7 \| 8 \| 9 \| 10` | No | `-` | - |
|
|
502
|
+
| `pin` | `top \| bottom \| left \| right \| all` | No | `-` | Direction in which to absolutely pin the box. |
|
|
503
|
+
| `position` | `static \| relative \| fixed \| absolute \| sticky` | No | `-` | - |
|
|
504
|
+
| `ref` | `((instance: View \| null) => void) \| RefObject<View> \| null` | No | `-` | - |
|
|
505
|
+
| `renderAsPressable` | `boolean` | No | `false` | If true, the CardRoot will be rendered as a Pressable component. When false, renders as an HStack for layout purposes. |
|
|
506
|
+
| `right` | `string \| number` | No | `-` | - |
|
|
507
|
+
| `rowGap` | `0 \| 1 \| 2 \| 0.25 \| 0.5 \| 0.75 \| 1.5 \| 3 \| 4 \| 5 \| 6 \| 7 \| 8 \| 9 \| 10` | No | `-` | - |
|
|
508
|
+
| `style` | `null \| false \| ViewStyle \| RegisteredStyle<ViewStyle> \| RecursiveArray<ViewStyle \| Falsy \| RegisteredStyle<ViewStyle>>` | No | `-` | - |
|
|
509
|
+
| `styles` | `({ layoutContainer?: StyleProp<ViewStyle>; contentContainer?: StyleProp<ViewStyle>; textContainer?: StyleProp<ViewStyle>; headerContainer?: StyleProp<ViewStyle>; mediaContainer?: StyleProp<ViewStyle>; } & { root?: StyleProp<ViewStyle>; })` | No | `-` | - |
|
|
510
|
+
| `subtitle` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | Text or React node to display as the card subtitle. Use a Text component to override default color and font. |
|
|
511
|
+
| `testID` | `string` | No | `-` | Used to locate this element in unit and end-to-end tests. Used to locate this view in end-to-end tests. |
|
|
512
|
+
| `textAlign` | `left \| right \| auto \| center \| justify` | No | `-` | - |
|
|
513
|
+
| `textDecorationLine` | `none \| underline \| line-through \| underline line-through` | No | `-` | - |
|
|
514
|
+
| `textDecorationStyle` | `solid \| dotted \| dashed \| double` | No | `-` | - |
|
|
515
|
+
| `textTransform` | `none \| capitalize \| uppercase \| lowercase` | No | `-` | - |
|
|
516
|
+
| `title` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | Text or React node to display as the card title. Use a Text component to override default color and font. |
|
|
517
|
+
| `top` | `string \| number` | No | `-` | - |
|
|
518
|
+
| `transform` | `string \| (({ scaleX: AnimatableNumericValue; } & { scaleY?: undefined; translateX?: undefined; translateY?: undefined; perspective?: undefined; rotate?: undefined; rotateX?: undefined; rotateY?: undefined; rotateZ?: undefined; scale?: undefined; skewX?: undefined; skewY?: undefined; matrix?: undefined; }) \| ({ scaleY: AnimatableNumericValue; } & { scaleX?: undefined; translateX?: undefined; translateY?: undefined; perspective?: undefined; rotate?: undefined; rotateX?: undefined; rotateY?: undefined; rotateZ?: undefined; scale?: undefined; skewX?: undefined; skewY?: undefined; matrix?: undefined; }) \| ({ translateX: AnimatableNumericValue \| ${number}%; } & { scaleX?: undefined; scaleY?: undefined; translateY?: undefined; perspective?: undefined; rotate?: undefined; rotateX?: undefined; rotateY?: undefined; rotateZ?: undefined; scale?: undefined; skewX?: undefined; skewY?: undefined; matrix?: undefined; }) \| ({ translateY: AnimatableNumericValue \| ${number}%; } & { scaleX?: undefined; scaleY?: undefined; translateX?: undefined; perspective?: undefined; rotate?: undefined; rotateX?: undefined; rotateY?: undefined; rotateZ?: undefined; scale?: undefined; skewX?: undefined; skewY?: undefined; matrix?: undefined; }) \| ({ perspective: AnimatableNumericValue; } & { scaleX?: undefined; scaleY?: undefined; translateX?: undefined; translateY?: undefined; rotate?: undefined; rotateX?: undefined; rotateY?: undefined; rotateZ?: undefined; scale?: undefined; skewX?: undefined; skewY?: undefined; matrix?: undefined; }) \| ({ rotate: AnimatableStringValue; } & { scaleX?: undefined; scaleY?: undefined; translateX?: undefined; translateY?: undefined; perspective?: undefined; rotateX?: undefined; rotateY?: undefined; rotateZ?: undefined; scale?: undefined; skewX?: undefined; skewY?: undefined; matrix?: undefined; }) \| ({ rotateX: AnimatableStringValue; } & { scaleX?: undefined; scaleY?: undefined; translateX?: undefined; translateY?: undefined; perspective?: undefined; rotate?: undefined; rotateY?: undefined; rotateZ?: undefined; scale?: undefined; skewX?: undefined; skewY?: undefined; matrix?: undefined; }) \| ({ rotateY: AnimatableStringValue; } & { scaleX?: undefined; scaleY?: undefined; translateX?: undefined; translateY?: undefined; perspective?: undefined; rotate?: undefined; rotateX?: undefined; rotateZ?: undefined; scale?: undefined; skewX?: undefined; skewY?: undefined; matrix?: undefined; }) \| ({ rotateZ: AnimatableStringValue; } & { scaleX?: undefined; scaleY?: undefined; translateX?: undefined; translateY?: undefined; perspective?: undefined; rotate?: undefined; rotateX?: undefined; rotateY?: undefined; scale?: undefined; skewX?: undefined; skewY?: undefined; matrix?: undefined; }) \| ({ scale: AnimatableNumericValue; } & { scaleX?: undefined; scaleY?: undefined; translateX?: undefined; translateY?: undefined; perspective?: undefined; rotate?: undefined; rotateX?: undefined; rotateY?: undefined; rotateZ?: undefined; skewX?: undefined; skewY?: undefined; matrix?: undefined; }) \| ({ skewX: AnimatableStringValue; } & { scaleX?: undefined; scaleY?: undefined; translateX?: undefined; translateY?: undefined; perspective?: undefined; rotate?: undefined; rotateX?: undefined; rotateY?: undefined; rotateZ?: undefined; scale?: undefined; skewY?: undefined; matrix?: undefined; }) \| ({ skewY: AnimatableStringValue; } & { scaleX?: undefined; scaleY?: undefined; translateX?: undefined; translateY?: undefined; perspective?: undefined; rotate?: undefined; rotateX?: undefined; rotateY?: undefined; rotateZ?: undefined; scale?: undefined; skewX?: undefined; matrix?: undefined; }) \| ({ matrix: AnimatableNumericValue[]; } & { scaleX?: undefined; scaleY?: undefined; translateX?: undefined; translateY?: undefined; perspective?: undefined; rotate?: undefined; rotateX?: undefined; rotateY?: undefined; rotateZ?: undefined; scale?: undefined; skewX?: undefined; skewY?: undefined; }))[]` | No | `-` | - |
|
|
519
|
+
| `transparentWhileInactive` | `boolean` | No | `-` | Mark the background and border as transparent until the element is interacted with (hovered, pressed, etc). Must be used in conjunction with the pressed prop |
|
|
520
|
+
| `transparentWhilePressed` | `boolean` | No | `-` | Mark the background and border as transparent even while element is interacted with (elevation underlay issue). Must be used in conjunction with the pressed prop |
|
|
521
|
+
| `userSelect` | `none \| auto \| contain \| text \| all` | No | `-` | - |
|
|
522
|
+
| `width` | `string \| number` | No | `-` | - |
|
|
523
|
+
| `wrapperStyles` | `{ base?: StyleProp<ViewStyle>; pressed?: StyleProp<ViewStyle>; disabled?: StyleProp<ViewStyle>; }` | No | `-` | Apply styles to the outer container. |
|
|
524
|
+
| `zIndex` | `number` | No | `-` | - |
|
|
525
|
+
|
|
526
|
+
|