@hero-design/rn 8.99.4 → 8.100.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (626) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/coverage/clover.xml +4923 -0
  3. package/coverage/coverage-final.json +378 -0
  4. package/coverage/lcov-report/base.css +224 -0
  5. package/coverage/lcov-report/block-navigation.js +87 -0
  6. package/coverage/lcov-report/favicon.png +0 -0
  7. package/coverage/lcov-report/index.html +1511 -0
  8. package/coverage/lcov-report/niceNumbers.ts.html +328 -0
  9. package/coverage/lcov-report/prettify.css +1 -0
  10. package/coverage/lcov-report/prettify.js +2 -0
  11. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  12. package/coverage/lcov-report/sorter.js +196 -0
  13. package/coverage/lcov-report/src/components/Accordion/AccordionItem.tsx.html +232 -0
  14. package/coverage/lcov-report/src/components/Accordion/StyledAccordion.tsx.html +172 -0
  15. package/coverage/lcov-report/src/components/Accordion/index.html +146 -0
  16. package/coverage/lcov-report/src/components/Accordion/index.tsx.html +334 -0
  17. package/coverage/lcov-report/src/components/Alert/StyledAlert.tsx.html +304 -0
  18. package/coverage/lcov-report/src/components/Alert/index.html +131 -0
  19. package/coverage/lcov-report/src/components/Alert/index.tsx.html +556 -0
  20. package/coverage/lcov-report/src/components/AnimatedScroller/AnimatedFAB.tsx.html +550 -0
  21. package/coverage/lcov-report/src/components/AnimatedScroller/AnimatedScrollable.tsx.html +295 -0
  22. package/coverage/lcov-report/src/components/AnimatedScroller/FlatListWithFAB.tsx.html +154 -0
  23. package/coverage/lcov-report/src/components/AnimatedScroller/ScrollViewWithFAB.tsx.html +148 -0
  24. package/coverage/lcov-report/src/components/AnimatedScroller/SectionListWithFAB.tsx.html +163 -0
  25. package/coverage/lcov-report/src/components/AnimatedScroller/index.html +191 -0
  26. package/coverage/lcov-report/src/components/AnimatedScroller/index.tsx.html +100 -0
  27. package/coverage/lcov-report/src/components/AppCue/StyledAppCue.tsx.html +301 -0
  28. package/coverage/lcov-report/src/components/AppCue/index.html +146 -0
  29. package/coverage/lcov-report/src/components/AppCue/index.tsx.html +658 -0
  30. package/coverage/lcov-report/src/components/AppCue/utils.ts.html +604 -0
  31. package/coverage/lcov-report/src/components/Attachment/StyledAttachment.tsx.html +217 -0
  32. package/coverage/lcov-report/src/components/Attachment/index.html +131 -0
  33. package/coverage/lcov-report/src/components/Attachment/index.tsx.html +322 -0
  34. package/coverage/lcov-report/src/components/Avatar/Avatar.tsx.html +367 -0
  35. package/coverage/lcov-report/src/components/Avatar/AvatarStack/StyledAvatarStack.tsx.html +334 -0
  36. package/coverage/lcov-report/src/components/Avatar/AvatarStack/index.html +146 -0
  37. package/coverage/lcov-report/src/components/Avatar/AvatarStack/index.tsx.html +523 -0
  38. package/coverage/lcov-report/src/components/Avatar/AvatarStack/utils.ts.html +148 -0
  39. package/coverage/lcov-report/src/components/Avatar/StyledAvatar.tsx.html +286 -0
  40. package/coverage/lcov-report/src/components/Avatar/index.html +146 -0
  41. package/coverage/lcov-report/src/components/Avatar/index.ts.html +103 -0
  42. package/coverage/lcov-report/src/components/Badge/Count.tsx.html +265 -0
  43. package/coverage/lcov-report/src/components/Badge/Status.tsx.html +322 -0
  44. package/coverage/lcov-report/src/components/Badge/StyledBadge.tsx.html +397 -0
  45. package/coverage/lcov-report/src/components/Badge/constants.ts.html +88 -0
  46. package/coverage/lcov-report/src/components/Badge/index.html +176 -0
  47. package/coverage/lcov-report/src/components/Badge/index.tsx.html +358 -0
  48. package/coverage/lcov-report/src/components/BottomNavigation/StyledBottomNavigation.tsx.html +259 -0
  49. package/coverage/lcov-report/src/components/BottomNavigation/index.html +131 -0
  50. package/coverage/lcov-report/src/components/BottomNavigation/index.tsx.html +571 -0
  51. package/coverage/lcov-report/src/components/BottomSheet/BottomSheetContext.ts.html +118 -0
  52. package/coverage/lcov-report/src/components/BottomSheet/Footer.tsx.html +145 -0
  53. package/coverage/lcov-report/src/components/BottomSheet/Header.tsx.html +304 -0
  54. package/coverage/lcov-report/src/components/BottomSheet/ScrollView.tsx.html +256 -0
  55. package/coverage/lcov-report/src/components/BottomSheet/StyledBottomSheet.tsx.html +403 -0
  56. package/coverage/lcov-report/src/components/BottomSheet/index.html +191 -0
  57. package/coverage/lcov-report/src/components/BottomSheet/index.tsx.html +793 -0
  58. package/coverage/lcov-report/src/components/Box/StyledBox.tsx.html +250 -0
  59. package/coverage/lcov-report/src/components/Box/config.ts.html +700 -0
  60. package/coverage/lcov-report/src/components/Box/index.html +146 -0
  61. package/coverage/lcov-report/src/components/Box/index.tsx.html +124 -0
  62. package/coverage/lcov-report/src/components/Button/Button.tsx.html +1045 -0
  63. package/coverage/lcov-report/src/components/Button/IconButton.tsx.html +292 -0
  64. package/coverage/lcov-report/src/components/Button/LoadingIndicator/StyledLoadingIndicator.tsx.html +307 -0
  65. package/coverage/lcov-report/src/components/Button/LoadingIndicator/index.html +131 -0
  66. package/coverage/lcov-report/src/components/Button/LoadingIndicator/index.tsx.html +511 -0
  67. package/coverage/lcov-report/src/components/Button/StyledButton.tsx.html +1561 -0
  68. package/coverage/lcov-report/src/components/Button/UtilityButton/StyledUtilityButton.tsx.html +160 -0
  69. package/coverage/lcov-report/src/components/Button/UtilityButton/index.html +131 -0
  70. package/coverage/lcov-report/src/components/Button/UtilityButton/index.tsx.html +259 -0
  71. package/coverage/lcov-report/src/components/Button/index.html +161 -0
  72. package/coverage/lcov-report/src/components/Button/index.tsx.html +136 -0
  73. package/coverage/lcov-report/src/components/Calendar/CalendarRange.tsx.html +1111 -0
  74. package/coverage/lcov-report/src/components/Calendar/CalendarRangeConnector.tsx.html +289 -0
  75. package/coverage/lcov-report/src/components/Calendar/CalendarRowItem.tsx.html +286 -0
  76. package/coverage/lcov-report/src/components/Calendar/StyledCalendar.tsx.html +397 -0
  77. package/coverage/lcov-report/src/components/Calendar/helpers.ts.html +394 -0
  78. package/coverage/lcov-report/src/components/Calendar/index.html +191 -0
  79. package/coverage/lcov-report/src/components/Calendar/index.tsx.html +1171 -0
  80. package/coverage/lcov-report/src/components/Card/DataCard/StyledDataCard.tsx.html +160 -0
  81. package/coverage/lcov-report/src/components/Card/DataCard/index.html +131 -0
  82. package/coverage/lcov-report/src/components/Card/DataCard/index.tsx.html +193 -0
  83. package/coverage/lcov-report/src/components/Card/StyledCard.tsx.html +160 -0
  84. package/coverage/lcov-report/src/components/Card/index.html +131 -0
  85. package/coverage/lcov-report/src/components/Card/index.tsx.html +232 -0
  86. package/coverage/lcov-report/src/components/Carousel/CardCarousel.tsx.html +844 -0
  87. package/coverage/lcov-report/src/components/Carousel/CarouselItem.tsx.html +313 -0
  88. package/coverage/lcov-report/src/components/Carousel/StyledCardCarousel.tsx.html +172 -0
  89. package/coverage/lcov-report/src/components/Carousel/StyledCarousel.tsx.html +325 -0
  90. package/coverage/lcov-report/src/components/Carousel/contants.ts.html +115 -0
  91. package/coverage/lcov-report/src/components/Carousel/index.html +191 -0
  92. package/coverage/lcov-report/src/components/Carousel/index.tsx.html +775 -0
  93. package/coverage/lcov-report/src/components/Chart/ChartSelect/StyledChartSelect.tsx.html +112 -0
  94. package/coverage/lcov-report/src/components/Chart/ChartSelect/index.html +131 -0
  95. package/coverage/lcov-report/src/components/Chart/ChartSelect/index.tsx.html +496 -0
  96. package/coverage/lcov-report/src/components/Chart/ColumnChart/ColumnChartContent.tsx.html +337 -0
  97. package/coverage/lcov-report/src/components/Chart/ColumnChart/Segment.tsx.html +283 -0
  98. package/coverage/lcov-report/src/components/Chart/ColumnChart/StackedSegment.tsx.html +382 -0
  99. package/coverage/lcov-report/src/components/Chart/ColumnChart/StyledColumnChart.tsx.html +112 -0
  100. package/coverage/lcov-report/src/components/Chart/ColumnChart/index.html +176 -0
  101. package/coverage/lcov-report/src/components/Chart/ColumnChart/index.tsx.html +733 -0
  102. package/coverage/lcov-report/src/components/Chart/Line/Line.tsx.html +328 -0
  103. package/coverage/lcov-report/src/components/Chart/Line/index.html +131 -0
  104. package/coverage/lcov-report/src/components/Chart/Line/index.tsx.html +514 -0
  105. package/coverage/lcov-report/src/components/Chart/StyledChart.tsx.html +133 -0
  106. package/coverage/lcov-report/src/components/Chart/index.html +131 -0
  107. package/coverage/lcov-report/src/components/Chart/index.tsx.html +124 -0
  108. package/coverage/lcov-report/src/components/Chart/shared/AxisLabel.tsx.html +160 -0
  109. package/coverage/lcov-report/src/components/Chart/shared/ChartFrame.tsx.html +478 -0
  110. package/coverage/lcov-report/src/components/Chart/shared/ChartHeader.tsx.html +142 -0
  111. package/coverage/lcov-report/src/components/Chart/shared/EmptyState.tsx.html +226 -0
  112. package/coverage/lcov-report/src/components/Chart/shared/XAxis.tsx.html +292 -0
  113. package/coverage/lcov-report/src/components/Chart/shared/XAxisGrid.tsx.html +211 -0
  114. package/coverage/lcov-report/src/components/Chart/shared/YAxis.tsx.html +397 -0
  115. package/coverage/lcov-report/src/components/Chart/shared/YAxisGrid.tsx.html +259 -0
  116. package/coverage/lcov-report/src/components/Chart/shared/constants.ts.html +91 -0
  117. package/coverage/lcov-report/src/components/Chart/shared/hooks/index.html +161 -0
  118. package/coverage/lcov-report/src/components/Chart/shared/hooks/useColorScale.ts.html +160 -0
  119. package/coverage/lcov-report/src/components/Chart/shared/hooks/useGenerateTicks.ts.html +166 -0
  120. package/coverage/lcov-report/src/components/Chart/shared/hooks/useScaleBandX.ts.html +136 -0
  121. package/coverage/lcov-report/src/components/Chart/shared/hooks/useScaleLinearY.ts.html +175 -0
  122. package/coverage/lcov-report/src/components/Chart/shared/index.html +251 -0
  123. package/coverage/lcov-report/src/components/Chart/shared/niceNumbers.ts.html +289 -0
  124. package/coverage/lcov-report/src/components/Checkbox/StyledCheckbox.tsx.html +217 -0
  125. package/coverage/lcov-report/src/components/Checkbox/index.html +131 -0
  126. package/coverage/lcov-report/src/components/Checkbox/index.tsx.html +448 -0
  127. package/coverage/lcov-report/src/components/Chip/StyledChip.tsx.html +445 -0
  128. package/coverage/lcov-report/src/components/Chip/index.html +131 -0
  129. package/coverage/lcov-report/src/components/Chip/index.tsx.html +415 -0
  130. package/coverage/lcov-report/src/components/Collapse/StyledCollapse.tsx.html +157 -0
  131. package/coverage/lcov-report/src/components/Collapse/index.html +131 -0
  132. package/coverage/lcov-report/src/components/Collapse/index.tsx.html +370 -0
  133. package/coverage/lcov-report/src/components/ContentNavigator/StyledContentNavigator.tsx.html +115 -0
  134. package/coverage/lcov-report/src/components/ContentNavigator/index.html +131 -0
  135. package/coverage/lcov-report/src/components/ContentNavigator/index.tsx.html +397 -0
  136. package/coverage/lcov-report/src/components/DatePicker/DatePickerAndroid.tsx.html +340 -0
  137. package/coverage/lcov-report/src/components/DatePicker/DatePickerCalendar.tsx.html +571 -0
  138. package/coverage/lcov-report/src/components/DatePicker/DatePickerIOS.tsx.html +361 -0
  139. package/coverage/lcov-report/src/components/DatePicker/Dialog/AndroidDialog.tsx.html +289 -0
  140. package/coverage/lcov-report/src/components/DatePicker/Dialog/IOSDialog.tsx.html +358 -0
  141. package/coverage/lcov-report/src/components/DatePicker/Dialog/index.html +131 -0
  142. package/coverage/lcov-report/src/components/DatePicker/StyledDatePicker.tsx.html +112 -0
  143. package/coverage/lcov-report/src/components/DatePicker/hooks/index.html +146 -0
  144. package/coverage/lcov-report/src/components/DatePicker/hooks/useCalculateDate.tsx.html +187 -0
  145. package/coverage/lcov-report/src/components/DatePicker/hooks/useFormatDate.ts.html +160 -0
  146. package/coverage/lcov-report/src/components/DatePicker/hooks/utils.ts.html +175 -0
  147. package/coverage/lcov-report/src/components/DatePicker/index.html +176 -0
  148. package/coverage/lcov-report/src/components/DatePicker/index.tsx.html +175 -0
  149. package/coverage/lcov-report/src/components/Divider/StyledDivider.tsx.html +169 -0
  150. package/coverage/lcov-report/src/components/Divider/index.html +131 -0
  151. package/coverage/lcov-report/src/components/Divider/index.tsx.html +205 -0
  152. package/coverage/lcov-report/src/components/Drawer/DragableDrawer/helpers.ts.html +223 -0
  153. package/coverage/lcov-report/src/components/Drawer/DragableDrawer/index.html +131 -0
  154. package/coverage/lcov-report/src/components/Drawer/DragableDrawer/index.tsx.html +697 -0
  155. package/coverage/lcov-report/src/components/Drawer/StyledDrawer.tsx.html +337 -0
  156. package/coverage/lcov-report/src/components/Drawer/index.html +131 -0
  157. package/coverage/lcov-report/src/components/Drawer/index.tsx.html +376 -0
  158. package/coverage/lcov-report/src/components/FAB/ActionGroup/ActionItem.tsx.html +313 -0
  159. package/coverage/lcov-report/src/components/FAB/ActionGroup/StyledActionGroup.tsx.html +289 -0
  160. package/coverage/lcov-report/src/components/FAB/ActionGroup/StyledActionItem.tsx.html +175 -0
  161. package/coverage/lcov-report/src/components/FAB/ActionGroup/index.html +161 -0
  162. package/coverage/lcov-report/src/components/FAB/ActionGroup/index.tsx.html +715 -0
  163. package/coverage/lcov-report/src/components/FAB/AnimatedFABIcon.tsx.html +226 -0
  164. package/coverage/lcov-report/src/components/FAB/FAB.tsx.html +871 -0
  165. package/coverage/lcov-report/src/components/FAB/Pair/StyledFAB.tsx.html +142 -0
  166. package/coverage/lcov-report/src/components/FAB/Pair/index.html +131 -0
  167. package/coverage/lcov-report/src/components/FAB/Pair/index.tsx.html +223 -0
  168. package/coverage/lcov-report/src/components/FAB/StyledFAB.tsx.html +229 -0
  169. package/coverage/lcov-report/src/components/FAB/index.html +161 -0
  170. package/coverage/lcov-report/src/components/FAB/index.tsx.html +109 -0
  171. package/coverage/lcov-report/src/components/FloatingIsland/StyledFloatingIsland.tsx.html +181 -0
  172. package/coverage/lcov-report/src/components/FloatingIsland/index.html +131 -0
  173. package/coverage/lcov-report/src/components/FloatingIsland/index.tsx.html +367 -0
  174. package/coverage/lcov-report/src/components/HeroDesignProvider/index.html +116 -0
  175. package/coverage/lcov-report/src/components/HeroDesignProvider/index.tsx.html +166 -0
  176. package/coverage/lcov-report/src/components/Icon/AnimatedIcon.tsx.html +226 -0
  177. package/coverage/lcov-report/src/components/Icon/HeroIcon/index.html +116 -0
  178. package/coverage/lcov-report/src/components/Icon/HeroIcon/index.tsx.html +238 -0
  179. package/coverage/lcov-report/src/components/Icon/IconList.ts.html +1486 -0
  180. package/coverage/lcov-report/src/components/Icon/index.html +161 -0
  181. package/coverage/lcov-report/src/components/Icon/index.tsx.html +412 -0
  182. package/coverage/lcov-report/src/components/Icon/utils.ts.html +103 -0
  183. package/coverage/lcov-report/src/components/Image/index.html +116 -0
  184. package/coverage/lcov-report/src/components/Image/index.tsx.html +238 -0
  185. package/coverage/lcov-report/src/components/List/BasicListItem.tsx.html +442 -0
  186. package/coverage/lcov-report/src/components/List/ListItem.tsx.html +565 -0
  187. package/coverage/lcov-report/src/components/List/StyledBasicListItem.tsx.html +187 -0
  188. package/coverage/lcov-report/src/components/List/StyledListItem.tsx.html +325 -0
  189. package/coverage/lcov-report/src/components/List/index.html +176 -0
  190. package/coverage/lcov-report/src/components/List/index.tsx.html +127 -0
  191. package/coverage/lcov-report/src/components/LocaleProvider/context.ts.html +106 -0
  192. package/coverage/lcov-report/src/components/LocaleProvider/hooks.ts.html +142 -0
  193. package/coverage/lcov-report/src/components/LocaleProvider/index.html +161 -0
  194. package/coverage/lcov-report/src/components/LocaleProvider/index.tsx.html +166 -0
  195. package/coverage/lcov-report/src/components/LocaleProvider/utils.ts.html +127 -0
  196. package/coverage/lcov-report/src/components/MapPin/Focussed.tsx.html +169 -0
  197. package/coverage/lcov-report/src/components/MapPin/StyledMapPin.tsx.html +301 -0
  198. package/coverage/lcov-report/src/components/MapPin/index.html +146 -0
  199. package/coverage/lcov-report/src/components/MapPin/index.tsx.html +274 -0
  200. package/coverage/lcov-report/src/components/Modal/index.html +116 -0
  201. package/coverage/lcov-report/src/components/Modal/index.tsx.html +736 -0
  202. package/coverage/lcov-report/src/components/PageControl/StyledPageControl.tsx.html +136 -0
  203. package/coverage/lcov-report/src/components/PageControl/index.html +131 -0
  204. package/coverage/lcov-report/src/components/PageControl/index.tsx.html +319 -0
  205. package/coverage/lcov-report/src/components/PinInput/PinCell.tsx.html +193 -0
  206. package/coverage/lcov-report/src/components/PinInput/StyledPinInput.tsx.html +358 -0
  207. package/coverage/lcov-report/src/components/PinInput/index.html +146 -0
  208. package/coverage/lcov-report/src/components/PinInput/index.tsx.html +817 -0
  209. package/coverage/lcov-report/src/components/Portal/PortalHost.tsx.html +166 -0
  210. package/coverage/lcov-report/src/components/Portal/PortalProvider.tsx.html +190 -0
  211. package/coverage/lcov-report/src/components/Portal/constants.ts.html +115 -0
  212. package/coverage/lcov-report/src/components/Portal/contexts.ts.html +127 -0
  213. package/coverage/lcov-report/src/components/Portal/index.html +221 -0
  214. package/coverage/lcov-report/src/components/Portal/index.tsx.html +283 -0
  215. package/coverage/lcov-report/src/components/Portal/reducer.ts.html +403 -0
  216. package/coverage/lcov-report/src/components/Portal/usePortal.ts.html +235 -0
  217. package/coverage/lcov-report/src/components/Portal/usePortalState.ts.html +118 -0
  218. package/coverage/lcov-report/src/components/Progress/ProgressBar.tsx.html +358 -0
  219. package/coverage/lcov-report/src/components/Progress/ProgressCircle.tsx.html +460 -0
  220. package/coverage/lcov-report/src/components/Progress/ProgressStep.tsx.html +352 -0
  221. package/coverage/lcov-report/src/components/Progress/StyledProgressBar.tsx.html +181 -0
  222. package/coverage/lcov-report/src/components/Progress/StyledProgressCircle.tsx.html +163 -0
  223. package/coverage/lcov-report/src/components/Progress/StyledStep.tsx.html +235 -0
  224. package/coverage/lcov-report/src/components/Progress/constants.ts.html +133 -0
  225. package/coverage/lcov-report/src/components/Progress/index.html +221 -0
  226. package/coverage/lcov-report/src/components/Progress/index.tsx.html +118 -0
  227. package/coverage/lcov-report/src/components/Radio/Radio.tsx.html +331 -0
  228. package/coverage/lcov-report/src/components/Radio/RadioGroup.tsx.html +343 -0
  229. package/coverage/lcov-report/src/components/Radio/StyledRadio.tsx.html +211 -0
  230. package/coverage/lcov-report/src/components/Radio/index.html +161 -0
  231. package/coverage/lcov-report/src/components/Radio/index.tsx.html +100 -0
  232. package/coverage/lcov-report/src/components/Rate/StyledRate.tsx.html +133 -0
  233. package/coverage/lcov-report/src/components/Rate/index.html +131 -0
  234. package/coverage/lcov-report/src/components/Rate/index.tsx.html +355 -0
  235. package/coverage/lcov-report/src/components/RefreshControl/index.html +116 -0
  236. package/coverage/lcov-report/src/components/RefreshControl/index.tsx.html +160 -0
  237. package/coverage/lcov-report/src/components/RichTextEditor/EditorEvent.ts.html +106 -0
  238. package/coverage/lcov-report/src/components/RichTextEditor/EditorToolbar.tsx.html +736 -0
  239. package/coverage/lcov-report/src/components/RichTextEditor/MentionList.tsx.html +382 -0
  240. package/coverage/lcov-report/src/components/RichTextEditor/RichTextEditor.tsx.html +1450 -0
  241. package/coverage/lcov-report/src/components/RichTextEditor/StyledRichTextEditor.ts.html +139 -0
  242. package/coverage/lcov-report/src/components/RichTextEditor/StyledToolbar.ts.html +181 -0
  243. package/coverage/lcov-report/src/components/RichTextEditor/constants.ts.html +112 -0
  244. package/coverage/lcov-report/src/components/RichTextEditor/heroEditorApp.ts.html +94 -0
  245. package/coverage/lcov-report/src/components/RichTextEditor/index.html +236 -0
  246. package/coverage/lcov-report/src/components/RichTextEditor/index.tsx.html +118 -0
  247. package/coverage/lcov-report/src/components/RichTextEditor/utils/events.ts.html +178 -0
  248. package/coverage/lcov-report/src/components/RichTextEditor/utils/index.html +131 -0
  249. package/coverage/lcov-report/src/components/RichTextEditor/utils/rnWebView.ts.html +142 -0
  250. package/coverage/lcov-report/src/components/Search/SearchOneLine.tsx.html +787 -0
  251. package/coverage/lcov-report/src/components/Search/SearchSuffixIcon.tsx.html +229 -0
  252. package/coverage/lcov-report/src/components/Search/SearchTwoLine.tsx.html +295 -0
  253. package/coverage/lcov-report/src/components/Search/StyledSearch.tsx.html +310 -0
  254. package/coverage/lcov-report/src/components/Search/index.html +191 -0
  255. package/coverage/lcov-report/src/components/Search/index.tsx.html +136 -0
  256. package/coverage/lcov-report/src/components/Search/utils.tsx.html +178 -0
  257. package/coverage/lcov-report/src/components/SectionHeading/StyledHeading.tsx.html +190 -0
  258. package/coverage/lcov-report/src/components/SectionHeading/index.html +131 -0
  259. package/coverage/lcov-report/src/components/SectionHeading/index.tsx.html +445 -0
  260. package/coverage/lcov-report/src/components/Select/BaseOptionList.tsx.html +310 -0
  261. package/coverage/lcov-report/src/components/Select/Footer.tsx.html +109 -0
  262. package/coverage/lcov-report/src/components/Select/MultiSelect/Option.tsx.html +229 -0
  263. package/coverage/lcov-report/src/components/Select/MultiSelect/OptionList.tsx.html +301 -0
  264. package/coverage/lcov-report/src/components/Select/MultiSelect/index.html +161 -0
  265. package/coverage/lcov-report/src/components/Select/MultiSelect/index.tsx.html +685 -0
  266. package/coverage/lcov-report/src/components/Select/MultiSelect/utils.ts.html +121 -0
  267. package/coverage/lcov-report/src/components/Select/SingleSelect/Option.tsx.html +178 -0
  268. package/coverage/lcov-report/src/components/Select/SingleSelect/OptionList.tsx.html +325 -0
  269. package/coverage/lcov-report/src/components/Select/SingleSelect/StyledSingleSelect.tsx.html +103 -0
  270. package/coverage/lcov-report/src/components/Select/SingleSelect/index.html +161 -0
  271. package/coverage/lcov-report/src/components/Select/SingleSelect/index.tsx.html +574 -0
  272. package/coverage/lcov-report/src/components/Select/StyledSelect.tsx.html +151 -0
  273. package/coverage/lcov-report/src/components/Select/helpers.tsx.html +298 -0
  274. package/coverage/lcov-report/src/components/Select/index.html +176 -0
  275. package/coverage/lcov-report/src/components/Select/index.tsx.html +115 -0
  276. package/coverage/lcov-report/src/components/Skeleton/StyledSkeleton.tsx.html +160 -0
  277. package/coverage/lcov-report/src/components/Skeleton/index.html +131 -0
  278. package/coverage/lcov-report/src/components/Skeleton/index.tsx.html +475 -0
  279. package/coverage/lcov-report/src/components/Slider/RangeSlider.tsx.html +646 -0
  280. package/coverage/lcov-report/src/components/Slider/SingleSlider.tsx.html +352 -0
  281. package/coverage/lcov-report/src/components/Slider/StyledRangeSlider.tsx.html +133 -0
  282. package/coverage/lcov-report/src/components/Slider/index.html +161 -0
  283. package/coverage/lcov-report/src/components/Slider/index.tsx.html +127 -0
  284. package/coverage/lcov-report/src/components/Spinner/AnimatedSpinner.tsx.html +295 -0
  285. package/coverage/lcov-report/src/components/Spinner/StyledSpinner.tsx.html +304 -0
  286. package/coverage/lcov-report/src/components/Spinner/index.html +146 -0
  287. package/coverage/lcov-report/src/components/Spinner/index.tsx.html +190 -0
  288. package/coverage/lcov-report/src/components/StatusScreens/Empty/StyledEmpty.tsx.html +223 -0
  289. package/coverage/lcov-report/src/components/StatusScreens/Empty/index.html +131 -0
  290. package/coverage/lcov-report/src/components/StatusScreens/Empty/index.tsx.html +376 -0
  291. package/coverage/lcov-report/src/components/StatusScreens/Error/StyledError.tsx.html +355 -0
  292. package/coverage/lcov-report/src/components/StatusScreens/Error/index.html +131 -0
  293. package/coverage/lcov-report/src/components/StatusScreens/Error/index.tsx.html +961 -0
  294. package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Add.tsx.html +232 -0
  295. package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Boom.tsx.html +268 -0
  296. package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Build.tsx.html +220 -0
  297. package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Clock.tsx.html +199 -0
  298. package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Confetti.tsx.html +319 -0
  299. package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Connections.tsx.html +256 -0
  300. package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Error.tsx.html +250 -0
  301. package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Info.tsx.html +190 -0
  302. package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/List.tsx.html +196 -0
  303. package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Location.tsx.html +196 -0
  304. package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Merge.tsx.html +262 -0
  305. package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Notifications.tsx.html +163 -0
  306. package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Search.tsx.html +193 -0
  307. package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Star.tsx.html +196 -0
  308. package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Success.tsx.html +208 -0
  309. package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/User.tsx.html +214 -0
  310. package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/index.html +341 -0
  311. package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/index.html +116 -0
  312. package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/index.tsx.html +274 -0
  313. package/coverage/lcov-report/src/components/StatusScreens/Success/StyledSuccess.tsx.html +340 -0
  314. package/coverage/lcov-report/src/components/StatusScreens/Success/index.html +131 -0
  315. package/coverage/lcov-report/src/components/StatusScreens/Success/index.tsx.html +631 -0
  316. package/coverage/lcov-report/src/components/Swipeable/StyledSwipeable.tsx.html +118 -0
  317. package/coverage/lcov-report/src/components/Swipeable/SwipeableAction.tsx.html +220 -0
  318. package/coverage/lcov-report/src/components/Swipeable/index.html +146 -0
  319. package/coverage/lcov-report/src/components/Swipeable/index.tsx.html +646 -0
  320. package/coverage/lcov-report/src/components/Switch/SelectorSwitch/Option.tsx.html +352 -0
  321. package/coverage/lcov-report/src/components/Switch/SelectorSwitch/StyledSelectorSwitch.tsx.html +193 -0
  322. package/coverage/lcov-report/src/components/Switch/SelectorSwitch/index.html +146 -0
  323. package/coverage/lcov-report/src/components/Switch/SelectorSwitch/index.tsx.html +442 -0
  324. package/coverage/lcov-report/src/components/Switch/StyledSwitch.tsx.html +175 -0
  325. package/coverage/lcov-report/src/components/Switch/index.html +131 -0
  326. package/coverage/lcov-report/src/components/Switch/index.tsx.html +346 -0
  327. package/coverage/lcov-report/src/components/Tabs/ActiveTabIndicator.tsx.html +196 -0
  328. package/coverage/lcov-report/src/components/Tabs/SceneView.tsx.html +283 -0
  329. package/coverage/lcov-report/src/components/Tabs/ScrollableTabs.tsx.html +418 -0
  330. package/coverage/lcov-report/src/components/Tabs/ScrollableTabsHeader/ScrollableTabsHeader.tsx.html +814 -0
  331. package/coverage/lcov-report/src/components/Tabs/ScrollableTabsHeader/hooks/index.html +131 -0
  332. package/coverage/lcov-report/src/components/Tabs/ScrollableTabsHeader/hooks/useInitHighlightedAnimation.ts.html +220 -0
  333. package/coverage/lcov-report/src/components/Tabs/ScrollableTabsHeader/hooks/useInitUnderlinedAnimation.ts.html +358 -0
  334. package/coverage/lcov-report/src/components/Tabs/ScrollableTabsHeader/index.html +116 -0
  335. package/coverage/lcov-report/src/components/Tabs/StyledScrollableTabs.tsx.html +307 -0
  336. package/coverage/lcov-report/src/components/Tabs/StyledTabs.tsx.html +250 -0
  337. package/coverage/lcov-report/src/components/Tabs/TabWithBadge.tsx.html +247 -0
  338. package/coverage/lcov-report/src/components/Tabs/index.html +251 -0
  339. package/coverage/lcov-report/src/components/Tabs/index.tsx.html +847 -0
  340. package/coverage/lcov-report/src/components/Tabs/useHandlePageScroll.tsx.html +181 -0
  341. package/coverage/lcov-report/src/components/Tabs/useIsFocused.tsx.html +142 -0
  342. package/coverage/lcov-report/src/components/Tabs/utils.ts.html +124 -0
  343. package/coverage/lcov-report/src/components/Tag/StyledTag.tsx.html +190 -0
  344. package/coverage/lcov-report/src/components/Tag/index.html +131 -0
  345. package/coverage/lcov-report/src/components/Tag/index.tsx.html +268 -0
  346. package/coverage/lcov-report/src/components/TextInput/StyledTextInput.tsx.html +514 -0
  347. package/coverage/lcov-report/src/components/TextInput/index.html +131 -0
  348. package/coverage/lcov-report/src/components/TextInput/index.tsx.html +1693 -0
  349. package/coverage/lcov-report/src/components/TimePicker/StyledTimePicker.tsx.html +112 -0
  350. package/coverage/lcov-report/src/components/TimePicker/TimePickerAndroid.tsx.html +277 -0
  351. package/coverage/lcov-report/src/components/TimePicker/TimePickerIOS.tsx.html +376 -0
  352. package/coverage/lcov-report/src/components/TimePicker/index.html +161 -0
  353. package/coverage/lcov-report/src/components/TimePicker/index.tsx.html +130 -0
  354. package/coverage/lcov-report/src/components/Toast/StyledToast.tsx.html +334 -0
  355. package/coverage/lcov-report/src/components/Toast/Toast.tsx.html +505 -0
  356. package/coverage/lcov-report/src/components/Toast/ToastContainer.tsx.html +355 -0
  357. package/coverage/lcov-report/src/components/Toast/ToastContext.ts.html +214 -0
  358. package/coverage/lcov-report/src/components/Toast/ToastProvider.tsx.html +280 -0
  359. package/coverage/lcov-report/src/components/Toast/index.html +191 -0
  360. package/coverage/lcov-report/src/components/Toast/index.tsx.html +118 -0
  361. package/coverage/lcov-report/src/components/Toolbar/StyledToolbar.tsx.html +460 -0
  362. package/coverage/lcov-report/src/components/Toolbar/ToolbarGroup.tsx.html +196 -0
  363. package/coverage/lcov-report/src/components/Toolbar/ToolbarItem.tsx.html +448 -0
  364. package/coverage/lcov-report/src/components/Toolbar/ToolbarMessage.tsx.html +601 -0
  365. package/coverage/lcov-report/src/components/Toolbar/index.html +176 -0
  366. package/coverage/lcov-report/src/components/Toolbar/index.tsx.html +151 -0
  367. package/coverage/lcov-report/src/components/Typography/Body/StyledBody.tsx.html +223 -0
  368. package/coverage/lcov-report/src/components/Typography/Body/index.html +131 -0
  369. package/coverage/lcov-report/src/components/Typography/Body/index.tsx.html +301 -0
  370. package/coverage/lcov-report/src/components/Typography/Caption/StyledCaption.tsx.html +136 -0
  371. package/coverage/lcov-report/src/components/Typography/Caption/index.html +131 -0
  372. package/coverage/lcov-report/src/components/Typography/Caption/index.tsx.html +271 -0
  373. package/coverage/lcov-report/src/components/Typography/Label/StyledLabel.tsx.html +127 -0
  374. package/coverage/lcov-report/src/components/Typography/Label/index.html +131 -0
  375. package/coverage/lcov-report/src/components/Typography/Label/index.tsx.html +253 -0
  376. package/coverage/lcov-report/src/components/Typography/Text/StyledText.tsx.html +244 -0
  377. package/coverage/lcov-report/src/components/Typography/Text/index.html +131 -0
  378. package/coverage/lcov-report/src/components/Typography/Text/index.tsx.html +361 -0
  379. package/coverage/lcov-report/src/components/Typography/Title/StyledTitle.tsx.html +145 -0
  380. package/coverage/lcov-report/src/components/Typography/Title/index.html +131 -0
  381. package/coverage/lcov-report/src/components/Typography/Title/index.tsx.html +298 -0
  382. package/coverage/lcov-report/src/components/Typography/index.html +131 -0
  383. package/coverage/lcov-report/src/components/Typography/index.tsx.html +163 -0
  384. package/coverage/lcov-report/src/components/Typography/types.ts.html +142 -0
  385. package/coverage/lcov-report/src/index.html +131 -0
  386. package/coverage/lcov-report/src/index.ts.html +571 -0
  387. package/coverage/lcov-report/src/locales/en_AU.ts.html +115 -0
  388. package/coverage/lcov-report/src/locales/en_CA.ts.html +115 -0
  389. package/coverage/lcov-report/src/locales/index.html +146 -0
  390. package/coverage/lcov-report/src/locales/index.ts.html +106 -0
  391. package/coverage/lcov-report/src/testHelpers/index.html +116 -0
  392. package/coverage/lcov-report/src/testHelpers/renderWithTheme.tsx.html +133 -0
  393. package/coverage/lcov-report/src/theme/ThemeProvider.ts.html +142 -0
  394. package/coverage/lcov-report/src/theme/ThemeSwitcher.tsx.html +310 -0
  395. package/coverage/lcov-report/src/theme/components/accordion.ts.html +142 -0
  396. package/coverage/lcov-report/src/theme/components/alert.ts.html +229 -0
  397. package/coverage/lcov-report/src/theme/components/appCue.ts.html +151 -0
  398. package/coverage/lcov-report/src/theme/components/attachment.ts.html +169 -0
  399. package/coverage/lcov-report/src/theme/components/avatar.ts.html +259 -0
  400. package/coverage/lcov-report/src/theme/components/badge.ts.html +358 -0
  401. package/coverage/lcov-report/src/theme/components/bottomNavigation.ts.html +172 -0
  402. package/coverage/lcov-report/src/theme/components/bottomSheet.ts.html +193 -0
  403. package/coverage/lcov-report/src/theme/components/button.ts.html +445 -0
  404. package/coverage/lcov-report/src/theme/components/calendar.ts.html +214 -0
  405. package/coverage/lcov-report/src/theme/components/card.ts.html +172 -0
  406. package/coverage/lcov-report/src/theme/components/cardCarousel.ts.html +160 -0
  407. package/coverage/lcov-report/src/theme/components/carousel.ts.html +217 -0
  408. package/coverage/lcov-report/src/theme/components/chart.ts.html +163 -0
  409. package/coverage/lcov-report/src/theme/components/checkbox.ts.html +229 -0
  410. package/coverage/lcov-report/src/theme/components/chip.ts.html +235 -0
  411. package/coverage/lcov-report/src/theme/components/columnChart.ts.html +130 -0
  412. package/coverage/lcov-report/src/theme/components/contentNavigator.ts.html +118 -0
  413. package/coverage/lcov-report/src/theme/components/datePicker.ts.html +118 -0
  414. package/coverage/lcov-report/src/theme/components/divider.ts.html +154 -0
  415. package/coverage/lcov-report/src/theme/components/drawer.ts.html +190 -0
  416. package/coverage/lcov-report/src/theme/components/empty.ts.html +223 -0
  417. package/coverage/lcov-report/src/theme/components/error.ts.html +268 -0
  418. package/coverage/lcov-report/src/theme/components/fab.ts.html +337 -0
  419. package/coverage/lcov-report/src/theme/components/floatingIsland.ts.html +178 -0
  420. package/coverage/lcov-report/src/theme/components/icon.ts.html +172 -0
  421. package/coverage/lcov-report/src/theme/components/image.ts.html +121 -0
  422. package/coverage/lcov-report/src/theme/components/index.html +881 -0
  423. package/coverage/lcov-report/src/theme/components/list.ts.html +223 -0
  424. package/coverage/lcov-report/src/theme/components/mapPin.ts.html +235 -0
  425. package/coverage/lcov-report/src/theme/components/pageControl.ts.html +160 -0
  426. package/coverage/lcov-report/src/theme/components/pinInput.ts.html +313 -0
  427. package/coverage/lcov-report/src/theme/components/progress.ts.html +265 -0
  428. package/coverage/lcov-report/src/theme/components/radio.ts.html +193 -0
  429. package/coverage/lcov-report/src/theme/components/rate.ts.html +133 -0
  430. package/coverage/lcov-report/src/theme/components/refreshControl.ts.html +118 -0
  431. package/coverage/lcov-report/src/theme/components/richTextEditor.ts.html +193 -0
  432. package/coverage/lcov-report/src/theme/components/search.ts.html +292 -0
  433. package/coverage/lcov-report/src/theme/components/sectionHeading.ts.html +142 -0
  434. package/coverage/lcov-report/src/theme/components/select.ts.html +154 -0
  435. package/coverage/lcov-report/src/theme/components/skeleton.ts.html +151 -0
  436. package/coverage/lcov-report/src/theme/components/slider.ts.html +178 -0
  437. package/coverage/lcov-report/src/theme/components/spinner.ts.html +184 -0
  438. package/coverage/lcov-report/src/theme/components/success.ts.html +241 -0
  439. package/coverage/lcov-report/src/theme/components/swipeable.ts.html +151 -0
  440. package/coverage/lcov-report/src/theme/components/switch.ts.html +235 -0
  441. package/coverage/lcov-report/src/theme/components/tabs.ts.html +202 -0
  442. package/coverage/lcov-report/src/theme/components/tag.ts.html +274 -0
  443. package/coverage/lcov-report/src/theme/components/textInput.ts.html +409 -0
  444. package/coverage/lcov-report/src/theme/components/timePicker.ts.html +118 -0
  445. package/coverage/lcov-report/src/theme/components/toast.ts.html +241 -0
  446. package/coverage/lcov-report/src/theme/components/toolbar.ts.html +262 -0
  447. package/coverage/lcov-report/src/theme/components/typography.ts.html +622 -0
  448. package/coverage/lcov-report/src/theme/getTheme.ts.html +637 -0
  449. package/coverage/lcov-report/src/theme/global/borders.ts.html +187 -0
  450. package/coverage/lcov-report/src/theme/global/colors/eBens.ts.html +163 -0
  451. package/coverage/lcov-report/src/theme/global/colors/ehJobs.ts.html +127 -0
  452. package/coverage/lcov-report/src/theme/global/colors/ehWork.ts.html +166 -0
  453. package/coverage/lcov-report/src/theme/global/colors/ehWorkDark.ts.html +277 -0
  454. package/coverage/lcov-report/src/theme/global/colors/global.ts.html +247 -0
  455. package/coverage/lcov-report/src/theme/global/colors/globalDark.ts.html +238 -0
  456. package/coverage/lcov-report/src/theme/global/colors/index.html +326 -0
  457. package/coverage/lcov-report/src/theme/global/colors/jobs.ts.html +163 -0
  458. package/coverage/lcov-report/src/theme/global/colors/swag.ts.html +169 -0
  459. package/coverage/lcov-report/src/theme/global/colors/swagDark.ts.html +175 -0
  460. package/coverage/lcov-report/src/theme/global/colors/swagLight.ts.html +121 -0
  461. package/coverage/lcov-report/src/theme/global/colors/swagLightGlobal.ts.html +127 -0
  462. package/coverage/lcov-report/src/theme/global/colors/swagLightJobs.ts.html +121 -0
  463. package/coverage/lcov-report/src/theme/global/colors/swagSystemPalette.ts.html +112 -0
  464. package/coverage/lcov-report/src/theme/global/colors/wallet.ts.html +163 -0
  465. package/coverage/lcov-report/src/theme/global/colors/work.ts.html +163 -0
  466. package/coverage/lcov-report/src/theme/global/index.html +191 -0
  467. package/coverage/lcov-report/src/theme/global/index.ts.html +280 -0
  468. package/coverage/lcov-report/src/theme/global/scale.ts.html +172 -0
  469. package/coverage/lcov-report/src/theme/global/shadows/ehJobs.ts.html +196 -0
  470. package/coverage/lcov-report/src/theme/global/shadows/ehWork.ts.html +193 -0
  471. package/coverage/lcov-report/src/theme/global/shadows/ehWorkDark.ts.html +193 -0
  472. package/coverage/lcov-report/src/theme/global/shadows/index.html +161 -0
  473. package/coverage/lcov-report/src/theme/global/shadows/index.ts.html +166 -0
  474. package/coverage/lcov-report/src/theme/global/sizes.ts.html +172 -0
  475. package/coverage/lcov-report/src/theme/global/space.ts.html +181 -0
  476. package/coverage/lcov-report/src/theme/global/typography.ts.html +376 -0
  477. package/coverage/lcov-report/src/theme/index.html +161 -0
  478. package/coverage/lcov-report/src/theme/index.ts.html +214 -0
  479. package/coverage/lcov-report/src/types.ts.html +238 -0
  480. package/coverage/lcov-report/src/utils/functions.ts.html +91 -0
  481. package/coverage/lcov-report/src/utils/helpers.ts.html +424 -0
  482. package/coverage/lcov-report/src/utils/hooks.ts.html +172 -0
  483. package/coverage/lcov-report/src/utils/index.html +146 -0
  484. package/coverage/lcov.info +11518 -0
  485. package/es/index.js +5626 -692
  486. package/jest.config.js +1 -1
  487. package/lib/index.js +5550 -615
  488. package/locales/en_AU.d.ts +3 -0
  489. package/locales/en_CA.d.ts +3 -0
  490. package/locales/index.d.ts +5 -0
  491. package/locales/types.d.ts +10 -0
  492. package/package.json +4 -2
  493. package/src/components/Avatar/AvatarStack/utils.ts +6 -4
  494. package/src/components/Badge/Status.tsx +1 -1
  495. package/src/components/Badge/__tests__/Status.spec.tsx +20 -0
  496. package/src/components/Badge/__tests__/__snapshots__/Status.spec.tsx.snap +2 -0
  497. package/src/components/Chart/ChartSelect/StyledChartSelect.tsx +9 -0
  498. package/src/components/Chart/ChartSelect/__tests__/StyledChartSelect.spec.tsx +15 -0
  499. package/src/components/Chart/ChartSelect/__tests__/__snapshots__/StyledChartSelect.spec.tsx.snap +20 -0
  500. package/src/components/Chart/ChartSelect/__tests__/index.spec.tsx +111 -0
  501. package/src/components/Chart/ChartSelect/index.tsx +137 -0
  502. package/src/components/Chart/ColumnChart/ColumnChartContent.tsx +84 -0
  503. package/src/components/Chart/ColumnChart/Segment.tsx +66 -0
  504. package/src/components/Chart/ColumnChart/StackedSegment.tsx +99 -0
  505. package/src/components/Chart/ColumnChart/StyledColumnChart.tsx +9 -0
  506. package/src/components/Chart/ColumnChart/__tests__/ColumnChartContent.spec.tsx +68 -0
  507. package/src/components/Chart/ColumnChart/__tests__/Segment.spec.tsx +99 -0
  508. package/src/components/Chart/ColumnChart/__tests__/StackedSegment.spec.tsx +115 -0
  509. package/src/components/Chart/ColumnChart/__tests__/__snapshots__/StackedSegment.spec.tsx.snap +120 -0
  510. package/src/components/Chart/ColumnChart/__tests__/__snapshots__/index.spec.tsx.snap +1405 -0
  511. package/src/components/Chart/ColumnChart/__tests__/index.spec.tsx +134 -0
  512. package/src/components/Chart/ColumnChart/index.tsx +216 -0
  513. package/src/components/Chart/Line/Line.tsx +81 -0
  514. package/src/components/Chart/Line/__tests__/Line.spec.tsx +148 -0
  515. package/src/components/Chart/Line/__tests__/__snapshots__/Line.spec.tsx.snap +56 -0
  516. package/src/components/Chart/Line/__tests__/__snapshots__/index.spec.tsx.snap +1461 -0
  517. package/src/components/Chart/Line/__tests__/index.spec.tsx +112 -0
  518. package/src/components/Chart/Line/index.tsx +143 -0
  519. package/src/components/Chart/StyledChart.tsx +16 -0
  520. package/src/components/Chart/index.tsx +13 -0
  521. package/src/components/Chart/shared/AxisLabel.tsx +25 -0
  522. package/src/components/Chart/shared/ChartFrame.tsx +131 -0
  523. package/src/components/Chart/shared/ChartHeader.tsx +19 -0
  524. package/src/components/Chart/shared/EmptyState.tsx +83 -0
  525. package/src/components/Chart/shared/XAxis.tsx +69 -0
  526. package/src/components/Chart/shared/XAxisGrid.tsx +42 -0
  527. package/src/components/Chart/shared/YAxis.tsx +104 -0
  528. package/src/components/Chart/shared/YAxisGrid.tsx +58 -0
  529. package/src/components/Chart/shared/__tests__/ChartFrame.spec.tsx +125 -0
  530. package/src/components/Chart/shared/__tests__/ChartHeader.spec.tsx +22 -0
  531. package/src/components/Chart/shared/__tests__/EmptyState.spec.tsx +29 -0
  532. package/src/components/Chart/shared/__tests__/XAXisGrid.spec.tsx +30 -0
  533. package/src/components/Chart/shared/__tests__/XAxis.spec.tsx +42 -0
  534. package/src/components/Chart/shared/__tests__/YAxis.spec.tsx +72 -0
  535. package/src/components/Chart/shared/__tests__/YAxisGrid.spec.tsx +35 -0
  536. package/src/components/Chart/shared/__tests__/__snapshots__/ChartFrame.spec.tsx.snap +3058 -0
  537. package/src/components/Chart/shared/__tests__/__snapshots__/ChartHeader.spec.tsx.snap +160 -0
  538. package/src/components/Chart/shared/__tests__/__snapshots__/EmptyState.spec.tsx.snap +155 -0
  539. package/src/components/Chart/shared/__tests__/__snapshots__/XAXisGrid.spec.tsx.snap +197 -0
  540. package/src/components/Chart/shared/__tests__/__snapshots__/XAxis.spec.tsx.snap +369 -0
  541. package/src/components/Chart/shared/__tests__/__snapshots__/YAxis.spec.tsx.snap +1013 -0
  542. package/src/components/Chart/shared/__tests__/__snapshots__/YAxisGrid.spec.tsx.snap +228 -0
  543. package/src/components/Chart/shared/__tests__/niceNumbers.spec.tsx +127 -0
  544. package/src/components/Chart/shared/constants.ts +2 -0
  545. package/src/components/Chart/shared/hooks/useColorScale.ts +25 -0
  546. package/src/components/Chart/shared/hooks/useGenerateTicks.ts +27 -0
  547. package/src/components/Chart/shared/hooks/useScaleBandX.ts +17 -0
  548. package/src/components/Chart/shared/hooks/useScaleLinearY.ts +30 -0
  549. package/src/components/Chart/shared/niceNumbers.ts +68 -0
  550. package/src/components/Chart/types.ts +100 -0
  551. package/src/components/Select/MultiSelect/OptionList.tsx +1 -1
  552. package/src/components/Select/MultiSelect/index.tsx +2 -6
  553. package/src/components/Select/MultiSelect/utils.ts +7 -3
  554. package/src/components/Select/SingleSelect/OptionList.tsx +1 -1
  555. package/src/components/Select/SingleSelect/index.tsx +2 -7
  556. package/src/components/Select/__tests__/helpers.spec.tsx +0 -36
  557. package/src/components/Select/helpers.tsx +0 -75
  558. package/src/components/Switch/SelectorSwitch/__tests__/__snapshots__/Option.spec.tsx.snap +3 -0
  559. package/src/components/Switch/SelectorSwitch/__tests__/__snapshots__/index.spec.tsx.snap +1 -0
  560. package/src/components/Tabs/__tests__/__snapshots__/ScrollableTabs.spec.tsx.snap +3 -0
  561. package/src/components/Tabs/__tests__/__snapshots__/ScrollableTabsHeader.spec.tsx.snap +2 -0
  562. package/src/components/Tabs/__tests__/__snapshots__/TabWithBadge.spec.tsx.snap +1 -0
  563. package/src/components/Tabs/__tests__/__snapshots__/index.spec.tsx.snap +3 -0
  564. package/src/index.ts +2 -0
  565. package/src/theme/__tests__/__snapshots__/index.spec.ts.snap +28 -0
  566. package/src/theme/components/chart.ts +28 -0
  567. package/src/theme/components/columnChart.ts +15 -0
  568. package/src/theme/getTheme.ts +6 -0
  569. package/src/types.ts +4 -0
  570. package/src/utils/__tests__/helpers.spec.ts +36 -1
  571. package/src/utils/helpers.ts +76 -1
  572. package/stats/8.100.0/rn-stats.html +4842 -0
  573. package/stats/8.99.4/rn-stats.html +1 -1
  574. package/types/components/Badge/Status.d.ts +0 -1
  575. package/types/components/Chart/ChartSelect/StyledChartSelect.d.ts +8 -0
  576. package/types/components/Chart/ChartSelect/index.d.ts +63 -0
  577. package/types/components/Chart/ColumnChart/ColumnChartContent.d.ts +25 -0
  578. package/types/components/Chart/ColumnChart/Segment.d.ts +14 -0
  579. package/types/components/Chart/ColumnChart/StackedSegment.d.ts +28 -0
  580. package/types/components/Chart/ColumnChart/StyledColumnChart.d.ts +8 -0
  581. package/types/components/Chart/ColumnChart/index.d.ts +80 -0
  582. package/types/components/Chart/Line/Line.d.ts +21 -0
  583. package/types/components/Chart/Line/index.d.ts +35 -0
  584. package/types/components/Chart/StyledChart.d.ts +9 -0
  585. package/types/components/Chart/index.d.ts +9 -0
  586. package/types/components/Chart/shared/AxisContext.d.ts +8 -0
  587. package/types/components/Chart/shared/AxisLabel.d.ts +7 -0
  588. package/types/components/Chart/shared/ChartFrame.d.ts +30 -0
  589. package/types/components/Chart/shared/ChartHeader.d.ts +8 -0
  590. package/types/components/Chart/shared/EmptyState.d.ts +8 -0
  591. package/types/components/Chart/shared/TextWrapper.d.ts +11 -0
  592. package/types/components/Chart/shared/XAxis.d.ts +8 -0
  593. package/types/components/Chart/shared/XAxisGrid.d.ts +8 -0
  594. package/types/components/Chart/shared/YAxis.d.ts +10 -0
  595. package/types/components/Chart/shared/YAxisGrid.d.ts +10 -0
  596. package/types/components/Chart/shared/constants.d.ts +2 -0
  597. package/types/components/Chart/shared/context/AxisContext.d.ts +8 -0
  598. package/types/components/Chart/shared/hooks/useColorScale.d.ts +7 -0
  599. package/types/components/Chart/shared/hooks/useGenerateTicks.d.ts +6 -0
  600. package/types/components/Chart/shared/hooks/useScaleBandX.d.ts +8 -0
  601. package/types/components/Chart/shared/hooks/useScaleLinearY.d.ts +9 -0
  602. package/types/components/Chart/shared/niceNumbers.d.ts +12 -0
  603. package/types/components/Chart/types.d.ts +84 -0
  604. package/types/components/DatePicker/DatePickerDialog/AndroidDatePickerDialog.d.ts +4 -0
  605. package/types/components/DatePicker/DatePickerDialog/IOSDatePickerDialog.d.ts +4 -0
  606. package/types/components/DatePicker/DatePickerDialog/type.d.ts +50 -0
  607. package/types/components/DatePicker/useCalculateDate.d.ts +4 -0
  608. package/types/components/DatePicker/useFormatDate.d.ts +12 -0
  609. package/types/components/Empty/StyledEmpty.d.ts +21 -0
  610. package/types/components/Empty/index.d.ts +31 -0
  611. package/types/components/Error/StyledError.d.ts +53 -0
  612. package/types/components/Error/index.d.ts +56 -0
  613. package/types/components/Select/helpers.d.ts +0 -5
  614. package/types/components/Success/StyledSuccess.d.ts +49 -0
  615. package/types/components/Success/index.d.ts +50 -0
  616. package/types/index.d.ts +2 -1
  617. package/types/theme/components/chart.d.ts +22 -0
  618. package/types/theme/components/columnChart.d.ts +10 -0
  619. package/types/theme/getTheme.d.ts +4 -0
  620. package/types/theme/global/shadows/shadows.d.ts +9 -0
  621. package/types/theme/global/shadows/swagLight.d.ts +3 -0
  622. package/types/theme/global/shadows/swagLightJobs.d.ts +3 -0
  623. package/types/theme/global/shadows.d.ts +16 -0
  624. package/types/types.d.ts +3 -1
  625. package/types/utils/helpers.d.ts +5 -0
  626. package/.turbo/turbo-build.log +0 -18
@@ -0,0 +1,3 @@
1
+ import { LocaleValues } from './types';
2
+ declare const locale: LocaleValues;
3
+ export default locale;
@@ -0,0 +1,3 @@
1
+ import { LocaleValues } from './types';
2
+ declare const locale: LocaleValues;
3
+ export default locale;
@@ -0,0 +1,5 @@
1
+ declare const _default: {
2
+ 'en-AU': import("./types").LocaleValues;
3
+ 'en-CA': import("./types").LocaleValues;
4
+ };
5
+ export default _default;
@@ -0,0 +1,10 @@
1
+ declare const LOCALES: readonly ["en-AU", "en-CA"];
2
+ export type LocaleCode = typeof LOCALES[number];
3
+ export type DateTimeFormats = {
4
+ fullDate: string;
5
+ };
6
+ export type LocaleValues = {
7
+ lang: LocaleCode;
8
+ dateTimeFormats: DateTimeFormats;
9
+ };
10
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hero-design/rn",
3
- "version": "8.99.4",
3
+ "version": "8.100.0-alpha.0",
4
4
  "license": "MIT",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -22,7 +22,8 @@
22
22
  "@emotion/native": "^11.9.3",
23
23
  "@emotion/primitives-core": "11.0.0",
24
24
  "@emotion/react": "^11.9.3",
25
- "@hero-design/colors": "8.46.0",
25
+ "@hero-design/colors": "8.46.1",
26
+ "d3": "^7.8.5",
26
27
  "date-fns": "^2.30.0",
27
28
  "hero-editor": "^1.15.5",
28
29
  "nanoid": "^5.0.9"
@@ -76,6 +77,7 @@
76
77
  "@testing-library/jest-native": "^5.4.2",
77
78
  "@testing-library/react-hooks": "^8.0.1",
78
79
  "@testing-library/react-native": "^9.1.0",
80
+ "@types/d3": "^7.4.3",
79
81
  "@types/events": "^3.0.3",
80
82
  "@types/jest": "^29.5.3",
81
83
  "@types/react": "^18.2.0",
@@ -1,6 +1,11 @@
1
1
  import { useMemo } from 'react';
2
2
  import { mobileVisualisationPalette } from '@hero-design/colors';
3
3
 
4
+ // Only use maasstrichtBlue colors for avatar stack
5
+ const DEFAULT_COLORS = Object.entries(mobileVisualisationPalette)
6
+ .filter(([key]) => key.startsWith('maasstrichtBlue'))
7
+ .map(([, value]) => value);
8
+
4
9
  const shuffleArray = <T>(array: Array<T>): Array<T> =>
5
10
  array
6
11
  .map((value) => ({ value, sort: Math.random() }))
@@ -11,9 +16,6 @@ const shuffleArray = <T>(array: Array<T>): Array<T> =>
11
16
  * Hook that returns a memoized and shuffled array of visualisation colors for Avatar.
12
17
  */
13
18
  export const useAvatarColors = () => {
14
- const shuffledColors = useMemo(
15
- () => shuffleArray(Object.values(mobileVisualisationPalette)),
16
- []
17
- );
19
+ const shuffledColors = useMemo(() => shuffleArray(DEFAULT_COLORS), []);
18
20
  return shuffledColors;
19
21
  };
@@ -13,7 +13,6 @@ export interface StatusProps extends ViewProps {
13
13
  * Whether the Status Badge is visible.
14
14
  */
15
15
  visible?: boolean;
16
- /**
17
16
  /**
18
17
  * Visual intent color to apply to Status Badge.
19
18
  */
@@ -71,6 +70,7 @@ const Status = ({
71
70
  ],
72
71
  }}
73
72
  themeIntent={intent}
73
+ testID="status-dot"
74
74
  />
75
75
  </View>
76
76
  );
@@ -24,4 +24,24 @@ describe('Status Badge', () => {
24
24
  expect(toJSON()).toMatchSnapshot();
25
25
  expect(getByText('Activity')).toBeDefined();
26
26
  });
27
+
28
+ it.each`
29
+ visible | expectedOpacity
30
+ ${true} | ${1}
31
+ ${false} | ${0}
32
+ `(
33
+ 'status-dot opacity when visible is $visible',
34
+ ({ visible, expectedOpacity }) => {
35
+ const { getByTestId } = renderWithTheme(
36
+ <Badge.Status visible={visible}>
37
+ <Typography.Body variant="small">Dot Visibility</Typography.Body>
38
+ </Badge.Status>
39
+ );
40
+ const dot = getByTestId('status-dot');
41
+ const style = Array.isArray(dot.props.style)
42
+ ? Object.assign({}, ...dot.props.style)
43
+ : dot.props.style;
44
+ expect(style.opacity).toBe(expectedOpacity);
45
+ }
46
+ );
27
47
  });
@@ -43,6 +43,7 @@ exports[`Status Badge renders correctly 1`] = `
43
43
  "width": 8,
44
44
  }
45
45
  }
46
+ testID="status-dot"
46
47
  themeIntent="danger"
47
48
  />
48
49
  </View>
@@ -117,6 +118,7 @@ exports[`Status Badge renders correctly with intent 1`] = `
117
118
  "width": 8,
118
119
  }
119
120
  }
121
+ testID="status-dot"
120
122
  themeIntent="success"
121
123
  />
122
124
  </View>
@@ -0,0 +1,9 @@
1
+ import styled from '@emotion/native';
2
+ import { View } from 'react-native';
3
+
4
+ const StyledHeaderContainer = styled(View)({
5
+ flexDirection: 'row',
6
+ alignItems: 'center',
7
+ });
8
+
9
+ export { StyledHeaderContainer };
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { render } from '@testing-library/react-native';
3
+ import { Text } from 'react-native';
4
+ import { StyledHeaderContainer } from '../StyledChartSelect';
5
+
6
+ describe('StyledHeaderContainer', () => {
7
+ it('applies correct styles', () => {
8
+ const { toJSON } = render(
9
+ <StyledHeaderContainer testID="styled-header">
10
+ <Text>Child</Text>
11
+ </StyledHeaderContainer>
12
+ );
13
+ expect(toJSON()).toMatchSnapshot();
14
+ });
15
+ });
@@ -0,0 +1,20 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`StyledHeaderContainer applies correct styles 1`] = `
4
+ <View
5
+ style={
6
+ [
7
+ {
8
+ "alignItems": "center",
9
+ "flexDirection": "row",
10
+ },
11
+ undefined,
12
+ ]
13
+ }
14
+ testID="styled-header"
15
+ >
16
+ <Text>
17
+ Child
18
+ </Text>
19
+ </View>
20
+ `;
@@ -0,0 +1,111 @@
1
+ import React from 'react';
2
+ import { fireEvent, waitFor, within } from '@testing-library/react-native';
3
+ import renderWithTheme from '../../../../testHelpers/renderWithTheme';
4
+ import ChartSelect from '../index';
5
+
6
+ const options = [
7
+ { text: 'Option 1', value: '1' },
8
+ { text: 'Option 2', value: '2' },
9
+ { text: 'Option 3', value: '3', disabled: true },
10
+ ];
11
+
12
+ describe('ChartSelect', () => {
13
+ it('renders with a selected value', () => {
14
+ const { getByText } = renderWithTheme(
15
+ <ChartSelect value="1" options={options} onConfirm={jest.fn()} />
16
+ );
17
+ expect(getByText('Option 1')).toBeVisible();
18
+ });
19
+
20
+ it('renders with no value selected', () => {
21
+ const { getByText } = renderWithTheme(
22
+ <ChartSelect value={null} options={options} onConfirm={jest.fn()} />
23
+ );
24
+ // Should render empty string or placeholder
25
+ expect(getByText('')).toBeTruthy();
26
+ });
27
+
28
+ it('opens bottom sheet and selects an option', async () => {
29
+ const onConfirm = jest.fn();
30
+ const { getByText } = renderWithTheme(
31
+ <ChartSelect
32
+ value="1"
33
+ options={options}
34
+ onConfirm={onConfirm}
35
+ bottomSheetConfig={{ header: 'Select Option' }}
36
+ />
37
+ );
38
+ fireEvent.press(getByText('Option 1'));
39
+ await waitFor(() => expect(getByText('Option 2')).toBeVisible());
40
+ expect(getByText('Option 2')).toBeTruthy();
41
+ // verify botomsheet header
42
+ expect(getByText('Select Option')).toBeVisible();
43
+
44
+ fireEvent.press(getByText('Option 2'));
45
+ expect(onConfirm).toHaveBeenCalledWith('2');
46
+ await waitFor(() => expect(getByText('Select Option')).toBeVisible());
47
+ });
48
+
49
+ it('calls onDismiss when bottom sheet is closed', () => {
50
+ const onDismiss = jest.fn();
51
+ const { getByText, getByTestId } = renderWithTheme(
52
+ <ChartSelect
53
+ value="1"
54
+ options={options}
55
+ onConfirm={jest.fn()}
56
+ onDismiss={onDismiss}
57
+ />
58
+ );
59
+ fireEvent.press(getByText('Option 1'));
60
+ // Simulate closing the bottom sheet
61
+ fireEvent(getByTestId('bottomSheet'), 'onRequestClose');
62
+ expect(onDismiss).toHaveBeenCalled();
63
+ });
64
+
65
+ it('does not open when disabled', () => {
66
+ const { getByText, queryByText } = renderWithTheme(
67
+ <ChartSelect value="1" options={options} onConfirm={jest.fn()} disabled />
68
+ );
69
+ fireEvent.press(getByText('Option 1'));
70
+ expect(queryByText('Option 2')).toBeNull();
71
+ });
72
+
73
+ it('renders all options', () => {
74
+ const { getByText, getByTestId } = renderWithTheme(
75
+ <ChartSelect value="1" options={options} onConfirm={jest.fn()} />
76
+ );
77
+ fireEvent.press(getByText('Option 1'));
78
+
79
+ const bottomSheet = getByTestId('bottomSheet');
80
+ const bottomSheetQueries = within(bottomSheet);
81
+
82
+ expect(bottomSheetQueries.getByText('Option 1')).toBeVisible();
83
+ expect(bottomSheetQueries.getByText('Option 2')).toBeVisible();
84
+ expect(bottomSheetQueries.getByText('Option 3')).toBeVisible();
85
+ });
86
+
87
+ it('renders custom header from bottomSheetConfig', () => {
88
+ const { getByText } = renderWithTheme(
89
+ <ChartSelect
90
+ value="1"
91
+ options={options}
92
+ onConfirm={jest.fn()}
93
+ bottomSheetConfig={{ header: 'Custom Header' }}
94
+ />
95
+ );
96
+ fireEvent.press(getByText('Option 1'));
97
+ expect(getByText('Custom Header')).toBeTruthy();
98
+ });
99
+
100
+ it('applies testID to the correct element', () => {
101
+ const { getByTestId } = renderWithTheme(
102
+ <ChartSelect
103
+ value="1"
104
+ options={options}
105
+ onConfirm={jest.fn()}
106
+ testID="chart-select"
107
+ />
108
+ );
109
+ expect(getByTestId('chart-select')).toBeTruthy();
110
+ });
111
+ });
@@ -0,0 +1,137 @@
1
+ import React, { useState } from 'react';
2
+ import type { StyleProp, ViewStyle } from 'react-native';
3
+ import { FlatList, TouchableOpacity, View } from 'react-native';
4
+ import BottomSheet, { BottomSheetProps } from '../../BottomSheet';
5
+ import Typography from '../../Typography';
6
+ import Icon from '../../Icon';
7
+ import List from '../../List';
8
+ import { deepCompareValue, useKeyboard } from '../../../utils/helpers';
9
+ import { StyledHeaderContainer } from './StyledChartSelect';
10
+
11
+ /**
12
+ * Represents a selectable option for ChartSelect.
13
+ * @template V The type of the option value.
14
+ * @property value The value of the option. Used for selection and comparison.
15
+ * @property text The display text for the option.
16
+ * @property key (Optional) A unique key for the option. If provided, used as the FlatList key for better performance and stability.
17
+ */
18
+ type OptionType<V> = {
19
+ value: V;
20
+ text: string;
21
+ key?: string;
22
+ };
23
+
24
+ export interface SingleSelectProps<V> {
25
+ /**
26
+ * The currently selected value. Should match one of the values in the options array.
27
+ */
28
+ value: V | null;
29
+ /**
30
+ * Callback fired when an option is selected.
31
+ * @param value The value of the selected option.
32
+ */
33
+ onConfirm: (value: V) => void;
34
+ /**
35
+ * Array of supported orientations for the Select modal (iOS only).
36
+ * Defaults to ['portrait'].
37
+ */
38
+ supportedOrientations?: ('portrait' | 'landscape')[];
39
+ /**
40
+ * The list of selectable options. Each option should have a value and display text.
41
+ */
42
+ options: OptionType<V>[];
43
+ /**
44
+ * Callback fired when the selection modal is dismissed without selecting an option.
45
+ */
46
+ onDismiss?: () => void;
47
+ /**
48
+ * Configuration for the bottom sheet modal.
49
+ * - variant: The visual variant of the bottom sheet.
50
+ * - header: Optional header text to display at the top of the bottom sheet.
51
+ */
52
+ bottomSheetConfig?: {
53
+ variant?: BottomSheetProps['variant'];
54
+ header?: BottomSheetProps['header'];
55
+ };
56
+ /**
57
+ * If true, the select is disabled and cannot be interacted with.
58
+ * @default false
59
+ */
60
+ disabled?: boolean;
61
+ /**
62
+ * Additional style to apply to the select container.
63
+ */
64
+ style?: StyleProp<ViewStyle>;
65
+ /**
66
+ * Optional test ID for testing purposes. Applied to the main touchable area.
67
+ */
68
+ testID?: string;
69
+ }
70
+
71
+ const SingleSelect = <V,>({
72
+ onConfirm,
73
+ onDismiss,
74
+ options = [],
75
+ disabled = false,
76
+ style,
77
+ testID,
78
+ value,
79
+ supportedOrientations = ['portrait'],
80
+ bottomSheetConfig = {},
81
+ }: SingleSelectProps<V>) => {
82
+ const { isKeyboardVisible, keyboardHeight } = useKeyboard();
83
+ const [open, setOpen] = useState(false);
84
+
85
+ const displayedValue =
86
+ options.find((opt) => deepCompareValue(opt.value, value))?.text || '';
87
+
88
+ const { variant: bottomSheetVariant, header: bottomSheetHeader = '' } =
89
+ bottomSheetConfig;
90
+
91
+ return (
92
+ <>
93
+ <View pointerEvents={disabled ? 'none' : 'auto'} style={style}>
94
+ <TouchableOpacity onPress={() => setOpen(true)}>
95
+ <StyledHeaderContainer pointerEvents="none" testID={testID}>
96
+ <Typography.Body variant="small-bold">
97
+ {displayedValue}
98
+ </Typography.Body>
99
+ <Icon icon="arrow-down" intent="primary" size="small" />
100
+ </StyledHeaderContainer>
101
+ </TouchableOpacity>
102
+ </View>
103
+
104
+ <BottomSheet
105
+ variant={bottomSheetVariant || 'fixed'}
106
+ open={open}
107
+ onRequestClose={() => {
108
+ onDismiss?.();
109
+ setOpen(false);
110
+ }}
111
+ header={bottomSheetHeader}
112
+ style={{
113
+ paddingBottom: isKeyboardVisible ? keyboardHeight : 0,
114
+ }}
115
+ supportedOrientations={supportedOrientations}
116
+ testID="bottomSheet"
117
+ >
118
+ <FlatList
119
+ data={options}
120
+ keyExtractor={(item) => item.key ?? String(item.value)}
121
+ renderItem={({ item }) => (
122
+ <List.BasicItem
123
+ selected={deepCompareValue(item.value, value)}
124
+ title={item.text}
125
+ onPress={() => {
126
+ setOpen(false);
127
+ onConfirm?.(item.value);
128
+ }}
129
+ />
130
+ )}
131
+ />
132
+ </BottomSheet>
133
+ </>
134
+ );
135
+ };
136
+
137
+ export default SingleSelect;
@@ -0,0 +1,84 @@
1
+ // ColumnChartContent.tsx
2
+ // This component renders the grouped/stacked columns for a column chart, using StackedSegment for each x-axis category.
3
+ // It handles the layout and mapping of data series to visual columns.
4
+
5
+ import React, { memo, useMemo } from 'react';
6
+ import { G } from 'react-native-svg';
7
+ import { DataValue, Series, XAxisConfig, YAxisConfig } from '../types';
8
+ import useScaleBandX from '../shared/hooks/useScaleBandX';
9
+ import StackedSegment from './StackedSegment';
10
+ import { deepCompareValue } from '../../../utils/helpers';
11
+
12
+ interface ColumnChartContentProps {
13
+ coordinates: { yStart: number; yEnd: number; xStart: number; xEnd: number };
14
+ data: Array<Series<Array<DataValue>>>;
15
+ yAxisConfig: Omit<YAxisConfig, 'minValue'>;
16
+ xAxisConfig: XAxisConfig;
17
+ /**
18
+ * Called when a bar (column segment) is pressed.
19
+ */
20
+ onBarPress?: (info: {
21
+ value: number | undefined;
22
+ xLabel: string;
23
+ seriesLabel: string;
24
+ seriesIndex: number;
25
+ xIndex: number;
26
+ }) => void;
27
+ }
28
+
29
+ /**
30
+ * Renders the grouped/stacked columns for a column chart.
31
+ * For each x-axis category, renders a StackedSegment with the values from all series.
32
+ * Handles layout and mapping of data to visual columns.
33
+ */
34
+ const ColumnChartContent = ({
35
+ coordinates,
36
+ data,
37
+ yAxisConfig,
38
+ xAxisConfig,
39
+ onBarPress,
40
+ }: ColumnChartContentProps) => {
41
+ const { yStart, yEnd, xStart, xEnd } = coordinates;
42
+
43
+ const xLabels = xAxisConfig.labels ?? [];
44
+
45
+ // Render columns (fixed width, center of group/column aligns to grid)
46
+ const scaleX = useScaleBandX({
47
+ labels: xAxisConfig.labels ?? [],
48
+ xStart,
49
+ xEnd,
50
+ });
51
+ const columns = useMemo(() => {
52
+ if (data.length === 0) {
53
+ return null;
54
+ }
55
+ return xLabels.flatMap((_, xIdx) => {
56
+ const stackedData = data.map((series) => {
57
+ return series.data[xIdx] ?? undefined;
58
+ });
59
+
60
+ const x = scaleX(xLabels[xIdx]);
61
+ if (!x) {
62
+ return null; // Handle case where x is undefined
63
+ }
64
+ const seriesLabels = data.map((series) => series.label);
65
+ const xLabel = xLabels[xIdx];
66
+ return (
67
+ <StackedSegment
68
+ key={`${xLabel}-series`}
69
+ stackedData={stackedData}
70
+ xLabel={xLabel}
71
+ yAxisConfig={yAxisConfig}
72
+ coordinates={coordinates}
73
+ xCenter={x + scaleX.bandwidth() / 2}
74
+ seriesLabels={seriesLabels}
75
+ xIndex={xIdx}
76
+ onBarPress={onBarPress}
77
+ />
78
+ );
79
+ });
80
+ }, [xLabels, data, xStart, yStart, xEnd, yEnd, onBarPress, yAxisConfig]);
81
+
82
+ return <G testID="column-chart-content">{columns}</G>;
83
+ };
84
+ export default memo(ColumnChartContent, deepCompareValue);
@@ -0,0 +1,66 @@
1
+ // Segment.tsx
2
+ // This component renders a single column segment (bar) for a column chart, with support for accessibility and testID.
3
+
4
+ import React from 'react';
5
+ import { Rect } from 'react-native-svg';
6
+ import { useTheme } from '../../../theme';
7
+
8
+ interface SegmentProps {
9
+ xCenter: number;
10
+ y: number;
11
+ height: number;
12
+ color?: string;
13
+ value?: number;
14
+ xLabel: string;
15
+ seriesLabel: string;
16
+ testID: string;
17
+ onPress?: () => void;
18
+ }
19
+
20
+ /**
21
+ * Renders a single column segment (bar) for a column chart.
22
+ * Applies theming, segment gap, and accessibility label.
23
+ * Used by StackedSegment and other chart content components.
24
+ */
25
+ const Segment = ({
26
+ xCenter,
27
+ y,
28
+ height,
29
+ color,
30
+ value,
31
+ xLabel,
32
+ seriesLabel,
33
+ testID,
34
+ onPress,
35
+ }: SegmentProps) => {
36
+ const theme = useTheme();
37
+ const { segmentGap } = theme.__hd__.columnChart.space;
38
+ const width = theme.__hd__.columnChart.sizes.columnWidth;
39
+
40
+ // Apply segment gap logic
41
+ const minBarHeight = 10;
42
+ let adjustedHeight = height - segmentGap;
43
+ if (height > 0 && adjustedHeight < minBarHeight) {
44
+ adjustedHeight = minBarHeight;
45
+ } else if (height <= 0) {
46
+ adjustedHeight = 0;
47
+ }
48
+ const adjustedY = y + segmentGap / 2;
49
+ const x = xCenter - width / 2;
50
+
51
+ return (
52
+ <Rect
53
+ x={x}
54
+ y={adjustedY}
55
+ width={width}
56
+ height={adjustedHeight}
57
+ rx={width / 2}
58
+ fill={color}
59
+ accessibilityLabel={`Column segment: value ${value}, x-label ${xLabel}, series ${seriesLabel}`}
60
+ testID={testID}
61
+ onPress={onPress}
62
+ />
63
+ );
64
+ };
65
+
66
+ export default React.memo(Segment);
@@ -0,0 +1,99 @@
1
+ // StackedSegment.tsx
2
+ // This component renders a stack of column segments for a single x-axis category in a grouped/stacked column chart.
3
+ // Each segment represents a value from a different series, stacked vertically. Uses the Segment component for rendering each bar.
4
+
5
+ import React, { memo } from 'react';
6
+ import Segment from './Segment';
7
+ import { DataValue, YAxisConfig } from '../types';
8
+ import useScaleLinearY from '../shared/hooks/useScaleLinearY';
9
+ import useColorScale from '../shared/hooks/useColorScale';
10
+ import { deepCompareValue } from '../../../utils/helpers';
11
+
12
+ interface StackedSegmentProps {
13
+ stackedData: Array<DataValue>;
14
+ seriesLabels: Array<string>;
15
+ xLabel: string;
16
+ yAxisConfig: YAxisConfig;
17
+ coordinates: { yStart: number; yEnd: number; xStart: number; xEnd: number };
18
+ xCenter: number;
19
+ xIndex: number;
20
+ /**
21
+ * Called when a bar (column segment) is pressed.
22
+ */
23
+ onBarPress?: (info: {
24
+ value: number | undefined;
25
+ xLabel: string;
26
+ seriesLabel: string;
27
+ seriesIndex: number;
28
+ xIndex: number;
29
+ }) => void;
30
+ }
31
+
32
+ /**
33
+ * Renders a stack of column segments for a single x-axis category.
34
+ * Each segment corresponds to a value in stackedData and is colored by series.
35
+ * Skips undefined values. Used for grouped/stacked column charts.
36
+ */
37
+ const StackedSegment: React.FC<StackedSegmentProps> = ({
38
+ stackedData,
39
+ seriesLabels,
40
+ xLabel,
41
+ yAxisConfig,
42
+ coordinates,
43
+ xCenter,
44
+ xIndex,
45
+ onBarPress,
46
+ }) => {
47
+ const { yStart, yEnd } = coordinates;
48
+ const stackedMaxY = yAxisConfig.maxValue ?? 0;
49
+ const scaleY = useScaleLinearY({
50
+ maxValue: stackedMaxY,
51
+ minValue: 0,
52
+ yStart,
53
+ yEnd,
54
+ });
55
+
56
+ let yStack = 0; // running sum for stacking
57
+ const colorScale = useColorScale(seriesLabels);
58
+ return stackedData.map((value, index) => {
59
+ // If value is undefined, skip this segment
60
+ if (value === undefined) {
61
+ return null;
62
+ }
63
+ const prevYStack = yStack;
64
+ yStack += value ?? 0;
65
+
66
+ // y0 is the bottom of the stack, y1 is the top
67
+ const y0 = scaleY(prevYStack);
68
+ const y1 = scaleY(yStack);
69
+ const colHeight = y0 - y1; // since y increases downward in SVG
70
+ const seriesLabel = seriesLabels[index];
71
+ return (
72
+ <Segment
73
+ key={`${xLabel}-series-${seriesLabel}`}
74
+ xCenter={xCenter}
75
+ y={y1}
76
+ height={colHeight}
77
+ color={colorScale(seriesLabel)}
78
+ value={value}
79
+ xLabel={xLabel}
80
+ seriesLabel={seriesLabel}
81
+ testID={`column-segment-${xLabel}-${seriesLabel}`}
82
+ onPress={
83
+ onBarPress
84
+ ? () =>
85
+ onBarPress({
86
+ value,
87
+ xLabel,
88
+ seriesLabel,
89
+ seriesIndex: index,
90
+ xIndex,
91
+ })
92
+ : undefined
93
+ }
94
+ />
95
+ );
96
+ });
97
+ };
98
+
99
+ export default memo(StackedSegment, deepCompareValue);