@coinbase/cds-mcp-server 8.17.2 → 8.17.4

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 (284) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/mcp-docs/mobile/components/Accordion.txt +188 -0
  3. package/mcp-docs/mobile/components/AccordionItem.txt +29 -0
  4. package/mcp-docs/mobile/components/Alert.txt +155 -0
  5. package/mcp-docs/mobile/components/AreaChart.txt +265 -0
  6. package/mcp-docs/mobile/components/Avatar.txt +195 -0
  7. package/mcp-docs/mobile/components/AvatarButton.txt +225 -0
  8. package/mcp-docs/mobile/components/Banner.txt +221 -0
  9. package/mcp-docs/mobile/components/BarChart.txt +815 -0
  10. package/mcp-docs/mobile/components/Box.txt +173 -0
  11. package/mcp-docs/mobile/components/BrowserBar.txt +146 -0
  12. package/mcp-docs/mobile/components/Button.txt +198 -0
  13. package/mcp-docs/mobile/components/ButtonGroup.txt +79 -0
  14. package/mcp-docs/mobile/components/Carousel.txt +1083 -0
  15. package/mcp-docs/mobile/components/CartesianChart.txt +825 -0
  16. package/mcp-docs/mobile/components/CellMedia.txt +70 -0
  17. package/mcp-docs/mobile/components/Checkbox.txt +245 -0
  18. package/mcp-docs/mobile/components/CheckboxCell.txt +201 -0
  19. package/mcp-docs/mobile/components/CheckboxGroup.txt +284 -0
  20. package/mcp-docs/mobile/components/Chip.txt +194 -0
  21. package/mcp-docs/mobile/components/Coachmark.txt +157 -0
  22. package/mcp-docs/mobile/components/Collapsible.txt +104 -0
  23. package/mcp-docs/mobile/components/ContainedAssetCard.txt +134 -0
  24. package/mcp-docs/mobile/components/ContentCard.txt +365 -0
  25. package/mcp-docs/mobile/components/ContentCardBody.txt +135 -0
  26. package/mcp-docs/mobile/components/ContentCardFooter.txt +127 -0
  27. package/mcp-docs/mobile/components/ContentCardHeader.txt +145 -0
  28. package/mcp-docs/mobile/components/ContentCell.txt +226 -0
  29. package/mcp-docs/mobile/components/ControlGroup.txt +443 -0
  30. package/mcp-docs/mobile/components/DatePicker.txt +496 -0
  31. package/mcp-docs/mobile/components/Divider.txt +138 -0
  32. package/mcp-docs/mobile/components/DotCount.txt +145 -0
  33. package/mcp-docs/mobile/components/DotStatusColor.txt +58 -0
  34. package/mcp-docs/mobile/components/DotSymbol.txt +134 -0
  35. package/mcp-docs/mobile/components/Fallback.txt +157 -0
  36. package/mcp-docs/mobile/components/FloatingAssetCard.txt +155 -0
  37. package/mcp-docs/mobile/components/HStack.txt +234 -0
  38. package/mcp-docs/mobile/components/HeroSquare.txt +47 -0
  39. package/mcp-docs/mobile/components/Icon.txt +51 -0
  40. package/mcp-docs/mobile/components/IconButton.txt +268 -0
  41. package/mcp-docs/mobile/components/InputChip.txt +187 -0
  42. package/mcp-docs/mobile/components/Interactable.txt +186 -0
  43. package/mcp-docs/mobile/components/LineChart.txt +1324 -0
  44. package/mcp-docs/mobile/components/Link.txt +291 -0
  45. package/mcp-docs/mobile/components/ListCell.txt +412 -0
  46. package/mcp-docs/mobile/components/LogoMark.txt +84 -0
  47. package/mcp-docs/mobile/components/LogoWordMark.txt +93 -0
  48. package/mcp-docs/mobile/components/Lottie.txt +138 -0
  49. package/mcp-docs/mobile/components/LottieStatusAnimation.txt +46 -0
  50. package/mcp-docs/mobile/components/Modal.txt +83 -0
  51. package/mcp-docs/mobile/components/ModalBody.txt +33 -0
  52. package/mcp-docs/mobile/components/ModalFooter.txt +24 -0
  53. package/mcp-docs/mobile/components/ModalHeader.txt +27 -0
  54. package/mcp-docs/mobile/components/MultiContentModule.txt +379 -0
  55. package/mcp-docs/mobile/components/NavigationTitle.txt +131 -0
  56. package/mcp-docs/mobile/components/NavigationTitleSelect.txt +141 -0
  57. package/mcp-docs/mobile/components/NudgeCard.txt +89 -0
  58. package/mcp-docs/mobile/components/Numpad.txt +340 -0
  59. package/mcp-docs/mobile/components/Overlay.txt +151 -0
  60. package/mcp-docs/mobile/components/PageFooter.txt +160 -0
  61. package/mcp-docs/mobile/components/PageHeader.txt +185 -0
  62. package/mcp-docs/mobile/components/PeriodSelector.txt +407 -0
  63. package/mcp-docs/mobile/components/Pictogram.txt +47 -0
  64. package/mcp-docs/mobile/components/Point.txt +204 -0
  65. package/mcp-docs/mobile/components/PortalProvider.txt +78 -0
  66. package/mcp-docs/mobile/components/Pressable.txt +210 -0
  67. package/mcp-docs/mobile/components/ProgressBar.txt +129 -0
  68. package/mcp-docs/mobile/components/ProgressBarWithFixedLabels.txt +160 -0
  69. package/mcp-docs/mobile/components/ProgressBarWithFloatLabel.txt +137 -0
  70. package/mcp-docs/mobile/components/ProgressCircle.txt +236 -0
  71. package/mcp-docs/mobile/components/Radio.txt +241 -0
  72. package/mcp-docs/mobile/components/RadioCell.txt +201 -0
  73. package/mcp-docs/mobile/components/RadioGroup.txt +281 -0
  74. package/mcp-docs/mobile/components/ReferenceLine.txt +152 -0
  75. package/mcp-docs/mobile/components/RemoteImage.txt +105 -0
  76. package/mcp-docs/mobile/components/RemoteImageGroup.txt +60 -0
  77. package/mcp-docs/mobile/components/RollingNumber.txt +788 -0
  78. package/mcp-docs/mobile/components/Scrubber.txt +203 -0
  79. package/mcp-docs/mobile/components/SearchInput.txt +191 -0
  80. package/mcp-docs/mobile/components/SectionHeader.txt +204 -0
  81. package/mcp-docs/mobile/components/SegmentedTabs.txt +315 -0
  82. package/mcp-docs/mobile/components/Select.txt +211 -0
  83. package/mcp-docs/mobile/components/SelectChip.txt +323 -0
  84. package/mcp-docs/mobile/components/SelectOption.txt +84 -0
  85. package/mcp-docs/mobile/components/SlideButton.txt +330 -0
  86. package/mcp-docs/mobile/components/Spacer.txt +83 -0
  87. package/mcp-docs/mobile/components/Sparkline.txt +122 -0
  88. package/mcp-docs/mobile/components/SparklineGradient.txt +106 -0
  89. package/mcp-docs/mobile/components/SparklineInteractive.txt +156 -0
  90. package/mcp-docs/mobile/components/SparklineInteractiveHeader.txt +72 -0
  91. package/mcp-docs/mobile/components/Spinner.txt +48 -0
  92. package/mcp-docs/mobile/components/SpotIcon.txt +47 -0
  93. package/mcp-docs/mobile/components/SpotRectangle.txt +47 -0
  94. package/mcp-docs/mobile/components/SpotSquare.txt +47 -0
  95. package/mcp-docs/mobile/components/Stepper.txt +527 -0
  96. package/mcp-docs/mobile/components/SubBrandLogoMark.txt +125 -0
  97. package/mcp-docs/mobile/components/SubBrandLogoWordMark.txt +125 -0
  98. package/mcp-docs/mobile/components/Switch.txt +97 -0
  99. package/mcp-docs/mobile/components/TabIndicator.txt +48 -0
  100. package/mcp-docs/mobile/components/TabLabel.txt +153 -0
  101. package/mcp-docs/mobile/components/TabNavigation.txt +146 -0
  102. package/mcp-docs/mobile/components/TabbedChips.txt +142 -0
  103. package/mcp-docs/mobile/components/Tabs.txt +190 -0
  104. package/mcp-docs/mobile/components/Tag.txt +300 -0
  105. package/mcp-docs/mobile/components/Text.txt +211 -0
  106. package/mcp-docs/mobile/components/TextInput.txt +717 -0
  107. package/mcp-docs/mobile/components/ThemeProvider.txt +132 -0
  108. package/mcp-docs/mobile/components/Toast.txt +196 -0
  109. package/mcp-docs/mobile/components/Tooltip.txt +59 -0
  110. package/mcp-docs/mobile/components/TopNavBar.txt +161 -0
  111. package/mcp-docs/mobile/components/Tour.txt +158 -0
  112. package/mcp-docs/mobile/components/Tray.txt +252 -0
  113. package/mcp-docs/mobile/components/UpsellCard.txt +321 -0
  114. package/mcp-docs/mobile/components/VStack.txt +222 -0
  115. package/mcp-docs/mobile/components/XAxis.txt +621 -0
  116. package/mcp-docs/mobile/components/YAxis.txt +567 -0
  117. package/mcp-docs/mobile/getting-started/ai-overview.txt +108 -0
  118. package/mcp-docs/mobile/getting-started/installation.txt +57 -0
  119. package/mcp-docs/mobile/getting-started/introduction.txt +102 -0
  120. package/mcp-docs/mobile/getting-started/playground.txt +28 -0
  121. package/mcp-docs/mobile/getting-started/styling.txt +84 -0
  122. package/mcp-docs/mobile/getting-started/theming.txt +286 -0
  123. package/mcp-docs/mobile/hooks/useDimensions.txt +72 -0
  124. package/mcp-docs/mobile/hooks/useEventHandler.txt +120 -0
  125. package/mcp-docs/mobile/hooks/useMergeRefs.txt +116 -0
  126. package/mcp-docs/mobile/hooks/useOverlayContentContext.txt +280 -0
  127. package/mcp-docs/mobile/hooks/usePreviousValue.txt +74 -0
  128. package/mcp-docs/mobile/hooks/useRefMap.txt +178 -0
  129. package/mcp-docs/mobile/hooks/useTheme.txt +321 -0
  130. package/mcp-docs/mobile/routes.txt +139 -0
  131. package/mcp-docs/web/components/Accordion.txt +189 -0
  132. package/mcp-docs/web/components/AccordionItem.txt +31 -0
  133. package/mcp-docs/web/components/Alert.txt +164 -0
  134. package/mcp-docs/web/components/AreaChart.txt +510 -0
  135. package/mcp-docs/web/components/Avatar.txt +211 -0
  136. package/mcp-docs/web/components/AvatarButton.txt +240 -0
  137. package/mcp-docs/web/components/Banner.txt +226 -0
  138. package/mcp-docs/web/components/BarChart.txt +1267 -0
  139. package/mcp-docs/web/components/Box.txt +175 -0
  140. package/mcp-docs/web/components/Button.txt +212 -0
  141. package/mcp-docs/web/components/ButtonGroup.txt +79 -0
  142. package/mcp-docs/web/components/Calendar.txt +181 -0
  143. package/mcp-docs/web/components/Carousel.txt +1575 -0
  144. package/mcp-docs/web/components/CartesianChart.txt +1044 -0
  145. package/mcp-docs/web/components/CellMedia.txt +56 -0
  146. package/mcp-docs/web/components/Checkbox.txt +188 -0
  147. package/mcp-docs/web/components/CheckboxCell.txt +202 -0
  148. package/mcp-docs/web/components/CheckboxGroup.txt +219 -0
  149. package/mcp-docs/web/components/Chip.txt +196 -0
  150. package/mcp-docs/web/components/Coachmark.txt +188 -0
  151. package/mcp-docs/web/components/Collapsible.txt +119 -0
  152. package/mcp-docs/web/components/ContainedAssetCard.txt +232 -0
  153. package/mcp-docs/web/components/ContentCard.txt +367 -0
  154. package/mcp-docs/web/components/ContentCardBody.txt +137 -0
  155. package/mcp-docs/web/components/ContentCardFooter.txt +129 -0
  156. package/mcp-docs/web/components/ContentCardHeader.txt +147 -0
  157. package/mcp-docs/web/components/ContentCell.txt +219 -0
  158. package/mcp-docs/web/components/ControlGroup.txt +436 -0
  159. package/mcp-docs/web/components/DatePicker.txt +505 -0
  160. package/mcp-docs/web/components/Divider.txt +143 -0
  161. package/mcp-docs/web/components/DotCount.txt +149 -0
  162. package/mcp-docs/web/components/DotStatusColor.txt +58 -0
  163. package/mcp-docs/web/components/DotSymbol.txt +137 -0
  164. package/mcp-docs/web/components/Dropdown.txt +119 -0
  165. package/mcp-docs/web/components/Fallback.txt +163 -0
  166. package/mcp-docs/web/components/FloatingAssetCard.txt +250 -0
  167. package/mcp-docs/web/components/FullscreenAlert.txt +69 -0
  168. package/mcp-docs/web/components/FullscreenModal.txt +145 -0
  169. package/mcp-docs/web/components/FullscreenModalLayout.txt +187 -0
  170. package/mcp-docs/web/components/Grid.txt +236 -0
  171. package/mcp-docs/web/components/GridColumn.txt +209 -0
  172. package/mcp-docs/web/components/HStack.txt +236 -0
  173. package/mcp-docs/web/components/HeroSquare.txt +48 -0
  174. package/mcp-docs/web/components/Icon.txt +145 -0
  175. package/mcp-docs/web/components/IconButton.txt +390 -0
  176. package/mcp-docs/web/components/InputChip.txt +187 -0
  177. package/mcp-docs/web/components/Interactable.txt +193 -0
  178. package/mcp-docs/web/components/LineChart.txt +1576 -0
  179. package/mcp-docs/web/components/Link.txt +243 -0
  180. package/mcp-docs/web/components/ListCell.txt +418 -0
  181. package/mcp-docs/web/components/LogoMark.txt +84 -0
  182. package/mcp-docs/web/components/LogoWordMark.txt +93 -0
  183. package/mcp-docs/web/components/Lottie.txt +157 -0
  184. package/mcp-docs/web/components/LottieStatusAnimation.txt +57 -0
  185. package/mcp-docs/web/components/MediaQueryProvider.txt +108 -0
  186. package/mcp-docs/web/components/Modal.txt +196 -0
  187. package/mcp-docs/web/components/ModalBody.txt +117 -0
  188. package/mcp-docs/web/components/ModalFooter.txt +119 -0
  189. package/mcp-docs/web/components/ModalHeader.txt +123 -0
  190. package/mcp-docs/web/components/MultiContentModule.txt +381 -0
  191. package/mcp-docs/web/components/NavigationBar.txt +102 -0
  192. package/mcp-docs/web/components/NavigationTitle.txt +25 -0
  193. package/mcp-docs/web/components/NavigationTitleSelect.txt +45 -0
  194. package/mcp-docs/web/components/NudgeCard.txt +181 -0
  195. package/mcp-docs/web/components/Overlay.txt +171 -0
  196. package/mcp-docs/web/components/PageFooter.txt +184 -0
  197. package/mcp-docs/web/components/PageHeader.txt +243 -0
  198. package/mcp-docs/web/components/Pagination.txt +499 -0
  199. package/mcp-docs/web/components/PeriodSelector.txt +703 -0
  200. package/mcp-docs/web/components/Pictogram.txt +48 -0
  201. package/mcp-docs/web/components/Point.txt +460 -0
  202. package/mcp-docs/web/components/PortalProvider.txt +76 -0
  203. package/mcp-docs/web/components/Pressable.txt +193 -0
  204. package/mcp-docs/web/components/ProgressBar.txt +163 -0
  205. package/mcp-docs/web/components/ProgressBarWithFixedLabels.txt +212 -0
  206. package/mcp-docs/web/components/ProgressBarWithFloatLabel.txt +181 -0
  207. package/mcp-docs/web/components/ProgressCircle.txt +443 -0
  208. package/mcp-docs/web/components/Radio.txt +219 -0
  209. package/mcp-docs/web/components/RadioCell.txt +215 -0
  210. package/mcp-docs/web/components/RadioGroup.txt +288 -0
  211. package/mcp-docs/web/components/ReferenceLine.txt +451 -0
  212. package/mcp-docs/web/components/RemoteImage.txt +165 -0
  213. package/mcp-docs/web/components/RemoteImageGroup.txt +86 -0
  214. package/mcp-docs/web/components/RollingNumber.txt +1021 -0
  215. package/mcp-docs/web/components/Scrubber.txt +231 -0
  216. package/mcp-docs/web/components/SearchInput.txt +117 -0
  217. package/mcp-docs/web/components/SectionHeader.txt +217 -0
  218. package/mcp-docs/web/components/SegmentedTabs.txt +324 -0
  219. package/mcp-docs/web/components/Select.txt +224 -0
  220. package/mcp-docs/web/components/SelectChip.txt +314 -0
  221. package/mcp-docs/web/components/SelectOption.txt +165 -0
  222. package/mcp-docs/web/components/Sidebar.txt +349 -0
  223. package/mcp-docs/web/components/SidebarItem.txt +131 -0
  224. package/mcp-docs/web/components/SidebarMoreMenu.txt +30 -0
  225. package/mcp-docs/web/components/Spacer.txt +173 -0
  226. package/mcp-docs/web/components/Sparkline.txt +122 -0
  227. package/mcp-docs/web/components/SparklineGradient.txt +106 -0
  228. package/mcp-docs/web/components/SparklineInteractive.txt +153 -0
  229. package/mcp-docs/web/components/SparklineInteractiveHeader.txt +76 -0
  230. package/mcp-docs/web/components/Spinner.txt +128 -0
  231. package/mcp-docs/web/components/SpotIcon.txt +48 -0
  232. package/mcp-docs/web/components/SpotRectangle.txt +48 -0
  233. package/mcp-docs/web/components/SpotSquare.txt +48 -0
  234. package/mcp-docs/web/components/Stepper.txt +682 -0
  235. package/mcp-docs/web/components/SubBrandLogoMark.txt +125 -0
  236. package/mcp-docs/web/components/SubBrandLogoWordMark.txt +125 -0
  237. package/mcp-docs/web/components/Switch.txt +85 -0
  238. package/mcp-docs/web/components/TabIndicator.txt +48 -0
  239. package/mcp-docs/web/components/TabLabel.txt +158 -0
  240. package/mcp-docs/web/components/TabNavigation.txt +159 -0
  241. package/mcp-docs/web/components/TabbedChips.txt +155 -0
  242. package/mcp-docs/web/components/Table.txt +367 -0
  243. package/mcp-docs/web/components/TableBody.txt +83 -0
  244. package/mcp-docs/web/components/TableCaption.txt +102 -0
  245. package/mcp-docs/web/components/TableCell.txt +165 -0
  246. package/mcp-docs/web/components/TableCellFallback.txt +97 -0
  247. package/mcp-docs/web/components/TableFooter.txt +83 -0
  248. package/mcp-docs/web/components/TableHeader.txt +100 -0
  249. package/mcp-docs/web/components/TableRow.txt +140 -0
  250. package/mcp-docs/web/components/Tabs.txt +212 -0
  251. package/mcp-docs/web/components/Tag.txt +304 -0
  252. package/mcp-docs/web/components/Text.txt +232 -0
  253. package/mcp-docs/web/components/TextInput.txt +652 -0
  254. package/mcp-docs/web/components/ThemeProvider.txt +199 -0
  255. package/mcp-docs/web/components/TileButton.txt +158 -0
  256. package/mcp-docs/web/components/Toast.txt +203 -0
  257. package/mcp-docs/web/components/Tooltip.txt +89 -0
  258. package/mcp-docs/web/components/Tour.txt +179 -0
  259. package/mcp-docs/web/components/Tray.txt +288 -0
  260. package/mcp-docs/web/components/UpsellCard.txt +319 -0
  261. package/mcp-docs/web/components/VStack.txt +224 -0
  262. package/mcp-docs/web/components/XAxis.txt +619 -0
  263. package/mcp-docs/web/components/YAxis.txt +548 -0
  264. package/mcp-docs/web/getting-started/ai-overview.txt +108 -0
  265. package/mcp-docs/web/getting-started/installation.txt +103 -0
  266. package/mcp-docs/web/getting-started/introduction.txt +102 -0
  267. package/mcp-docs/web/getting-started/playground.txt +28 -0
  268. package/mcp-docs/web/getting-started/styling.txt +161 -0
  269. package/mcp-docs/web/getting-started/templates.txt +121 -0
  270. package/mcp-docs/web/getting-started/theming.txt +426 -0
  271. package/mcp-docs/web/hooks/useBreakpoints.txt +61 -0
  272. package/mcp-docs/web/hooks/useDimensions.txt +114 -0
  273. package/mcp-docs/web/hooks/useEventHandler.txt +120 -0
  274. package/mcp-docs/web/hooks/useHasMounted.txt +75 -0
  275. package/mcp-docs/web/hooks/useIsoEffect.txt +58 -0
  276. package/mcp-docs/web/hooks/useMediaQuery.txt +114 -0
  277. package/mcp-docs/web/hooks/useMergeRefs.txt +116 -0
  278. package/mcp-docs/web/hooks/useOverlayContentContext.txt +279 -0
  279. package/mcp-docs/web/hooks/usePreviousValue.txt +74 -0
  280. package/mcp-docs/web/hooks/useRefMap.txt +178 -0
  281. package/mcp-docs/web/hooks/useScrollBlocker.txt +82 -0
  282. package/mcp-docs/web/hooks/useTheme.txt +364 -0
  283. package/mcp-docs/web/routes.txt +163 -0
  284. package/package.json +1 -1
@@ -0,0 +1,321 @@
1
+ # UpsellCard
2
+
3
+ Upsell Cards are used to promote new features, products, or actions within the app. They are part of the upsell framework and aim to drive user engagement and revenue.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { UpsellCard } from '@coinbase/cds-mobile/cards/UpsellCard'
9
+ ```
10
+
11
+ ## Examples
12
+
13
+ ### General Upsell
14
+
15
+ Utilize our Primary Wash Upsell for general information and non-urgent promotions. Its versatile design is perfect for a broad range of content, providing a subtle yet effective approach to engage users. It's also the only Upsell Card that supports Pictogram Illustrations.
16
+
17
+ ```jsx
18
+ function Example() {
19
+ function NoopFn() {
20
+ console.log('pressed');
21
+ }
22
+ return (
23
+ <VStack minHeight={300} padding={2} alignItems="center" justifyContent="center">
24
+ <UpsellCard
25
+ title="Recurring Buy"
26
+ description="Want to add funds to your card every week or month?"
27
+ action={'Get started'}
28
+ onActionPress={NoopFn}
29
+ onDismissPress={NoopFn}
30
+ media={
31
+ <Box position="relative" right={24} bottom={6}>
32
+ <Pictogram name="recurringPurchases" dimension="64x64" />
33
+ </Box>
34
+ }
35
+ />
36
+ </VStack>
37
+ );
38
+ }
39
+ ```
40
+
41
+ ### Feature Upsell
42
+
43
+ Ideal for highlighting Coinbase tools, innovative features, and unique functionalities. Choose from our palette of four distinct colors to make your Feature Upsell stand out. Each color is carefully selected to grab attention while aligning with the specific nature of the feature being promoted
44
+
45
+ ```jsx
46
+ function Example() {
47
+ const { colorScheme } = useTheme();
48
+ function NoopFn() {
49
+ console.log('pressed');
50
+ }
51
+ const image = (
52
+ <Box position="relative" left={16} top={4}>
53
+ <RemoteImage source="/img/feature.png" height={174} />
54
+ </Box>
55
+ );
56
+ const theme = useTheme();
57
+ console.log('@@ theme', theme);
58
+ const cards = [
59
+ {
60
+ title: 'Up to 3.29% APR on ETHs',
61
+ description: 'Earn staking rewards on ETH by holding it on Coinbase',
62
+ action: 'Start earning',
63
+ onActionPress: NoopFn,
64
+ onDismissPress: NoopFn,
65
+ media: image,
66
+ dangerouslySetBackground: `rgb(${theme.spectrum.purple70})`,
67
+ },
68
+ {
69
+ title: 'Up to 3.29% APR on ETHs',
70
+ description: 'Earn staking rewards on ETH by holding it on Coinbase',
71
+ action: 'Start earning',
72
+ onActionPress: NoopFn,
73
+ onDismissPress: NoopFn,
74
+ media: image,
75
+ dangerouslySetBackground: `rgb(${theme.spectrum.teal50})`,
76
+ },
77
+ {
78
+ title: 'Up to 3.29% APR on ETHs',
79
+ description: 'Earn staking rewards on ETH by holding it on Coinbase',
80
+ action: 'Start earning',
81
+ onActionPress: NoopFn,
82
+ onDismissPress: NoopFn,
83
+ media: image,
84
+ dangerouslySetBackground: `rgb(${theme.spectrum.blue80})`,
85
+ },
86
+ {
87
+ title: 'Up to 3.29% APR on ETHs',
88
+ description: 'Earn staking rewards on ETH by holding it on Coinbase',
89
+ action: 'Start earning',
90
+ onActionPress: NoopFn,
91
+ onDismissPress: NoopFn,
92
+ media: image,
93
+ dangerouslySetBackground: `rgb(${theme.spectrum.indigo70})`,
94
+ },
95
+ ];
96
+ return (
97
+ <VStack minHeight={300} padding={2} alignItems="center" justifyContent="center" gap={1}>
98
+ {cards.map((card) => {
99
+ return (
100
+ <UpsellCard
101
+ {...card}
102
+ title={
103
+ <TextHeadline color="fgInverse" as="h3">
104
+ {card.title}
105
+ </TextHeadline>
106
+ }
107
+ description={
108
+ <TextLabel2 as="p" numberOfLines={3} color="fgInverse">
109
+ {card.description}
110
+ </TextLabel2>
111
+ }
112
+ />
113
+ );
114
+ })}
115
+ </VStack>
116
+ );
117
+ }
118
+ ```
119
+
120
+ ### Community Upsell
121
+
122
+ Designed for community-focused upsells, our Community Upsell uses vibrant yellow and purple hues. These energetic colors are excellent for sparking enthusiasm and encouraging active participation, fostering a sense of community engagement
123
+
124
+ ```jsx
125
+ function Example() {
126
+ const { colorScheme, spectrum } = useTheme();
127
+ function NoopFn() {
128
+ console.log('pressed');
129
+ }
130
+ const cards = [
131
+ {
132
+ title: 'Join the community',
133
+ description: 'Chat with other devs in our Discord community',
134
+ action: 'Start earning',
135
+ onActionPress: NoopFn,
136
+ onDismissPress: NoopFn,
137
+ media: (
138
+ <Box position="relative" left={16} top={4}>
139
+ <RemoteImage source="/img/community.png" height={174} />
140
+ </Box>
141
+ ),
142
+ dangerouslySetBackground: `rgb(${spectrum.teal70})`,
143
+ },
144
+ {
145
+ title: 'Join the community',
146
+ description: 'Chat with other devs in our Discord community',
147
+ action: 'Start earning',
148
+ onActionPress: NoopFn,
149
+ onDismissPress: NoopFn,
150
+ media: (
151
+ <Box position="relative" left={16} top={4}>
152
+ <RemoteImage source="/img/radial.png" height={174} />
153
+ </Box>
154
+ ),
155
+ dangerouslySetBackground: `rgb(${spectrum.purple70})`,
156
+ },
157
+ ];
158
+ return (
159
+ <VStack minHeight={300} padding={2} alignItems="center" justifyContent="center" gap={1}>
160
+ {cards.map((card) => {
161
+ return (
162
+ <UpsellCard
163
+ {...card}
164
+ title={
165
+ <TextHeadline color="fgInverse" as="h3">
166
+ {card.title}
167
+ </TextHeadline>
168
+ }
169
+ description={
170
+ <TextLabel2 as="p" numberOfLines={3} color="fgInverse">
171
+ {card.description}
172
+ </TextLabel2>
173
+ }
174
+ />
175
+ );
176
+ })}
177
+ </VStack>
178
+ );
179
+ }
180
+ ```
181
+
182
+ ### Product Upsell
183
+
184
+ Optimal for business products, security features, and functionalities that emphasize trust and reliability, such as Coinbase One and Coinbase Card. Our blue and black card options symbolize stability, trustworthiness, and professionalism, aligning with the core values of your product offerings
185
+
186
+ ```jsx
187
+ function Example() {
188
+ const { colorScheme, spectrum } = useTheme();
189
+ function NoopFn() {
190
+ console.log('pressed');
191
+ }
192
+ const cards = [
193
+ {
194
+ title: 'Coinbase One offer',
195
+ description: 'Use code NOV60 when you sign up for Coinbase One',
196
+ action: 'Get 60 days free',
197
+ onActionPress: NoopFn,
198
+ onDismissPress: NoopFn,
199
+ media: (
200
+ <Box position="relative" left={16} top={0}>
201
+ <RemoteImage source="/img/marketing.png" height={174} />
202
+ </Box>
203
+ ),
204
+ dangerouslySetBackground: `rgb(${spectrum.blue80})`,
205
+ },
206
+ {
207
+ title: 'Coinbase Card',
208
+ description: 'Spend USDC to get rewards with our Visa® debit card',
209
+ action: 'Get started',
210
+ onActionPress: NoopFn,
211
+ onDismissPress: NoopFn,
212
+ media: (
213
+ <Box position="relative" left={16} top={0}>
214
+ <RemoteImage source="/img/object.png" height={174} />
215
+ </Box>
216
+ ),
217
+ dangerouslySetBackground: `rgb(${spectrum.gray100})`,
218
+ },
219
+ ];
220
+ return (
221
+ <VStack minHeight={300} padding={2} alignItems="center" justifyContent="center" gap={1}>
222
+ {cards.map((card) => {
223
+ return (
224
+ <UpsellCard
225
+ {...card}
226
+ title={
227
+ <TextHeadline color="fgInverse" as="h3">
228
+ {card.title}
229
+ </TextHeadline>
230
+ }
231
+ description={
232
+ <TextLabel2 as="p" numberOfLines={3} color="fgInverse">
233
+ {card.description}
234
+ </TextLabel2>
235
+ }
236
+ />
237
+ );
238
+ })}
239
+ </VStack>
240
+ );
241
+ }
242
+ ```
243
+
244
+ ### News Upsell
245
+
246
+ Our News Upsell is specifically tailored for company announcements and policy updates. Its design ensures that important information is conveyed clearly and prominently, ensuring users stays well-informed about the latest developments.
247
+
248
+ ```jsx
249
+ function Example() {
250
+ const { colorScheme, spectrum } = useTheme();
251
+ function NoopFn() {
252
+ console.log('pressed');
253
+ }
254
+ const cards = [
255
+ {
256
+ title: 'Help defend crypto in America',
257
+ description: 'Help us keep crypto in America with a single click',
258
+ action: 'Join the fight',
259
+ onActionPress: NoopFn,
260
+ onDismissPress: NoopFn,
261
+ media: (
262
+ <Box position="relative" left={30} top={0}>
263
+ <RemoteImage source="/img/place.png" height={196} />
264
+ </Box>
265
+ ),
266
+ dangerouslySetBackground: `rgb(${spectrum.gray100})`,
267
+ },
268
+ {
269
+ title: 'Help defend crypto in America',
270
+ description: 'Help us keep crypto in America with a single click',
271
+ action: 'Join the fight',
272
+ onActionPress: NoopFn,
273
+ onDismissPress: NoopFn,
274
+ media: (
275
+ <Box position="relative" left={30} top={0}>
276
+ <RemoteImage source="/img/place.png" height={196} />
277
+ </Box>
278
+ ),
279
+ dangerouslySetBackground: `rgb(${spectrum.indigo70})`,
280
+ },
281
+ ];
282
+ return (
283
+ <VStack minHeight={300} padding={2} alignItems="center" justifyContent="center" gap={1}>
284
+ {cards.map((card) => {
285
+ return (
286
+ <UpsellCard
287
+ {...card}
288
+ title={
289
+ <TextHeadline color="fgInverse" as="h3">
290
+ {card.title}
291
+ </TextHeadline>
292
+ }
293
+ description={
294
+ <TextLabel2 as="p" numberOfLines={3} color="fgInverse">
295
+ {card.description}
296
+ </TextLabel2>
297
+ }
298
+ />
299
+ );
300
+ })}
301
+ </VStack>
302
+ );
303
+ }
304
+ ```
305
+
306
+ ## Props
307
+
308
+ | Prop | Type | Required | Default | Description |
309
+ | --- | --- | --- | --- | --- |
310
+ | `title` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | Yes | `-` | Text or ReactNode to be displayed in TextHeadline |
311
+ | `action` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | Node to display for the card action |
312
+ | `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 | `'bgPrimaryWash'` | Background color for the card. |
313
+ | `dangerouslySetBackground` | `string` | No | `-` | - |
314
+ | `description` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | Content to be displayed below the title |
315
+ | `media` | `null \| string \| number \| false \| true \| ReactElement<any, string \| JSXElementConstructor<any>> \| Iterable<ReactNode> \| ReactPortal` | No | `-` | Remote Image or other node with media content. |
316
+ | `onActionPress` | `((event: GestureResponderEvent) => void) \| null` | No | `-` | Callback fired when the action button is pressed |
317
+ | `onDismissPress` | `((event: GestureResponderEvent) => void) \| null` | No | `-` | Callback fired when the dismiss button is pressed |
318
+ | `onPress` | `((event: GestureResponderEvent) => void) \| null` | No | `-` | Callback fired when the card is pressed |
319
+ | `testID` | `string` | No | `-` | Used to locate this element in unit and end-to-end tests. Under the hood, testID translates to data-testid on Web. On Mobile, testID stays the same - testID |
320
+
321
+
@@ -0,0 +1,222 @@
1
+ # VStack
2
+
3
+ A Box with flexDirection="column" set by default.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { VStack } from '@coinbase/cds-mobile/layout/VStack'
9
+ ```
10
+
11
+ ## Examples
12
+
13
+ HStack component uses [flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) to lay content out in a column.
14
+
15
+ **On mobile only** HStack is essentially the same component as [Box](/components/layout/Box), because Box by default has [flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) enabled (`display: flex`) and takes `column` as its initial `flex-direction` value.
16
+
17
+ You should use VStack when:
18
+
19
+ - you want to lay content out in rows that are sized to their content (height only, by default each child will fill the width of the VStack)
20
+ - you want to add gaps between columns
21
+ - you want to lay content out in columns that fill the available space within the parent container
22
+ - you need columns of proportionate size to each other (also known as a ratio-based layout)
23
+
24
+ ### Rows Sized to Content
25
+
26
+ ```jsx
27
+ <VStack gap={1}>
28
+ <Box height={100} bordered>
29
+ I am 100px tall
30
+ </Box>
31
+ <Box height={200} bordered>
32
+ I am 200px tall
33
+ </Box>
34
+ <Box bordered>I am as tall as my content</Box>
35
+ </VStack>
36
+ ```
37
+
38
+ ### Rows with Gaps
39
+
40
+ ```jsx
41
+ <VStack gap={1}>
42
+ <Box gap={3} background="bgAlternate">
43
+ First
44
+ </Box>
45
+ <Box gap={3} background="bgAlternate">
46
+ Second
47
+ </Box>
48
+ <Box gap={3} background="bgAlternate">
49
+ Third
50
+ </Box>
51
+ </VStack>
52
+ ```
53
+
54
+ ### Rows that Fill the Available Space
55
+
56
+ ```jsx
57
+ <Box height={200}>
58
+ <VStack gap={3} flexGrow={1} background="bgAlternate">
59
+ I will fill the entire width and height of my parent
60
+ </VStack>
61
+ </Box>
62
+ ```
63
+
64
+ ### Rows that Have Proportionate Sizes
65
+
66
+ ```jsx
67
+ <VStack gap={1} height={600}>
68
+ <Box gap={3} flexGrow={1} background="bgAlternate">
69
+ First
70
+ </Box>
71
+ <Box gap={3} flexGrow={2} background="bgAlternate">
72
+ Second
73
+ </Box>
74
+ <Box gap={3} flexGrow={3} background="bgAlternate">
75
+ Third
76
+ </Box>
77
+ </VStack>
78
+ ```
79
+
80
+ ### A11y
81
+
82
+ Has the same accessibility requirements as [Box](/components/layout/Box#a11y).
83
+
84
+ ### Responsive Styles
85
+
86
+ **Web only** You can create responsive layouts by passing a configuration object to each supported property of VStack and specify unique styles for phones, tablets, or desktops.
87
+
88
+ Please note, there are no default responsive styles for VStack. This is an additive feature that you will need to configure yourself.
89
+
90
+ #### Supported Properties
91
+
92
+ - Padding
93
+ - Margin
94
+ - Gap
95
+ - Flex styles (justify content, align content, align items, align self, flex direction, and flex wrap)
96
+ - Display
97
+ - Visibility
98
+
99
+ #### Usage
100
+
101
+ ```jsx
102
+ function ResponsiveVStack() {
103
+ return (
104
+ <VStack
105
+ padding={{ base: 4, tablet: 3, desktop: 2 }}
106
+ gap={{ base: 0.5, tablet: 2, desktop: 3 }}
107
+ justifyContent={{ base: 'flex-end', tablet: 'flex-start', desktop: 'center' }}
108
+ alignItems={{ base: 'flex-end', tablet: 'flex-start', desktop: 'center' }}
109
+ >
110
+ <HStack background="bgAlternate" padding={1}>
111
+ <Text as="p">First</Text>
112
+ </HStack>
113
+ <HStack background="bgSecondary" padding={1}>
114
+ <Text as="p">Second</Text>
115
+ </HStack>
116
+ <HStack background="bgOverlay" padding={1}>
117
+ <Text as="p">Third</Text>
118
+ </HStack>
119
+ </VStack>
120
+ );
121
+ }
122
+ ```
123
+
124
+ ## Props
125
+
126
+ | Prop | Type | Required | Default | Description |
127
+ | --- | --- | --- | --- | --- |
128
+ | `alignContent` | `flex-start \| flex-end \| center \| stretch \| space-between \| space-around \| space-evenly` | No | `-` | - |
129
+ | `alignItems` | `flex-start \| flex-end \| center \| stretch \| baseline` | No | `-` | - |
130
+ | `alignSelf` | `auto \| FlexAlignType` | No | `-` | - |
131
+ | `animated` | `boolean` | No | `-` | - |
132
+ | `aspectRatio` | `string \| number` | No | `-` | - |
133
+ | `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 | `-` | - |
134
+ | `borderBottomLeftRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
135
+ | `borderBottomRightRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
136
+ | `borderBottomWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
137
+ | `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 | `-` | - |
138
+ | `borderEndWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
139
+ | `borderRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
140
+ | `borderStartWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
141
+ | `borderTopLeftRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
142
+ | `borderTopRightRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
143
+ | `borderTopWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
144
+ | `borderWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
145
+ | `bordered` | `boolean` | No | `-` | Add a border around all sides of the box. |
146
+ | `borderedBottom` | `boolean` | No | `-` | Add a border to the bottom side of the box. |
147
+ | `borderedEnd` | `boolean` | No | `-` | Add a border to the trailing side of the box. |
148
+ | `borderedHorizontal` | `boolean` | No | `-` | Add a border to the leading and trailing sides of the box. |
149
+ | `borderedStart` | `boolean` | No | `-` | Add a border to the leading side of the box. |
150
+ | `borderedTop` | `boolean` | No | `-` | Add a border to the top side of the box. |
151
+ | `borderedVertical` | `boolean` | No | `-` | Add a border to the top and bottom sides of the box. |
152
+ | `bottom` | `string \| number` | No | `-` | - |
153
+ | `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 | `-` | - |
154
+ | `columnGap` | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6 \| 7 \| 8 \| 9 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1.5` | No | `-` | - |
155
+ | `dangerouslySetBackground` | `string` | No | `-` | - |
156
+ | `display` | `flex \| none` | No | `-` | - |
157
+ | `elevation` | `0 \| 1 \| 2` | No | `-` | Determines box shadow styles. Parent should have overflow set to visible to ensure styles are not clipped. |
158
+ | `flexBasis` | `string \| number` | No | `-` | - |
159
+ | `flexDirection` | `row \| column \| row-reverse \| column-reverse` | No | `-` | - |
160
+ | `flexGrow` | `number` | No | `-` | - |
161
+ | `flexShrink` | `number` | No | `-` | - |
162
+ | `flexWrap` | `wrap \| nowrap \| wrap-reverse` | No | `-` | - |
163
+ | `font` | `inherit \| FontFamily` | No | `-` | - |
164
+ | `fontFamily` | `inherit \| FontFamily` | No | `-` | - |
165
+ | `fontSize` | `inherit \| FontSize` | No | `-` | - |
166
+ | `fontWeight` | `inherit \| FontWeight` | No | `-` | - |
167
+ | `gap` | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6 \| 7 \| 8 \| 9 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1.5` | No | `-` | - |
168
+ | `height` | `string \| number` | No | `-` | - |
169
+ | `justifyContent` | `flex-start \| flex-end \| center \| space-between \| space-around \| space-evenly` | No | `-` | - |
170
+ | `key` | `Key \| null` | No | `-` | - |
171
+ | `left` | `string \| number` | No | `-` | - |
172
+ | `lineHeight` | `inherit \| LineHeight` | No | `-` | - |
173
+ | `margin` | `0 \| -1 \| -2 \| -3 \| -4 \| -5 \| -6 \| -7 \| -8 \| -9 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1.5` | No | `-` | - |
174
+ | `marginBottom` | `0 \| -1 \| -2 \| -3 \| -4 \| -5 \| -6 \| -7 \| -8 \| -9 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1.5` | No | `-` | - |
175
+ | `marginEnd` | `0 \| -1 \| -2 \| -3 \| -4 \| -5 \| -6 \| -7 \| -8 \| -9 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1.5` | No | `-` | - |
176
+ | `marginStart` | `0 \| -1 \| -2 \| -3 \| -4 \| -5 \| -6 \| -7 \| -8 \| -9 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1.5` | No | `-` | - |
177
+ | `marginTop` | `0 \| -1 \| -2 \| -3 \| -4 \| -5 \| -6 \| -7 \| -8 \| -9 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1.5` | No | `-` | - |
178
+ | `marginX` | `0 \| -1 \| -2 \| -3 \| -4 \| -5 \| -6 \| -7 \| -8 \| -9 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1.5` | No | `-` | - |
179
+ | `marginY` | `0 \| -1 \| -2 \| -3 \| -4 \| -5 \| -6 \| -7 \| -8 \| -9 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1.5` | No | `-` | - |
180
+ | `maxHeight` | `string \| number` | No | `-` | - |
181
+ | `maxWidth` | `string \| number` | No | `-` | - |
182
+ | `minHeight` | `string \| number` | No | `-` | - |
183
+ | `minWidth` | `string \| number` | No | `-` | - |
184
+ | `onPointerCancel` | `((event: PointerEvent) => void)` | No | `-` | - |
185
+ | `onPointerCancelCapture` | `((event: PointerEvent) => void)` | No | `-` | - |
186
+ | `onPointerDown` | `((event: PointerEvent) => void)` | No | `-` | - |
187
+ | `onPointerDownCapture` | `((event: PointerEvent) => void)` | No | `-` | - |
188
+ | `onPointerEnter` | `((event: PointerEvent) => void)` | No | `-` | - |
189
+ | `onPointerEnterCapture` | `((event: PointerEvent) => void)` | No | `-` | - |
190
+ | `onPointerLeave` | `((event: PointerEvent) => void)` | No | `-` | - |
191
+ | `onPointerLeaveCapture` | `((event: PointerEvent) => void)` | No | `-` | - |
192
+ | `onPointerMove` | `((event: PointerEvent) => void)` | No | `-` | - |
193
+ | `onPointerMoveCapture` | `((event: PointerEvent) => void)` | No | `-` | - |
194
+ | `onPointerUp` | `((event: PointerEvent) => void)` | No | `-` | - |
195
+ | `onPointerUpCapture` | `((event: PointerEvent) => void)` | No | `-` | - |
196
+ | `opacity` | `number \| AnimatedNode` | No | `-` | - |
197
+ | `overflow` | `visible \| hidden \| scroll` | No | `-` | - |
198
+ | `padding` | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6 \| 7 \| 8 \| 9 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1.5` | No | `-` | - |
199
+ | `paddingBottom` | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6 \| 7 \| 8 \| 9 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1.5` | No | `-` | - |
200
+ | `paddingEnd` | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6 \| 7 \| 8 \| 9 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1.5` | No | `-` | - |
201
+ | `paddingStart` | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6 \| 7 \| 8 \| 9 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1.5` | No | `-` | - |
202
+ | `paddingTop` | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6 \| 7 \| 8 \| 9 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1.5` | No | `-` | - |
203
+ | `paddingX` | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6 \| 7 \| 8 \| 9 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1.5` | No | `-` | - |
204
+ | `paddingY` | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6 \| 7 \| 8 \| 9 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1.5` | No | `-` | - |
205
+ | `pin` | `top \| bottom \| left \| right \| all` | No | `-` | Direction in which to absolutely pin the box. |
206
+ | `position` | `absolute \| relative \| static \| fixed \| sticky` | No | `-` | - |
207
+ | `ref` | `((instance: View \| null) => void) \| RefObject<View> \| null` | No | `-` | - |
208
+ | `right` | `string \| number` | No | `-` | - |
209
+ | `rowGap` | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6 \| 7 \| 8 \| 9 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1.5` | No | `-` | - |
210
+ | `style` | `false \| RegisteredStyle<ViewStyle> \| Value \| AnimatedInterpolation<string \| number> \| WithAnimatedObject<ViewStyle> \| WithAnimatedArray<Falsy \| ViewStyle \| RegisteredStyle<ViewStyle> \| RecursiveArray<Falsy \| ViewStyle \| RegisteredStyle<ViewStyle>> \| readonly (Falsy \| ViewStyle \| RegisteredStyle<ViewStyle>)[]> \| null` | No | `-` | - |
211
+ | `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. |
212
+ | `textAlign` | `left \| right \| auto \| center \| justify` | No | `-` | - |
213
+ | `textDecorationLine` | `none \| underline \| line-through \| underline line-through` | No | `-` | - |
214
+ | `textDecorationStyle` | `solid \| dotted \| dashed \| double` | No | `-` | - |
215
+ | `textTransform` | `none \| capitalize \| uppercase \| lowercase` | No | `-` | - |
216
+ | `top` | `string \| number` | No | `-` | - |
217
+ | `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 | `-` | - |
218
+ | `userSelect` | `none \| auto \| contain \| text \| all` | No | `-` | - |
219
+ | `width` | `string \| number` | No | `-` | - |
220
+ | `zIndex` | `number` | No | `-` | - |
221
+
222
+