@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,451 @@
1
+ # ReferenceLine
2
+
3
+ A horizontal or vertical reference line to mark important values on a chart, such as targets, thresholds, or baseline values.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { ReferenceLine } from '@coinbase/cds-web-visualization'
9
+ ```
10
+
11
+ ## Examples
12
+
13
+ ### Basic Example
14
+
15
+ ReferenceLine can be used to add important details to a chart, such as a reference price or date.
16
+
17
+ ```jsx live
18
+ <LineChart
19
+ height={{ base: 150, tablet: 200, desktop: 250 }}
20
+ series={[
21
+ {
22
+ id: 'prices',
23
+ data: [10, 22, 29, 45, 98, 45, 22, 52, 21, 4, 68, 20, 21, 58],
24
+ },
25
+ ]}
26
+ inset={0}
27
+ curve="monotone"
28
+ showArea
29
+ >
30
+ <ReferenceLine
31
+ dataX={5}
32
+ label="Vertical Reference Line"
33
+ labelProps={{ horizontalAlignment: 'left', dx: 8 }}
34
+ />
35
+ <ReferenceLine
36
+ dataY={50}
37
+ label="Horizontal Reference Line"
38
+ labelProps={{ verticalAlignment: 'bottom', dy: -8, horizontalAlignment: 'right' }}
39
+ />
40
+ </LineChart>
41
+ ```
42
+
43
+ ### Data Values
44
+
45
+ ReferenceLine relies on `dataX` or `dataY` to position the line. Passing in `dataY` will create a horizontal line across the y axis at that value, and passing in `dataX` will do the same along the x axis.
46
+
47
+ ```jsx live
48
+ <LineChart
49
+ showArea
50
+ curve="natural"
51
+ height={{ base: 150, tablet: 200, desktop: 250 }}
52
+ series={[
53
+ {
54
+ id: 'growth',
55
+ data: [
56
+ 2, 4, 8, 15, 30, 65, 140, 280, 580, 1200, 2400, 4800, 9500, 19000, 38000, 75000, 150000,
57
+ ],
58
+ color: 'var(--color-fgPositive)',
59
+ },
60
+ ]}
61
+ >
62
+ <ReferenceLine
63
+ dataY={10000}
64
+ label="10,000"
65
+ labelPosition="left"
66
+ labelProps={{ verticalAlignment: 'bottom', dy: -4 }}
67
+ />
68
+ <ReferenceLine
69
+ dataY={100000}
70
+ label="100,000"
71
+ labelPosition="left"
72
+ labelProps={{ verticalAlignment: 'bottom', dy: -4 }}
73
+ />
74
+ </LineChart>
75
+ ```
76
+
77
+ ### Customization
78
+
79
+ #### Label Style
80
+
81
+ You can adjust the style of the label using the `labelProps` prop.
82
+
83
+ ```jsx live
84
+ <LineChart
85
+ curve="monotone"
86
+ height={{ base: 150, tablet: 200, desktop: 250 }}
87
+ inset={{ right: 4 }}
88
+ series={[
89
+ {
90
+ id: 'prices',
91
+ data: [10, 22, 29, 45, 98, 45, 22, 52, 21, 4, 68, 20, 21, 58],
92
+ },
93
+ ]}
94
+ >
95
+ <ReferenceLine
96
+ dataY={25}
97
+ label="Liquidation"
98
+ labelPosition="left"
99
+ labelProps={{
100
+ horizontalAlignment: 'left',
101
+ dx: 12,
102
+ borderRadius: 4,
103
+ inset: { top: 4, bottom: 4, left: 8, right: 8 },
104
+ color: 'rgb(var(--yellow70))',
105
+ background: 'var(--color-accentSubtleYellow)',
106
+ font: 'label1',
107
+ }}
108
+ stroke="var(--color-bgWarning)"
109
+ />
110
+ <ReferenceLine
111
+ dataY={25}
112
+ label="$25"
113
+ labelPosition="right"
114
+ labelProps={{
115
+ horizontalAlignment: 'right',
116
+ dx: -12,
117
+ borderRadius: 4,
118
+ inset: { top: 2, bottom: 2, left: 4, right: 4 },
119
+ color: 'rgb(var(--yellow70))',
120
+ background: 'var(--color-bg)',
121
+ font: 'label1',
122
+ }}
123
+ stroke="transparent"
124
+ />
125
+ </LineChart>
126
+ ```
127
+
128
+ #### Draggable Price Target
129
+
130
+ You can pair a ReferenceLine with a custom drag component to create a draggable price target.
131
+
132
+ ```jsx live
133
+ function DraggablePriceTarget() {
134
+ const DragIcon = ({ x, y }: { x: number; y: number }) => {
135
+ const DragCircle = (props: React.SVGProps<SVGCircleElement>) => (
136
+ <circle {...props} fill="var(--color-fg)" r="1.5" />
137
+ );
138
+
139
+ return (
140
+ <g transform={`translate(${x}, ${y})`}>
141
+ <g transform="translate(0, -8)">
142
+ <DragCircle cx="2" cy="2" />
143
+ <DragCircle cx="2" cy="8" />
144
+ <DragCircle cx="2" cy="14" />
145
+ <DragCircle cx="9" cy="2" />
146
+ <DragCircle cx="9" cy="8" />
147
+ <DragCircle cx="9" cy="14" />
148
+ </g>
149
+ </g>
150
+ );
151
+ };
152
+
153
+ const TrendArrowIcon = ({
154
+ x,
155
+ y,
156
+ isPositive,
157
+ color,
158
+ }: {
159
+ x: number;
160
+ y: number;
161
+ isPositive: boolean;
162
+ color: string;
163
+ }) => {
164
+ return (
165
+ <g transform={`translate(${x - 8}, ${y - 8})`}>
166
+ <g
167
+ style={{
168
+ // Flip horizontally and vertically for positive trend (pointing top-right)
169
+ transform: isPositive ? 'scale(-1, -1)' : 'scale(-1, 1)',
170
+ transformOrigin: '8px 8px',
171
+ }}
172
+ >
173
+ <path
174
+ d="M4.88574 12.7952L14.9887 2.69223L13.2916 0.995178L3.18883 11.098V4.84898L0.988831 7.04898V14.9952H8.99974L11.1997 12.7952H4.88574Z"
175
+ fill={color}
176
+ />
177
+ </g>
178
+ </g>
179
+ );
180
+ };
181
+
182
+ const DraggableReferenceLine = memo(
183
+ ({
184
+ baselineAmount,
185
+ startAmount,
186
+ chartRef,
187
+ }: {
188
+ baselineAmount: number;
189
+ startAmount: number;
190
+ chartRef: RefObject<SVGSVGElement>;
191
+ }) => {
192
+ const theme = useTheme();
193
+ const { isPhone } = useBreakpoints();
194
+
195
+ const formatPrice = useCallback((value: number) => {
196
+ return `$${value.toLocaleString('en-US', {
197
+ minimumFractionDigits: 2,
198
+ maximumFractionDigits: 2,
199
+ })}`;
200
+ }, []);
201
+
202
+ const { getYScale, drawingArea } = useCartesianChartContext();
203
+ const [amount, setAmount] = useState(startAmount);
204
+ const [isDragging, setIsDragging] = useState(false);
205
+ const [textDimensions, setTextDimensions] = useState({ width: 0, height: 0 });
206
+ const color = amount >= baselineAmount ? 'var(--color-bgPositive)' : 'var(--color-bgNegative)';
207
+
208
+ const yScale = getYScale();
209
+
210
+ // Set up persistent event listeners on the chart SVG element
211
+ useEffect(() => {
212
+ const element = chartRef.current;
213
+
214
+ if (!element || !yScale || !('invert' in yScale && typeof yScale.invert === 'function')) {
215
+ return;
216
+ }
217
+
218
+ const updatePosition = (clientX: number, clientY: number) => {
219
+ const point = element.createSVGPoint();
220
+ point.x = clientX;
221
+ point.y = clientY;
222
+
223
+ const svgPoint = point.matrixTransform(element.getScreenCTM()?.inverse());
224
+
225
+ // Clamp the Y position to the chart area
226
+ const clampedY = Math.max(
227
+ drawingArea.y,
228
+ Math.min(drawingArea.y + drawingArea.height, svgPoint.y),
229
+ );
230
+
231
+ const rawAmount = yScale.invert(clampedY);
232
+
233
+ const rawPercentage = ((rawAmount - baselineAmount) / baselineAmount) * 100;
234
+
235
+ let targetPercentage = Math.round(rawPercentage);
236
+
237
+ if (targetPercentage === 0) {
238
+ targetPercentage = rawPercentage >= 0 ? 1 : -1;
239
+ }
240
+
241
+ const newAmount = baselineAmount * (1 + targetPercentage / 100);
242
+ setAmount(newAmount);
243
+ };
244
+
245
+ const handleMouseMove = (event: MouseEvent) => {
246
+ if (!isDragging) {
247
+ return;
248
+ }
249
+ updatePosition(event.clientX, event.clientY);
250
+ };
251
+
252
+ const handleTouchMove = (event: TouchEvent) => {
253
+ if (!isDragging || event.touches.length === 0) {
254
+ return;
255
+ }
256
+ const touch = event.touches[0];
257
+ updatePosition(touch.clientX, touch.clientY);
258
+ };
259
+
260
+ const handleMouseUp = () => {
261
+ setIsDragging(false);
262
+ };
263
+
264
+ const handleTouchEnd = () => {
265
+ setIsDragging(false);
266
+ };
267
+
268
+ const handleMouseLeave = () => {
269
+ setIsDragging(false);
270
+ };
271
+
272
+ element.addEventListener('mousemove', handleMouseMove);
273
+ element.addEventListener('mouseup', handleMouseUp);
274
+ element.addEventListener('mouseleave', handleMouseLeave);
275
+ element.addEventListener('touchmove', handleTouchMove);
276
+ element.addEventListener('touchend', handleTouchEnd);
277
+ element.addEventListener('touchcancel', handleTouchEnd);
278
+
279
+ return () => {
280
+ element.removeEventListener('mousemove', handleMouseMove);
281
+ element.removeEventListener('mouseup', handleMouseUp);
282
+ element.removeEventListener('mouseleave', handleMouseLeave);
283
+ element.removeEventListener('touchmove', handleTouchMove);
284
+ element.removeEventListener('touchend', handleTouchEnd);
285
+ element.removeEventListener('touchcancel', handleTouchEnd);
286
+ };
287
+ }, [isDragging, yScale, chartRef, baselineAmount, drawingArea.y, drawingArea.height]);
288
+
289
+ if (!yScale) return null;
290
+
291
+ const yPixel = yScale(amount);
292
+
293
+ if (yPixel === undefined || yPixel === null) return null;
294
+
295
+ const difference = amount - baselineAmount;
296
+ const percentageChange = Math.round((difference / baselineAmount) * 100);
297
+ const isPositive = difference > 0;
298
+
299
+ const percentageLabel = isPhone
300
+ ? `${Math.abs(percentageChange)}%`
301
+ : `${Math.abs(percentageChange)}% (${formatPrice(Math.abs(difference))})`;
302
+ const dollarLabel = formatPrice(amount);
303
+
304
+ const handleMouseDown = (e: React.MouseEvent) => {
305
+ e.preventDefault();
306
+ setIsDragging(true);
307
+ };
308
+
309
+ const handleTouchStart = (e: React.TouchEvent) => {
310
+ e.preventDefault();
311
+ setIsDragging(true);
312
+ };
313
+
314
+ const padding = 16;
315
+ const dragIconSize = 16;
316
+ const trendArrowIconSize = 16;
317
+ const iconGap = 8;
318
+ const totalPadding = padding * 2 + iconGap;
319
+
320
+ const rectWidth = textDimensions.width + totalPadding + dragIconSize + trendArrowIconSize;
321
+
322
+ return (
323
+ <>
324
+ <ReferenceLine
325
+ dataY={amount}
326
+ label={dollarLabel}
327
+ labelPosition="right"
328
+ labelProps={{
329
+ background: color,
330
+ borderRadius: 4,
331
+ color: 'white',
332
+ dx: -12,
333
+ font: 'label1',
334
+ horizontalAlignment: 'right',
335
+ inset: { top: 5, bottom: 5, left: 10, right: 10 },
336
+ }}
337
+ />
338
+ <g
339
+ onMouseDown={handleMouseDown}
340
+ onTouchStart={handleTouchStart}
341
+ style={{
342
+ cursor: isDragging ? 'grabbing' : 'grab',
343
+ opacity: textDimensions.width === 0 ? 0 : 1,
344
+ }}
345
+ >
346
+ <rect
347
+ fill="var(--color-bgSecondary)"
348
+ height={32}
349
+ rx={theme.borderRadius['400']}
350
+ ry={theme.borderRadius['400']}
351
+ width={rectWidth}
352
+ x={drawingArea.x}
353
+ y={yPixel - 16}
354
+ />
355
+ <DragIcon x={drawingArea.x + padding} y={yPixel} />
356
+ <TrendArrowIcon
357
+ color={color}
358
+ isPositive={isPositive}
359
+ x={drawingArea.x + padding + dragIconSize + iconGap}
360
+ y={yPixel}
361
+ />
362
+ <ChartText
363
+ disableRepositioning
364
+ color={color}
365
+ font="label1"
366
+ horizontalAlignment="left"
367
+ onDimensionsChange={(dimensions) => setTextDimensions(dimensions)}
368
+ verticalAlignment="middle"
369
+ x={drawingArea.x + padding + dragIconSize + iconGap + trendArrowIconSize}
370
+ y={yPixel + 1}
371
+ >
372
+ {percentageLabel}
373
+ </ChartText>
374
+ </g>
375
+ </>
376
+ );
377
+ },
378
+ );
379
+
380
+ const PriceTargetChart = () => {
381
+ const priceData = useMemo(() => sparklineInteractiveData.year.map((d) => d.value), []);
382
+ const { isPhone } = useBreakpoints();
383
+
384
+ const chartRef = useRef<SVGSVGElement>(null);
385
+
386
+ const formatPrice = useCallback((value: number) => {
387
+ return `$${value.toLocaleString('en-US', {
388
+ minimumFractionDigits: 2,
389
+ maximumFractionDigits: 2,
390
+ })}`;
391
+ }, []);
392
+
393
+ return (
394
+ <LineChart
395
+ ref={chartRef}
396
+ showArea
397
+ animate={false}
398
+ curve="monotone"
399
+ height={250}
400
+ inset={isPhone ? { top: 16, bottom: 16, left: 0, right: 0 } : { top: 16, bottom: 16, left: 8, right: 80 }}
401
+ series={[
402
+ {
403
+ id: 'prices',
404
+ data: priceData,
405
+ color: assets.btc.color,
406
+ },
407
+ ]}
408
+ yAxis={{ domain: ({ min, max }) => ({ min: min * 0.7, max: max * 1.3 }) }}
409
+ >
410
+ {!isPhone && (
411
+ <ReferenceLine
412
+ LineComponent={SolidLine}
413
+ dataY={priceData[priceData.length - 1]}
414
+ label={formatPrice(priceData[priceData.length - 1])}
415
+ labelProps={{ dx: 8, horizontalAlignment: 'left' }}
416
+ />
417
+ )}
418
+ <DraggableReferenceLine
419
+ baselineAmount={priceData[priceData.length - 1]}
420
+ chartRef={chartRef}
421
+ startAmount={priceData[priceData.length - 1] * 1.3}
422
+ />
423
+ </LineChart>
424
+ );
425
+ };
426
+ return <PriceTargetChart />
427
+ }
428
+ ```
429
+
430
+ ## Props
431
+
432
+ | Prop | Type | Required | Default | Description |
433
+ | --- | --- | --- | --- | --- |
434
+ | `BeaconComponent` | `ComponentClass<ScrubberBeaconProps, any> \| FunctionComponent<ScrubberBeaconProps>` | No | `-` | Custom component for the scrubber beacon. |
435
+ | `BeaconLabelComponent` | `ComponentClass<ChartTextProps, any> \| FunctionComponent<ChartTextProps>` | No | `-` | Custom component for the scrubber beacon label. |
436
+ | `LineComponent` | `FunctionComponent<ReferenceLineProps> \| ComponentClass<ReferenceLineProps, any>` | No | `-` | Custom component for the scrubber line. |
437
+ | `classNames` | `{ overlay?: string; beacon?: string \| undefined; line?: string \| undefined; beaconLabel?: string \| undefined; } \| undefined` | No | `-` | Custom class names for scrubber elements. |
438
+ | `hideLine` | `boolean` | No | `-` | Hides the scrubber line |
439
+ | `hideOverlay` | `boolean` | No | `-` | Whether to hide the overlay rect which obscures future data. |
440
+ | `idlePulse` | `boolean` | No | `-` | Pulse the scrubber beacon while it is at rest. |
441
+ | `key` | `Key \| null` | No | `-` | - |
442
+ | `label` | `ChartTextChildren \| ((dataIndex: number) => ChartTextChildren)` | No | `-` | Label text displayed above the scrubber line. |
443
+ | `labelProps` | `ReferenceLineLabelProps` | No | `-` | Props passed to the scrubber lines label. |
444
+ | `lineStroke` | `string` | No | `-` | Stroke color for the scrubber line. |
445
+ | `overlayOffset` | `number` | No | `2` | Offset of the overlay rect relative to the drawing area. Useful for when scrubbing over lines, where the stroke width would cause part of the line to be visible. |
446
+ | `ref` | `((instance: ScrubberBeaconRef \| null) => void) \| RefObject<ScrubberBeaconRef> \| null` | No | `-` | - |
447
+ | `seriesIds` | `string[]` | No | `-` | An array of series IDs that will receive visual emphasis as the user scrubs through the chart. Use this prop to restrict the scrubbing visual behavior to specific series. By default, all series will be highlighted by the Scrubber. |
448
+ | `styles` | `{ overlay?: CSSProperties; beacon?: CSSProperties \| undefined; line?: CSSProperties \| undefined; beaconLabel?: CSSProperties \| undefined; } \| undefined` | No | `-` | Custom styles for scrubber elements. |
449
+ | `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 |
450
+
451
+
@@ -0,0 +1,165 @@
1
+ # RemoteImage
2
+
3
+ A React component for displaying different types of images, including network images, static resources, temporary local images, and images from local disk, such as the camera roll.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { RemoteImage } from '@coinbase/cds-web/media/RemoteImage'
9
+ ```
10
+
11
+ ## Examples
12
+
13
+ ### Border Color
14
+
15
+ Adjust the borderColor of RemoteImages
16
+
17
+ ```jsx live
18
+ <RemoteImage source={assets.eth.imageUrl} shape="circle" size="xxxl" borderColor="secondary" />
19
+ ```
20
+
21
+ ### size
22
+
23
+ Adjust size of RemoteImage using AvatarSizes
24
+
25
+ ```jsx live
26
+ <HStack gap={1}>
27
+ <RemoteImage source={assets.ada.imageUrl} size="m" shape="circle" />
28
+ <RemoteImage source={assets.eth.imageUrl} size="l" shape="circle" />
29
+ <RemoteImage source={assets.ltc.imageUrl} size="xl" shape="circle" />
30
+ <RemoteImage source={assets.sushi.imageUrl} size="xxl" shape="circle" />
31
+ <RemoteImage source={assets.uni.imageUrl} size="xxxl" shape="circle" />
32
+ </HStack>
33
+ ```
34
+
35
+ ### Shape
36
+
37
+ ```jsx live
38
+ <VStack gap={2}>
39
+ <RemoteImage source={assets.ada.imageUrl} size="xxxl" shape="circle" />
40
+ <RemoteImage source={squareAssets.human1} size="xxxl" shape="squircle" />
41
+ <RemoteImage source={squareAssets.human2} size="xxxl" shape="square" />
42
+ <RemoteImage source={squareAssets.human3} width={40} height={60} shape="rectangle" />
43
+ </VStack>
44
+ ```
45
+
46
+ ### Default fallback
47
+
48
+ If no images are shown, RemoteImage will show a default Fallback. Be aware that a rectangular fallback will truncate content from the fallback to fit the rectangle.
49
+
50
+ ```jsx live
51
+ <VStack gap={2}>
52
+ <RemoteImage size="m" shape="squircle" />
53
+ <RemoteImage size="l" shape="circle" />
54
+ <RemoteImage size="xl" shape="square" />
55
+ <RemoteImage width={50} height={80} shape="rectangle" />
56
+ </VStack>
57
+ ```
58
+
59
+ ## Props
60
+
61
+ | Prop | Type | Required | Default | Description |
62
+ | --- | --- | --- | --- | --- |
63
+ | `alignContent` | `ResponsiveProp<center \| normal \| start \| end \| flex-start \| flex-end \| stretch \| baseline \| first baseline \| last baseline \| space-between \| space-around \| space-evenly>` | No | `-` | - |
64
+ | `alignItems` | `ResponsiveProp<center \| normal \| start \| end \| flex-start \| flex-end \| self-start \| self-end \| stretch \| baseline \| first baseline \| last baseline>` | No | `-` | - |
65
+ | `alignSelf` | `ResponsiveProp<center \| normal \| auto \| start \| end \| flex-start \| flex-end \| self-start \| self-end \| stretch \| baseline \| first baseline \| last baseline>` | No | `-` | - |
66
+ | `as` | `img` | No | `-` | - |
67
+ | `aspectRatio` | `auto \| inherit \| string & {} \| -moz-initial \| initial \| revert \| revert-layer \| unset \| number & {}` | No | `-` | - |
68
+ | `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 | `-` | - |
69
+ | `borderBottomLeftRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
70
+ | `borderBottomRightRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
71
+ | `borderBottomWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
72
+ | `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 | `-` | - |
73
+ | `borderEndWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
74
+ | `borderRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
75
+ | `borderStartWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
76
+ | `borderTopLeftRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
77
+ | `borderTopRightRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
78
+ | `borderTopWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
79
+ | `borderWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
80
+ | `bordered` | `boolean` | No | `-` | Add a border around all sides of the box. |
81
+ | `borderedBottom` | `boolean` | No | `-` | Add a border to the bottom side of the box. |
82
+ | `borderedEnd` | `boolean` | No | `-` | Add a border to the trailing side of the box. |
83
+ | `borderedHorizontal` | `boolean` | No | `-` | Add a border to the leading and trailing sides of the box. |
84
+ | `borderedStart` | `boolean` | No | `-` | Add a border to the leading side of the box. |
85
+ | `borderedTop` | `boolean` | No | `-` | Add a border to the top side of the box. |
86
+ | `borderedVertical` | `boolean` | No | `-` | Add a border to the top and bottom sides of the box. |
87
+ | `bottom` | `ResponsiveProp<Bottom<string \| number>>` | No | `-` | - |
88
+ | `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 | `-` | - |
89
+ | `columnGap` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
90
+ | `dangerouslySetBackground` | `string` | No | `-` | - |
91
+ | `display` | `ResponsiveProp<grid \| revert \| none \| block \| inline \| inline-block \| flex \| inline-flex \| inline-grid \| contents \| flow-root \| list-item>` | No | `-` | - |
92
+ | `elevation` | `0 \| 1 \| 2` | No | `-` | - |
93
+ | `flexBasis` | `ResponsiveProp<FlexBasis<string \| number>>` | No | `-` | - |
94
+ | `flexDirection` | `ResponsiveProp<column \| row \| row-reverse \| column-reverse>` | No | `-` | - |
95
+ | `flexGrow` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset` | No | `-` | - |
96
+ | `flexShrink` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset` | No | `-` | - |
97
+ | `flexWrap` | `ResponsiveProp<nowrap \| wrap \| wrap-reverse>` | No | `-` | - |
98
+ | `font` | `ResponsiveProp<FontFamily \| inherit>` | No | `-` | - |
99
+ | `fontFamily` | `ResponsiveProp<FontFamily \| inherit>` | No | `-` | - |
100
+ | `fontSize` | `ResponsiveProp<FontSize \| inherit>` | No | `-` | - |
101
+ | `fontWeight` | `ResponsiveProp<FontWeight \| inherit>` | No | `-` | - |
102
+ | `gap` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
103
+ | `grid` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| none` | No | `-` | - |
104
+ | `gridArea` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
105
+ | `gridAutoColumns` | `ResponsiveProp<GridAutoColumns<string \| number>>` | No | `-` | - |
106
+ | `gridAutoFlow` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| row \| column \| dense` | No | `-` | - |
107
+ | `gridAutoRows` | `ResponsiveProp<GridAutoRows<string \| number>>` | No | `-` | - |
108
+ | `gridColumn` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
109
+ | `gridColumnEnd` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
110
+ | `gridColumnStart` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
111
+ | `gridRow` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
112
+ | `gridRowEnd` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
113
+ | `gridRowStart` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
114
+ | `gridTemplate` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| none` | No | `-` | - |
115
+ | `gridTemplateAreas` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| none` | No | `-` | - |
116
+ | `gridTemplateColumns` | `ResponsiveProp<GridTemplateColumns<string \| number>>` | No | `-` | - |
117
+ | `gridTemplateRows` | `ResponsiveProp<GridTemplateRows<string \| number>>` | No | `-` | - |
118
+ | `height` | `ResponsiveProp<Height<string \| number>>` | No | `-` | - |
119
+ | `justifyContent` | `ResponsiveProp<left \| right \| center \| normal \| start \| end \| flex-start \| flex-end \| stretch \| space-between \| space-around \| space-evenly>` | No | `-` | - |
120
+ | `key` | `Key \| null` | No | `-` | - |
121
+ | `left` | `ResponsiveProp<Left<string \| number>>` | No | `-` | - |
122
+ | `lineHeight` | `ResponsiveProp<LineHeight \| inherit>` | No | `-` | - |
123
+ | `margin` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
124
+ | `marginBottom` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
125
+ | `marginEnd` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
126
+ | `marginStart` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
127
+ | `marginTop` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
128
+ | `marginX` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
129
+ | `marginY` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
130
+ | `maxHeight` | `ResponsiveProp<MaxHeight<string \| number>>` | No | `-` | - |
131
+ | `maxWidth` | `ResponsiveProp<MaxWidth<string \| number>>` | No | `-` | - |
132
+ | `minHeight` | `ResponsiveProp<MinHeight<string \| number>>` | No | `-` | - |
133
+ | `minWidth` | `ResponsiveProp<MinWidth<string \| number>>` | No | `-` | - |
134
+ | `onChange` | `FormEventHandler<HTMLImageElement>` | No | `-` | - |
135
+ | `opacity` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset` | No | `-` | - |
136
+ | `overflow` | `ResponsiveProp<hidden \| auto \| visible \| clip \| scroll>` | No | `-` | - |
137
+ | `padding` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
138
+ | `paddingBottom` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
139
+ | `paddingEnd` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
140
+ | `paddingStart` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
141
+ | `paddingTop` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
142
+ | `paddingX` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
143
+ | `paddingY` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
144
+ | `pin` | `top \| bottom \| left \| right \| all` | No | `-` | Direction in which to absolutely pin the box. |
145
+ | `position` | `ResponsiveProp<fixed \| static \| relative \| absolute \| sticky>` | No | `-` | - |
146
+ | `ref` | `((instance: HTMLImageElement \| null) => void) \| RefObject<HTMLImageElement> \| null` | No | `-` | - |
147
+ | `resizeMode` | `cover \| contain` | No | `-` | - |
148
+ | `right` | `ResponsiveProp<Right<string \| number>>` | No | `-` | - |
149
+ | `rowGap` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
150
+ | `shape` | `rectangle \| circle \| squircle \| square \| hexagon` | No | `square` | Shape of RemoteImage |
151
+ | `size` | `s \| l \| m \| xl \| xxl \| xxxl` | No | `m` | Size for a given RemoteImage. If width or height is not defined, it will set size = m as default |
152
+ | `source` | `string` | No | `-` | Absolute url to the image that should be shown in the RemoteImage. If no source is provided then a generic fallback image is used. |
153
+ | `style` | `CSSProperties` | No | `-` | - |
154
+ | `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 |
155
+ | `textAlign` | `ResponsiveProp<center \| start \| end \| justify>` | No | `-` | - |
156
+ | `textDecoration` | `ResponsiveProp<none \| underline \| overline \| line-through \| underline overline \| underline double>` | No | `-` | - |
157
+ | `textTransform` | `ResponsiveProp<capitalize \| lowercase \| none \| uppercase>` | No | `-` | - |
158
+ | `top` | `ResponsiveProp<Top<string \| number>>` | No | `-` | - |
159
+ | `transform` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| none` | No | `-` | - |
160
+ | `userSelect` | `ResponsiveProp<text \| none \| auto \| all>` | No | `-` | - |
161
+ | `visibility` | `ResponsiveProp<hidden \| visible>` | No | `-` | - |
162
+ | `width` | `ResponsiveProp<Width<string \| number>>` | No | `-` | - |
163
+ | `zIndex` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
164
+
165
+