@coinbase/cds-mcp-server 8.17.2 → 8.17.3

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 (269) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/mcp-docs/mobile/components/Accordion.txt +189 -0
  3. package/mcp-docs/mobile/components/AccordionItem.txt +30 -0
  4. package/mcp-docs/mobile/components/Alert.txt +156 -0
  5. package/mcp-docs/mobile/components/AreaChart.txt +266 -0
  6. package/mcp-docs/mobile/components/Avatar.txt +196 -0
  7. package/mcp-docs/mobile/components/AvatarButton.txt +226 -0
  8. package/mcp-docs/mobile/components/Banner.txt +222 -0
  9. package/mcp-docs/mobile/components/BarChart.txt +816 -0
  10. package/mcp-docs/mobile/components/Box.txt +174 -0
  11. package/mcp-docs/mobile/components/BrowserBar.txt +147 -0
  12. package/mcp-docs/mobile/components/Button.txt +199 -0
  13. package/mcp-docs/mobile/components/ButtonGroup.txt +80 -0
  14. package/mcp-docs/mobile/components/Carousel.txt +1084 -0
  15. package/mcp-docs/mobile/components/CartesianChart.txt +826 -0
  16. package/mcp-docs/mobile/components/CellMedia.txt +71 -0
  17. package/mcp-docs/mobile/components/Checkbox.txt +246 -0
  18. package/mcp-docs/mobile/components/CheckboxCell.txt +202 -0
  19. package/mcp-docs/mobile/components/CheckboxGroup.txt +285 -0
  20. package/mcp-docs/mobile/components/Chip.txt +195 -0
  21. package/mcp-docs/mobile/components/Coachmark.txt +158 -0
  22. package/mcp-docs/mobile/components/Collapsible.txt +105 -0
  23. package/mcp-docs/mobile/components/ContainedAssetCard.txt +135 -0
  24. package/mcp-docs/mobile/components/ContentCard.txt +366 -0
  25. package/mcp-docs/mobile/components/ContentCardBody.txt +136 -0
  26. package/mcp-docs/mobile/components/ContentCardFooter.txt +128 -0
  27. package/mcp-docs/mobile/components/ContentCardHeader.txt +146 -0
  28. package/mcp-docs/mobile/components/ContentCell.txt +227 -0
  29. package/mcp-docs/mobile/components/ControlGroup.txt +444 -0
  30. package/mcp-docs/mobile/components/DatePicker.txt +497 -0
  31. package/mcp-docs/mobile/components/Divider.txt +139 -0
  32. package/mcp-docs/mobile/components/DotCount.txt +146 -0
  33. package/mcp-docs/mobile/components/DotStatusColor.txt +59 -0
  34. package/mcp-docs/mobile/components/DotSymbol.txt +135 -0
  35. package/mcp-docs/mobile/components/Fallback.txt +158 -0
  36. package/mcp-docs/mobile/components/FloatingAssetCard.txt +156 -0
  37. package/mcp-docs/mobile/components/HStack.txt +235 -0
  38. package/mcp-docs/mobile/components/HeroSquare.txt +48 -0
  39. package/mcp-docs/mobile/components/Icon.txt +52 -0
  40. package/mcp-docs/mobile/components/IconButton.txt +269 -0
  41. package/mcp-docs/mobile/components/InputChip.txt +188 -0
  42. package/mcp-docs/mobile/components/Interactable.txt +187 -0
  43. package/mcp-docs/mobile/components/LineChart.txt +1325 -0
  44. package/mcp-docs/mobile/components/Link.txt +292 -0
  45. package/mcp-docs/mobile/components/ListCell.txt +391 -0
  46. package/mcp-docs/mobile/components/LogoMark.txt +85 -0
  47. package/mcp-docs/mobile/components/LogoWordMark.txt +94 -0
  48. package/mcp-docs/mobile/components/Lottie.txt +139 -0
  49. package/mcp-docs/mobile/components/LottieStatusAnimation.txt +47 -0
  50. package/mcp-docs/mobile/components/Modal.txt +84 -0
  51. package/mcp-docs/mobile/components/ModalBody.txt +34 -0
  52. package/mcp-docs/mobile/components/ModalFooter.txt +25 -0
  53. package/mcp-docs/mobile/components/ModalHeader.txt +28 -0
  54. package/mcp-docs/mobile/components/MultiContentModule.txt +380 -0
  55. package/mcp-docs/mobile/components/NavigationTitle.txt +132 -0
  56. package/mcp-docs/mobile/components/NavigationTitleSelect.txt +142 -0
  57. package/mcp-docs/mobile/components/NudgeCard.txt +90 -0
  58. package/mcp-docs/mobile/components/Numpad.txt +341 -0
  59. package/mcp-docs/mobile/components/Overlay.txt +152 -0
  60. package/mcp-docs/mobile/components/PageFooter.txt +161 -0
  61. package/mcp-docs/mobile/components/PageHeader.txt +186 -0
  62. package/mcp-docs/mobile/components/PeriodSelector.txt +408 -0
  63. package/mcp-docs/mobile/components/Pictogram.txt +48 -0
  64. package/mcp-docs/mobile/components/Point.txt +205 -0
  65. package/mcp-docs/mobile/components/PortalProvider.txt +79 -0
  66. package/mcp-docs/mobile/components/Pressable.txt +211 -0
  67. package/mcp-docs/mobile/components/ProgressBar.txt +130 -0
  68. package/mcp-docs/mobile/components/ProgressBarWithFixedLabels.txt +161 -0
  69. package/mcp-docs/mobile/components/ProgressBarWithFloatLabel.txt +138 -0
  70. package/mcp-docs/mobile/components/ProgressCircle.txt +237 -0
  71. package/mcp-docs/mobile/components/Radio.txt +242 -0
  72. package/mcp-docs/mobile/components/RadioCell.txt +202 -0
  73. package/mcp-docs/mobile/components/RadioGroup.txt +282 -0
  74. package/mcp-docs/mobile/components/ReferenceLine.txt +153 -0
  75. package/mcp-docs/mobile/components/RemoteImage.txt +106 -0
  76. package/mcp-docs/mobile/components/RemoteImageGroup.txt +61 -0
  77. package/mcp-docs/mobile/components/RollingNumber.txt +789 -0
  78. package/mcp-docs/mobile/components/Scrubber.txt +204 -0
  79. package/mcp-docs/mobile/components/SearchInput.txt +192 -0
  80. package/mcp-docs/mobile/components/SectionHeader.txt +205 -0
  81. package/mcp-docs/mobile/components/SegmentedTabs.txt +316 -0
  82. package/mcp-docs/mobile/components/Select.txt +212 -0
  83. package/mcp-docs/mobile/components/SelectChip.txt +324 -0
  84. package/mcp-docs/mobile/components/SelectOption.txt +85 -0
  85. package/mcp-docs/mobile/components/SlideButton.txt +331 -0
  86. package/mcp-docs/mobile/components/Spacer.txt +84 -0
  87. package/mcp-docs/mobile/components/Sparkline.txt +123 -0
  88. package/mcp-docs/mobile/components/SparklineGradient.txt +107 -0
  89. package/mcp-docs/mobile/components/SparklineInteractive.txt +157 -0
  90. package/mcp-docs/mobile/components/SparklineInteractiveHeader.txt +73 -0
  91. package/mcp-docs/mobile/components/Spinner.txt +49 -0
  92. package/mcp-docs/mobile/components/SpotIcon.txt +48 -0
  93. package/mcp-docs/mobile/components/SpotRectangle.txt +48 -0
  94. package/mcp-docs/mobile/components/SpotSquare.txt +48 -0
  95. package/mcp-docs/mobile/components/Stepper.txt +528 -0
  96. package/mcp-docs/mobile/components/SubBrandLogoMark.txt +126 -0
  97. package/mcp-docs/mobile/components/SubBrandLogoWordMark.txt +126 -0
  98. package/mcp-docs/mobile/components/Switch.txt +98 -0
  99. package/mcp-docs/mobile/components/TabIndicator.txt +49 -0
  100. package/mcp-docs/mobile/components/TabLabel.txt +154 -0
  101. package/mcp-docs/mobile/components/TabNavigation.txt +147 -0
  102. package/mcp-docs/mobile/components/TabbedChips.txt +143 -0
  103. package/mcp-docs/mobile/components/Tabs.txt +191 -0
  104. package/mcp-docs/mobile/components/Tag.txt +301 -0
  105. package/mcp-docs/mobile/components/Text.txt +212 -0
  106. package/mcp-docs/mobile/components/TextInput.txt +718 -0
  107. package/mcp-docs/mobile/components/ThemeProvider.txt +133 -0
  108. package/mcp-docs/mobile/components/Toast.txt +197 -0
  109. package/mcp-docs/mobile/components/Tooltip.txt +60 -0
  110. package/mcp-docs/mobile/components/TopNavBar.txt +162 -0
  111. package/mcp-docs/mobile/components/Tour.txt +159 -0
  112. package/mcp-docs/mobile/components/Tray.txt +253 -0
  113. package/mcp-docs/mobile/components/UpsellCard.txt +322 -0
  114. package/mcp-docs/mobile/components/VStack.txt +223 -0
  115. package/mcp-docs/mobile/components/XAxis.txt +622 -0
  116. package/mcp-docs/mobile/components/YAxis.txt +568 -0
  117. package/mcp-docs/mobile/getting-started/introduction.txt +99 -0
  118. package/mcp-docs/mobile/getting-started/mcp-server.txt +94 -0
  119. package/mcp-docs/mobile/getting-started/playground.txt +25 -0
  120. package/mcp-docs/mobile/hooks/useDimensions.txt +47 -0
  121. package/mcp-docs/mobile/hooks/useOverlayContentContext.txt +215 -0
  122. package/mcp-docs/mobile/hooks/useTheme.txt +110 -0
  123. package/mcp-docs/mobile/routes.txt +132 -0
  124. package/mcp-docs/web/components/Accordion.txt +190 -0
  125. package/mcp-docs/web/components/AccordionItem.txt +32 -0
  126. package/mcp-docs/web/components/Alert.txt +165 -0
  127. package/mcp-docs/web/components/AreaChart.txt +511 -0
  128. package/mcp-docs/web/components/Avatar.txt +212 -0
  129. package/mcp-docs/web/components/AvatarButton.txt +241 -0
  130. package/mcp-docs/web/components/Banner.txt +227 -0
  131. package/mcp-docs/web/components/BarChart.txt +1268 -0
  132. package/mcp-docs/web/components/Box.txt +176 -0
  133. package/mcp-docs/web/components/Button.txt +213 -0
  134. package/mcp-docs/web/components/ButtonGroup.txt +80 -0
  135. package/mcp-docs/web/components/Calendar.txt +182 -0
  136. package/mcp-docs/web/components/Carousel.txt +1576 -0
  137. package/mcp-docs/web/components/CartesianChart.txt +1045 -0
  138. package/mcp-docs/web/components/CellMedia.txt +57 -0
  139. package/mcp-docs/web/components/Checkbox.txt +189 -0
  140. package/mcp-docs/web/components/CheckboxCell.txt +203 -0
  141. package/mcp-docs/web/components/CheckboxGroup.txt +220 -0
  142. package/mcp-docs/web/components/Chip.txt +197 -0
  143. package/mcp-docs/web/components/Coachmark.txt +189 -0
  144. package/mcp-docs/web/components/Collapsible.txt +120 -0
  145. package/mcp-docs/web/components/ContainedAssetCard.txt +233 -0
  146. package/mcp-docs/web/components/ContentCard.txt +368 -0
  147. package/mcp-docs/web/components/ContentCardBody.txt +138 -0
  148. package/mcp-docs/web/components/ContentCardFooter.txt +130 -0
  149. package/mcp-docs/web/components/ContentCardHeader.txt +148 -0
  150. package/mcp-docs/web/components/ContentCell.txt +220 -0
  151. package/mcp-docs/web/components/ControlGroup.txt +437 -0
  152. package/mcp-docs/web/components/DatePicker.txt +506 -0
  153. package/mcp-docs/web/components/Divider.txt +144 -0
  154. package/mcp-docs/web/components/DotCount.txt +150 -0
  155. package/mcp-docs/web/components/DotStatusColor.txt +59 -0
  156. package/mcp-docs/web/components/DotSymbol.txt +138 -0
  157. package/mcp-docs/web/components/Dropdown.txt +120 -0
  158. package/mcp-docs/web/components/Fallback.txt +164 -0
  159. package/mcp-docs/web/components/FloatingAssetCard.txt +251 -0
  160. package/mcp-docs/web/components/FullscreenAlert.txt +70 -0
  161. package/mcp-docs/web/components/FullscreenModal.txt +146 -0
  162. package/mcp-docs/web/components/FullscreenModalLayout.txt +188 -0
  163. package/mcp-docs/web/components/Grid.txt +237 -0
  164. package/mcp-docs/web/components/GridColumn.txt +210 -0
  165. package/mcp-docs/web/components/HStack.txt +237 -0
  166. package/mcp-docs/web/components/HeroSquare.txt +49 -0
  167. package/mcp-docs/web/components/Icon.txt +146 -0
  168. package/mcp-docs/web/components/IconButton.txt +391 -0
  169. package/mcp-docs/web/components/InputChip.txt +188 -0
  170. package/mcp-docs/web/components/Interactable.txt +194 -0
  171. package/mcp-docs/web/components/LineChart.txt +1577 -0
  172. package/mcp-docs/web/components/Link.txt +244 -0
  173. package/mcp-docs/web/components/ListCell.txt +397 -0
  174. package/mcp-docs/web/components/LogoMark.txt +85 -0
  175. package/mcp-docs/web/components/LogoWordMark.txt +94 -0
  176. package/mcp-docs/web/components/Lottie.txt +158 -0
  177. package/mcp-docs/web/components/LottieStatusAnimation.txt +58 -0
  178. package/mcp-docs/web/components/MediaQueryProvider.txt +109 -0
  179. package/mcp-docs/web/components/Modal.txt +193 -0
  180. package/mcp-docs/web/components/ModalBody.txt +118 -0
  181. package/mcp-docs/web/components/ModalFooter.txt +120 -0
  182. package/mcp-docs/web/components/ModalHeader.txt +124 -0
  183. package/mcp-docs/web/components/MultiContentModule.txt +382 -0
  184. package/mcp-docs/web/components/NavigationBar.txt +103 -0
  185. package/mcp-docs/web/components/NavigationTitle.txt +26 -0
  186. package/mcp-docs/web/components/NavigationTitleSelect.txt +46 -0
  187. package/mcp-docs/web/components/NudgeCard.txt +182 -0
  188. package/mcp-docs/web/components/Overlay.txt +172 -0
  189. package/mcp-docs/web/components/PageFooter.txt +185 -0
  190. package/mcp-docs/web/components/PageHeader.txt +244 -0
  191. package/mcp-docs/web/components/Pagination.txt +500 -0
  192. package/mcp-docs/web/components/PeriodSelector.txt +704 -0
  193. package/mcp-docs/web/components/Pictogram.txt +49 -0
  194. package/mcp-docs/web/components/Point.txt +461 -0
  195. package/mcp-docs/web/components/PortalProvider.txt +77 -0
  196. package/mcp-docs/web/components/Pressable.txt +194 -0
  197. package/mcp-docs/web/components/ProgressBar.txt +164 -0
  198. package/mcp-docs/web/components/ProgressBarWithFixedLabels.txt +213 -0
  199. package/mcp-docs/web/components/ProgressBarWithFloatLabel.txt +182 -0
  200. package/mcp-docs/web/components/ProgressCircle.txt +444 -0
  201. package/mcp-docs/web/components/Radio.txt +220 -0
  202. package/mcp-docs/web/components/RadioCell.txt +216 -0
  203. package/mcp-docs/web/components/RadioGroup.txt +289 -0
  204. package/mcp-docs/web/components/ReferenceLine.txt +452 -0
  205. package/mcp-docs/web/components/RemoteImage.txt +166 -0
  206. package/mcp-docs/web/components/RemoteImageGroup.txt +87 -0
  207. package/mcp-docs/web/components/RollingNumber.txt +1022 -0
  208. package/mcp-docs/web/components/Scrubber.txt +232 -0
  209. package/mcp-docs/web/components/SearchInput.txt +118 -0
  210. package/mcp-docs/web/components/SectionHeader.txt +218 -0
  211. package/mcp-docs/web/components/SegmentedTabs.txt +325 -0
  212. package/mcp-docs/web/components/Select.txt +225 -0
  213. package/mcp-docs/web/components/SelectChip.txt +315 -0
  214. package/mcp-docs/web/components/SelectOption.txt +166 -0
  215. package/mcp-docs/web/components/Sidebar.txt +350 -0
  216. package/mcp-docs/web/components/SidebarItem.txt +132 -0
  217. package/mcp-docs/web/components/SidebarMoreMenu.txt +31 -0
  218. package/mcp-docs/web/components/Spacer.txt +174 -0
  219. package/mcp-docs/web/components/Sparkline.txt +123 -0
  220. package/mcp-docs/web/components/SparklineGradient.txt +107 -0
  221. package/mcp-docs/web/components/SparklineInteractive.txt +154 -0
  222. package/mcp-docs/web/components/SparklineInteractiveHeader.txt +77 -0
  223. package/mcp-docs/web/components/Spinner.txt +129 -0
  224. package/mcp-docs/web/components/SpotIcon.txt +49 -0
  225. package/mcp-docs/web/components/SpotRectangle.txt +49 -0
  226. package/mcp-docs/web/components/SpotSquare.txt +49 -0
  227. package/mcp-docs/web/components/Stepper.txt +683 -0
  228. package/mcp-docs/web/components/SubBrandLogoMark.txt +126 -0
  229. package/mcp-docs/web/components/SubBrandLogoWordMark.txt +126 -0
  230. package/mcp-docs/web/components/Switch.txt +86 -0
  231. package/mcp-docs/web/components/TabIndicator.txt +49 -0
  232. package/mcp-docs/web/components/TabLabel.txt +159 -0
  233. package/mcp-docs/web/components/TabNavigation.txt +160 -0
  234. package/mcp-docs/web/components/TabbedChips.txt +156 -0
  235. package/mcp-docs/web/components/Table.txt +368 -0
  236. package/mcp-docs/web/components/TableBody.txt +84 -0
  237. package/mcp-docs/web/components/TableCaption.txt +103 -0
  238. package/mcp-docs/web/components/TableCell.txt +166 -0
  239. package/mcp-docs/web/components/TableCellFallback.txt +98 -0
  240. package/mcp-docs/web/components/TableFooter.txt +84 -0
  241. package/mcp-docs/web/components/TableHeader.txt +101 -0
  242. package/mcp-docs/web/components/TableRow.txt +141 -0
  243. package/mcp-docs/web/components/Tabs.txt +213 -0
  244. package/mcp-docs/web/components/Tag.txt +305 -0
  245. package/mcp-docs/web/components/Text.txt +233 -0
  246. package/mcp-docs/web/components/TextInput.txt +653 -0
  247. package/mcp-docs/web/components/ThemeProvider.txt +200 -0
  248. package/mcp-docs/web/components/TileButton.txt +159 -0
  249. package/mcp-docs/web/components/Toast.txt +204 -0
  250. package/mcp-docs/web/components/Tooltip.txt +90 -0
  251. package/mcp-docs/web/components/Tour.txt +180 -0
  252. package/mcp-docs/web/components/Tray.txt +289 -0
  253. package/mcp-docs/web/components/UpsellCard.txt +320 -0
  254. package/mcp-docs/web/components/VStack.txt +225 -0
  255. package/mcp-docs/web/components/XAxis.txt +620 -0
  256. package/mcp-docs/web/components/YAxis.txt +549 -0
  257. package/mcp-docs/web/getting-started/introduction.txt +99 -0
  258. package/mcp-docs/web/getting-started/mcp-server.txt +94 -0
  259. package/mcp-docs/web/getting-started/playground.txt +25 -0
  260. package/mcp-docs/web/hooks/useBreakpoints.txt +33 -0
  261. package/mcp-docs/web/hooks/useDimensions.txt +55 -0
  262. package/mcp-docs/web/hooks/useHasMounted.txt +55 -0
  263. package/mcp-docs/web/hooks/useIsoEffect.txt +42 -0
  264. package/mcp-docs/web/hooks/useMediaQuery.txt +94 -0
  265. package/mcp-docs/web/hooks/useOverlayContentContext.txt +217 -0
  266. package/mcp-docs/web/hooks/useScrollBlocker.txt +63 -0
  267. package/mcp-docs/web/hooks/useTheme.txt +105 -0
  268. package/mcp-docs/web/routes.txt +155 -0
  269. package/package.json +1 -1
@@ -0,0 +1,1268 @@
1
+ # BarChart
2
+
3
+ A bar chart component for comparing values across categories. Supports horizontal and vertical orientations, stacked bars, and grouped series.
4
+
5
+ ## Import
6
+
7
+ ```jsx
8
+ import { BarChart } from '@coinbase/cds-web-visualization'
9
+ ```
10
+
11
+ ## Props
12
+
13
+ | Prop | Type | Required | Default | Description |
14
+ | --- | --- | --- | --- | --- |
15
+ | `BarComponent` | `BarComponent` | No | `-` | Component to render the bar. |
16
+ | `BarStackComponent` | `BarStackComponent` | No | `DefaultBarStack` | Custom component to render the stack container. Can be used to add clip paths, outlines, or other custom styling. |
17
+ | `accentHeight` | `string \| number` | No | `-` | - |
18
+ | `accumulate` | `none \| sum` | No | `-` | - |
19
+ | `additive` | `sum \| replace` | No | `-` | - |
20
+ | `alignContent` | `ResponsiveProp<center \| end \| normal \| start \| flex-start \| flex-end \| space-between \| space-around \| space-evenly \| stretch \| baseline \| first baseline \| last baseline>` | No | `-` | - |
21
+ | `alignItems` | `ResponsiveProp<center \| end \| normal \| start \| flex-start \| flex-end \| stretch \| baseline \| first baseline \| last baseline \| self-start \| self-end>` | No | `-` | - |
22
+ | `alignSelf` | `ResponsiveProp<center \| end \| normal \| auto \| start \| flex-start \| flex-end \| stretch \| baseline \| first baseline \| last baseline \| self-start \| self-end>` | No | `-` | - |
23
+ | `alignmentBaseline` | `alphabetic \| hanging \| ideographic \| mathematical \| inherit \| auto \| baseline \| before-edge \| text-before-edge \| middle \| central \| after-edge \| text-after-edge` | No | `-` | - |
24
+ | `allowReorder` | `no \| yes` | No | `-` | - |
25
+ | `alphabetic` | `string \| number` | No | `-` | - |
26
+ | `amplitude` | `string \| number` | No | `-` | - |
27
+ | `animate` | `boolean` | No | `true` | Whether to animate the chart. |
28
+ | `arabicForm` | `initial \| medial \| terminal \| isolated` | No | `-` | - |
29
+ | `as` | `svg` | No | `-` | - |
30
+ | `ascent` | `string \| number` | No | `-` | - |
31
+ | `aspectRatio` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
32
+ | `attributeName` | `string` | No | `-` | - |
33
+ | `attributeType` | `string` | No | `-` | - |
34
+ | `autoReverse` | `false \| true \| true \| false` | No | `-` | - |
35
+ | `azimuth` | `string \| number` | No | `-` | - |
36
+ | `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 | `-` | - |
37
+ | `barMinSize` | `number` | No | `-` | Minimum size for individual bars in the stack. |
38
+ | `barPadding` | `number` | No | `0.1` | Padding between bar groups (0-1). |
39
+ | `baseFrequency` | `string \| number` | No | `-` | - |
40
+ | `baseProfile` | `string \| number` | No | `-` | - |
41
+ | `baselineShift` | `string \| number` | No | `-` | - |
42
+ | `bbox` | `string \| number` | No | `-` | - |
43
+ | `begin` | `string \| number` | No | `-` | - |
44
+ | `bias` | `string \| number` | No | `-` | - |
45
+ | `borderBottomLeftRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
46
+ | `borderBottomRightRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
47
+ | `borderBottomWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
48
+ | `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 | `-` | - |
49
+ | `borderEndWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
50
+ | `borderRadius` | `((BorderRadius \| { base?: BorderRadius; phone?: BorderRadius \| undefined; tablet?: BorderRadius \| undefined; desktop?: BorderRadius \| undefined; }) & number) \| undefined` | No | `4` | Border radius of the bar. Border radius for the bar. |
51
+ | `borderStartWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
52
+ | `borderTopLeftRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
53
+ | `borderTopRightRadius` | `0 \| 100 \| 200 \| 300 \| 400 \| 500 \| 600 \| 700 \| 800 \| 900 \| 1000` | No | `-` | - |
54
+ | `borderTopWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
55
+ | `borderWidth` | `0 \| 100 \| 200 \| 300 \| 400 \| 500` | No | `-` | - |
56
+ | `bordered` | `boolean` | No | `-` | Add a border around all sides of the box. |
57
+ | `borderedBottom` | `boolean` | No | `-` | Add a border to the bottom side of the box. |
58
+ | `borderedEnd` | `boolean` | No | `-` | Add a border to the trailing side of the box. |
59
+ | `borderedHorizontal` | `boolean` | No | `-` | Add a border to the leading and trailing sides of the box. |
60
+ | `borderedStart` | `boolean` | No | `-` | Add a border to the leading side of the box. |
61
+ | `borderedTop` | `boolean` | No | `-` | Add a border to the top side of the box. |
62
+ | `borderedVertical` | `boolean` | No | `-` | Add a border to the top and bottom sides of the box. |
63
+ | `bottom` | `ResponsiveProp<Bottom<string \| number>>` | No | `-` | - |
64
+ | `by` | `string \| number` | No | `-` | - |
65
+ | `calcMode` | `string \| number` | No | `-` | - |
66
+ | `capHeight` | `string \| number` | No | `-` | - |
67
+ | `className` | `string` | No | `-` | - |
68
+ | `clip` | `string \| number` | No | `-` | - |
69
+ | `clipPath` | `string` | No | `-` | - |
70
+ | `clipPathUnits` | `string \| number` | No | `-` | - |
71
+ | `clipRule` | `string \| number` | No | `-` | - |
72
+ | `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 | `-` | - |
73
+ | `colorInterpolation` | `string \| number` | No | `-` | - |
74
+ | `colorInterpolationFilters` | `inherit \| auto \| sRGB \| linearRGB` | No | `-` | - |
75
+ | `colorProfile` | `string \| number` | No | `-` | - |
76
+ | `colorRendering` | `string \| number` | No | `-` | - |
77
+ | `columnGap` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
78
+ | `contentScriptType` | `string \| number` | No | `-` | - |
79
+ | `contentStyleType` | `string \| number` | No | `-` | - |
80
+ | `crossOrigin` | ` \| anonymous \| use-credentials` | No | `-` | - |
81
+ | `cursor` | `string \| number` | No | `-` | - |
82
+ | `cx` | `string \| number` | No | `-` | - |
83
+ | `cy` | `string \| number` | No | `-` | - |
84
+ | `d` | `string` | No | `-` | - |
85
+ | `dangerouslySetBackground` | `string` | No | `-` | - |
86
+ | `decelerate` | `string \| number` | No | `-` | - |
87
+ | `descent` | `string \| number` | No | `-` | - |
88
+ | `diffuseConstant` | `string \| number` | No | `-` | - |
89
+ | `direction` | `string \| number` | No | `-` | - |
90
+ | `display` | `ResponsiveProp<grid \| revert \| none \| block \| inline \| inline-block \| flex \| inline-flex \| inline-grid \| contents \| flow-root \| list-item>` | No | `-` | - |
91
+ | `divisor` | `string \| number` | No | `-` | - |
92
+ | `dominantBaseline` | `string \| number` | No | `-` | - |
93
+ | `dur` | `string \| number` | No | `-` | - |
94
+ | `dx` | `string \| number` | No | `-` | - |
95
+ | `dy` | `string \| number` | No | `-` | - |
96
+ | `edgeMode` | `string \| number` | No | `-` | - |
97
+ | `elevation` | `0 \| 1 \| 2` | No | `-` | - |
98
+ | `enableBackground` | `string \| number` | No | `-` | - |
99
+ | `enableScrubbing` | `boolean` | No | `-` | Enables scrubbing interactions. When true, allows scrubbing and makes scrubber components interactive. |
100
+ | `end` | `string \| number` | No | `-` | - |
101
+ | `exponent` | `string \| number` | No | `-` | - |
102
+ | `externalResourcesRequired` | `false \| true \| true \| false` | No | `-` | - |
103
+ | `fill` | `string` | No | `-` | - |
104
+ | `fillOpacity` | `number` | No | `-` | Fill opacity for the bar. |
105
+ | `fillRule` | `inherit \| nonzero \| evenodd` | No | `-` | - |
106
+ | `filter` | `string` | No | `-` | - |
107
+ | `filterRes` | `string \| number` | No | `-` | - |
108
+ | `filterUnits` | `string \| number` | No | `-` | - |
109
+ | `flexBasis` | `ResponsiveProp<FlexBasis<string \| number>>` | No | `-` | - |
110
+ | `flexDirection` | `ResponsiveProp<row \| row-reverse \| column \| column-reverse>` | No | `-` | - |
111
+ | `flexGrow` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset` | No | `-` | - |
112
+ | `flexShrink` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset` | No | `-` | - |
113
+ | `flexWrap` | `ResponsiveProp<nowrap \| wrap \| wrap-reverse>` | No | `-` | - |
114
+ | `floodColor` | `string \| number` | No | `-` | - |
115
+ | `floodOpacity` | `string \| number` | No | `-` | - |
116
+ | `focusable` | `auto \| Booleanish` | No | `-` | - |
117
+ | `font` | `ResponsiveProp<FontFamily \| inherit>` | No | `-` | - |
118
+ | `fontFamily` | `ResponsiveProp<FontFamily \| inherit>` | No | `-` | - |
119
+ | `fontSize` | `ResponsiveProp<FontSize \| inherit>` | No | `-` | - |
120
+ | `fontSizeAdjust` | `string \| number` | No | `-` | - |
121
+ | `fontStretch` | `string \| number` | No | `-` | - |
122
+ | `fontStyle` | `string \| number` | No | `-` | - |
123
+ | `fontVariant` | `string \| number` | No | `-` | - |
124
+ | `fontWeight` | `ResponsiveProp<FontWeight \| inherit>` | No | `-` | - |
125
+ | `format` | `string \| number` | No | `-` | - |
126
+ | `fr` | `string \| number` | No | `-` | - |
127
+ | `from` | `string \| number` | No | `-` | - |
128
+ | `fx` | `string \| number` | No | `-` | - |
129
+ | `fy` | `string \| number` | No | `-` | - |
130
+ | `g1` | `string \| number` | No | `-` | - |
131
+ | `g2` | `string \| number` | No | `-` | - |
132
+ | `gap` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
133
+ | `glyphName` | `string \| number` | No | `-` | - |
134
+ | `glyphOrientationHorizontal` | `string \| number` | No | `-` | - |
135
+ | `glyphOrientationVertical` | `string \| number` | No | `-` | - |
136
+ | `glyphRef` | `string \| number` | No | `-` | - |
137
+ | `gradientTransform` | `string` | No | `-` | - |
138
+ | `gradientUnits` | `string` | No | `-` | - |
139
+ | `grid` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| none` | No | `-` | - |
140
+ | `gridArea` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
141
+ | `gridAutoColumns` | `ResponsiveProp<GridAutoColumns<string \| number>>` | No | `-` | - |
142
+ | `gridAutoFlow` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| row \| column \| dense` | No | `-` | - |
143
+ | `gridAutoRows` | `ResponsiveProp<GridAutoRows<string \| number>>` | No | `-` | - |
144
+ | `gridColumn` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
145
+ | `gridColumnEnd` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
146
+ | `gridColumnStart` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
147
+ | `gridRow` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
148
+ | `gridRowEnd` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
149
+ | `gridRowStart` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
150
+ | `gridTemplate` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| none` | No | `-` | - |
151
+ | `gridTemplateAreas` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| none` | No | `-` | - |
152
+ | `gridTemplateColumns` | `ResponsiveProp<GridTemplateColumns<string \| number>>` | No | `-` | - |
153
+ | `gridTemplateRows` | `ResponsiveProp<GridTemplateRows<string \| number>>` | No | `-` | - |
154
+ | `hanging` | `string \| number` | No | `-` | - |
155
+ | `height` | `ResponsiveProp<Height<string \| number>>` | No | `-` | - |
156
+ | `horizAdvX` | `string \| number` | No | `-` | - |
157
+ | `horizOriginX` | `string \| number` | No | `-` | - |
158
+ | `href` | `string` | No | `-` | - |
159
+ | `id` | `string` | No | `-` | - |
160
+ | `ideographic` | `string \| number` | No | `-` | - |
161
+ | `imageRendering` | `string \| number` | No | `-` | - |
162
+ | `in` | `string` | No | `-` | - |
163
+ | `in2` | `string \| number` | No | `-` | - |
164
+ | `inset` | `number \| Partial<ChartInset>` | No | `-` | Inset around the entire chart (outside the axes). |
165
+ | `intercept` | `string \| number` | No | `-` | - |
166
+ | `justifyContent` | `ResponsiveProp<left \| right \| center \| end \| normal \| start \| flex-start \| flex-end \| space-between \| space-around \| space-evenly \| stretch>` | No | `-` | - |
167
+ | `k` | `string \| number` | No | `-` | - |
168
+ | `k1` | `string \| number` | No | `-` | - |
169
+ | `k2` | `string \| number` | No | `-` | - |
170
+ | `k3` | `string \| number` | No | `-` | - |
171
+ | `k4` | `string \| number` | No | `-` | - |
172
+ | `kernelMatrix` | `string \| number` | No | `-` | - |
173
+ | `kernelUnitLength` | `string \| number` | No | `-` | - |
174
+ | `kerning` | `string \| number` | No | `-` | - |
175
+ | `key` | `Key \| null` | No | `-` | - |
176
+ | `keyPoints` | `string \| number` | No | `-` | - |
177
+ | `keySplines` | `string \| number` | No | `-` | - |
178
+ | `keyTimes` | `string \| number` | No | `-` | - |
179
+ | `lang` | `string` | No | `-` | - |
180
+ | `left` | `ResponsiveProp<Left<string \| number>>` | No | `-` | - |
181
+ | `lengthAdjust` | `string \| number` | No | `-` | - |
182
+ | `letterSpacing` | `string \| number` | No | `-` | - |
183
+ | `lightingColor` | `string \| number` | No | `-` | - |
184
+ | `limitingConeAngle` | `string \| number` | No | `-` | - |
185
+ | `lineHeight` | `ResponsiveProp<LineHeight \| inherit>` | No | `-` | - |
186
+ | `local` | `string \| number` | No | `-` | - |
187
+ | `margin` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
188
+ | `marginBottom` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
189
+ | `marginEnd` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
190
+ | `marginStart` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
191
+ | `marginTop` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
192
+ | `marginX` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
193
+ | `marginY` | `ResponsiveProp<0 \| -5 \| -10 \| -0.25 \| -0.5 \| -0.75 \| -1 \| -1.5 \| -2 \| -3 \| -4 \| -6 \| -7 \| -8 \| -9>` | No | `-` | - |
194
+ | `markerEnd` | `string` | No | `-` | - |
195
+ | `markerHeight` | `string \| number` | No | `-` | - |
196
+ | `markerMid` | `string` | No | `-` | - |
197
+ | `markerStart` | `string` | No | `-` | - |
198
+ | `markerUnits` | `string \| number` | No | `-` | - |
199
+ | `markerWidth` | `string \| number` | No | `-` | - |
200
+ | `mask` | `string` | No | `-` | - |
201
+ | `maskContentUnits` | `string \| number` | No | `-` | - |
202
+ | `maskUnits` | `string \| number` | No | `-` | - |
203
+ | `mathematical` | `string \| number` | No | `-` | - |
204
+ | `max` | `string \| number` | No | `-` | - |
205
+ | `maxHeight` | `ResponsiveProp<MaxHeight<string \| number>>` | No | `-` | - |
206
+ | `maxWidth` | `ResponsiveProp<MaxWidth<string \| number>>` | No | `-` | - |
207
+ | `media` | `string` | No | `-` | - |
208
+ | `method` | `string` | No | `-` | - |
209
+ | `min` | `string \| number` | No | `-` | - |
210
+ | `minHeight` | `ResponsiveProp<MinHeight<string \| number>>` | No | `-` | - |
211
+ | `minWidth` | `ResponsiveProp<MinWidth<string \| number>>` | No | `-` | - |
212
+ | `mode` | `string \| number` | No | `-` | - |
213
+ | `name` | `string` | No | `-` | - |
214
+ | `numOctaves` | `string \| number` | No | `-` | - |
215
+ | `offset` | `string \| number` | No | `-` | - |
216
+ | `onChange` | `FormEventHandler<SVGSVGElement>` | No | `-` | - |
217
+ | `onScrubberPositionChange` | `((index: number) => void) \| undefined` | No | `-` | Callback fired when the scrubber position changes. Receives the dataIndex of the scrubber or undefined when not scrubbing. |
218
+ | `opacity` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset` | No | `-` | - |
219
+ | `operator` | `string \| number` | No | `-` | - |
220
+ | `order` | `string \| number` | No | `-` | - |
221
+ | `orient` | `string \| number` | No | `-` | - |
222
+ | `orientation` | `string \| number` | No | `-` | - |
223
+ | `origin` | `string \| number` | No | `-` | - |
224
+ | `overflow` | `ResponsiveProp<clip \| auto \| visible \| hidden \| scroll>` | No | `-` | - |
225
+ | `overlinePosition` | `string \| number` | No | `-` | - |
226
+ | `overlineThickness` | `string \| number` | No | `-` | - |
227
+ | `padding` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
228
+ | `paddingBottom` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
229
+ | `paddingEnd` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
230
+ | `paddingStart` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
231
+ | `paddingTop` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
232
+ | `paddingX` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
233
+ | `paddingY` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
234
+ | `paintOrder` | `string \| number` | No | `-` | - |
235
+ | `panose1` | `string \| number` | No | `-` | - |
236
+ | `path` | `string` | No | `-` | - |
237
+ | `pathLength` | `string \| number` | No | `-` | - |
238
+ | `patternContentUnits` | `string` | No | `-` | - |
239
+ | `patternTransform` | `string \| number` | No | `-` | - |
240
+ | `patternUnits` | `string` | No | `-` | - |
241
+ | `pin` | `top \| bottom \| left \| right \| all` | No | `-` | Direction in which to absolutely pin the box. |
242
+ | `pointerEvents` | `string \| number` | No | `-` | - |
243
+ | `points` | `string` | No | `-` | - |
244
+ | `pointsAtX` | `string \| number` | No | `-` | - |
245
+ | `pointsAtY` | `string \| number` | No | `-` | - |
246
+ | `pointsAtZ` | `string \| number` | No | `-` | - |
247
+ | `position` | `ResponsiveProp<static \| relative \| absolute \| fixed \| sticky>` | No | `-` | - |
248
+ | `preserveAlpha` | `false \| true \| true \| false` | No | `-` | - |
249
+ | `preserveAspectRatio` | `string` | No | `-` | - |
250
+ | `primitiveUnits` | `string \| number` | No | `-` | - |
251
+ | `r` | `string \| number` | No | `-` | - |
252
+ | `radius` | `string \| number` | No | `-` | - |
253
+ | `ref` | `((instance: SVGSVGElement \| null) => void) \| RefObject<SVGSVGElement> \| null` | No | `-` | - |
254
+ | `refX` | `string \| number` | No | `-` | - |
255
+ | `refY` | `string \| number` | No | `-` | - |
256
+ | `renderingIntent` | `string \| number` | No | `-` | - |
257
+ | `repeatCount` | `string \| number` | No | `-` | - |
258
+ | `repeatDur` | `string \| number` | No | `-` | - |
259
+ | `requiredExtensions` | `string \| number` | No | `-` | - |
260
+ | `requiredFeatures` | `string \| number` | No | `-` | - |
261
+ | `restart` | `string \| number` | No | `-` | - |
262
+ | `result` | `string` | No | `-` | - |
263
+ | `right` | `ResponsiveProp<Right<string \| number>>` | No | `-` | - |
264
+ | `role` | `grid \| article \| button \| dialog \| figure \| form \| img \| link \| main \| menu \| menuitem \| option \| search \| table \| switch \| string & {} \| none \| row \| alert \| alertdialog \| application \| banner \| cell \| checkbox \| columnheader \| combobox \| complementary \| contentinfo \| definition \| directory \| document \| feed \| gridcell \| group \| heading \| list \| listbox \| listitem \| log \| marquee \| math \| menubar \| menuitemcheckbox \| menuitemradio \| navigation \| note \| presentation \| progressbar \| radio \| radiogroup \| region \| rowgroup \| rowheader \| scrollbar \| searchbox \| separator \| slider \| spinbutton \| status \| tab \| tablist \| tabpanel \| term \| textbox \| timer \| toolbar \| tooltip \| tree \| treegrid \| treeitem` | No | `-` | - |
265
+ | `rotate` | `string \| number` | No | `-` | - |
266
+ | `roundBaseline` | `boolean` | No | `-` | Whether to round the baseline of a bar (where the value is 0). |
267
+ | `rowGap` | `0 \| 5 \| 10 \| 0.25 \| 0.5 \| 0.75 \| 1 \| 1.5 \| 2 \| 3 \| 4 \| 6 \| 7 \| 8 \| 9` | No | `-` | - |
268
+ | `rx` | `string \| number` | No | `-` | - |
269
+ | `ry` | `string \| number` | No | `-` | - |
270
+ | `scale` | `string \| number` | No | `-` | - |
271
+ | `seed` | `string \| number` | No | `-` | - |
272
+ | `series` | `BarSeries[]` | No | `-` | Configuration objects that define how to visualize the data. Each series supports Bar component props for individual customization. |
273
+ | `shapeRendering` | `string \| number` | No | `-` | - |
274
+ | `showXAxis` | `boolean` | No | `-` | Whether to show the X axis. |
275
+ | `showYAxis` | `boolean` | No | `-` | Whether to show the Y axis. |
276
+ | `slope` | `string \| number` | No | `-` | - |
277
+ | `spacing` | `string \| number` | No | `-` | - |
278
+ | `specularConstant` | `string \| number` | No | `-` | - |
279
+ | `specularExponent` | `string \| number` | No | `-` | - |
280
+ | `speed` | `string \| number` | No | `-` | - |
281
+ | `spreadMethod` | `string` | No | `-` | - |
282
+ | `stackGap` | `number` | No | `-` | Gap between bars in the stack. |
283
+ | `stackMinSize` | `number` | No | `-` | Minimum size for the entire stack. |
284
+ | `stacked` | `boolean` | No | `-` | Whether to stack the areas on top of each other. When true, each series builds cumulative values on top of the previous series. **Note**: Only applies to series data containing singular numbers (e.g., [10, 20, 30]). Series with start & end value tuples (e.g., [[0, 10], [5, 20]]) will be skipped during stacking and rendered as-is. |
285
+ | `startOffset` | `string \| number` | No | `-` | - |
286
+ | `stdDeviation` | `string \| number` | No | `-` | - |
287
+ | `stemh` | `string \| number` | No | `-` | - |
288
+ | `stemv` | `string \| number` | No | `-` | - |
289
+ | `stitchTiles` | `string \| number` | No | `-` | - |
290
+ | `stopColor` | `string` | No | `-` | - |
291
+ | `stopOpacity` | `string \| number` | No | `-` | - |
292
+ | `strikethroughPosition` | `string \| number` | No | `-` | - |
293
+ | `strikethroughThickness` | `string \| number` | No | `-` | - |
294
+ | `string` | `string \| number` | No | `-` | - |
295
+ | `stroke` | `string` | No | `-` | Stroke color for the bar outline. |
296
+ | `strokeDasharray` | `string \| number` | No | `-` | - |
297
+ | `strokeDashoffset` | `string \| number` | No | `-` | - |
298
+ | `strokeLinecap` | `inherit \| butt \| round \| square` | No | `-` | - |
299
+ | `strokeLinejoin` | `inherit \| round \| miter \| bevel` | No | `-` | - |
300
+ | `strokeMiterlimit` | `string \| number` | No | `-` | - |
301
+ | `strokeOpacity` | `string \| number` | No | `-` | - |
302
+ | `strokeWidth` | `number` | No | `-` | Stroke width for the bar outline. |
303
+ | `style` | `CSSProperties` | No | `-` | - |
304
+ | `suppressHydrationWarning` | `boolean` | No | `-` | - |
305
+ | `surfaceScale` | `string \| number` | No | `-` | - |
306
+ | `systemLanguage` | `string \| number` | No | `-` | - |
307
+ | `tabIndex` | `number` | No | `-` | - |
308
+ | `tableValues` | `string \| number` | No | `-` | - |
309
+ | `target` | `string` | No | `-` | - |
310
+ | `targetX` | `string \| number` | No | `-` | - |
311
+ | `targetY` | `string \| number` | No | `-` | - |
312
+ | `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 |
313
+ | `textAlign` | `ResponsiveProp<center \| end \| start \| justify>` | No | `-` | - |
314
+ | `textAnchor` | `string` | No | `-` | - |
315
+ | `textDecoration` | `ResponsiveProp<none \| underline \| overline \| line-through \| underline overline \| underline double>` | No | `-` | - |
316
+ | `textLength` | `string \| number` | No | `-` | - |
317
+ | `textRendering` | `string \| number` | No | `-` | - |
318
+ | `textTransform` | `ResponsiveProp<capitalize \| lowercase \| none \| uppercase>` | No | `-` | - |
319
+ | `to` | `string \| number` | No | `-` | - |
320
+ | `top` | `ResponsiveProp<Top<string \| number>>` | No | `-` | - |
321
+ | `transform` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| none` | No | `-` | - |
322
+ | `type` | `string` | No | `-` | - |
323
+ | `u1` | `string \| number` | No | `-` | - |
324
+ | `u2` | `string \| number` | No | `-` | - |
325
+ | `underlinePosition` | `string \| number` | No | `-` | - |
326
+ | `underlineThickness` | `string \| number` | No | `-` | - |
327
+ | `unicode` | `string \| number` | No | `-` | - |
328
+ | `unicodeBidi` | `string \| number` | No | `-` | - |
329
+ | `unicodeRange` | `string \| number` | No | `-` | - |
330
+ | `unitsPerEm` | `string \| number` | No | `-` | - |
331
+ | `userSelect` | `ResponsiveProp<text \| none \| auto \| all>` | No | `-` | - |
332
+ | `vAlphabetic` | `string \| number` | No | `-` | - |
333
+ | `vHanging` | `string \| number` | No | `-` | - |
334
+ | `vIdeographic` | `string \| number` | No | `-` | - |
335
+ | `vMathematical` | `string \| number` | No | `-` | - |
336
+ | `values` | `string` | No | `-` | - |
337
+ | `vectorEffect` | `string \| number` | No | `-` | - |
338
+ | `version` | `string` | No | `-` | - |
339
+ | `vertAdvY` | `string \| number` | No | `-` | - |
340
+ | `vertOriginX` | `string \| number` | No | `-` | - |
341
+ | `vertOriginY` | `string \| number` | No | `-` | - |
342
+ | `viewBox` | `string` | No | `-` | - |
343
+ | `viewTarget` | `string \| number` | No | `-` | - |
344
+ | `visibility` | `ResponsiveProp<visible \| hidden>` | No | `-` | - |
345
+ | `width` | `ResponsiveProp<Width<string \| number>>` | No | `-` | - |
346
+ | `widths` | `string \| number` | No | `-` | - |
347
+ | `wordSpacing` | `string \| number` | No | `-` | - |
348
+ | `writingMode` | `string \| number` | No | `-` | - |
349
+ | `x` | `string \| number` | No | `-` | - |
350
+ | `x1` | `string \| number` | No | `-` | - |
351
+ | `x2` | `string \| number` | No | `-` | - |
352
+ | `xAxis` | `(Partial<AxisConfigProps> & AxisBaseProps & { className?: string; classNames?: { root?: string \| undefined; tickLabel?: string \| undefined; gridLine?: string \| undefined; line?: string \| undefined; tickMark?: string \| undefined; } \| undefined; style?: CSSProperties \| undefined; styles?: { root?: CSSProperties \| undefined; tickLabel?: CSSProperties \| undefined; gridLine?: CSSProperties \| undefined; line?: CSSProperties \| undefined; tickMark?: CSSProperties \| undefined; } \| undefined; } & { position?: top \| bottom \| undefined; height?: number \| undefined; }) \| undefined` | No | `-` | - |
353
+ | `xChannelSelector` | `string` | No | `-` | - |
354
+ | `xHeight` | `string \| number` | No | `-` | - |
355
+ | `xlinkActuate` | `string` | No | `-` | - |
356
+ | `xlinkArcrole` | `string` | No | `-` | - |
357
+ | `xlinkHref` | `string` | No | `-` | - |
358
+ | `xlinkRole` | `string` | No | `-` | - |
359
+ | `xlinkShow` | `string` | No | `-` | - |
360
+ | `xlinkTitle` | `string` | No | `-` | - |
361
+ | `xlinkType` | `string` | No | `-` | - |
362
+ | `xmlBase` | `string` | No | `-` | - |
363
+ | `xmlLang` | `string` | No | `-` | - |
364
+ | `xmlSpace` | `string` | No | `-` | - |
365
+ | `xmlns` | `string` | No | `-` | - |
366
+ | `xmlnsXlink` | `string` | No | `-` | - |
367
+ | `y` | `string \| number` | No | `-` | - |
368
+ | `y1` | `string \| number` | No | `-` | - |
369
+ | `y2` | `string \| number` | No | `-` | - |
370
+ | `yAxis` | `(Partial<AxisConfigProps> & AxisBaseProps & { className?: string; classNames?: { root?: string \| undefined; tickLabel?: string \| undefined; gridLine?: string \| undefined; line?: string \| undefined; tickMark?: string \| undefined; } \| undefined; style?: CSSProperties \| undefined; styles?: { root?: CSSProperties \| undefined; tickLabel?: CSSProperties \| undefined; gridLine?: CSSProperties \| undefined; line?: CSSProperties \| undefined; tickMark?: CSSProperties \| undefined; } \| undefined; } & { axisId?: string \| undefined; position?: left \| right \| undefined; width?: number \| undefined; }) \| undefined` | No | `-` | - |
371
+ | `yChannelSelector` | `string` | No | `-` | - |
372
+ | `z` | `string \| number` | No | `-` | - |
373
+ | `zIndex` | `-moz-initial \| inherit \| initial \| revert \| revert-layer \| unset \| auto` | No | `-` | - |
374
+ | `zoomAndPan` | `string` | No | `-` | - |
375
+
376
+
377
+ ## Examples
378
+
379
+ ### Basic Example
380
+
381
+ Bar charts are a useful component for comparing discrete categories of data.
382
+ They are helpful for highlighting trends to users or allowing them to compare proportions at a glance.
383
+
384
+ To start, pass in a series of data to the chart.
385
+
386
+ ```jsx live
387
+ <BarChart
388
+ height={{ base: 150, tablet: 200, desktop: 250 }}
389
+ inset={{ top: 8, bottom: 8, left: 0, right: 0 }}
390
+ series={[
391
+ {
392
+ id: 'prices',
393
+ data: [10, 22, 29, 45, 98, 45, 22, 52, 21, 4, 68, 20, 21, 58],
394
+ },
395
+ ]}
396
+ curve="monotone"
397
+ showYAxis
398
+ yAxis={{
399
+ showGrid: true,
400
+ }}
401
+ />
402
+ ```
403
+
404
+ ### Multiple Series
405
+
406
+ You can also provide multiple series of data to the chart. Series will have their bars for each data point rendered side by side.
407
+
408
+ ```jsx live
409
+ function MonthlyGainsByAsset() {
410
+ const ThinSolidLine = memo((props: SolidLineProps) => <SolidLine {...props} strokeWidth={1} />);
411
+
412
+ const tickFormatter = useCallback(
413
+ (amount) =>
414
+ new Intl.NumberFormat('en-US', {
415
+ style: 'currency',
416
+ currency: 'USD',
417
+ }).format(amount),
418
+ [],
419
+ );
420
+
421
+ return (
422
+ <BarChart
423
+ height={{ base: 150, tablet: 200, desktop: 250 }}
424
+ inset={{ top: 8, bottom: 8, left: 0, right: 0 }}
425
+ series={[
426
+ {
427
+ id: 'btc',
428
+ data: [
429
+ 345.82, 510.63, 280.19, 720.5, 655.37, 410.23, 580.96, 815.44, 740.18, 910.71, 975.02,
430
+ 620.57,
431
+ ],
432
+ color: assets.btc.color,
433
+ },
434
+ {
435
+ id: 'eth',
436
+ data: [
437
+ 270.49, 425.21, 190.75, 680.91, 610.88, 350.67, 440.11, 780.08, 705.83, 840.26, 920.65,
438
+ 550.93,
439
+ ],
440
+ color: assets.eth.color,
441
+ },
442
+ ]}
443
+ showYAxis
444
+ yAxis={{
445
+ showGrid: true,
446
+ GridLineComponent: ThinSolidLine,
447
+ tickLabelFormatter: tickFormatter,
448
+ width: 70,
449
+ }}
450
+ />
451
+ );
452
+ }
453
+ ```
454
+
455
+ ### Series Stacking
456
+
457
+ You can also configure stacking for your chart using the `stacked` prop.
458
+
459
+ ```jsx live
460
+ function MonthlyGainsByAsset() {
461
+ const ThinSolidLine = memo((props: SolidLineProps) => <SolidLine {...props} strokeWidth={1} />);
462
+
463
+ const tickFormatter = useCallback(
464
+ (amount) =>
465
+ new Intl.NumberFormat('en-US', {
466
+ style: 'currency',
467
+ currency: 'USD',
468
+ }).format(amount),
469
+ [],
470
+ );
471
+
472
+ return (
473
+ <BarChart
474
+ height={{ base: 150, tablet: 200, desktop: 250 }}
475
+ inset={{ top: 8, bottom: 8, left: 0, right: 0 }}
476
+ series={[
477
+ {
478
+ id: 'xrp',
479
+ data: [
480
+ 170.22, 340.34, 305.98, 225.39, 250.76, 130.53, 115.81, 195.04, 210.28, 60.42, 120.94,
481
+ 85.12,
482
+ ],
483
+ color: assets.xrp.color,
484
+ },
485
+ {
486
+ id: 'ltc',
487
+ data: [
488
+ 450.77, 615.33, 355.68, 880.15, 810.99, 520.46, 590.29, 960.52, 910.07, 1020.41, 851.89,
489
+ 750.61,
490
+ ],
491
+ color: assets.ltc.color,
492
+ },
493
+ {
494
+ id: 'eth',
495
+ data: [
496
+ 270.49, 425.21, 190.75, 680.91, 610.88, 350.67, 440.11, 780.08, 705.83, 840.26, 920.65,
497
+ 550.93,
498
+ ],
499
+ color: assets.eth.color,
500
+ },
501
+ {
502
+ id: 'btc',
503
+ data: [
504
+ 345.82, 510.63, 280.19, 720.5, 655.37, 410.23, 580.96, 815.44, 740.18, 910.71, 975.02,
505
+ 620.57,
506
+ ],
507
+ color: assets.btc.color,
508
+ },
509
+ ]}
510
+ stacked
511
+ showYAxis
512
+ yAxis={{
513
+ showGrid: true,
514
+ GridLineComponent: ThinSolidLine,
515
+ tickLabelFormatter: tickFormatter,
516
+ width: 70,
517
+ }}
518
+ />
519
+ );
520
+ }
521
+ ```
522
+
523
+ You can also configure multiple stacks by setting the `stackId` prop on each series.
524
+
525
+ ```jsx live
526
+ function MonthlyGainsMultipleStacks() {
527
+ const ThinSolidLine = memo((props: SolidLineProps) => <SolidLine {...props} strokeWidth={1} />);
528
+
529
+ const tickFormatter = useCallback(
530
+ (amount) =>
531
+ new Intl.NumberFormat('en-US', {
532
+ style: 'currency',
533
+ currency: 'USD',
534
+ }).format(amount),
535
+ [],
536
+ );
537
+
538
+ return (
539
+ <BarChart
540
+ height={{ base: 150, tablet: 200, desktop: 250 }}
541
+ inset={{ top: 8, bottom: 8, left: 0, right: 0 }}
542
+ series={[
543
+ {
544
+ id: 'xrp',
545
+ data: [
546
+ 170.22, 340.34, 305.98, 225.39, 250.76, 130.53, 115.81, 195.04, 210.28, 60.42, 120.94,
547
+ 85.12,
548
+ ],
549
+ color: assets.xrp.color,
550
+ stackId: 'shortTerm',
551
+ },
552
+ {
553
+ id: 'ltc',
554
+ data: [
555
+ 450.77, 615.33, 355.68, 880.15, 810.99, 520.46, 590.29, 960.52, 910.07, 1020.41, 851.89,
556
+ 750.61,
557
+ ],
558
+ color: assets.ltc.color,
559
+ stackId: 'shortTerm',
560
+ },
561
+ {
562
+ id: 'eth',
563
+ data: [
564
+ 270.49, 425.21, 190.75, 680.91, 610.88, 350.67, 440.11, 780.08, 705.83, 840.26, 920.65,
565
+ 550.93,
566
+ ],
567
+ color: assets.eth.color,
568
+ stackId: 'longTerm',
569
+ },
570
+ {
571
+ id: 'btc',
572
+ data: [
573
+ 345.82, 510.63, 280.19, 720.5, 655.37, 410.23, 580.96, 815.44, 740.18, 910.71, 975.02,
574
+ 620.57,
575
+ ],
576
+ color: assets.btc.color,
577
+ stackId: 'longTerm',
578
+ },
579
+ ]}
580
+ stacked
581
+ showYAxis
582
+ yAxis={{
583
+ showGrid: true,
584
+ GridLineComponent: ThinSolidLine,
585
+ tickLabelFormatter: tickFormatter,
586
+ width: 70,
587
+ }}
588
+ />
589
+ );
590
+ }
591
+ ```
592
+
593
+ #### Stack Gap
594
+
595
+ ```jsx live
596
+ function MonthlyGainsByAsset() {
597
+ const ThinSolidLine = memo((props: SolidLineProps) => <SolidLine {...props} strokeWidth={1} />);
598
+
599
+ const tickFormatter = useCallback(
600
+ (amount) =>
601
+ new Intl.NumberFormat('en-US', {
602
+ style: 'currency',
603
+ currency: 'USD',
604
+ }).format(amount),
605
+ [],
606
+ );
607
+
608
+ return (
609
+ <BarChart
610
+ height={{ base: 150, tablet: 200, desktop: 250 }}
611
+ inset={{ top: 8, bottom: 8, left: 0, right: 0 }}
612
+ series={[
613
+ {
614
+ id: 'xrp',
615
+ data: [
616
+ 170.22, 340.34, 305.98, 225.39, 250.76, 130.53, 115.81, 195.04, 210.28, 60.42, 120.94,
617
+ 500,
618
+ ],
619
+ color: assets.xrp.color,
620
+ },
621
+ {
622
+ id: 'ltc',
623
+ data: [
624
+ 450.77, 615.33, 355.68, 880.15, 810.99, 520.46, 590.29, 960.52, 910.07, 1020.41, 851.89,
625
+ 500,
626
+ ],
627
+ color: assets.ltc.color,
628
+ },
629
+ {
630
+ id: 'eth',
631
+ data: [
632
+ 270.49, 425.21, 190.75, 680.91, 610.88, 350.67, 440.11, 780.08, 705.83, 840.26, 920.65,
633
+ 500,
634
+ ],
635
+ color: assets.eth.color,
636
+ },
637
+ {
638
+ id: 'btc',
639
+ data: [
640
+ 345.82, 510.63, 280.19, 720.5, 655.37, 410.23, 580.96, 815.44, 740.18, 910.71, 975.02,
641
+ 500,
642
+ ],
643
+ color: assets.btc.color,
644
+ },
645
+ ]}
646
+ stackGap={4}
647
+ stacked
648
+ showYAxis
649
+ yAxis={{
650
+ showGrid: true,
651
+ GridLineComponent: ThinSolidLine,
652
+ tickLabelFormatter: tickFormatter,
653
+ width: 70,
654
+ domainLimit: 'strict'
655
+ }}
656
+ />
657
+ );
658
+ }
659
+ ```
660
+
661
+ ### Border Radius
662
+
663
+ Bars have a default border radius of `100`. You can change this by setting the `borderRadius` prop on the chart.
664
+
665
+ Stacks will only round the top corners of touching bars.
666
+
667
+ ```jsx live
668
+ <BarChart
669
+ stacked
670
+ borderRadius={1000}
671
+ height={300}
672
+ maxWidth={400}
673
+ padding={0}
674
+ series={[
675
+ { id: 'purple', data: [null, 6, 8, 10, 7, 6, 6, 8, 9, 12, 10, 4], color: '#b399ff' },
676
+ { id: 'blue', data: [null, 10, 12, 11, 10, 9, 10, 11, 7, 4, 12, 18], color: '#4f7cff' },
677
+ { id: 'cyan', data: [null, 7, 10, 12, 11, 10, 8, 11, 5, 12, 2, 9], color: '#00c2df' },
678
+ {
679
+ id: 'green',
680
+ data: [10, null, null, null, 1, null, null, 6, null, null, null, null],
681
+ color: '#33c481',
682
+ },
683
+ ]}
684
+ showXAxis
685
+ xAxis={{
686
+ data: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
687
+ tickLabelFormatter: (value) => {
688
+ if (value === 'D') {
689
+ return <tspan style={{ fontWeight: 'bold' }}>{value}</tspan>;
690
+ }
691
+ return value;
692
+ },
693
+ }}
694
+ style={{ margin: '0 auto' }}
695
+ />
696
+ ```
697
+
698
+ #### Round Baseline
699
+
700
+ You can also round the baseline of the bars by setting the `roundBaseline` prop on the chart.
701
+
702
+ ```jsx live
703
+ <BarChart
704
+ roundBaseline
705
+ stacked
706
+ borderRadius={1000}
707
+ height={300}
708
+ maxWidth={400}
709
+ padding={0}
710
+ series={[
711
+ { id: 'purple', data: [null, 6, 8, 10, 7, 6, 6, 8, 9, 12, 10, 4], color: '#b399ff' },
712
+ { id: 'blue', data: [null, 10, 12, 11, 10, 9, 10, 11, 7, 4, 12, 18], color: '#4f7cff' },
713
+ { id: 'cyan', data: [null, 7, 10, 12, 11, 10, 8, 11, 5, 12, 2, 9], color: '#00c2df' },
714
+ {
715
+ id: 'green',
716
+ data: [10, null, null, null, 1, null, null, 6, null, null, null, null],
717
+ color: '#33c481',
718
+ },
719
+ ]}
720
+ showXAxis
721
+ xAxis={{
722
+ data: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
723
+ tickLabelFormatter: (value) => {
724
+ if (value === 'D') {
725
+ return <tspan style={{ fontWeight: 'bold' }}>{value}</tspan>;
726
+ }
727
+ return value;
728
+ },
729
+ }}
730
+ style={{ margin: '0 auto' }}
731
+ />
732
+ ```
733
+
734
+ ### Negative Data
735
+
736
+ ```jsx live
737
+ function PositiveAndNegativeCashFlow() {
738
+ const ThinSolidLine = memo((props: SolidLineProps) => <SolidLine {...props} strokeWidth={1} />);
739
+
740
+ const categories = Array.from({ length: 31 }, (_, i) => `3/${i + 1}`);
741
+ const gains = [
742
+ 5, 0, 6, 18, 0, 5, 12, 0, 12, 22, 28, 18, 0, 12, 6, 0, 0, 24, 0, 0, 4, 0, 18, 0, 0, 14, 10, 16,
743
+ 0, 0, 0,
744
+ ];
745
+
746
+ const losses = [
747
+ -4, 0, -8, -12, -6, 0, 0, 0, -18, 0, -12, 0, -9, -6, 0, 0, 0, 0, -22, -8, 0, 0, -10, -14, 0, 0,
748
+ 0, 0, 0, -12, -10,
749
+ ];
750
+ const series = [
751
+ { id: 'gains', data: gains, color: 'var(--color-fgPositive)' },
752
+ { id: 'losses', data: losses, color: 'var(--color-fgNegative)' },
753
+ ];
754
+
755
+ return (
756
+ <BarChart
757
+ height={{ base: 150, tablet: 200, desktop: 250 }}
758
+ inset={{ top: 8, bottom: 8, left: 0, right: 0 }}
759
+ series={series}
760
+ xAxis={{ data: categories }}
761
+ stacked
762
+ showXAxis
763
+ showYAxis
764
+ yAxis={{
765
+ showGrid: true,
766
+ GridLineComponent: ThinSolidLine,
767
+ tickLabelFormatter: (value) => `$${value}M`,
768
+ }}
769
+ />
770
+ );
771
+ }
772
+ ```
773
+
774
+ ### Missing Bars
775
+
776
+ You can pass in `null` or `0` values to not render a bar for that data point.
777
+
778
+ ```jsx live
779
+ <BarChart
780
+ showXAxis
781
+ showYAxis
782
+ height={{ base: 150, tablet: 200, desktop: 250 }}
783
+ inset={{ top: 8, bottom: 8, left: 0, right: 0 }}
784
+ series={[
785
+ {
786
+ id: 'weekly-data',
787
+ data: [45, null, 38, 0, 19, null, 32],
788
+ },
789
+ ]}
790
+ xAxis={{
791
+ data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
792
+ showTickMarks: true,
793
+ showLine: true,
794
+ }}
795
+ yAxis={{
796
+ requestedTickCount: 5,
797
+ tickLabelFormatter: (value) => `$${value}k`,
798
+ showGrid: true,
799
+ showTickMarks: true,
800
+ showLine: true,
801
+ tickMarkSize: 1.5,
802
+ domain: { max: 50 },
803
+ }}
804
+ />
805
+ ```
806
+
807
+ You can also use the `BarStackComponent` prop to render an empty circle for zero values.
808
+
809
+ ```jsx live
810
+ function MonthlyRewards() {
811
+ const months = ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'];
812
+ const currentMonth = 7;
813
+ const purple = [null, 6, 8, 10, 7, 6, 6, 8, null, null, null, null];
814
+ const blue = [null, 10, 12, 11, 10, 9, 10, 11, null, null, null, null];
815
+ const cyan = [null, 7, 10, 12, 11, 10, 8, 11, null, null, null, null];
816
+ const green = [10, null, null, null, 1, null, null, 6, null, null, null, null];
817
+
818
+ const series = [
819
+ { id: 'purple', data: purple, color: '#b399ff' },
820
+ { id: 'blue', data: blue, color: '#4f7cff' },
821
+ { id: 'cyan', data: cyan, color: '#00c2df' },
822
+ { id: 'green', data: green, color: '#33c481' },
823
+ ];
824
+
825
+ const CustomBarStackComponent = ({ children, ...props }: BarStackComponentProps) => {
826
+ if (props.height === 0) {
827
+ const diameter = props.width;
828
+ return (
829
+ <Bar
830
+ roundBottom
831
+ roundTop
832
+ borderRadius={1000}
833
+ fill="var(--color-bgTertiary)"
834
+ height={diameter}
835
+ width={diameter}
836
+ x={props.x}
837
+ y={props.y - diameter}
838
+ />
839
+ );
840
+ }
841
+
842
+ return <DefaultBarStack {...props}>{children}</DefaultBarStack>;
843
+ };
844
+
845
+ return (
846
+ <BarChart
847
+ roundBaseline
848
+ showXAxis
849
+ stacked
850
+ BarStackComponent={CustomBarStackComponent}
851
+ borderRadius={1000}
852
+ height={300}
853
+ inset={0}
854
+ series={series}
855
+ showYAxis={false}
856
+ stackMinSize={3}
857
+ width={403}
858
+ xAxis={{
859
+ tickLabelFormatter: (index) => {
860
+ if (index == currentMonth) {
861
+ return <tspan style={{ fontWeight: 'bold' }}>{months[index]}</tspan>;
862
+ }
863
+ return months[index];
864
+ },
865
+ categoryPadding: 0.27,
866
+ }}
867
+ />
868
+ );
869
+ };
870
+ ```
871
+
872
+ ### Customization
873
+
874
+ #### Bar Spacing
875
+
876
+ There are two ways to control the spacing between bars. You can set the `barPadding` prop to control the spacing between bars within a series. You can also set the `categoryPadding` prop to control the spacing between stacks of bars.
877
+
878
+ ```jsx live
879
+ <BarChart
880
+ height={{ base: 150, tablet: 200, desktop: 250 }}
881
+ inset={{ top: 8, bottom: 8, left: 0, right: 0 }}
882
+ series={[
883
+ {
884
+ id: 'pageViews',
885
+ data: [24, 13, 98, 39, 48, 38, 43],
886
+ color: 'var(--color-fgPositive)',
887
+ },
888
+ {
889
+ id: 'uniqueVisitors',
890
+ data: [12, 15, 18, 21, 24, 27, 30],
891
+ color: 'var(--color-fgNegative)',
892
+ },
893
+ ]}
894
+ borderRadius={0}
895
+ barPadding={0}
896
+ showYAxis
897
+ yAxis={{
898
+ showGrid: true,
899
+ }}
900
+ xAxis={{
901
+ categoryPadding: 0.2,
902
+ }}
903
+ />
904
+ ```
905
+
906
+ #### Minimum Size
907
+
908
+ To better emphasize small values, you can set the `stackMinSize` or `barMinSize` prop to control the minimum size for entire stacks or individual bar.
909
+ It is recommended to only use `stackMinSize` for stacked charts and `barMinSize` for non-stacked charts.
910
+
911
+ ##### Minimum Stack Size
912
+
913
+ You can set the `stackMinSize` prop to control the minimum size for entire stacks. This will only apply to stacks that have a value that is not `null` or `0`. It will proportionally scale the values of each bar in the stack to reach the minimum size.
914
+
915
+ ```jsx live
916
+ <BarChart
917
+ height={{ base: 150, tablet: 200, desktop: 250 }}
918
+ inset={{ top: 8, bottom: 8, left: 0, right: 0 }}
919
+ series={[
920
+ {
921
+ id: 'pageViews',
922
+ data: [24, 3, 98, null, 48, null, 43],
923
+ color: 'var(--color-fgPositive)',
924
+ },
925
+ {
926
+ id: 'uniqueVisitors',
927
+ data: [12, 1, 18, null, 24, 1, 30],
928
+ color: 'var(--color-fgNegative)',
929
+ },
930
+ ]}
931
+ stackMinSize={2}
932
+ stacked
933
+ showYAxis
934
+ yAxis={{
935
+ showGrid: true,
936
+ }}
937
+ />
938
+ ```
939
+
940
+ ##### Minimum Bar Size
941
+
942
+ You can also set the `barMinSize` prop to control the minimum size for individual bars. This will only apply to bars that have a value that is not `null` or `0`.
943
+
944
+ ```jsx live
945
+ <BarChart
946
+ showXAxis
947
+ showYAxis
948
+ height={{ base: 150, tablet: 200, desktop: 250 }}
949
+ inset={{ top: 8, bottom: 8, left: 0, right: 0 }}
950
+ series={[
951
+ {
952
+ id: 'weekly-data',
953
+ data: [45, 52, 0, 45, null, 1, 32],
954
+ },
955
+ ]}
956
+ xAxis={{
957
+ data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
958
+ showTickMarks: true,
959
+ showLine: true,
960
+ }}
961
+ yAxis={{
962
+ requestedTickCount: 5,
963
+ tickLabelFormatter: (value) => `$${value}k`,
964
+ showGrid: true,
965
+ showTickMarks: true,
966
+ showLine: true,
967
+ tickMarkSize: 1.5,
968
+ domain: { max: 50 },
969
+ }}
970
+ barMinSize={4}
971
+ />
972
+ ```
973
+
974
+ #### Multiple Y Axes
975
+
976
+ You can render bars from separate y axes in one `BarPlot`, however they aren't able to be stack.
977
+
978
+ ```jsx live
979
+ <VStack gap={2}>
980
+ <CartesianChart
981
+ height={{ base: 150, tablet: 200, desktop: 250 }}
982
+ inset={{ top: 8, bottom: 8, left: 0, right: 0 }}
983
+ series={[
984
+ {
985
+ id: 'revenue',
986
+ data: [455, 520, 380, 455, 285, 235],
987
+ yAxisId: 'revenue',
988
+ color: 'var(--color-accentBoldYellow)',
989
+ },
990
+ {
991
+ id: 'profitMargin',
992
+ data: [23, 20, 16, 38, 12, 9],
993
+ yAxisId: 'profitMargin',
994
+ color: 'var(--color-fgPositive)',
995
+ },
996
+ ]}
997
+ xAxis={{
998
+ data: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
999
+ scaleType: 'band',
1000
+ }}
1001
+ yAxis={[
1002
+ {
1003
+ id: 'revenue',
1004
+ domain: { min: 0 },
1005
+ },
1006
+ {
1007
+ id: 'profitMargin',
1008
+ domain: { min: 0, max: 100 },
1009
+ },
1010
+ ]}
1011
+ >
1012
+ <XAxis showLine showTickMarks />
1013
+ <YAxis
1014
+ showGrid
1015
+ showLine
1016
+ showTickMarks
1017
+ axisId="revenue"
1018
+ position="left"
1019
+ requestedTickCount={5}
1020
+ width={60}
1021
+ tickLabelFormatter={(value) => `$${value}k`}
1022
+ />
1023
+ <YAxis
1024
+ showLine
1025
+ showTickMarks
1026
+ axisId="profitMargin"
1027
+ position="right"
1028
+ requestedTickCount={5}
1029
+ tickLabelFormatter={(value) => `${value}%`}
1030
+ />
1031
+ <BarPlot />
1032
+ </CartesianChart>
1033
+ <HStack justifyContent="center" gap={2}>
1034
+ <Box alignItems="center" gap={0.5}>
1035
+ <Box
1036
+ borderRadius={1000}
1037
+ width={10}
1038
+ height={10}
1039
+ style={{ background: 'var(--color-accentBoldYellow)' }}
1040
+ />
1041
+ <Text font="label2">Revenue ($)</Text>
1042
+ </Box>
1043
+ <Box alignItems="center" gap={0.5}>
1044
+ <Box
1045
+ borderRadius={1000}
1046
+ width={10}
1047
+ height={10}
1048
+ style={{ background: 'var(--color-fgPositive)' }}
1049
+ />
1050
+ <Text font="label2">Profit Margin (%)</Text>
1051
+ </Box>
1052
+ </HStack>
1053
+ </VStack>
1054
+ ```
1055
+
1056
+ #### Custom Components
1057
+
1058
+ ##### Candlesticks
1059
+
1060
+ You can set the `BarComponent` prop to render a custom component for bars.
1061
+
1062
+ ```jsx live
1063
+ function Candlesticks() {
1064
+ const infoTextId = useId();
1065
+ const infoTextRef = React.useRef<HTMLSpanElement>(null);
1066
+ const selectedIndexRef = React.useRef<number | null>(null);
1067
+ const stockData = btcCandles.slice(0, 90)
1068
+ .reverse();
1069
+ const min = Math.min(...stockData.map((data) => parseFloat(data.low)));
1070
+
1071
+ const ThinSolidLine = memo((props: SolidLineProps) => <SolidLine {...props} strokeWidth={1} />);
1072
+
1073
+ const candlesData = stockData.map((data) => [parseFloat(data.low), parseFloat(data.high)]) as [
1074
+ number,
1075
+ number,
1076
+ ][];
1077
+
1078
+ const CandlestickBarComponent = memo<BarComponentProps>(
1079
+ ({ x, y, width, height, originY, dataX, ...props }) => {
1080
+ const { getYScale } = useCartesianChartContext();
1081
+ const yScale = getYScale();
1082
+
1083
+ const wickX = x + width / 2;
1084
+
1085
+ const timePeriodValue = stockData[dataX as number];
1086
+
1087
+ const open = parseFloat(timePeriodValue.open);
1088
+ const close = parseFloat(timePeriodValue.close);
1089
+
1090
+ const bullish = open < close;
1091
+ const color = bullish ? 'var(--color-fgPositive)' : 'var(--color-fgNegative)';
1092
+ const openY = yScale?.(open) ?? 0;
1093
+ const closeY = yScale?.(close) ?? 0;
1094
+
1095
+ const bodyHeight = Math.abs(openY - closeY);
1096
+ const bodyY = openY < closeY ? openY : closeY;
1097
+
1098
+ return (
1099
+ <g>
1100
+ <line stroke={color} strokeWidth={1} x1={wickX} x2={wickX} y1={y} y2={y + height} />
1101
+ <rect fill={color} height={bodyHeight} width={width} x={x} y={bodyY} />
1102
+ </g>
1103
+ );
1104
+ },
1105
+ );
1106
+
1107
+ const formatPrice = React.useCallback((price: string) => {
1108
+ return new Intl.NumberFormat('en-US', {
1109
+ style: 'currency',
1110
+ currency: 'USD',
1111
+ }).format(parseFloat(price));
1112
+ }, []);
1113
+
1114
+ const formatVolume = React.useCallback((volume: string) => {
1115
+ const volumeInThousands = parseFloat(volume) / 1000;
1116
+ return (
1117
+ new Intl.NumberFormat('en-US', {
1118
+ style: 'decimal',
1119
+ minimumFractionDigits: 0,
1120
+ maximumFractionDigits: 2,
1121
+ }).format(volumeInThousands) + 'k'
1122
+ );
1123
+ }, []);
1124
+
1125
+ const formatTime = React.useCallback(
1126
+ (index) => {
1127
+ if (index === null || index === undefined || index >= stockData.length) return '';
1128
+ const ts = parseInt(stockData[index].start);
1129
+ return new Date(ts * 1000).toLocaleDateString('en-US', {
1130
+ month: 'short',
1131
+ day: 'numeric',
1132
+ });
1133
+ },
1134
+ [stockData],
1135
+ );
1136
+
1137
+ const updateInfoText = React.useCallback(
1138
+ (index) => {
1139
+ if (!infoTextRef.current) return;
1140
+
1141
+ const text =
1142
+ index !== null && index !== undefined
1143
+ ? `Open: ${formatPrice(stockData[index].open)}, Close: ${formatPrice(
1144
+ stockData[index].close,
1145
+ )}, Volume: ${formatVolume(stockData[index].volume)}`
1146
+ : formatPrice(stockData[stockData.length - 1].close);
1147
+
1148
+ infoTextRef.current.textContent = text;
1149
+ selectedIndexRef.current = index;
1150
+ },
1151
+ [stockData, formatPrice, formatVolume],
1152
+ );
1153
+ const initialInfo = formatPrice(stockData[stockData.length - 1].close);
1154
+
1155
+ React.useEffect(() => {
1156
+ updateInfoText(selectedIndexRef.current);
1157
+ }, [stockData, updateInfoText]);
1158
+
1159
+ return (
1160
+ <VStack gap={2}>
1161
+ <Text font="headline" id={infoTextId} aria-live="polite">
1162
+ <span ref={infoTextRef}>{initialInfo}</span>
1163
+ </Text>
1164
+ <BarChart
1165
+ enableScrubbing
1166
+ showXAxis
1167
+ showYAxis
1168
+ BarComponent={CandlestickBarComponent}
1169
+ BarStackComponent={({ children }) => <g>{children}</g>}
1170
+ animate={false}
1171
+ borderRadius={0}
1172
+ height={{ base: 150, tablet: 200, desktop: 250 }}
1173
+ inset={{ top: 8, bottom: 8, left: 0, right: 0 }}
1174
+ onScrubberPositionChange={updateInfoText}
1175
+ series={[
1176
+ {
1177
+ id: 'stock-prices',
1178
+ data: candlesData,
1179
+ },
1180
+ ]}
1181
+ xAxis={{
1182
+ tickLabelFormatter: formatTime,
1183
+ }}
1184
+ yAxis={{
1185
+ domain: { min },
1186
+ tickLabelFormatter: formatPrice,
1187
+ width: 92,
1188
+ showGrid: true,
1189
+ GridLineComponent: ThinSolidLine,
1190
+ }}
1191
+ aria-labelledby={infoTextId}
1192
+ >
1193
+ <Scrubber
1194
+ hideOverlay
1195
+ LineComponent={(props) => (
1196
+ <ReferenceLine {...props} LineComponent={ThinSolidLine} />
1197
+ )}
1198
+ seriesIds={[]}
1199
+ />
1200
+ </BarChart>
1201
+ </VStack>
1202
+ );
1203
+ };
1204
+ ```
1205
+
1206
+ ##### Outlined Stacks
1207
+
1208
+ You can set the `BarStackComponent` prop to render a custom component for stacks.
1209
+
1210
+ ```jsx live
1211
+ function MonthlyRewards() {
1212
+ const CustomBarStackComponent = ({ children, ...props }: BarStackComponentProps) => {
1213
+ return (
1214
+ <>
1215
+ <Bar
1216
+ roundBottom
1217
+ roundTop
1218
+ borderRadius={1000}
1219
+ stroke="var(--color-fg)"
1220
+ strokeWidth={4}
1221
+ height={props.height}
1222
+ width={props.width}
1223
+ x={props.x}
1224
+ y={props.y}
1225
+ clip
1226
+ />
1227
+ <DefaultBarStack {...props}>{children}</DefaultBarStack>
1228
+ </>
1229
+ );
1230
+ };
1231
+
1232
+ return (
1233
+ <BarChart
1234
+ roundBaseline
1235
+ stacked
1236
+ BarStackComponent={CustomBarStackComponent}
1237
+ borderRadius={1000}
1238
+ height={300}
1239
+ maxWidth={400}
1240
+ padding={0}
1241
+ series={[
1242
+ { id: 'purple', data: [null, 6, 8, 10, 7, 6, 6, 8, 9, 12, 10, 4], color: '#b399ff' },
1243
+ { id: 'blue', data: [null, 10, 12, 11, 10, 9, 10, 11, 7, 4, 12, 18], color: '#4f7cff' },
1244
+ { id: 'cyan', data: [null, 7, 10, 12, 11, 10, 8, 11, 5, 12, 2, 9], color: '#00c2df' },
1245
+ {
1246
+ id: 'green',
1247
+ data: [10, null, null, null, 1, null, null, 6, null, null, null, null],
1248
+ color: '#33c481',
1249
+ },
1250
+ ]}
1251
+ showXAxis
1252
+ xAxis={{
1253
+ data: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
1254
+ tickLabelFormatter: (value) => {
1255
+ if (value === 'D') {
1256
+ return <tspan style={{ fontWeight: 'bold' }}>{value}</tspan>;
1257
+ }
1258
+ return value;
1259
+ },
1260
+ }}
1261
+ yAxis={{ range: ({ min, max }) => ({ min, max: max - 4 }) }}
1262
+ style={{ margin: '0 auto' }}
1263
+ />
1264
+ );
1265
+ }
1266
+ ```
1267
+
1268
+