@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.
- package/CHANGELOG.md +17 -0
- package/coverage/clover.xml +4923 -0
- package/coverage/coverage-final.json +378 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +1511 -0
- package/coverage/lcov-report/niceNumbers.ts.html +328 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +196 -0
- package/coverage/lcov-report/src/components/Accordion/AccordionItem.tsx.html +232 -0
- package/coverage/lcov-report/src/components/Accordion/StyledAccordion.tsx.html +172 -0
- package/coverage/lcov-report/src/components/Accordion/index.html +146 -0
- package/coverage/lcov-report/src/components/Accordion/index.tsx.html +334 -0
- package/coverage/lcov-report/src/components/Alert/StyledAlert.tsx.html +304 -0
- package/coverage/lcov-report/src/components/Alert/index.html +131 -0
- package/coverage/lcov-report/src/components/Alert/index.tsx.html +556 -0
- package/coverage/lcov-report/src/components/AnimatedScroller/AnimatedFAB.tsx.html +550 -0
- package/coverage/lcov-report/src/components/AnimatedScroller/AnimatedScrollable.tsx.html +295 -0
- package/coverage/lcov-report/src/components/AnimatedScroller/FlatListWithFAB.tsx.html +154 -0
- package/coverage/lcov-report/src/components/AnimatedScroller/ScrollViewWithFAB.tsx.html +148 -0
- package/coverage/lcov-report/src/components/AnimatedScroller/SectionListWithFAB.tsx.html +163 -0
- package/coverage/lcov-report/src/components/AnimatedScroller/index.html +191 -0
- package/coverage/lcov-report/src/components/AnimatedScroller/index.tsx.html +100 -0
- package/coverage/lcov-report/src/components/AppCue/StyledAppCue.tsx.html +301 -0
- package/coverage/lcov-report/src/components/AppCue/index.html +146 -0
- package/coverage/lcov-report/src/components/AppCue/index.tsx.html +658 -0
- package/coverage/lcov-report/src/components/AppCue/utils.ts.html +604 -0
- package/coverage/lcov-report/src/components/Attachment/StyledAttachment.tsx.html +217 -0
- package/coverage/lcov-report/src/components/Attachment/index.html +131 -0
- package/coverage/lcov-report/src/components/Attachment/index.tsx.html +322 -0
- package/coverage/lcov-report/src/components/Avatar/Avatar.tsx.html +367 -0
- package/coverage/lcov-report/src/components/Avatar/AvatarStack/StyledAvatarStack.tsx.html +334 -0
- package/coverage/lcov-report/src/components/Avatar/AvatarStack/index.html +146 -0
- package/coverage/lcov-report/src/components/Avatar/AvatarStack/index.tsx.html +523 -0
- package/coverage/lcov-report/src/components/Avatar/AvatarStack/utils.ts.html +148 -0
- package/coverage/lcov-report/src/components/Avatar/StyledAvatar.tsx.html +286 -0
- package/coverage/lcov-report/src/components/Avatar/index.html +146 -0
- package/coverage/lcov-report/src/components/Avatar/index.ts.html +103 -0
- package/coverage/lcov-report/src/components/Badge/Count.tsx.html +265 -0
- package/coverage/lcov-report/src/components/Badge/Status.tsx.html +322 -0
- package/coverage/lcov-report/src/components/Badge/StyledBadge.tsx.html +397 -0
- package/coverage/lcov-report/src/components/Badge/constants.ts.html +88 -0
- package/coverage/lcov-report/src/components/Badge/index.html +176 -0
- package/coverage/lcov-report/src/components/Badge/index.tsx.html +358 -0
- package/coverage/lcov-report/src/components/BottomNavigation/StyledBottomNavigation.tsx.html +259 -0
- package/coverage/lcov-report/src/components/BottomNavigation/index.html +131 -0
- package/coverage/lcov-report/src/components/BottomNavigation/index.tsx.html +571 -0
- package/coverage/lcov-report/src/components/BottomSheet/BottomSheetContext.ts.html +118 -0
- package/coverage/lcov-report/src/components/BottomSheet/Footer.tsx.html +145 -0
- package/coverage/lcov-report/src/components/BottomSheet/Header.tsx.html +304 -0
- package/coverage/lcov-report/src/components/BottomSheet/ScrollView.tsx.html +256 -0
- package/coverage/lcov-report/src/components/BottomSheet/StyledBottomSheet.tsx.html +403 -0
- package/coverage/lcov-report/src/components/BottomSheet/index.html +191 -0
- package/coverage/lcov-report/src/components/BottomSheet/index.tsx.html +793 -0
- package/coverage/lcov-report/src/components/Box/StyledBox.tsx.html +250 -0
- package/coverage/lcov-report/src/components/Box/config.ts.html +700 -0
- package/coverage/lcov-report/src/components/Box/index.html +146 -0
- package/coverage/lcov-report/src/components/Box/index.tsx.html +124 -0
- package/coverage/lcov-report/src/components/Button/Button.tsx.html +1045 -0
- package/coverage/lcov-report/src/components/Button/IconButton.tsx.html +292 -0
- package/coverage/lcov-report/src/components/Button/LoadingIndicator/StyledLoadingIndicator.tsx.html +307 -0
- package/coverage/lcov-report/src/components/Button/LoadingIndicator/index.html +131 -0
- package/coverage/lcov-report/src/components/Button/LoadingIndicator/index.tsx.html +511 -0
- package/coverage/lcov-report/src/components/Button/StyledButton.tsx.html +1561 -0
- package/coverage/lcov-report/src/components/Button/UtilityButton/StyledUtilityButton.tsx.html +160 -0
- package/coverage/lcov-report/src/components/Button/UtilityButton/index.html +131 -0
- package/coverage/lcov-report/src/components/Button/UtilityButton/index.tsx.html +259 -0
- package/coverage/lcov-report/src/components/Button/index.html +161 -0
- package/coverage/lcov-report/src/components/Button/index.tsx.html +136 -0
- package/coverage/lcov-report/src/components/Calendar/CalendarRange.tsx.html +1111 -0
- package/coverage/lcov-report/src/components/Calendar/CalendarRangeConnector.tsx.html +289 -0
- package/coverage/lcov-report/src/components/Calendar/CalendarRowItem.tsx.html +286 -0
- package/coverage/lcov-report/src/components/Calendar/StyledCalendar.tsx.html +397 -0
- package/coverage/lcov-report/src/components/Calendar/helpers.ts.html +394 -0
- package/coverage/lcov-report/src/components/Calendar/index.html +191 -0
- package/coverage/lcov-report/src/components/Calendar/index.tsx.html +1171 -0
- package/coverage/lcov-report/src/components/Card/DataCard/StyledDataCard.tsx.html +160 -0
- package/coverage/lcov-report/src/components/Card/DataCard/index.html +131 -0
- package/coverage/lcov-report/src/components/Card/DataCard/index.tsx.html +193 -0
- package/coverage/lcov-report/src/components/Card/StyledCard.tsx.html +160 -0
- package/coverage/lcov-report/src/components/Card/index.html +131 -0
- package/coverage/lcov-report/src/components/Card/index.tsx.html +232 -0
- package/coverage/lcov-report/src/components/Carousel/CardCarousel.tsx.html +844 -0
- package/coverage/lcov-report/src/components/Carousel/CarouselItem.tsx.html +313 -0
- package/coverage/lcov-report/src/components/Carousel/StyledCardCarousel.tsx.html +172 -0
- package/coverage/lcov-report/src/components/Carousel/StyledCarousel.tsx.html +325 -0
- package/coverage/lcov-report/src/components/Carousel/contants.ts.html +115 -0
- package/coverage/lcov-report/src/components/Carousel/index.html +191 -0
- package/coverage/lcov-report/src/components/Carousel/index.tsx.html +775 -0
- package/coverage/lcov-report/src/components/Chart/ChartSelect/StyledChartSelect.tsx.html +112 -0
- package/coverage/lcov-report/src/components/Chart/ChartSelect/index.html +131 -0
- package/coverage/lcov-report/src/components/Chart/ChartSelect/index.tsx.html +496 -0
- package/coverage/lcov-report/src/components/Chart/ColumnChart/ColumnChartContent.tsx.html +337 -0
- package/coverage/lcov-report/src/components/Chart/ColumnChart/Segment.tsx.html +283 -0
- package/coverage/lcov-report/src/components/Chart/ColumnChart/StackedSegment.tsx.html +382 -0
- package/coverage/lcov-report/src/components/Chart/ColumnChart/StyledColumnChart.tsx.html +112 -0
- package/coverage/lcov-report/src/components/Chart/ColumnChart/index.html +176 -0
- package/coverage/lcov-report/src/components/Chart/ColumnChart/index.tsx.html +733 -0
- package/coverage/lcov-report/src/components/Chart/Line/Line.tsx.html +328 -0
- package/coverage/lcov-report/src/components/Chart/Line/index.html +131 -0
- package/coverage/lcov-report/src/components/Chart/Line/index.tsx.html +514 -0
- package/coverage/lcov-report/src/components/Chart/StyledChart.tsx.html +133 -0
- package/coverage/lcov-report/src/components/Chart/index.html +131 -0
- package/coverage/lcov-report/src/components/Chart/index.tsx.html +124 -0
- package/coverage/lcov-report/src/components/Chart/shared/AxisLabel.tsx.html +160 -0
- package/coverage/lcov-report/src/components/Chart/shared/ChartFrame.tsx.html +478 -0
- package/coverage/lcov-report/src/components/Chart/shared/ChartHeader.tsx.html +142 -0
- package/coverage/lcov-report/src/components/Chart/shared/EmptyState.tsx.html +226 -0
- package/coverage/lcov-report/src/components/Chart/shared/XAxis.tsx.html +292 -0
- package/coverage/lcov-report/src/components/Chart/shared/XAxisGrid.tsx.html +211 -0
- package/coverage/lcov-report/src/components/Chart/shared/YAxis.tsx.html +397 -0
- package/coverage/lcov-report/src/components/Chart/shared/YAxisGrid.tsx.html +259 -0
- package/coverage/lcov-report/src/components/Chart/shared/constants.ts.html +91 -0
- package/coverage/lcov-report/src/components/Chart/shared/hooks/index.html +161 -0
- package/coverage/lcov-report/src/components/Chart/shared/hooks/useColorScale.ts.html +160 -0
- package/coverage/lcov-report/src/components/Chart/shared/hooks/useGenerateTicks.ts.html +166 -0
- package/coverage/lcov-report/src/components/Chart/shared/hooks/useScaleBandX.ts.html +136 -0
- package/coverage/lcov-report/src/components/Chart/shared/hooks/useScaleLinearY.ts.html +175 -0
- package/coverage/lcov-report/src/components/Chart/shared/index.html +251 -0
- package/coverage/lcov-report/src/components/Chart/shared/niceNumbers.ts.html +289 -0
- package/coverage/lcov-report/src/components/Checkbox/StyledCheckbox.tsx.html +217 -0
- package/coverage/lcov-report/src/components/Checkbox/index.html +131 -0
- package/coverage/lcov-report/src/components/Checkbox/index.tsx.html +448 -0
- package/coverage/lcov-report/src/components/Chip/StyledChip.tsx.html +445 -0
- package/coverage/lcov-report/src/components/Chip/index.html +131 -0
- package/coverage/lcov-report/src/components/Chip/index.tsx.html +415 -0
- package/coverage/lcov-report/src/components/Collapse/StyledCollapse.tsx.html +157 -0
- package/coverage/lcov-report/src/components/Collapse/index.html +131 -0
- package/coverage/lcov-report/src/components/Collapse/index.tsx.html +370 -0
- package/coverage/lcov-report/src/components/ContentNavigator/StyledContentNavigator.tsx.html +115 -0
- package/coverage/lcov-report/src/components/ContentNavigator/index.html +131 -0
- package/coverage/lcov-report/src/components/ContentNavigator/index.tsx.html +397 -0
- package/coverage/lcov-report/src/components/DatePicker/DatePickerAndroid.tsx.html +340 -0
- package/coverage/lcov-report/src/components/DatePicker/DatePickerCalendar.tsx.html +571 -0
- package/coverage/lcov-report/src/components/DatePicker/DatePickerIOS.tsx.html +361 -0
- package/coverage/lcov-report/src/components/DatePicker/Dialog/AndroidDialog.tsx.html +289 -0
- package/coverage/lcov-report/src/components/DatePicker/Dialog/IOSDialog.tsx.html +358 -0
- package/coverage/lcov-report/src/components/DatePicker/Dialog/index.html +131 -0
- package/coverage/lcov-report/src/components/DatePicker/StyledDatePicker.tsx.html +112 -0
- package/coverage/lcov-report/src/components/DatePicker/hooks/index.html +146 -0
- package/coverage/lcov-report/src/components/DatePicker/hooks/useCalculateDate.tsx.html +187 -0
- package/coverage/lcov-report/src/components/DatePicker/hooks/useFormatDate.ts.html +160 -0
- package/coverage/lcov-report/src/components/DatePicker/hooks/utils.ts.html +175 -0
- package/coverage/lcov-report/src/components/DatePicker/index.html +176 -0
- package/coverage/lcov-report/src/components/DatePicker/index.tsx.html +175 -0
- package/coverage/lcov-report/src/components/Divider/StyledDivider.tsx.html +169 -0
- package/coverage/lcov-report/src/components/Divider/index.html +131 -0
- package/coverage/lcov-report/src/components/Divider/index.tsx.html +205 -0
- package/coverage/lcov-report/src/components/Drawer/DragableDrawer/helpers.ts.html +223 -0
- package/coverage/lcov-report/src/components/Drawer/DragableDrawer/index.html +131 -0
- package/coverage/lcov-report/src/components/Drawer/DragableDrawer/index.tsx.html +697 -0
- package/coverage/lcov-report/src/components/Drawer/StyledDrawer.tsx.html +337 -0
- package/coverage/lcov-report/src/components/Drawer/index.html +131 -0
- package/coverage/lcov-report/src/components/Drawer/index.tsx.html +376 -0
- package/coverage/lcov-report/src/components/FAB/ActionGroup/ActionItem.tsx.html +313 -0
- package/coverage/lcov-report/src/components/FAB/ActionGroup/StyledActionGroup.tsx.html +289 -0
- package/coverage/lcov-report/src/components/FAB/ActionGroup/StyledActionItem.tsx.html +175 -0
- package/coverage/lcov-report/src/components/FAB/ActionGroup/index.html +161 -0
- package/coverage/lcov-report/src/components/FAB/ActionGroup/index.tsx.html +715 -0
- package/coverage/lcov-report/src/components/FAB/AnimatedFABIcon.tsx.html +226 -0
- package/coverage/lcov-report/src/components/FAB/FAB.tsx.html +871 -0
- package/coverage/lcov-report/src/components/FAB/Pair/StyledFAB.tsx.html +142 -0
- package/coverage/lcov-report/src/components/FAB/Pair/index.html +131 -0
- package/coverage/lcov-report/src/components/FAB/Pair/index.tsx.html +223 -0
- package/coverage/lcov-report/src/components/FAB/StyledFAB.tsx.html +229 -0
- package/coverage/lcov-report/src/components/FAB/index.html +161 -0
- package/coverage/lcov-report/src/components/FAB/index.tsx.html +109 -0
- package/coverage/lcov-report/src/components/FloatingIsland/StyledFloatingIsland.tsx.html +181 -0
- package/coverage/lcov-report/src/components/FloatingIsland/index.html +131 -0
- package/coverage/lcov-report/src/components/FloatingIsland/index.tsx.html +367 -0
- package/coverage/lcov-report/src/components/HeroDesignProvider/index.html +116 -0
- package/coverage/lcov-report/src/components/HeroDesignProvider/index.tsx.html +166 -0
- package/coverage/lcov-report/src/components/Icon/AnimatedIcon.tsx.html +226 -0
- package/coverage/lcov-report/src/components/Icon/HeroIcon/index.html +116 -0
- package/coverage/lcov-report/src/components/Icon/HeroIcon/index.tsx.html +238 -0
- package/coverage/lcov-report/src/components/Icon/IconList.ts.html +1486 -0
- package/coverage/lcov-report/src/components/Icon/index.html +161 -0
- package/coverage/lcov-report/src/components/Icon/index.tsx.html +412 -0
- package/coverage/lcov-report/src/components/Icon/utils.ts.html +103 -0
- package/coverage/lcov-report/src/components/Image/index.html +116 -0
- package/coverage/lcov-report/src/components/Image/index.tsx.html +238 -0
- package/coverage/lcov-report/src/components/List/BasicListItem.tsx.html +442 -0
- package/coverage/lcov-report/src/components/List/ListItem.tsx.html +565 -0
- package/coverage/lcov-report/src/components/List/StyledBasicListItem.tsx.html +187 -0
- package/coverage/lcov-report/src/components/List/StyledListItem.tsx.html +325 -0
- package/coverage/lcov-report/src/components/List/index.html +176 -0
- package/coverage/lcov-report/src/components/List/index.tsx.html +127 -0
- package/coverage/lcov-report/src/components/LocaleProvider/context.ts.html +106 -0
- package/coverage/lcov-report/src/components/LocaleProvider/hooks.ts.html +142 -0
- package/coverage/lcov-report/src/components/LocaleProvider/index.html +161 -0
- package/coverage/lcov-report/src/components/LocaleProvider/index.tsx.html +166 -0
- package/coverage/lcov-report/src/components/LocaleProvider/utils.ts.html +127 -0
- package/coverage/lcov-report/src/components/MapPin/Focussed.tsx.html +169 -0
- package/coverage/lcov-report/src/components/MapPin/StyledMapPin.tsx.html +301 -0
- package/coverage/lcov-report/src/components/MapPin/index.html +146 -0
- package/coverage/lcov-report/src/components/MapPin/index.tsx.html +274 -0
- package/coverage/lcov-report/src/components/Modal/index.html +116 -0
- package/coverage/lcov-report/src/components/Modal/index.tsx.html +736 -0
- package/coverage/lcov-report/src/components/PageControl/StyledPageControl.tsx.html +136 -0
- package/coverage/lcov-report/src/components/PageControl/index.html +131 -0
- package/coverage/lcov-report/src/components/PageControl/index.tsx.html +319 -0
- package/coverage/lcov-report/src/components/PinInput/PinCell.tsx.html +193 -0
- package/coverage/lcov-report/src/components/PinInput/StyledPinInput.tsx.html +358 -0
- package/coverage/lcov-report/src/components/PinInput/index.html +146 -0
- package/coverage/lcov-report/src/components/PinInput/index.tsx.html +817 -0
- package/coverage/lcov-report/src/components/Portal/PortalHost.tsx.html +166 -0
- package/coverage/lcov-report/src/components/Portal/PortalProvider.tsx.html +190 -0
- package/coverage/lcov-report/src/components/Portal/constants.ts.html +115 -0
- package/coverage/lcov-report/src/components/Portal/contexts.ts.html +127 -0
- package/coverage/lcov-report/src/components/Portal/index.html +221 -0
- package/coverage/lcov-report/src/components/Portal/index.tsx.html +283 -0
- package/coverage/lcov-report/src/components/Portal/reducer.ts.html +403 -0
- package/coverage/lcov-report/src/components/Portal/usePortal.ts.html +235 -0
- package/coverage/lcov-report/src/components/Portal/usePortalState.ts.html +118 -0
- package/coverage/lcov-report/src/components/Progress/ProgressBar.tsx.html +358 -0
- package/coverage/lcov-report/src/components/Progress/ProgressCircle.tsx.html +460 -0
- package/coverage/lcov-report/src/components/Progress/ProgressStep.tsx.html +352 -0
- package/coverage/lcov-report/src/components/Progress/StyledProgressBar.tsx.html +181 -0
- package/coverage/lcov-report/src/components/Progress/StyledProgressCircle.tsx.html +163 -0
- package/coverage/lcov-report/src/components/Progress/StyledStep.tsx.html +235 -0
- package/coverage/lcov-report/src/components/Progress/constants.ts.html +133 -0
- package/coverage/lcov-report/src/components/Progress/index.html +221 -0
- package/coverage/lcov-report/src/components/Progress/index.tsx.html +118 -0
- package/coverage/lcov-report/src/components/Radio/Radio.tsx.html +331 -0
- package/coverage/lcov-report/src/components/Radio/RadioGroup.tsx.html +343 -0
- package/coverage/lcov-report/src/components/Radio/StyledRadio.tsx.html +211 -0
- package/coverage/lcov-report/src/components/Radio/index.html +161 -0
- package/coverage/lcov-report/src/components/Radio/index.tsx.html +100 -0
- package/coverage/lcov-report/src/components/Rate/StyledRate.tsx.html +133 -0
- package/coverage/lcov-report/src/components/Rate/index.html +131 -0
- package/coverage/lcov-report/src/components/Rate/index.tsx.html +355 -0
- package/coverage/lcov-report/src/components/RefreshControl/index.html +116 -0
- package/coverage/lcov-report/src/components/RefreshControl/index.tsx.html +160 -0
- package/coverage/lcov-report/src/components/RichTextEditor/EditorEvent.ts.html +106 -0
- package/coverage/lcov-report/src/components/RichTextEditor/EditorToolbar.tsx.html +736 -0
- package/coverage/lcov-report/src/components/RichTextEditor/MentionList.tsx.html +382 -0
- package/coverage/lcov-report/src/components/RichTextEditor/RichTextEditor.tsx.html +1450 -0
- package/coverage/lcov-report/src/components/RichTextEditor/StyledRichTextEditor.ts.html +139 -0
- package/coverage/lcov-report/src/components/RichTextEditor/StyledToolbar.ts.html +181 -0
- package/coverage/lcov-report/src/components/RichTextEditor/constants.ts.html +112 -0
- package/coverage/lcov-report/src/components/RichTextEditor/heroEditorApp.ts.html +94 -0
- package/coverage/lcov-report/src/components/RichTextEditor/index.html +236 -0
- package/coverage/lcov-report/src/components/RichTextEditor/index.tsx.html +118 -0
- package/coverage/lcov-report/src/components/RichTextEditor/utils/events.ts.html +178 -0
- package/coverage/lcov-report/src/components/RichTextEditor/utils/index.html +131 -0
- package/coverage/lcov-report/src/components/RichTextEditor/utils/rnWebView.ts.html +142 -0
- package/coverage/lcov-report/src/components/Search/SearchOneLine.tsx.html +787 -0
- package/coverage/lcov-report/src/components/Search/SearchSuffixIcon.tsx.html +229 -0
- package/coverage/lcov-report/src/components/Search/SearchTwoLine.tsx.html +295 -0
- package/coverage/lcov-report/src/components/Search/StyledSearch.tsx.html +310 -0
- package/coverage/lcov-report/src/components/Search/index.html +191 -0
- package/coverage/lcov-report/src/components/Search/index.tsx.html +136 -0
- package/coverage/lcov-report/src/components/Search/utils.tsx.html +178 -0
- package/coverage/lcov-report/src/components/SectionHeading/StyledHeading.tsx.html +190 -0
- package/coverage/lcov-report/src/components/SectionHeading/index.html +131 -0
- package/coverage/lcov-report/src/components/SectionHeading/index.tsx.html +445 -0
- package/coverage/lcov-report/src/components/Select/BaseOptionList.tsx.html +310 -0
- package/coverage/lcov-report/src/components/Select/Footer.tsx.html +109 -0
- package/coverage/lcov-report/src/components/Select/MultiSelect/Option.tsx.html +229 -0
- package/coverage/lcov-report/src/components/Select/MultiSelect/OptionList.tsx.html +301 -0
- package/coverage/lcov-report/src/components/Select/MultiSelect/index.html +161 -0
- package/coverage/lcov-report/src/components/Select/MultiSelect/index.tsx.html +685 -0
- package/coverage/lcov-report/src/components/Select/MultiSelect/utils.ts.html +121 -0
- package/coverage/lcov-report/src/components/Select/SingleSelect/Option.tsx.html +178 -0
- package/coverage/lcov-report/src/components/Select/SingleSelect/OptionList.tsx.html +325 -0
- package/coverage/lcov-report/src/components/Select/SingleSelect/StyledSingleSelect.tsx.html +103 -0
- package/coverage/lcov-report/src/components/Select/SingleSelect/index.html +161 -0
- package/coverage/lcov-report/src/components/Select/SingleSelect/index.tsx.html +574 -0
- package/coverage/lcov-report/src/components/Select/StyledSelect.tsx.html +151 -0
- package/coverage/lcov-report/src/components/Select/helpers.tsx.html +298 -0
- package/coverage/lcov-report/src/components/Select/index.html +176 -0
- package/coverage/lcov-report/src/components/Select/index.tsx.html +115 -0
- package/coverage/lcov-report/src/components/Skeleton/StyledSkeleton.tsx.html +160 -0
- package/coverage/lcov-report/src/components/Skeleton/index.html +131 -0
- package/coverage/lcov-report/src/components/Skeleton/index.tsx.html +475 -0
- package/coverage/lcov-report/src/components/Slider/RangeSlider.tsx.html +646 -0
- package/coverage/lcov-report/src/components/Slider/SingleSlider.tsx.html +352 -0
- package/coverage/lcov-report/src/components/Slider/StyledRangeSlider.tsx.html +133 -0
- package/coverage/lcov-report/src/components/Slider/index.html +161 -0
- package/coverage/lcov-report/src/components/Slider/index.tsx.html +127 -0
- package/coverage/lcov-report/src/components/Spinner/AnimatedSpinner.tsx.html +295 -0
- package/coverage/lcov-report/src/components/Spinner/StyledSpinner.tsx.html +304 -0
- package/coverage/lcov-report/src/components/Spinner/index.html +146 -0
- package/coverage/lcov-report/src/components/Spinner/index.tsx.html +190 -0
- package/coverage/lcov-report/src/components/StatusScreens/Empty/StyledEmpty.tsx.html +223 -0
- package/coverage/lcov-report/src/components/StatusScreens/Empty/index.html +131 -0
- package/coverage/lcov-report/src/components/StatusScreens/Empty/index.tsx.html +376 -0
- package/coverage/lcov-report/src/components/StatusScreens/Error/StyledError.tsx.html +355 -0
- package/coverage/lcov-report/src/components/StatusScreens/Error/index.html +131 -0
- package/coverage/lcov-report/src/components/StatusScreens/Error/index.tsx.html +961 -0
- package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Add.tsx.html +232 -0
- package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Boom.tsx.html +268 -0
- package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Build.tsx.html +220 -0
- package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Clock.tsx.html +199 -0
- package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Confetti.tsx.html +319 -0
- package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Connections.tsx.html +256 -0
- package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Error.tsx.html +250 -0
- package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Info.tsx.html +190 -0
- package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/List.tsx.html +196 -0
- package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Location.tsx.html +196 -0
- package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Merge.tsx.html +262 -0
- package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Notifications.tsx.html +163 -0
- package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Search.tsx.html +193 -0
- package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Star.tsx.html +196 -0
- package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/Success.tsx.html +208 -0
- package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/User.tsx.html +214 -0
- package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/assets/index.html +341 -0
- package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/index.html +116 -0
- package/coverage/lcov-report/src/components/StatusScreens/StatusIcon/index.tsx.html +274 -0
- package/coverage/lcov-report/src/components/StatusScreens/Success/StyledSuccess.tsx.html +340 -0
- package/coverage/lcov-report/src/components/StatusScreens/Success/index.html +131 -0
- package/coverage/lcov-report/src/components/StatusScreens/Success/index.tsx.html +631 -0
- package/coverage/lcov-report/src/components/Swipeable/StyledSwipeable.tsx.html +118 -0
- package/coverage/lcov-report/src/components/Swipeable/SwipeableAction.tsx.html +220 -0
- package/coverage/lcov-report/src/components/Swipeable/index.html +146 -0
- package/coverage/lcov-report/src/components/Swipeable/index.tsx.html +646 -0
- package/coverage/lcov-report/src/components/Switch/SelectorSwitch/Option.tsx.html +352 -0
- package/coverage/lcov-report/src/components/Switch/SelectorSwitch/StyledSelectorSwitch.tsx.html +193 -0
- package/coverage/lcov-report/src/components/Switch/SelectorSwitch/index.html +146 -0
- package/coverage/lcov-report/src/components/Switch/SelectorSwitch/index.tsx.html +442 -0
- package/coverage/lcov-report/src/components/Switch/StyledSwitch.tsx.html +175 -0
- package/coverage/lcov-report/src/components/Switch/index.html +131 -0
- package/coverage/lcov-report/src/components/Switch/index.tsx.html +346 -0
- package/coverage/lcov-report/src/components/Tabs/ActiveTabIndicator.tsx.html +196 -0
- package/coverage/lcov-report/src/components/Tabs/SceneView.tsx.html +283 -0
- package/coverage/lcov-report/src/components/Tabs/ScrollableTabs.tsx.html +418 -0
- package/coverage/lcov-report/src/components/Tabs/ScrollableTabsHeader/ScrollableTabsHeader.tsx.html +814 -0
- package/coverage/lcov-report/src/components/Tabs/ScrollableTabsHeader/hooks/index.html +131 -0
- package/coverage/lcov-report/src/components/Tabs/ScrollableTabsHeader/hooks/useInitHighlightedAnimation.ts.html +220 -0
- package/coverage/lcov-report/src/components/Tabs/ScrollableTabsHeader/hooks/useInitUnderlinedAnimation.ts.html +358 -0
- package/coverage/lcov-report/src/components/Tabs/ScrollableTabsHeader/index.html +116 -0
- package/coverage/lcov-report/src/components/Tabs/StyledScrollableTabs.tsx.html +307 -0
- package/coverage/lcov-report/src/components/Tabs/StyledTabs.tsx.html +250 -0
- package/coverage/lcov-report/src/components/Tabs/TabWithBadge.tsx.html +247 -0
- package/coverage/lcov-report/src/components/Tabs/index.html +251 -0
- package/coverage/lcov-report/src/components/Tabs/index.tsx.html +847 -0
- package/coverage/lcov-report/src/components/Tabs/useHandlePageScroll.tsx.html +181 -0
- package/coverage/lcov-report/src/components/Tabs/useIsFocused.tsx.html +142 -0
- package/coverage/lcov-report/src/components/Tabs/utils.ts.html +124 -0
- package/coverage/lcov-report/src/components/Tag/StyledTag.tsx.html +190 -0
- package/coverage/lcov-report/src/components/Tag/index.html +131 -0
- package/coverage/lcov-report/src/components/Tag/index.tsx.html +268 -0
- package/coverage/lcov-report/src/components/TextInput/StyledTextInput.tsx.html +514 -0
- package/coverage/lcov-report/src/components/TextInput/index.html +131 -0
- package/coverage/lcov-report/src/components/TextInput/index.tsx.html +1693 -0
- package/coverage/lcov-report/src/components/TimePicker/StyledTimePicker.tsx.html +112 -0
- package/coverage/lcov-report/src/components/TimePicker/TimePickerAndroid.tsx.html +277 -0
- package/coverage/lcov-report/src/components/TimePicker/TimePickerIOS.tsx.html +376 -0
- package/coverage/lcov-report/src/components/TimePicker/index.html +161 -0
- package/coverage/lcov-report/src/components/TimePicker/index.tsx.html +130 -0
- package/coverage/lcov-report/src/components/Toast/StyledToast.tsx.html +334 -0
- package/coverage/lcov-report/src/components/Toast/Toast.tsx.html +505 -0
- package/coverage/lcov-report/src/components/Toast/ToastContainer.tsx.html +355 -0
- package/coverage/lcov-report/src/components/Toast/ToastContext.ts.html +214 -0
- package/coverage/lcov-report/src/components/Toast/ToastProvider.tsx.html +280 -0
- package/coverage/lcov-report/src/components/Toast/index.html +191 -0
- package/coverage/lcov-report/src/components/Toast/index.tsx.html +118 -0
- package/coverage/lcov-report/src/components/Toolbar/StyledToolbar.tsx.html +460 -0
- package/coverage/lcov-report/src/components/Toolbar/ToolbarGroup.tsx.html +196 -0
- package/coverage/lcov-report/src/components/Toolbar/ToolbarItem.tsx.html +448 -0
- package/coverage/lcov-report/src/components/Toolbar/ToolbarMessage.tsx.html +601 -0
- package/coverage/lcov-report/src/components/Toolbar/index.html +176 -0
- package/coverage/lcov-report/src/components/Toolbar/index.tsx.html +151 -0
- package/coverage/lcov-report/src/components/Typography/Body/StyledBody.tsx.html +223 -0
- package/coverage/lcov-report/src/components/Typography/Body/index.html +131 -0
- package/coverage/lcov-report/src/components/Typography/Body/index.tsx.html +301 -0
- package/coverage/lcov-report/src/components/Typography/Caption/StyledCaption.tsx.html +136 -0
- package/coverage/lcov-report/src/components/Typography/Caption/index.html +131 -0
- package/coverage/lcov-report/src/components/Typography/Caption/index.tsx.html +271 -0
- package/coverage/lcov-report/src/components/Typography/Label/StyledLabel.tsx.html +127 -0
- package/coverage/lcov-report/src/components/Typography/Label/index.html +131 -0
- package/coverage/lcov-report/src/components/Typography/Label/index.tsx.html +253 -0
- package/coverage/lcov-report/src/components/Typography/Text/StyledText.tsx.html +244 -0
- package/coverage/lcov-report/src/components/Typography/Text/index.html +131 -0
- package/coverage/lcov-report/src/components/Typography/Text/index.tsx.html +361 -0
- package/coverage/lcov-report/src/components/Typography/Title/StyledTitle.tsx.html +145 -0
- package/coverage/lcov-report/src/components/Typography/Title/index.html +131 -0
- package/coverage/lcov-report/src/components/Typography/Title/index.tsx.html +298 -0
- package/coverage/lcov-report/src/components/Typography/index.html +131 -0
- package/coverage/lcov-report/src/components/Typography/index.tsx.html +163 -0
- package/coverage/lcov-report/src/components/Typography/types.ts.html +142 -0
- package/coverage/lcov-report/src/index.html +131 -0
- package/coverage/lcov-report/src/index.ts.html +571 -0
- package/coverage/lcov-report/src/locales/en_AU.ts.html +115 -0
- package/coverage/lcov-report/src/locales/en_CA.ts.html +115 -0
- package/coverage/lcov-report/src/locales/index.html +146 -0
- package/coverage/lcov-report/src/locales/index.ts.html +106 -0
- package/coverage/lcov-report/src/testHelpers/index.html +116 -0
- package/coverage/lcov-report/src/testHelpers/renderWithTheme.tsx.html +133 -0
- package/coverage/lcov-report/src/theme/ThemeProvider.ts.html +142 -0
- package/coverage/lcov-report/src/theme/ThemeSwitcher.tsx.html +310 -0
- package/coverage/lcov-report/src/theme/components/accordion.ts.html +142 -0
- package/coverage/lcov-report/src/theme/components/alert.ts.html +229 -0
- package/coverage/lcov-report/src/theme/components/appCue.ts.html +151 -0
- package/coverage/lcov-report/src/theme/components/attachment.ts.html +169 -0
- package/coverage/lcov-report/src/theme/components/avatar.ts.html +259 -0
- package/coverage/lcov-report/src/theme/components/badge.ts.html +358 -0
- package/coverage/lcov-report/src/theme/components/bottomNavigation.ts.html +172 -0
- package/coverage/lcov-report/src/theme/components/bottomSheet.ts.html +193 -0
- package/coverage/lcov-report/src/theme/components/button.ts.html +445 -0
- package/coverage/lcov-report/src/theme/components/calendar.ts.html +214 -0
- package/coverage/lcov-report/src/theme/components/card.ts.html +172 -0
- package/coverage/lcov-report/src/theme/components/cardCarousel.ts.html +160 -0
- package/coverage/lcov-report/src/theme/components/carousel.ts.html +217 -0
- package/coverage/lcov-report/src/theme/components/chart.ts.html +163 -0
- package/coverage/lcov-report/src/theme/components/checkbox.ts.html +229 -0
- package/coverage/lcov-report/src/theme/components/chip.ts.html +235 -0
- package/coverage/lcov-report/src/theme/components/columnChart.ts.html +130 -0
- package/coverage/lcov-report/src/theme/components/contentNavigator.ts.html +118 -0
- package/coverage/lcov-report/src/theme/components/datePicker.ts.html +118 -0
- package/coverage/lcov-report/src/theme/components/divider.ts.html +154 -0
- package/coverage/lcov-report/src/theme/components/drawer.ts.html +190 -0
- package/coverage/lcov-report/src/theme/components/empty.ts.html +223 -0
- package/coverage/lcov-report/src/theme/components/error.ts.html +268 -0
- package/coverage/lcov-report/src/theme/components/fab.ts.html +337 -0
- package/coverage/lcov-report/src/theme/components/floatingIsland.ts.html +178 -0
- package/coverage/lcov-report/src/theme/components/icon.ts.html +172 -0
- package/coverage/lcov-report/src/theme/components/image.ts.html +121 -0
- package/coverage/lcov-report/src/theme/components/index.html +881 -0
- package/coverage/lcov-report/src/theme/components/list.ts.html +223 -0
- package/coverage/lcov-report/src/theme/components/mapPin.ts.html +235 -0
- package/coverage/lcov-report/src/theme/components/pageControl.ts.html +160 -0
- package/coverage/lcov-report/src/theme/components/pinInput.ts.html +313 -0
- package/coverage/lcov-report/src/theme/components/progress.ts.html +265 -0
- package/coverage/lcov-report/src/theme/components/radio.ts.html +193 -0
- package/coverage/lcov-report/src/theme/components/rate.ts.html +133 -0
- package/coverage/lcov-report/src/theme/components/refreshControl.ts.html +118 -0
- package/coverage/lcov-report/src/theme/components/richTextEditor.ts.html +193 -0
- package/coverage/lcov-report/src/theme/components/search.ts.html +292 -0
- package/coverage/lcov-report/src/theme/components/sectionHeading.ts.html +142 -0
- package/coverage/lcov-report/src/theme/components/select.ts.html +154 -0
- package/coverage/lcov-report/src/theme/components/skeleton.ts.html +151 -0
- package/coverage/lcov-report/src/theme/components/slider.ts.html +178 -0
- package/coverage/lcov-report/src/theme/components/spinner.ts.html +184 -0
- package/coverage/lcov-report/src/theme/components/success.ts.html +241 -0
- package/coverage/lcov-report/src/theme/components/swipeable.ts.html +151 -0
- package/coverage/lcov-report/src/theme/components/switch.ts.html +235 -0
- package/coverage/lcov-report/src/theme/components/tabs.ts.html +202 -0
- package/coverage/lcov-report/src/theme/components/tag.ts.html +274 -0
- package/coverage/lcov-report/src/theme/components/textInput.ts.html +409 -0
- package/coverage/lcov-report/src/theme/components/timePicker.ts.html +118 -0
- package/coverage/lcov-report/src/theme/components/toast.ts.html +241 -0
- package/coverage/lcov-report/src/theme/components/toolbar.ts.html +262 -0
- package/coverage/lcov-report/src/theme/components/typography.ts.html +622 -0
- package/coverage/lcov-report/src/theme/getTheme.ts.html +637 -0
- package/coverage/lcov-report/src/theme/global/borders.ts.html +187 -0
- package/coverage/lcov-report/src/theme/global/colors/eBens.ts.html +163 -0
- package/coverage/lcov-report/src/theme/global/colors/ehJobs.ts.html +127 -0
- package/coverage/lcov-report/src/theme/global/colors/ehWork.ts.html +166 -0
- package/coverage/lcov-report/src/theme/global/colors/ehWorkDark.ts.html +277 -0
- package/coverage/lcov-report/src/theme/global/colors/global.ts.html +247 -0
- package/coverage/lcov-report/src/theme/global/colors/globalDark.ts.html +238 -0
- package/coverage/lcov-report/src/theme/global/colors/index.html +326 -0
- package/coverage/lcov-report/src/theme/global/colors/jobs.ts.html +163 -0
- package/coverage/lcov-report/src/theme/global/colors/swag.ts.html +169 -0
- package/coverage/lcov-report/src/theme/global/colors/swagDark.ts.html +175 -0
- package/coverage/lcov-report/src/theme/global/colors/swagLight.ts.html +121 -0
- package/coverage/lcov-report/src/theme/global/colors/swagLightGlobal.ts.html +127 -0
- package/coverage/lcov-report/src/theme/global/colors/swagLightJobs.ts.html +121 -0
- package/coverage/lcov-report/src/theme/global/colors/swagSystemPalette.ts.html +112 -0
- package/coverage/lcov-report/src/theme/global/colors/wallet.ts.html +163 -0
- package/coverage/lcov-report/src/theme/global/colors/work.ts.html +163 -0
- package/coverage/lcov-report/src/theme/global/index.html +191 -0
- package/coverage/lcov-report/src/theme/global/index.ts.html +280 -0
- package/coverage/lcov-report/src/theme/global/scale.ts.html +172 -0
- package/coverage/lcov-report/src/theme/global/shadows/ehJobs.ts.html +196 -0
- package/coverage/lcov-report/src/theme/global/shadows/ehWork.ts.html +193 -0
- package/coverage/lcov-report/src/theme/global/shadows/ehWorkDark.ts.html +193 -0
- package/coverage/lcov-report/src/theme/global/shadows/index.html +161 -0
- package/coverage/lcov-report/src/theme/global/shadows/index.ts.html +166 -0
- package/coverage/lcov-report/src/theme/global/sizes.ts.html +172 -0
- package/coverage/lcov-report/src/theme/global/space.ts.html +181 -0
- package/coverage/lcov-report/src/theme/global/typography.ts.html +376 -0
- package/coverage/lcov-report/src/theme/index.html +161 -0
- package/coverage/lcov-report/src/theme/index.ts.html +214 -0
- package/coverage/lcov-report/src/types.ts.html +238 -0
- package/coverage/lcov-report/src/utils/functions.ts.html +91 -0
- package/coverage/lcov-report/src/utils/helpers.ts.html +424 -0
- package/coverage/lcov-report/src/utils/hooks.ts.html +172 -0
- package/coverage/lcov-report/src/utils/index.html +146 -0
- package/coverage/lcov.info +11518 -0
- package/es/index.js +5626 -692
- package/jest.config.js +1 -1
- package/lib/index.js +5550 -615
- package/locales/en_AU.d.ts +3 -0
- package/locales/en_CA.d.ts +3 -0
- package/locales/index.d.ts +5 -0
- package/locales/types.d.ts +10 -0
- package/package.json +4 -2
- package/src/components/Avatar/AvatarStack/utils.ts +6 -4
- package/src/components/Badge/Status.tsx +1 -1
- package/src/components/Badge/__tests__/Status.spec.tsx +20 -0
- package/src/components/Badge/__tests__/__snapshots__/Status.spec.tsx.snap +2 -0
- package/src/components/Chart/ChartSelect/StyledChartSelect.tsx +9 -0
- package/src/components/Chart/ChartSelect/__tests__/StyledChartSelect.spec.tsx +15 -0
- package/src/components/Chart/ChartSelect/__tests__/__snapshots__/StyledChartSelect.spec.tsx.snap +20 -0
- package/src/components/Chart/ChartSelect/__tests__/index.spec.tsx +111 -0
- package/src/components/Chart/ChartSelect/index.tsx +137 -0
- package/src/components/Chart/ColumnChart/ColumnChartContent.tsx +84 -0
- package/src/components/Chart/ColumnChart/Segment.tsx +66 -0
- package/src/components/Chart/ColumnChart/StackedSegment.tsx +99 -0
- package/src/components/Chart/ColumnChart/StyledColumnChart.tsx +9 -0
- package/src/components/Chart/ColumnChart/__tests__/ColumnChartContent.spec.tsx +68 -0
- package/src/components/Chart/ColumnChart/__tests__/Segment.spec.tsx +99 -0
- package/src/components/Chart/ColumnChart/__tests__/StackedSegment.spec.tsx +115 -0
- package/src/components/Chart/ColumnChart/__tests__/__snapshots__/StackedSegment.spec.tsx.snap +120 -0
- package/src/components/Chart/ColumnChart/__tests__/__snapshots__/index.spec.tsx.snap +1405 -0
- package/src/components/Chart/ColumnChart/__tests__/index.spec.tsx +134 -0
- package/src/components/Chart/ColumnChart/index.tsx +216 -0
- package/src/components/Chart/Line/Line.tsx +81 -0
- package/src/components/Chart/Line/__tests__/Line.spec.tsx +148 -0
- package/src/components/Chart/Line/__tests__/__snapshots__/Line.spec.tsx.snap +56 -0
- package/src/components/Chart/Line/__tests__/__snapshots__/index.spec.tsx.snap +1461 -0
- package/src/components/Chart/Line/__tests__/index.spec.tsx +112 -0
- package/src/components/Chart/Line/index.tsx +143 -0
- package/src/components/Chart/StyledChart.tsx +16 -0
- package/src/components/Chart/index.tsx +13 -0
- package/src/components/Chart/shared/AxisLabel.tsx +25 -0
- package/src/components/Chart/shared/ChartFrame.tsx +131 -0
- package/src/components/Chart/shared/ChartHeader.tsx +19 -0
- package/src/components/Chart/shared/EmptyState.tsx +83 -0
- package/src/components/Chart/shared/XAxis.tsx +69 -0
- package/src/components/Chart/shared/XAxisGrid.tsx +42 -0
- package/src/components/Chart/shared/YAxis.tsx +104 -0
- package/src/components/Chart/shared/YAxisGrid.tsx +58 -0
- package/src/components/Chart/shared/__tests__/ChartFrame.spec.tsx +125 -0
- package/src/components/Chart/shared/__tests__/ChartHeader.spec.tsx +22 -0
- package/src/components/Chart/shared/__tests__/EmptyState.spec.tsx +29 -0
- package/src/components/Chart/shared/__tests__/XAXisGrid.spec.tsx +30 -0
- package/src/components/Chart/shared/__tests__/XAxis.spec.tsx +42 -0
- package/src/components/Chart/shared/__tests__/YAxis.spec.tsx +72 -0
- package/src/components/Chart/shared/__tests__/YAxisGrid.spec.tsx +35 -0
- package/src/components/Chart/shared/__tests__/__snapshots__/ChartFrame.spec.tsx.snap +3058 -0
- package/src/components/Chart/shared/__tests__/__snapshots__/ChartHeader.spec.tsx.snap +160 -0
- package/src/components/Chart/shared/__tests__/__snapshots__/EmptyState.spec.tsx.snap +155 -0
- package/src/components/Chart/shared/__tests__/__snapshots__/XAXisGrid.spec.tsx.snap +197 -0
- package/src/components/Chart/shared/__tests__/__snapshots__/XAxis.spec.tsx.snap +369 -0
- package/src/components/Chart/shared/__tests__/__snapshots__/YAxis.spec.tsx.snap +1013 -0
- package/src/components/Chart/shared/__tests__/__snapshots__/YAxisGrid.spec.tsx.snap +228 -0
- package/src/components/Chart/shared/__tests__/niceNumbers.spec.tsx +127 -0
- package/src/components/Chart/shared/constants.ts +2 -0
- package/src/components/Chart/shared/hooks/useColorScale.ts +25 -0
- package/src/components/Chart/shared/hooks/useGenerateTicks.ts +27 -0
- package/src/components/Chart/shared/hooks/useScaleBandX.ts +17 -0
- package/src/components/Chart/shared/hooks/useScaleLinearY.ts +30 -0
- package/src/components/Chart/shared/niceNumbers.ts +68 -0
- package/src/components/Chart/types.ts +100 -0
- package/src/components/Select/MultiSelect/OptionList.tsx +1 -1
- package/src/components/Select/MultiSelect/index.tsx +2 -6
- package/src/components/Select/MultiSelect/utils.ts +7 -3
- package/src/components/Select/SingleSelect/OptionList.tsx +1 -1
- package/src/components/Select/SingleSelect/index.tsx +2 -7
- package/src/components/Select/__tests__/helpers.spec.tsx +0 -36
- package/src/components/Select/helpers.tsx +0 -75
- package/src/components/Switch/SelectorSwitch/__tests__/__snapshots__/Option.spec.tsx.snap +3 -0
- package/src/components/Switch/SelectorSwitch/__tests__/__snapshots__/index.spec.tsx.snap +1 -0
- package/src/components/Tabs/__tests__/__snapshots__/ScrollableTabs.spec.tsx.snap +3 -0
- package/src/components/Tabs/__tests__/__snapshots__/ScrollableTabsHeader.spec.tsx.snap +2 -0
- package/src/components/Tabs/__tests__/__snapshots__/TabWithBadge.spec.tsx.snap +1 -0
- package/src/components/Tabs/__tests__/__snapshots__/index.spec.tsx.snap +3 -0
- package/src/index.ts +2 -0
- package/src/theme/__tests__/__snapshots__/index.spec.ts.snap +28 -0
- package/src/theme/components/chart.ts +28 -0
- package/src/theme/components/columnChart.ts +15 -0
- package/src/theme/getTheme.ts +6 -0
- package/src/types.ts +4 -0
- package/src/utils/__tests__/helpers.spec.ts +36 -1
- package/src/utils/helpers.ts +76 -1
- package/stats/8.100.0/rn-stats.html +4842 -0
- package/stats/8.99.4/rn-stats.html +1 -1
- package/types/components/Badge/Status.d.ts +0 -1
- package/types/components/Chart/ChartSelect/StyledChartSelect.d.ts +8 -0
- package/types/components/Chart/ChartSelect/index.d.ts +63 -0
- package/types/components/Chart/ColumnChart/ColumnChartContent.d.ts +25 -0
- package/types/components/Chart/ColumnChart/Segment.d.ts +14 -0
- package/types/components/Chart/ColumnChart/StackedSegment.d.ts +28 -0
- package/types/components/Chart/ColumnChart/StyledColumnChart.d.ts +8 -0
- package/types/components/Chart/ColumnChart/index.d.ts +80 -0
- package/types/components/Chart/Line/Line.d.ts +21 -0
- package/types/components/Chart/Line/index.d.ts +35 -0
- package/types/components/Chart/StyledChart.d.ts +9 -0
- package/types/components/Chart/index.d.ts +9 -0
- package/types/components/Chart/shared/AxisContext.d.ts +8 -0
- package/types/components/Chart/shared/AxisLabel.d.ts +7 -0
- package/types/components/Chart/shared/ChartFrame.d.ts +30 -0
- package/types/components/Chart/shared/ChartHeader.d.ts +8 -0
- package/types/components/Chart/shared/EmptyState.d.ts +8 -0
- package/types/components/Chart/shared/TextWrapper.d.ts +11 -0
- package/types/components/Chart/shared/XAxis.d.ts +8 -0
- package/types/components/Chart/shared/XAxisGrid.d.ts +8 -0
- package/types/components/Chart/shared/YAxis.d.ts +10 -0
- package/types/components/Chart/shared/YAxisGrid.d.ts +10 -0
- package/types/components/Chart/shared/constants.d.ts +2 -0
- package/types/components/Chart/shared/context/AxisContext.d.ts +8 -0
- package/types/components/Chart/shared/hooks/useColorScale.d.ts +7 -0
- package/types/components/Chart/shared/hooks/useGenerateTicks.d.ts +6 -0
- package/types/components/Chart/shared/hooks/useScaleBandX.d.ts +8 -0
- package/types/components/Chart/shared/hooks/useScaleLinearY.d.ts +9 -0
- package/types/components/Chart/shared/niceNumbers.d.ts +12 -0
- package/types/components/Chart/types.d.ts +84 -0
- package/types/components/DatePicker/DatePickerDialog/AndroidDatePickerDialog.d.ts +4 -0
- package/types/components/DatePicker/DatePickerDialog/IOSDatePickerDialog.d.ts +4 -0
- package/types/components/DatePicker/DatePickerDialog/type.d.ts +50 -0
- package/types/components/DatePicker/useCalculateDate.d.ts +4 -0
- package/types/components/DatePicker/useFormatDate.d.ts +12 -0
- package/types/components/Empty/StyledEmpty.d.ts +21 -0
- package/types/components/Empty/index.d.ts +31 -0
- package/types/components/Error/StyledError.d.ts +53 -0
- package/types/components/Error/index.d.ts +56 -0
- package/types/components/Select/helpers.d.ts +0 -5
- package/types/components/Success/StyledSuccess.d.ts +49 -0
- package/types/components/Success/index.d.ts +50 -0
- package/types/index.d.ts +2 -1
- package/types/theme/components/chart.d.ts +22 -0
- package/types/theme/components/columnChart.d.ts +10 -0
- package/types/theme/getTheme.d.ts +4 -0
- package/types/theme/global/shadows/shadows.d.ts +9 -0
- package/types/theme/global/shadows/swagLight.d.ts +3 -0
- package/types/theme/global/shadows/swagLightJobs.d.ts +3 -0
- package/types/theme/global/shadows.d.ts +16 -0
- package/types/types.d.ts +3 -1
- package/types/utils/helpers.d.ts +5 -0
- package/.turbo/turbo-build.log +0 -18
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { fireEvent } from '@testing-library/react-native';
|
|
3
|
+
import renderWithTheme from '../../../../testHelpers/renderWithTheme';
|
|
4
|
+
import ColumnChart, { ColumnChartProps } from '../index';
|
|
5
|
+
|
|
6
|
+
const baseData: ColumnChartProps['data'] = [
|
|
7
|
+
{
|
|
8
|
+
label: 'Series 1',
|
|
9
|
+
data: [10, 20, 30],
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
label: 'Series 2',
|
|
13
|
+
data: [5, 15, 25],
|
|
14
|
+
},
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
const xAxisConfig = {
|
|
18
|
+
labels: ['A', 'B', 'C'],
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
describe('ColumnChart', () => {
|
|
22
|
+
it('renders without crashing', () => {
|
|
23
|
+
const { getByTestId, toJSON, getByText } = renderWithTheme(
|
|
24
|
+
<ColumnChart
|
|
25
|
+
data={baseData}
|
|
26
|
+
xAxisConfig={xAxisConfig}
|
|
27
|
+
testID="column-chart"
|
|
28
|
+
/>
|
|
29
|
+
);
|
|
30
|
+
// Simulate the onLayout event
|
|
31
|
+
fireEvent(getByTestId('column-chart'), 'layout', {
|
|
32
|
+
nativeEvent: {
|
|
33
|
+
layout: { x: 0, y: 0, width: 100, height: 200 },
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
expect(toJSON()).toMatchSnapshot();
|
|
37
|
+
|
|
38
|
+
// Check all expected y-axis labels
|
|
39
|
+
for (let value = 0; value <= 60; value += 10) {
|
|
40
|
+
expect(getByText(String(value))).toBeTruthy();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
expect(getByText('A')).toBeTruthy();
|
|
44
|
+
expect(getByText('B')).toBeTruthy();
|
|
45
|
+
expect(getByText('C')).toBeTruthy();
|
|
46
|
+
|
|
47
|
+
// Check a few segments for correct accessibilityLabel and testID
|
|
48
|
+
const segmentA1 = getByTestId('column-segment-A-Series 1');
|
|
49
|
+
expect(segmentA1.props.accessibilityLabel).toContain('value 10');
|
|
50
|
+
expect(segmentA1.props.accessibilityLabel).toContain('x-label A');
|
|
51
|
+
expect(segmentA1.props.accessibilityLabel).toContain('series Series 1');
|
|
52
|
+
|
|
53
|
+
const segmentB2 = getByTestId('column-segment-B-Series 2');
|
|
54
|
+
expect(segmentB2.props.accessibilityLabel).toContain('value 15');
|
|
55
|
+
expect(segmentB2.props.accessibilityLabel).toContain('x-label B');
|
|
56
|
+
expect(segmentB2.props.accessibilityLabel).toContain('series Series 2');
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it('throws error if xAxisConfig.labels length does not match data length', () => {
|
|
60
|
+
const badData = [{ label: 'Series 1', data: [1, 2] }];
|
|
61
|
+
const badXAxisConfig = { labels: ['A', 'B', 'C'] };
|
|
62
|
+
expect(() =>
|
|
63
|
+
renderWithTheme(
|
|
64
|
+
<ColumnChart
|
|
65
|
+
data={badData}
|
|
66
|
+
xAxisConfig={badXAxisConfig}
|
|
67
|
+
testID="bad-chart"
|
|
68
|
+
/>
|
|
69
|
+
)
|
|
70
|
+
).toThrow();
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it('renders emptyText when data is empty', () => {
|
|
74
|
+
const { getByTestId, getByText, toJSON } = renderWithTheme(
|
|
75
|
+
<ColumnChart
|
|
76
|
+
data={[]}
|
|
77
|
+
xAxisConfig={xAxisConfig}
|
|
78
|
+
testID="column-chart-empty"
|
|
79
|
+
emptyText="No data available"
|
|
80
|
+
/>
|
|
81
|
+
);
|
|
82
|
+
// Simulate the onLayout event
|
|
83
|
+
fireEvent(getByTestId('column-chart-empty'), 'layout', {
|
|
84
|
+
nativeEvent: {
|
|
85
|
+
layout: { x: 0, y: 0, width: 100, height: 200 },
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
expect(getByText('No data available')).toBeTruthy();
|
|
89
|
+
expect(toJSON()).toMatchSnapshot();
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it('throws error if any data value is negative', () => {
|
|
93
|
+
const negativeData = [
|
|
94
|
+
{ label: 'Series 1', data: [10, -5, 20] },
|
|
95
|
+
{ label: 'Series 2', data: [5, 15, 25] },
|
|
96
|
+
];
|
|
97
|
+
expect(() =>
|
|
98
|
+
renderWithTheme(
|
|
99
|
+
<ColumnChart
|
|
100
|
+
data={negativeData}
|
|
101
|
+
xAxisConfig={xAxisConfig}
|
|
102
|
+
testID="negative-chart"
|
|
103
|
+
/>
|
|
104
|
+
)
|
|
105
|
+
).toThrow('Negative values are not supported in ColumnChart');
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
it('calls onBarPress with correct info when a bar is pressed', () => {
|
|
109
|
+
const onBarPress = jest.fn();
|
|
110
|
+
const { getByTestId } = renderWithTheme(
|
|
111
|
+
<ColumnChart
|
|
112
|
+
data={baseData}
|
|
113
|
+
xAxisConfig={xAxisConfig}
|
|
114
|
+
testID="column-chart"
|
|
115
|
+
onBarPress={onBarPress}
|
|
116
|
+
/>
|
|
117
|
+
);
|
|
118
|
+
// Simulate the onLayout event
|
|
119
|
+
fireEvent(getByTestId('column-chart'), 'layout', {
|
|
120
|
+
nativeEvent: {
|
|
121
|
+
layout: { x: 0, y: 0, width: 100, height: 200 },
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
// Press the first segment (A, Series 1)
|
|
125
|
+
fireEvent.press(getByTestId('column-segment-A-Series 1'));
|
|
126
|
+
expect(onBarPress).toHaveBeenCalledWith({
|
|
127
|
+
value: 10,
|
|
128
|
+
xLabel: 'A',
|
|
129
|
+
seriesLabel: 'Series 1',
|
|
130
|
+
seriesIndex: 0,
|
|
131
|
+
xIndex: 0,
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
});
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
// ColumnChart/index.tsx
|
|
2
|
+
// This is the main entry point for the ColumnChart component in the RN chart library.
|
|
3
|
+
// It composes the full column chart, handling layout, axis configuration, empty state, and rendering grouped/stacked columns.
|
|
4
|
+
// The component is highly configurable and uses subcomponents for axes, content, and frame.
|
|
5
|
+
|
|
6
|
+
import React, { useMemo, useState, useCallback, useEffect } from 'react';
|
|
7
|
+
import { ViewStyle, LayoutChangeEvent } from 'react-native';
|
|
8
|
+
import ChartFrame from '../shared/ChartFrame';
|
|
9
|
+
import {
|
|
10
|
+
DataValue,
|
|
11
|
+
HeaderConfig,
|
|
12
|
+
Series,
|
|
13
|
+
XAxisConfig,
|
|
14
|
+
YAxisConfig,
|
|
15
|
+
} from '../types';
|
|
16
|
+
import ColumnChartContent from './ColumnChartContent';
|
|
17
|
+
import { createNiceScale } from '../shared/niceNumbers';
|
|
18
|
+
import { StyledColumnChartWrapper } from './StyledColumnChart';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Props for the ColumnChart component.
|
|
22
|
+
*
|
|
23
|
+
* @property data - The data to be displayed in the chart. Each item represents a series.
|
|
24
|
+
* @property yAxisConfig - Optional configuration for the Y axis.
|
|
25
|
+
* @property xAxisConfig - Optional configuration for the X axis.
|
|
26
|
+
* @property style - Additional style for the root View. Follows the same convention as other components (e.g., Button).
|
|
27
|
+
* @property testID - Testing id of the component. Passed to the root View and used as a suffix for inner elements.
|
|
28
|
+
* @property headerConfig - Optional header configuration (title, actions).
|
|
29
|
+
* @property emptyText - Optional text to display when data is empty.
|
|
30
|
+
* @property onBarPress - Called when a bar (column segment) is pressed. Receives info about the bar.
|
|
31
|
+
*/
|
|
32
|
+
export interface ColumnChartProps {
|
|
33
|
+
/**
|
|
34
|
+
* The data to be displayed in the chart. Each item represents a series.
|
|
35
|
+
*/
|
|
36
|
+
data: Array<Series<Array<DataValue>>>;
|
|
37
|
+
/**
|
|
38
|
+
* Optional configuration for the Y axis.
|
|
39
|
+
* Note: minValue is omitted and always set to zero internally by the component.
|
|
40
|
+
*/
|
|
41
|
+
yAxisConfig?: Omit<YAxisConfig, 'minValue'>;
|
|
42
|
+
/**
|
|
43
|
+
* Optional configuration for the X axis.
|
|
44
|
+
*/
|
|
45
|
+
xAxisConfig?: XAxisConfig;
|
|
46
|
+
/**
|
|
47
|
+
* Additional style for the root View.
|
|
48
|
+
*/
|
|
49
|
+
style?: ViewStyle;
|
|
50
|
+
/**
|
|
51
|
+
* Testing id of the component.
|
|
52
|
+
*/
|
|
53
|
+
testID?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Header configuration for the chart.
|
|
56
|
+
*/
|
|
57
|
+
headerConfig?: HeaderConfig;
|
|
58
|
+
/**
|
|
59
|
+
* Text to display when the chart has no data (empty state).
|
|
60
|
+
*/
|
|
61
|
+
emptyText?: string;
|
|
62
|
+
/**
|
|
63
|
+
* Called when a bar (column segment) is pressed. Receives info about the bar.
|
|
64
|
+
*/
|
|
65
|
+
onBarPress?: (info: {
|
|
66
|
+
value: number | undefined;
|
|
67
|
+
xLabel: string;
|
|
68
|
+
seriesLabel: string;
|
|
69
|
+
seriesIndex: number;
|
|
70
|
+
xIndex: number;
|
|
71
|
+
}) => void;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* ColumnChart component for rendering grouped/stacked column charts.
|
|
76
|
+
* Handles layout, axis configuration, empty state, and data validation.
|
|
77
|
+
* Uses ChartFrame for layout and axes, and ColumnChartContent for rendering columns.
|
|
78
|
+
*
|
|
79
|
+
* @param data - Array of series, each with a label and array of values.
|
|
80
|
+
* @param yAxisConfig - Optional Y axis configuration.
|
|
81
|
+
* @param xAxisConfig - Optional X axis configuration.
|
|
82
|
+
* @param style - Optional style for the chart container.
|
|
83
|
+
* @param testID - Optional test ID for testing.
|
|
84
|
+
* @param headerConfig - Optional header configuration (title, actions).
|
|
85
|
+
* @param emptyText - Optional text to display when data is empty.
|
|
86
|
+
* @param onBarPress - Called when a bar (column segment) is pressed. Receives info about the bar.
|
|
87
|
+
*
|
|
88
|
+
* Example usage:
|
|
89
|
+
* <ColumnChart
|
|
90
|
+
* data={data}
|
|
91
|
+
* xAxisConfig={xAxisConfig}
|
|
92
|
+
* yAxisConfig={yAxisConfig}
|
|
93
|
+
* emptyText="No data available"
|
|
94
|
+
* />
|
|
95
|
+
*/
|
|
96
|
+
const ColumnChart = ({
|
|
97
|
+
data,
|
|
98
|
+
yAxisConfig = {},
|
|
99
|
+
xAxisConfig = {},
|
|
100
|
+
style,
|
|
101
|
+
testID,
|
|
102
|
+
headerConfig,
|
|
103
|
+
emptyText,
|
|
104
|
+
onBarPress,
|
|
105
|
+
}: ColumnChartProps) => {
|
|
106
|
+
const xLabels = useMemo(() => {
|
|
107
|
+
return xAxisConfig.labels && xAxisConfig.labels.length > 0
|
|
108
|
+
? xAxisConfig.labels
|
|
109
|
+
: data[0]?.data.map((_, index) => index.toString()) || [];
|
|
110
|
+
}, [data[0]?.data.length, xAxisConfig.labels?.length]);
|
|
111
|
+
|
|
112
|
+
useEffect(() => {
|
|
113
|
+
// Validation: xLabels length must match each series' data length, only if labels are explicitly provided
|
|
114
|
+
if (xAxisConfig.labels && xAxisConfig.labels.length > 0) {
|
|
115
|
+
data.forEach((series) => {
|
|
116
|
+
if (series.data.length !== xLabels.length) {
|
|
117
|
+
throw new Error(
|
|
118
|
+
`xAxisConfig.labels length (${xLabels.length}) does not match data length (${series.data.length}) in series label: ${series.label}`
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}, [data, xAxisConfig]);
|
|
124
|
+
|
|
125
|
+
useEffect(() => {
|
|
126
|
+
// Assert that the chart does not support negative values
|
|
127
|
+
data.forEach((series) => {
|
|
128
|
+
series.data.forEach((value, idx) => {
|
|
129
|
+
if (typeof value === 'number' && value < 0) {
|
|
130
|
+
throw new Error(
|
|
131
|
+
`Negative values are not supported in ColumnChart. Found value ${value} in series "${series.label}" at index ${idx}.`
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
}, [data]);
|
|
137
|
+
|
|
138
|
+
const [dimensions, setDimensions] = useState<{
|
|
139
|
+
width: number;
|
|
140
|
+
height: number;
|
|
141
|
+
} | null>(null);
|
|
142
|
+
|
|
143
|
+
const onLayout = useCallback((event: LayoutChangeEvent) => {
|
|
144
|
+
const { width, height } = event.nativeEvent.layout;
|
|
145
|
+
if (width > 0 && height > 0) {
|
|
146
|
+
setDimensions({ width, height });
|
|
147
|
+
}
|
|
148
|
+
}, []);
|
|
149
|
+
|
|
150
|
+
// Calculate stacked maxY
|
|
151
|
+
const yMax = useMemo(
|
|
152
|
+
() =>
|
|
153
|
+
Math.max(
|
|
154
|
+
...xLabels.map((_, xIdx) =>
|
|
155
|
+
data.reduce((sum, series) => sum + (series.data[xIdx] ?? 0), 0)
|
|
156
|
+
)
|
|
157
|
+
),
|
|
158
|
+
[data, xLabels]
|
|
159
|
+
);
|
|
160
|
+
|
|
161
|
+
const niceValues = useMemo(() => {
|
|
162
|
+
const maxDataValue = yMax;
|
|
163
|
+
const minDataValue = 0;
|
|
164
|
+
return createNiceScale(minDataValue, maxDataValue);
|
|
165
|
+
}, [data]);
|
|
166
|
+
|
|
167
|
+
const yAxisStep = yAxisConfig?.step ?? niceValues.tickSpacing;
|
|
168
|
+
const yAxisInterval = yAxisConfig?.tick?.interval ?? yAxisStep;
|
|
169
|
+
|
|
170
|
+
const calculatedYAxisConfig = useMemo(() => {
|
|
171
|
+
return {
|
|
172
|
+
...yAxisConfig,
|
|
173
|
+
maxValue: yAxisConfig?.maxValue ?? niceValues.niceMax,
|
|
174
|
+
minValue: 0,
|
|
175
|
+
step: yAxisConfig?.step ?? niceValues.tickSpacing,
|
|
176
|
+
tick: {
|
|
177
|
+
interval: yAxisInterval,
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
}, [yAxisConfig, niceValues, yAxisInterval]);
|
|
181
|
+
|
|
182
|
+
const calculatedXAxisConfig = useMemo(() => {
|
|
183
|
+
return {
|
|
184
|
+
...xAxisConfig,
|
|
185
|
+
labels: xLabels,
|
|
186
|
+
};
|
|
187
|
+
}, [xAxisConfig, xLabels]);
|
|
188
|
+
|
|
189
|
+
return (
|
|
190
|
+
<StyledColumnChartWrapper style={style} testID={testID} onLayout={onLayout}>
|
|
191
|
+
{dimensions && (
|
|
192
|
+
<ChartFrame
|
|
193
|
+
isEmpty={data.length === 0}
|
|
194
|
+
xAxisConfig={calculatedXAxisConfig}
|
|
195
|
+
yAxisConfig={calculatedYAxisConfig}
|
|
196
|
+
headerConfig={headerConfig}
|
|
197
|
+
width={dimensions.width}
|
|
198
|
+
height={dimensions.height}
|
|
199
|
+
hideXAxisGrid
|
|
200
|
+
emptyText={emptyText}
|
|
201
|
+
renderContent={({ coordinates }) => (
|
|
202
|
+
<ColumnChartContent
|
|
203
|
+
coordinates={coordinates}
|
|
204
|
+
data={data}
|
|
205
|
+
xAxisConfig={calculatedXAxisConfig}
|
|
206
|
+
yAxisConfig={calculatedYAxisConfig}
|
|
207
|
+
onBarPress={onBarPress}
|
|
208
|
+
/>
|
|
209
|
+
)}
|
|
210
|
+
/>
|
|
211
|
+
)}
|
|
212
|
+
</StyledColumnChartWrapper>
|
|
213
|
+
);
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
export default ColumnChart;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import * as d3 from 'd3';
|
|
2
|
+
import React, { useMemo } from 'react';
|
|
3
|
+
import { Path } from 'react-native-svg';
|
|
4
|
+
import { DEFAULT_LINE_STROKE_WIDTH } from '../shared/constants';
|
|
5
|
+
import useScaleBandX from '../shared/hooks/useScaleBandX';
|
|
6
|
+
import useScaleLinearY from '../shared/hooks/useScaleLinearY';
|
|
7
|
+
import { AxisCoordinates, DataValue } from '../types';
|
|
8
|
+
import { useTheme } from '../../../theme';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Props for the Line chart component
|
|
12
|
+
*/
|
|
13
|
+
type LineProps = {
|
|
14
|
+
/** Array of data points to be plotted on the line chart */
|
|
15
|
+
data: DataValue[];
|
|
16
|
+
/** Maximum value for the Y-axis scale */
|
|
17
|
+
maxValue: number;
|
|
18
|
+
/** Minimum value for the Y-axis scale */
|
|
19
|
+
minValue: number;
|
|
20
|
+
/** Array of labels for the X-axis points */
|
|
21
|
+
labels: string[];
|
|
22
|
+
/** Coordinates defining the chart's boundaries and scale */
|
|
23
|
+
coordinates: AxisCoordinates;
|
|
24
|
+
/** Color for the line */
|
|
25
|
+
color?: string;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const Line = ({
|
|
29
|
+
data,
|
|
30
|
+
maxValue,
|
|
31
|
+
minValue,
|
|
32
|
+
labels,
|
|
33
|
+
coordinates,
|
|
34
|
+
color,
|
|
35
|
+
}: LineProps) => {
|
|
36
|
+
const { xStart, xEnd, yStart, yEnd } = coordinates;
|
|
37
|
+
const theme = useTheme();
|
|
38
|
+
|
|
39
|
+
// Create scales
|
|
40
|
+
const xScale = useScaleBandX({
|
|
41
|
+
labels,
|
|
42
|
+
xStart,
|
|
43
|
+
xEnd,
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
const yScale = useScaleLinearY({
|
|
47
|
+
maxValue,
|
|
48
|
+
minValue,
|
|
49
|
+
yStart,
|
|
50
|
+
yEnd,
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
// Create line generator with proper curve
|
|
54
|
+
const lineGenerator = useMemo(
|
|
55
|
+
() =>
|
|
56
|
+
d3
|
|
57
|
+
.line<DataValue>()
|
|
58
|
+
.x((_, i) => (xScale(labels[i]) ?? 0) + xScale.bandwidth() / 2)
|
|
59
|
+
.y((d) => yScale(d ?? 0))
|
|
60
|
+
.curve(d3.curveBasis),
|
|
61
|
+
[xScale, yScale, labels]
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
// Generate path data
|
|
65
|
+
const pathData = useMemo(() => lineGenerator(data), [data, lineGenerator]);
|
|
66
|
+
|
|
67
|
+
return pathData ? (
|
|
68
|
+
<Path
|
|
69
|
+
testID="line-path"
|
|
70
|
+
accessibilityLabel={`chart-line-maxValue:${maxValue},minValue:${minValue},labelsLength:${labels.length}`}
|
|
71
|
+
d={pathData}
|
|
72
|
+
stroke={color || theme.colors.secondary}
|
|
73
|
+
strokeWidth={DEFAULT_LINE_STROKE_WIDTH}
|
|
74
|
+
fill="none"
|
|
75
|
+
strokeLinecap="round"
|
|
76
|
+
strokeLinejoin="round"
|
|
77
|
+
/>
|
|
78
|
+
) : null;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export default Line;
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import renderWithTheme from '../../../../testHelpers/renderWithTheme';
|
|
3
|
+
import Line from '../Line';
|
|
4
|
+
|
|
5
|
+
describe('Line', () => {
|
|
6
|
+
it('should render with basic data', () => {
|
|
7
|
+
const { getByTestId, toJSON } = renderWithTheme(
|
|
8
|
+
<Line
|
|
9
|
+
data={[1, 2, 3]}
|
|
10
|
+
maxValue={3}
|
|
11
|
+
minValue={1}
|
|
12
|
+
labels={['1', '2', '3']}
|
|
13
|
+
coordinates={{ xStart: 50, xEnd: 300, yStart: 50, yEnd: 250 }}
|
|
14
|
+
/>
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
expect(toJSON()).toMatchSnapshot();
|
|
18
|
+
const path = getByTestId('line-path');
|
|
19
|
+
expect(path).toBeTruthy();
|
|
20
|
+
expect(path.props.accessibilityLabel).toBe(
|
|
21
|
+
'chart-line-maxValue:3,minValue:1,labelsLength:3'
|
|
22
|
+
);
|
|
23
|
+
expect(path.props.d).toBe(
|
|
24
|
+
'M96.875,250L109.896,233.333C122.917,216.667,148.958,183.333,175,150C201.042,116.667,227.083,83.333,240.104,66.667L253.125,50'
|
|
25
|
+
);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('should render with negative values', () => {
|
|
29
|
+
const { getByTestId } = renderWithTheme(
|
|
30
|
+
<Line
|
|
31
|
+
data={[-1, -2, -3]}
|
|
32
|
+
maxValue={-1}
|
|
33
|
+
minValue={-3}
|
|
34
|
+
labels={['1', '2', '3']}
|
|
35
|
+
coordinates={{ xStart: 50, xEnd: 300, yStart: 50, yEnd: 250 }}
|
|
36
|
+
/>
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
const path = getByTestId('line-path');
|
|
40
|
+
expect(path).toBeTruthy();
|
|
41
|
+
expect(path.props.accessibilityLabel).toBe(
|
|
42
|
+
'chart-line-maxValue:-1,minValue:-3,labelsLength:3'
|
|
43
|
+
);
|
|
44
|
+
expect(path.props.d).toBe(
|
|
45
|
+
'M96.875,50L109.896,66.667C122.917,83.333,148.958,116.667,175,150C201.042,183.333,227.083,216.667,240.104,233.333L253.125,250'
|
|
46
|
+
);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it('should render with mixed positive and negative values', () => {
|
|
50
|
+
const { getByTestId } = renderWithTheme(
|
|
51
|
+
<Line
|
|
52
|
+
data={[-1, 0, 1]}
|
|
53
|
+
maxValue={1}
|
|
54
|
+
minValue={-1}
|
|
55
|
+
labels={['1', '2', '3']}
|
|
56
|
+
coordinates={{ xStart: 50, xEnd: 300, yStart: 50, yEnd: 250 }}
|
|
57
|
+
/>
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
const path = getByTestId('line-path');
|
|
61
|
+
expect(path).toBeTruthy();
|
|
62
|
+
expect(path.props.accessibilityLabel).toBe(
|
|
63
|
+
'chart-line-maxValue:1,minValue:-1,labelsLength:3'
|
|
64
|
+
);
|
|
65
|
+
expect(path.props.d).toBe(
|
|
66
|
+
'M96.875,250L109.896,233.333C122.917,216.667,148.958,183.333,175,150C201.042,116.667,227.083,83.333,240.104,66.667L253.125,50'
|
|
67
|
+
);
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
it('should render with decimal values', () => {
|
|
71
|
+
const { getByTestId } = renderWithTheme(
|
|
72
|
+
<Line
|
|
73
|
+
data={[1.5, 2.5, 3.5]}
|
|
74
|
+
maxValue={3.5}
|
|
75
|
+
minValue={1.5}
|
|
76
|
+
labels={['1', '2', '3']}
|
|
77
|
+
coordinates={{ xStart: 50, xEnd: 300, yStart: 50, yEnd: 250 }}
|
|
78
|
+
/>
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
const path = getByTestId('line-path');
|
|
82
|
+
expect(path).toBeTruthy();
|
|
83
|
+
expect(path.props.accessibilityLabel).toBe(
|
|
84
|
+
'chart-line-maxValue:3.5,minValue:1.5,labelsLength:3'
|
|
85
|
+
);
|
|
86
|
+
expect(path.props.d).toBe(
|
|
87
|
+
'M96.875,250L109.896,233.333C122.917,216.667,148.958,183.333,175,150C201.042,116.667,227.083,83.333,240.104,66.667L253.125,50'
|
|
88
|
+
);
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
it('should render with different coordinates', () => {
|
|
92
|
+
const { getByTestId } = renderWithTheme(
|
|
93
|
+
<Line
|
|
94
|
+
data={[1, 2, 3]}
|
|
95
|
+
maxValue={3}
|
|
96
|
+
minValue={1}
|
|
97
|
+
labels={['1', '2', '3']}
|
|
98
|
+
coordinates={{ xStart: 100, xEnd: 400, yStart: 100, yEnd: 300 }}
|
|
99
|
+
/>
|
|
100
|
+
);
|
|
101
|
+
|
|
102
|
+
const path = getByTestId('line-path');
|
|
103
|
+
expect(path).toBeTruthy();
|
|
104
|
+
expect(path.props.accessibilityLabel).toBe(
|
|
105
|
+
'chart-line-maxValue:3,minValue:1,labelsLength:3'
|
|
106
|
+
);
|
|
107
|
+
expect(path.props.d).toBe(
|
|
108
|
+
'M156.25,300L171.875,283.333C187.5,266.667,218.75,233.333,250,200C281.25,166.667,312.5,133.333,328.125,116.667L343.75,100'
|
|
109
|
+
);
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
it('should not render when path data is null', () => {
|
|
113
|
+
const { queryByTestId } = renderWithTheme(
|
|
114
|
+
<Line
|
|
115
|
+
data={[]}
|
|
116
|
+
maxValue={0}
|
|
117
|
+
minValue={0}
|
|
118
|
+
labels={[]}
|
|
119
|
+
coordinates={{ xStart: 50, xEnd: 300, yStart: 50, yEnd: 250 }}
|
|
120
|
+
/>
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
expect(queryByTestId('line-path')).toBeNull();
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
it('should render with custom color', () => {
|
|
127
|
+
const { getByTestId } = renderWithTheme(
|
|
128
|
+
<Line
|
|
129
|
+
data={[1, 2, 3]}
|
|
130
|
+
maxValue={3}
|
|
131
|
+
minValue={1}
|
|
132
|
+
labels={['1', '2', '3']}
|
|
133
|
+
coordinates={{ xStart: 50, xEnd: 300, yStart: 50, yEnd: 250 }}
|
|
134
|
+
color="#FF0000"
|
|
135
|
+
/>
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
const path = getByTestId('line-path');
|
|
139
|
+
expect(path).toBeTruthy();
|
|
140
|
+
expect(path.props.accessibilityLabel).toBe(
|
|
141
|
+
'chart-line-maxValue:3,minValue:1,labelsLength:3'
|
|
142
|
+
);
|
|
143
|
+
expect(path.props.d).toBe(
|
|
144
|
+
'M96.875,250L109.896,233.333C122.917,216.667,148.958,183.333,175,150C201.042,116.667,227.083,83.333,240.104,66.667L253.125,50'
|
|
145
|
+
);
|
|
146
|
+
expect(path.props.stroke).toEqual({ payload: 4294901760, type: 0 });
|
|
147
|
+
});
|
|
148
|
+
});
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`Line should render with basic data 1`] = `
|
|
4
|
+
<View
|
|
5
|
+
style={
|
|
6
|
+
{
|
|
7
|
+
"flex": 1,
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
>
|
|
11
|
+
<RNSVGPath
|
|
12
|
+
accessibilityLabel="chart-line-maxValue:3,minValue:1,labelsLength:3"
|
|
13
|
+
d="M96.875,250L109.896,233.333C122.917,216.667,148.958,183.333,175,150C201.042,116.667,227.083,83.333,240.104,66.667L253.125,50"
|
|
14
|
+
fill={null}
|
|
15
|
+
propList={
|
|
16
|
+
[
|
|
17
|
+
"fill",
|
|
18
|
+
"stroke",
|
|
19
|
+
"strokeWidth",
|
|
20
|
+
"strokeLinecap",
|
|
21
|
+
"strokeLinejoin",
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
stroke={
|
|
25
|
+
{
|
|
26
|
+
"payload": 4286144144,
|
|
27
|
+
"type": 0,
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
strokeLinecap={1}
|
|
31
|
+
strokeLinejoin={1}
|
|
32
|
+
strokeWidth={2}
|
|
33
|
+
testID="line-path"
|
|
34
|
+
/>
|
|
35
|
+
<View
|
|
36
|
+
pointerEvents="box-none"
|
|
37
|
+
position="bottom"
|
|
38
|
+
style={
|
|
39
|
+
[
|
|
40
|
+
{
|
|
41
|
+
"bottom": 0,
|
|
42
|
+
"elevation": 9999,
|
|
43
|
+
"flexDirection": "column-reverse",
|
|
44
|
+
"left": 0,
|
|
45
|
+
"paddingHorizontal": 24,
|
|
46
|
+
"paddingVertical": 16,
|
|
47
|
+
"position": "absolute",
|
|
48
|
+
"right": 0,
|
|
49
|
+
"top": 0,
|
|
50
|
+
},
|
|
51
|
+
undefined,
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
/>
|
|
55
|
+
</View>
|
|
56
|
+
`;
|