@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,193 @@
1
+ # Pressable
2
+
3
+ Extends the Interactable component to add accessibility support for press interactions.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { Pressable } from '@coinbase/cds-web/system/Pressable'
9
+ ```
10
+
11
+ ## Examples
12
+
13
+ ### Basic Pressable
14
+
15
+ Pressables support an `onClick` prop for handling click/press interactions. When being pressed, the element will scale down to mimic a real-world button press. If this functionality is not desired, pass the `noScaleOnPress` prop.
16
+
17
+ ```jsx live
18
+ <Pressable
19
+ onClick={console.log}
20
+ as="button"
21
+ background="bgAlternate"
22
+ borderColor="lineHeavy"
23
+ borderWidth={100}
24
+ borderRadius={300}
25
+ >
26
+ <Box as="span" padding={2}>
27
+ <Text font="headline" as="span">
28
+ Click me...
29
+ </Text>
30
+ </Box>
31
+ </Pressable>
32
+ ```
33
+
34
+ ### Pressable with Transparent Background
35
+
36
+ ```jsx live
37
+ <Pressable
38
+ onClick={console.log}
39
+ as="button"
40
+ background="transparent"
41
+ borderColor="lineHeavy"
42
+ borderWidth={100}
43
+ borderRadius={300}
44
+ >
45
+ <Box as="span" padding={2}>
46
+ <Text font="headline" as="span">
47
+ Click me...
48
+ </Text>
49
+ </Box>
50
+ </Pressable>
51
+ ```
52
+
53
+ ### Block Pressable
54
+
55
+ Pressables expand to 100% width when the `block` prop is passed.
56
+
57
+ ```jsx live
58
+ <Pressable
59
+ block
60
+ as="button"
61
+ onClick={console.log}
62
+ background="bgAlternate"
63
+ borderColor="lineHeavy"
64
+ borderWidth={100}
65
+ borderRadius={300}
66
+ >
67
+ <Box as="span" padding={2}>
68
+ <Text font="headline" as="span">
69
+ Click me...
70
+ </Text>
71
+ </Box>
72
+ </Pressable>
73
+ ```
74
+
75
+ ### A11y
76
+
77
+ On mobile, all [AccessibilityProps](https://reactnative.dev/docs/accessibility#accessibility-properties) can be passed, with `accessibilityComponentType` and `accessibilityTraits` defaulting to `button`, and `accessibilityState` being set based on loading/disabled props.
78
+
79
+ On web, all [ARIA attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) can be passed, with `aria-busy` being set based on loading/disabled props.
80
+
81
+ > The `as` prop allows any component to be used, but be sure you are using semantically correct elements! For example, no clickable divs.
82
+
83
+ ## Props
84
+
85
+ | Prop | Type | Required | Default | Description |
86
+ | --- | --- | --- | --- | --- |
87
+ | `alignContent` | `ResponsiveProp<center \| normal \| start \| end \| flex-start \| flex-end \| stretch \| baseline \| first baseline \| last baseline \| space-between \| space-around \| space-evenly>` | No | `-` | - |
88
+ | `alignItems` | `ResponsiveProp<center \| normal \| start \| end \| flex-start \| flex-end \| self-start \| self-end \| stretch \| baseline \| first baseline \| last baseline>` | No | `-` | - |
89
+ | `alignSelf` | `ResponsiveProp<center \| normal \| auto \| start \| end \| flex-start \| flex-end \| self-start \| self-end \| stretch \| baseline \| first baseline \| last baseline>` | No | `-` | - |
90
+ | `as` | `symbol \| object \| style \| svg \| a \| abbr \| address \| area \| article \| aside \| audio \| b \| base \| bdi \| bdo \| big \| blockquote \| body \| br \| button \| canvas \| caption \| center \| cite \| code \| col \| colgroup \| data \| datalist \| dd \| del \| details \| dfn \| dialog \| div \| dl \| dt \| em \| embed \| fieldset \| figcaption \| figure \| footer \| form \| h1 \| h2 \| h3 \| h4 \| h5 \| h6 \| head \| header \| hgroup \| hr \| html \| i \| iframe \| img \| input \| ins \| kbd \| keygen \| label \| legend \| li \| link \| main \| map \| mark \| menu \| menuitem \| meta \| meter \| nav \| noindex \| noscript \| ol \| optgroup \| option \| output \| p \| param \| picture \| pre \| progress \| q \| rp \| rt \| ruby \| s \| samp \| search \| slot \| script \| section \| select \| small \| source \| span \| strong \| sub \| summary \| sup \| table \| template \| tbody \| td \| textarea \| tfoot \| th \| thead \| time \| title \| tr \| track \| u \| ul \| var \| video \| wbr \| webview \| animate \| animateMotion \| animateTransform \| circle \| clipPath \| defs \| desc \| ellipse \| feBlend \| feColorMatrix \| feComponentTransfer \| feComposite \| feConvolveMatrix \| feDiffuseLighting \| feDisplacementMap \| feDistantLight \| feDropShadow \| feFlood \| feFuncA \| feFuncB \| feFuncG \| feFuncR \| feGaussianBlur \| feImage \| feMerge \| feMergeNode \| feMorphology \| feOffset \| fePointLight \| feSpecularLighting \| feSpotLight \| feTile \| feTurbulence \| filter \| foreignObject \| g \| image \| line \| linearGradient \| marker \| mask \| metadata \| mpath \| path \| pattern \| polygon \| polyline \| radialGradient \| rect \| set \| stop \| switch \| text \| textPath \| tspan \| use \| view \| ComponentClass<any, any> \| FunctionComponent<any>` | No | `-` | - |
91
+ | `aspectRatio` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
92
+ | `background` | `currentColor \| fg \| fgMuted \| fgInverse \| fgPrimary \| fgWarning \| fgPositive \| fgNegative \| bg \| bgAlternate \| bgInverse \| bgOverlay \| bgElevation1 \| bgElevation2 \| bgPrimary \| bgPrimaryWash \| bgSecondary \| bgTertiary \| bgSecondaryWash \| bgNegative \| bgNegativeWash \| bgPositive \| bgPositiveWash \| bgWarning \| bgWarningWash \| bgLine \| bgLineHeavy \| bgLineInverse \| bgLinePrimary \| bgLinePrimarySubtle \| accentSubtleRed \| accentBoldRed \| accentSubtleGreen \| accentBoldGreen \| accentSubtleBlue \| accentBoldBlue \| accentSubtlePurple \| accentBoldPurple \| accentSubtleYellow \| accentBoldYellow \| accentSubtleGray \| accentBoldGray \| transparent` | No | `-` | Background color of the overlay (element being interacted with). |
93
+ | `blendStyles` | `{ background?: string; pressedBackground?: string \| undefined; disabledBackground?: string \| undefined; hoveredBackground?: string \| undefined; borderColor?: string \| undefined; pressedBorderColor?: string \| undefined; disabledBorderColor?: string \| undefined; hoveredBorderColor?: string \| undefined; } \| undefined` | No | `-` | Custom color overrides for different interaction states. Base colors (background, borderColor) are used directly, while interaction state colors (hovered, pressed, disabled) are used as alternative base colors for blending calculations with blend strength and color scheme considerations. |
94
+ | `block` | `boolean` | No | `-` | Set element to block and expand to 100% width. |
95
+ | `borderBottomLeftRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
96
+ | `borderBottomRightRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
97
+ | `borderBottomWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
98
+ | `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 | `-` | Border color of the element. |
99
+ | `borderEndWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
100
+ | `borderRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
101
+ | `borderStartWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
102
+ | `borderTopLeftRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
103
+ | `borderTopRightRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
104
+ | `borderTopWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
105
+ | `borderWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
106
+ | `bordered` | `boolean` | No | `-` | Add a border around all sides of the box. |
107
+ | `borderedBottom` | `boolean` | No | `-` | Add a border to the bottom side of the box. |
108
+ | `borderedEnd` | `boolean` | No | `-` | Add a border to the trailing side of the box. |
109
+ | `borderedHorizontal` | `boolean` | No | `-` | Add a border to the leading and trailing sides of the box. |
110
+ | `borderedStart` | `boolean` | No | `-` | Add a border to the leading side of the box. |
111
+ | `borderedTop` | `boolean` | No | `-` | Add a border to the top side of the box. |
112
+ | `borderedVertical` | `boolean` | No | `-` | Add a border to the top and bottom sides of the box. |
113
+ | `bottom` | `ResponsiveProp<Bottom<string \| number>>` | No | `-` | - |
114
+ | `className` | `string` | No | `-` | Apply class names to the outer container. |
115
+ | `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 | `-` | - |
116
+ | `columnGap` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
117
+ | `dangerouslySetBackground` | `string` | No | `-` | - |
118
+ | `disabled` | `boolean` | No | `-` | Is the element currently disabled. |
119
+ | `display` | `ResponsiveProp<grid \| revert \| none \| block \| inline \| inline-block \| flex \| inline-flex \| inline-grid \| contents \| flow-root \| list-item>` | No | `-` | - |
120
+ | `elevation` | `0 \| 1 \| 2` | No | `-` | - |
121
+ | `flexBasis` | `ResponsiveProp<FlexBasis<string \| number>>` | No | `-` | - |
122
+ | `flexDirection` | `ResponsiveProp<column \| row \| row-reverse \| column-reverse>` | No | `-` | - |
123
+ | `flexGrow` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset` | No | `-` | - |
124
+ | `flexShrink` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset` | No | `-` | - |
125
+ | `flexWrap` | `ResponsiveProp<nowrap \| wrap \| wrap-reverse>` | No | `-` | - |
126
+ | `focusable` | `boolean` | No | `-` | - |
127
+ | `font` | `ResponsiveProp<FontFamily \| inherit>` | No | `-` | - |
128
+ | `fontFamily` | `ResponsiveProp<FontFamily \| inherit>` | No | `-` | - |
129
+ | `fontSize` | `ResponsiveProp<FontSize \| inherit>` | No | `-` | - |
130
+ | `fontWeight` | `ResponsiveProp<FontWeight \| inherit>` | No | `-` | - |
131
+ | `gap` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
132
+ | `grid` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| none` | No | `-` | - |
133
+ | `gridArea` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
134
+ | `gridAutoColumns` | `ResponsiveProp<GridAutoColumns<string \| number>>` | No | `-` | - |
135
+ | `gridAutoFlow` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| row \| column \| dense` | No | `-` | - |
136
+ | `gridAutoRows` | `ResponsiveProp<GridAutoRows<string \| number>>` | No | `-` | - |
137
+ | `gridColumn` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
138
+ | `gridColumnEnd` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
139
+ | `gridColumnStart` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
140
+ | `gridRow` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
141
+ | `gridRowEnd` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
142
+ | `gridRowStart` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
143
+ | `gridTemplate` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| none` | No | `-` | - |
144
+ | `gridTemplateAreas` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| none` | No | `-` | - |
145
+ | `gridTemplateColumns` | `ResponsiveProp<GridTemplateColumns<string \| number>>` | No | `-` | - |
146
+ | `gridTemplateRows` | `ResponsiveProp<GridTemplateRows<string \| number>>` | No | `-` | - |
147
+ | `height` | `ResponsiveProp<Height<string \| number>>` | No | `-` | - |
148
+ | `justifyContent` | `ResponsiveProp<left \| right \| center \| normal \| start \| end \| flex-start \| flex-end \| stretch \| space-between \| space-around \| space-evenly>` | No | `-` | - |
149
+ | `left` | `ResponsiveProp<Left<string \| number>>` | No | `-` | - |
150
+ | `lineHeight` | `ResponsiveProp<LineHeight \| inherit>` | No | `-` | - |
151
+ | `loading` | `boolean` | No | `-` | Is the element currenty loading. When set to true, will disable element from press and keyboard events |
152
+ | `margin` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
153
+ | `marginBottom` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
154
+ | `marginEnd` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
155
+ | `marginStart` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
156
+ | `marginTop` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
157
+ | `marginX` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
158
+ | `marginY` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
159
+ | `maxHeight` | `ResponsiveProp<MaxHeight<string \| number>>` | No | `-` | - |
160
+ | `maxWidth` | `ResponsiveProp<MaxWidth<string \| number>>` | No | `-` | - |
161
+ | `minHeight` | `ResponsiveProp<MinHeight<string \| number>>` | No | `-` | - |
162
+ | `minWidth` | `ResponsiveProp<MinWidth<string \| number>>` | No | `-` | - |
163
+ | `noScaleOnPress` | `boolean` | No | `-` | Dont scale element on press. |
164
+ | `opacity` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset` | No | `-` | - |
165
+ | `overflow` | `ResponsiveProp<hidden \| auto \| visible \| clip \| scroll>` | No | `-` | - |
166
+ | `padding` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `0` | - |
167
+ | `paddingBottom` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
168
+ | `paddingEnd` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
169
+ | `paddingStart` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
170
+ | `paddingTop` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
171
+ | `paddingX` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
172
+ | `paddingY` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
173
+ | `pin` | `top \| bottom \| left \| right \| all` | No | `-` | Direction in which to absolutely pin the box. |
174
+ | `position` | `ResponsiveProp<fixed \| static \| relative \| absolute \| sticky>` | No | `-` | - |
175
+ | `pressed` | `boolean` | No | `-` | Is the element being pressed. Primarily a mobile feature, but can be used on the web. |
176
+ | `ref` | `any` | No | `-` | - |
177
+ | `right` | `ResponsiveProp<Right<string \| number>>` | No | `-` | - |
178
+ | `rowGap` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
179
+ | `style` | `CSSProperties` | No | `-` | - |
180
+ | `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 |
181
+ | `textAlign` | `ResponsiveProp<center \| start \| end \| justify>` | No | `-` | - |
182
+ | `textDecoration` | `ResponsiveProp<none \| underline \| overline \| line-through \| underline overline \| underline double>` | No | `-` | - |
183
+ | `textTransform` | `ResponsiveProp<capitalize \| lowercase \| none \| uppercase>` | No | `-` | - |
184
+ | `top` | `ResponsiveProp<Top<string \| number>>` | No | `-` | - |
185
+ | `transform` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| none` | No | `-` | - |
186
+ | `transparentWhileInactive` | `boolean` | No | `-` | Mark the background and border as transparent until the element is interacted with (hovered, pressed, etc). Must be used in conjunction with the pressed prop |
187
+ | `transparentWhilePressed` | `boolean` | No | `-` | Mark the background and border as transparent even while element is interacted with (elevation underlay issue). Must be used in conjunction with the pressed prop |
188
+ | `userSelect` | `ResponsiveProp<text \| none \| auto \| all>` | No | `-` | - |
189
+ | `visibility` | `ResponsiveProp<hidden \| visible>` | No | `-` | - |
190
+ | `width` | `ResponsiveProp<Width<string \| number>>` | No | `-` | - |
191
+ | `zIndex` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
192
+
193
+
@@ -0,0 +1,163 @@
1
+ # ProgressBar
2
+
3
+ A visual indicator of completion progress.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { ProgressBar } from '@coinbase/cds-web/visualizations/ProgressBar'
9
+ ```
10
+
11
+ ## Examples
12
+
13
+ #### Default
14
+
15
+ ```tsx live
16
+ <VStack gap={2}>
17
+ <ProgressBar progress={0} />
18
+ <ProgressBar progress={0.5} />
19
+ <ProgressBar progress={1} />
20
+ </VStack>
21
+ ```
22
+
23
+ #### Weights
24
+
25
+ ```tsx live
26
+ <VStack gap={2}>
27
+ <ProgressBar weight="thin" progress={0.3} />
28
+ <ProgressBar weight="normal" progress={0.5} />
29
+ <ProgressBar weight="semiheavy" progress={0.7} />
30
+ <ProgressBar weight="heavy" progress={0.9} />
31
+ </VStack>
32
+ ```
33
+
34
+ #### Disabled
35
+
36
+ ```tsx live
37
+ <VStack gap={2}>
38
+ <ProgressBar disabled progress={0} />
39
+ <ProgressBar disabled progress={0.5} />
40
+ <ProgressBar disabled progress={1} />
41
+ </VStack>
42
+ ```
43
+
44
+ #### Colors
45
+
46
+ ```tsx live
47
+ <VStack gap={2}>
48
+ <ProgressBar color="bgPositive" progress={0.5} />
49
+ <ProgressBar color="bgNegative" progress={0.5} />
50
+ <ProgressBar color="bgPrimary" progress={0.5} />
51
+ <ProgressBar color="bgWarning" progress={0.5} />
52
+ <ProgressBar color="fg" progress={0.5} />
53
+ <ProgressBar disabled color="fg" progress={0.5} />
54
+ </VStack>
55
+ ```
56
+
57
+ #### Custom Styles
58
+
59
+ You can customize the appearance of the progress bar using the `styles` prop. The `root` style controls the container, and `progress` controls the fill bar.
60
+
61
+ ```tsx live
62
+ <VStack gap={2}>
63
+ <ProgressBar
64
+ progress={1}
65
+ styles={{
66
+ root: {
67
+ background: 'transparent',
68
+ },
69
+ progress: {
70
+ background: 'linear-gradient(to right, var(--color-bgPrimaryWash), var(--color-bgPrimary))',
71
+ },
72
+ }}
73
+ />
74
+ <ProgressBar
75
+ progress={0.5}
76
+ styles={{
77
+ root: { height: 'var(--space-4)' },
78
+ }}
79
+ />
80
+ <ProgressBar
81
+ progress={0.3}
82
+ styles={{
83
+ root: {
84
+ height: 'var(--space-8)',
85
+ borderRadius: 'var(--borderRadius-1000)',
86
+ },
87
+ progress: {
88
+ borderRadius: 'var(--borderRadius-1000)',
89
+ background: 'linear-gradient(to right, rgb(var(--teal40)), rgb(var(--green40)))',
90
+ },
91
+ }}
92
+ />
93
+ </VStack>
94
+ ```
95
+
96
+ #### Interactive Demo
97
+
98
+ This is for demo purposes. ProgressContainerWithButtons isn't designed for production usage.
99
+
100
+ ```tsx live
101
+ <ProgressContainerWithButtons>
102
+ {({ calculateProgress }) => (
103
+ <VStack gap={2}>
104
+ <ProgressBar progress={calculateProgress(0)} />
105
+ <ProgressBar progress={calculateProgress(0.2)} />
106
+ </VStack>
107
+ )}
108
+ </ProgressContainerWithButtons>
109
+ ```
110
+
111
+ ### Animation Callbacks
112
+
113
+ You can use the `onAnimationStart` and `onAnimationEnd` callbacks to track the progress of the animation.
114
+
115
+ ```jsx live
116
+ function Example() {
117
+ const [animationStatus, setAnimationStatus] = React.useState('Ready');
118
+
119
+ const handleAnimationStart = useCallback(() => {
120
+ setAnimationStatus('Animating...');
121
+ }, []);
122
+
123
+ const handleAnimationEnd = useCallback(() => {
124
+ setAnimationStatus('Animation Ended');
125
+ }, []);
126
+
127
+ return (
128
+ <ProgressContainerWithButtons>
129
+ {({ calculateProgress }) => (
130
+ <VStack gap={2}>
131
+ <Text>Animation Status: {animationStatus}</Text>
132
+ <ProgressBar
133
+ onAnimationEnd={handleAnimationEnd}
134
+ onAnimationStart={handleAnimationStart}
135
+ progress={calculateProgress(0.2)}
136
+ />
137
+ </VStack>
138
+ )}
139
+ </ProgressContainerWithButtons>
140
+ );
141
+ }
142
+ ```
143
+
144
+ ## Props
145
+
146
+ | Prop | Type | Required | Default | Description |
147
+ | --- | --- | --- | --- | --- |
148
+ | `progress` | `number` | Yes | `-` | Number between 0-1 representing the progress percentage |
149
+ | `className` | `string` | No | `-` | Custom class name for the progress bar root. |
150
+ | `classNames` | `{ root?: string; progress?: string \| undefined; } \| undefined` | No | `-` | Custom class names for the progress bar. |
151
+ | `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 | `primary` | Custom progress color. |
152
+ | `disableAnimateOnMount` | `boolean` | No | `false` | Disable animation on component mount |
153
+ | `disabled` | `boolean` | No | `false` | Toggle used to show a disabled progress visualization |
154
+ | `key` | `Key \| null` | No | `-` | - |
155
+ | `onAnimationEnd` | `(() => void)` | No | `-` | Callback fired when the progress animation ends. |
156
+ | `onAnimationStart` | `(() => void)` | No | `-` | Callback fired when the progress animation starts. |
157
+ | `ref` | `RefObject<HTMLDivElement> \| ((instance: HTMLDivElement \| null) => void) \| null` | No | `-` | - |
158
+ | `style` | `CSSProperties` | No | `-` | Custom styles for the progress bar root. |
159
+ | `styles` | `{ root?: CSSProperties; progress?: CSSProperties \| undefined; } \| undefined` | No | `-` | Custom styles for the progress bar. |
160
+ | `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 |
161
+ | `weight` | `normal \| heavy \| thin \| semiheavy` | No | `normal` | Toggle used to change thickness of progress visualization |
162
+
163
+
@@ -0,0 +1,212 @@
1
+ # ProgressBarWithFixedLabels
2
+
3
+ A ProgressBar with fixed labels at defined positions.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { ProgressBarWithFixedLabels } from '@coinbase/cds-web/visualizations/ProgressBarWithFixedLabels'
9
+ ```
10
+
11
+ ## Examples
12
+
13
+ ### Label Below
14
+
15
+ ```jsx live
16
+ <VStack gap={2}>
17
+ <ProgressBarWithFixedLabels startLabel={0} endLabel={20} labelPlacement="below">
18
+ <ProgressBar progress={0.2} />
19
+ </ProgressBarWithFixedLabels>
20
+ <ProgressBarWithFixedLabels endLabel={20} labelPlacement="below">
21
+ <ProgressBar progress={0.2} />
22
+ </ProgressBarWithFixedLabels>
23
+ </VStack>
24
+ ```
25
+
26
+ ### Label Beside
27
+
28
+ ```jsx live
29
+ <VStack gap={2}>
30
+ <ProgressBarWithFixedLabels startLabel={0} endLabel={20} labelPlacement="beside">
31
+ <ProgressBar progress={0.2} />
32
+ </ProgressBarWithFixedLabels>
33
+ <ProgressBarWithFixedLabels endLabel={20} labelPlacement="beside">
34
+ <ProgressBar progress={0.2} />
35
+ </ProgressBarWithFixedLabels>
36
+ </VStack>
37
+ ```
38
+
39
+ ### Disabled
40
+
41
+ ```jsx live
42
+ <VStack gap={2}>
43
+ <ProgressBarWithFixedLabels startLabel={0} endLabel={20} disabled labelPlacement="beside">
44
+ <ProgressBar disabled progress={0.2} />
45
+ </ProgressBarWithFixedLabels>
46
+ <ProgressBarWithFixedLabels startLabel={0} endLabel={20} disabled labelPlacement="above">
47
+ <ProgressBar disabled progress={0.2} />
48
+ </ProgressBarWithFixedLabels>
49
+ </VStack>
50
+ ```
51
+
52
+ ### Custom Labels
53
+
54
+ ```jsx live
55
+ function Example() {
56
+ const renderStartLabelNumStr = useCallback((num) => {
57
+ return `$${num.toLocaleString()}`;
58
+ }, []);
59
+
60
+ const renderEndLabelNumStr = useCallback((num) => {
61
+ return `${num.toLocaleString()} left`;
62
+ }, []);
63
+
64
+ const renderStartLabelNum = useCallback((num, disabled) => {
65
+ return (
66
+ <TextTitle3 disabled={disabled} as="span">
67
+ ${num.toLocaleString()}
68
+ </TextTitle3>
69
+ );
70
+ }, []);
71
+
72
+ const renderEndLabelNum = useCallback((num, disabled) => {
73
+ return (
74
+ <TextLabel2 disabled={disabled} as="span" align="end" noWrap>
75
+ ${num.toLocaleString()} left
76
+ </TextLabel2>
77
+ );
78
+ }, []);
79
+
80
+ return (
81
+ <VStack gap={2}>
82
+ <ProgressBarWithFixedLabels
83
+ startLabel={{ value: 12500, render: renderStartLabelNumStr }}
84
+ endLabel={{ value: 35500, render: renderEndLabelNumStr }}
85
+ labelPlacement="above"
86
+ >
87
+ <ProgressBar progress={0.6} />
88
+ </ProgressBarWithFixedLabels>
89
+ <ProgressBarWithFixedLabels
90
+ startLabel={{ value: 12500, render: renderStartLabelNum }}
91
+ endLabel={{ value: 35500, render: renderEndLabelNum }}
92
+ labelPlacement="above"
93
+ >
94
+ <ProgressBar progress={0.6} />
95
+ </ProgressBarWithFixedLabels>
96
+
97
+ <ProgressBarWithFixedLabels
98
+ startLabel={{ value: 12500, render: renderStartLabelNumStr }}
99
+ endLabel={{ value: 35500, render: renderEndLabelNumStr }}
100
+ labelPlacement="above"
101
+ disabled
102
+ >
103
+ <ProgressBar disabled progress={0.6} />
104
+ </ProgressBarWithFixedLabels>
105
+ <ProgressBarWithFixedLabels
106
+ startLabel={{ value: 12500, render: renderStartLabelNum }}
107
+ endLabel={{ value: 35500, render: renderEndLabelNum }}
108
+ labelPlacement="above"
109
+ disabled
110
+ >
111
+ <ProgressBar disabled progress={0.6} />
112
+ </ProgressBarWithFixedLabels>
113
+ </VStack>
114
+ );
115
+ }
116
+ ```
117
+
118
+ ### Custom Styles
119
+
120
+ You can customize the appearance of the progress bar and labels using the `styles` prop.
121
+
122
+ ```tsx live
123
+ <ProgressContainerWithButtons>
124
+ {({ calculateProgress }) => (
125
+ <VStack gap={2}>
126
+ <ProgressBarWithFixedLabels
127
+ endLabel={Math.round(calculateProgress(0.7) * 100)}
128
+ labelPlacement="above"
129
+ startLabel={0}
130
+ styles={{
131
+ startLabel: {
132
+ color: 'var(--color-fgNegative)',
133
+ },
134
+ endLabel: {
135
+ color: 'var(--color-fgPositive)',
136
+ fontWeight: 'bold',
137
+ },
138
+ }}
139
+ >
140
+ <ProgressBar
141
+ color="bgPositive"
142
+ progress={calculateProgress(0.7)}
143
+ styles={{
144
+ container: {
145
+ height: 'var(--space-8)',
146
+ borderRadius: 'var(--borderRadius-1000)',
147
+ },
148
+ progress: {
149
+ borderRadius: 'var(--borderRadius-1000)',
150
+ },
151
+ }}
152
+ />
153
+ </ProgressBarWithFixedLabels>
154
+ </VStack>
155
+ )}
156
+ </ProgressContainerWithButtons>
157
+ ```
158
+
159
+ ### Interactive Demo
160
+
161
+ This is for demo purposes. ProgressContainerWithButtons isn't designed for production usage.
162
+
163
+ ```jsx live
164
+ <ProgressContainerWithButtons>
165
+ {({ calculateProgress }) => (
166
+ <VStack gap={2}>
167
+ <ProgressBarWithFixedLabels
168
+ startLabel={0}
169
+ endLabel={Math.round(calculateProgress(0.2) * 100)}
170
+ labelPlacement="below"
171
+ >
172
+ <ProgressBar progress={calculateProgress(0.2)} />
173
+ </ProgressBarWithFixedLabels>
174
+ <ProgressBarWithFixedLabels
175
+ endLabel={Math.round(calculateProgress(0.2) * 100)}
176
+ labelPlacement="below"
177
+ >
178
+ <ProgressBar progress={calculateProgress(0.2)} />
179
+ </ProgressBarWithFixedLabels>
180
+ <ProgressBarWithFixedLabels
181
+ startLabel={0}
182
+ endLabel={Math.round(calculateProgress(0.2) * 100)}
183
+ labelPlacement="beside"
184
+ >
185
+ <ProgressBar progress={calculateProgress(0.2)} />
186
+ </ProgressBarWithFixedLabels>
187
+ <ProgressBarWithFixedLabels
188
+ endLabel={Math.round(calculateProgress(0.2) * 100)}
189
+ labelPlacement="beside"
190
+ >
191
+ <ProgressBar progress={calculateProgress(0.2)} />
192
+ </ProgressBarWithFixedLabels>
193
+ </VStack>
194
+ )}
195
+ </ProgressContainerWithButtons>
196
+ ```
197
+
198
+ ## Props
199
+
200
+ | Prop | Type | Required | Default | Description |
201
+ | --- | --- | --- | --- | --- |
202
+ | `className` | `string` | No | `-` | Custom class name for the progress bar with fixed labels root. |
203
+ | `classNames` | `{ root?: string; labelContainer?: string \| undefined; startLabel?: string \| undefined; endLabel?: string \| undefined; } \| undefined` | No | `-` | Custom class names for the progress bar with fixed labels. |
204
+ | `disabled` | `boolean` | No | `false` | Toggle used to show a disabled progress visualization |
205
+ | `endLabel` | `number \| { value: number; render: (num: number, disabled?: boolean \| undefined) => ReactNode; }` | No | `-` | Label that is pinned to the end of the container. If a number is used then it will format it as a percentage. |
206
+ | `labelPlacement` | `above \| below \| beside` | No | `beside` | Position of label relative to the bar |
207
+ | `startLabel` | `number \| { value: number; render: (num: number, disabled?: boolean \| undefined) => ReactNode; }` | No | `-` | Label that is pinned to the start of the container. If a number is used then it will format it as a percentage. |
208
+ | `style` | `CSSProperties` | No | `-` | Custom styles for the progress bar with fixed labels root. |
209
+ | `styles` | `{ root?: CSSProperties; labelContainer?: CSSProperties \| undefined; startLabel?: CSSProperties \| undefined; endLabel?: CSSProperties \| undefined; } \| undefined` | No | `-` | Custom styles for the progress bar with fixed labels. |
210
+ | `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 |
211
+
212
+