@telus-uds/components-base 0.0.2-prerelease.1 → 0.0.2-prerelease.10
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/.ultra.cache.json +1 -0
- package/CHANGELOG.md +120 -0
- package/README.md +4 -2
- package/__fixtures__/Accessible.js +33 -0
- package/__fixtures__/Accessible.native.js +32 -0
- package/__fixtures__/test-utils.js +25 -0
- package/__fixtures__/testTheme.js +1146 -145
- package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +1 -1
- package/__tests__/Box/Box.test.jsx +81 -58
- package/__tests__/Button/ButtonBase.test.jsx +3 -32
- package/__tests__/Button/ButtonGroup.test.jsx +6 -7
- package/__tests__/Card/Card.test.jsx +63 -0
- package/__tests__/Checkbox/Checkbox.test.jsx +94 -0
- package/__tests__/Checkbox/CheckboxGroup.test.jsx +246 -0
- package/__tests__/Divider/Divider.test.jsx +26 -5
- package/__tests__/ExpandCollapse/ExpandCollapse.test.jsx +2 -2
- package/__tests__/Feedback/Feedback.test.jsx +42 -0
- package/__tests__/FlexGrid/Col.test.jsx +5 -0
- package/__tests__/HorizontalScroll/HorizontalScroll.test.jsx +164 -0
- package/__tests__/Icon/Icon.test.jsx +3 -3
- package/__tests__/IconButton/IconButton.test.jsx +52 -0
- package/__tests__/InputSupports/InputSupports.test.jsx +50 -0
- package/__tests__/Link/LinkBase.test.jsx +0 -14
- package/__tests__/List/List.test.jsx +60 -0
- package/__tests__/Modal/Modal.test.jsx +47 -0
- package/__tests__/Notification/Notification.test.jsx +20 -0
- package/__tests__/Pagination/Pagination.test.jsx +160 -0
- package/__tests__/Progress/Progress.test.jsx +79 -0
- package/__tests__/Radio/Radio.test.jsx +87 -0
- package/__tests__/Radio/RadioGroup.test.jsx +220 -0
- package/__tests__/RadioCard/RadioCard.test.jsx +87 -0
- package/__tests__/RadioCard/RadioCardGroup.test.jsx +246 -0
- package/__tests__/Search/Search.test.jsx +73 -0
- package/__tests__/Select/Select.test.jsx +94 -0
- package/__tests__/Skeleton/Skeleton.test.jsx +61 -0
- package/__tests__/Spacer/Spacer.test.jsx +63 -0
- package/__tests__/StackView/StackView.test.jsx +216 -0
- package/__tests__/StackView/StackWrap.test.jsx +47 -0
- package/__tests__/StackView/getStackedContent.test.jsx +295 -0
- package/__tests__/StepTracker/StepTracker.test.jsx +94 -0
- package/__tests__/Tabs/Tabs.test.jsx +40 -0
- package/__tests__/Tags/Tags.test.jsx +327 -0
- package/__tests__/TextInput/TextArea.test.jsx +35 -0
- package/__tests__/TextInput/TextInputBase.test.jsx +125 -0
- package/__tests__/ThemeProvider/ThemeProvider.test.jsx +77 -0
- package/__tests__/ThemeProvider/useThemeTokens.test.jsx +14 -8
- package/__tests__/ThemeProvider/utils/theme-tokens.test.js +41 -0
- package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +3 -2
- package/__tests__/Tooltip/Tooltip.test.jsx +65 -0
- package/__tests__/Tooltip/getTooltipPosition.test.js +79 -0
- package/__tests__/utils/children.test.jsx +128 -0
- package/__tests__/utils/input.test.js +59 -1
- package/__tests__/utils/useCopy.test.js +42 -0
- package/__tests__/utils/useResponsiveProp.test.jsx +202 -0
- package/__tests__/utils/useSpacingScale.test.jsx +273 -0
- package/__tests__/utils/useUniqueId.test.js +31 -0
- package/babel.config.js +18 -1
- package/jest.config.js +19 -9
- package/lib/A11yInfoProvider/index.js +54 -26
- package/lib/A11yText/index.js +36 -15
- package/lib/ActivityIndicator/Spinner.js +78 -0
- package/lib/ActivityIndicator/Spinner.native.js +121 -87
- package/lib/ActivityIndicator/index.js +28 -12
- package/lib/ActivityIndicator/shared.js +27 -12
- package/lib/BaseProvider/index.js +34 -11
- package/lib/Box/Box.js +214 -87
- package/lib/Box/index.js +13 -2
- package/lib/Button/Button.js +37 -11
- package/lib/Button/ButtonBase.js +119 -110
- package/lib/Button/ButtonGroup.js +98 -101
- package/lib/Button/ButtonLink.js +40 -14
- package/lib/Button/index.js +31 -4
- package/lib/Button/propTypes.js +32 -9
- package/lib/Card/Card.js +98 -0
- package/lib/Card/CardBase.js +78 -0
- package/lib/Card/PressableCardBase.js +137 -0
- package/lib/Card/index.js +40 -0
- package/lib/Checkbox/Checkbox.js +344 -0
- package/lib/Checkbox/CheckboxGroup.js +231 -0
- package/lib/Checkbox/CheckboxInput.js +74 -0
- package/lib/Checkbox/CheckboxInput.native.js +14 -0
- package/lib/Checkbox/index.js +21 -0
- package/lib/Divider/Divider.js +80 -18
- package/lib/Divider/index.js +13 -2
- package/lib/ExpandCollapse/Accordion.js +19 -8
- package/lib/ExpandCollapse/Control.js +50 -29
- package/lib/ExpandCollapse/ExpandCollapse.js +41 -24
- package/lib/ExpandCollapse/Panel.js +77 -41
- package/lib/ExpandCollapse/index.js +25 -7
- package/lib/Feedback/Feedback.js +161 -0
- package/lib/Feedback/index.js +13 -0
- package/lib/Fieldset/Fieldset.js +160 -0
- package/lib/Fieldset/FieldsetContainer.js +41 -0
- package/lib/Fieldset/FieldsetContainer.native.js +33 -0
- package/lib/Fieldset/Legend.js +33 -0
- package/lib/Fieldset/Legend.native.js +43 -0
- package/lib/Fieldset/cssReset.js +21 -0
- package/lib/Fieldset/index.js +13 -0
- package/lib/FlexGrid/Col/Col.js +66 -39
- package/lib/FlexGrid/Col/index.js +13 -2
- package/lib/FlexGrid/FlexGrid.js +70 -47
- package/lib/FlexGrid/Row/Row.js +47 -28
- package/lib/FlexGrid/Row/index.js +13 -2
- package/lib/FlexGrid/helpers/index.js +9 -1
- package/lib/FlexGrid/index.js +13 -2
- package/lib/FlexGrid/providers/GutterContext.js +15 -3
- package/lib/HorizontalScroll/HorizontalScroll.js +199 -0
- package/lib/HorizontalScroll/HorizontalScrollButton.js +121 -0
- package/lib/HorizontalScroll/ScrollViewEnd.js +66 -0
- package/lib/HorizontalScroll/ScrollViewEnd.native.js +41 -0
- package/lib/HorizontalScroll/dictionary.js +18 -0
- package/lib/HorizontalScroll/index.js +35 -0
- package/lib/HorizontalScroll/itemPositions.js +128 -0
- package/lib/Icon/Icon.js +52 -47
- package/lib/Icon/IconText.js +100 -0
- package/lib/Icon/index.js +31 -3
- package/lib/IconButton/IconButton.js +135 -0
- package/lib/IconButton/index.js +13 -0
- package/lib/InputLabel/InputLabel.js +145 -0
- package/lib/InputLabel/LabelContent.js +39 -0
- package/lib/InputLabel/LabelContent.native.js +16 -0
- package/lib/InputLabel/index.js +13 -0
- package/lib/InputSupports/InputSupports.js +104 -0
- package/lib/InputSupports/index.js +13 -0
- package/lib/InputSupports/propTypes.js +66 -0
- package/lib/InputSupports/useInputSupports.js +41 -0
- package/lib/Link/ChevronLink.js +56 -16
- package/lib/Link/InlinePressable.js +50 -0
- package/lib/Link/InlinePressable.native.js +101 -0
- package/lib/Link/Link.js +29 -14
- package/lib/Link/LinkBase.js +120 -147
- package/lib/Link/TextButton.js +46 -18
- package/lib/Link/index.js +39 -4
- package/lib/List/List.js +80 -0
- package/lib/List/ListItem.js +239 -0
- package/lib/List/index.js +13 -0
- package/lib/Modal/Modal.js +226 -0
- package/lib/Modal/dictionary.js +16 -0
- package/lib/Modal/index.js +13 -0
- package/lib/Notification/Notification.js +215 -0
- package/lib/Notification/dictionary.js +15 -0
- package/lib/Notification/index.js +13 -0
- package/lib/Pagination/PageButton.js +89 -0
- package/lib/Pagination/Pagination.js +148 -0
- package/lib/Pagination/SideButton.js +124 -0
- package/lib/Pagination/dictionary.js +25 -0
- package/lib/Pagination/index.js +13 -0
- package/lib/Pagination/usePagination.js +80 -0
- package/lib/Progress/Progress.js +99 -0
- package/lib/Progress/ProgressBar.js +146 -0
- package/lib/Progress/ProgressBarBackground.js +57 -0
- package/lib/Progress/index.js +16 -0
- package/lib/Radio/Radio.js +292 -0
- package/lib/Radio/RadioButton.js +141 -0
- package/lib/Radio/RadioGroup.js +234 -0
- package/lib/Radio/RadioInput.js +76 -0
- package/lib/Radio/RadioInput.native.js +14 -0
- package/lib/Radio/index.js +21 -0
- package/lib/RadioCard/RadioCard.js +243 -0
- package/lib/RadioCard/RadioCardGroup.js +251 -0
- package/lib/RadioCard/index.js +21 -0
- package/lib/Search/Search.js +250 -0
- package/lib/Search/dictionary.js +19 -0
- package/lib/Search/index.js +13 -0
- package/lib/Select/Group.js +33 -0
- package/lib/Select/Group.native.js +25 -0
- package/lib/Select/Item.js +29 -0
- package/lib/Select/Item.native.js +19 -0
- package/lib/Select/Picker.js +79 -0
- package/lib/Select/Picker.native.js +127 -0
- package/lib/Select/Select.js +341 -0
- package/lib/Select/index.js +19 -0
- package/lib/SideNav/Item.js +54 -35
- package/lib/SideNav/ItemContent.js +41 -15
- package/lib/SideNav/ItemsGroup.js +53 -34
- package/lib/SideNav/SideNav.js +94 -70
- package/lib/SideNav/index.js +15 -1
- package/lib/Skeleton/Skeleton.js +137 -0
- package/lib/Skeleton/index.js +13 -0
- package/lib/Skeleton/skeleton.constant.js +12 -0
- package/lib/Skeleton/skeletonWebAnimation.js +27 -0
- package/lib/Skeleton/useSkeletonNativeAnimation.js +37 -0
- package/lib/Spacer/Spacer.js +117 -0
- package/lib/Spacer/index.js +13 -0
- package/lib/StackView/StackView.js +130 -0
- package/lib/StackView/StackWrap.js +55 -0
- package/lib/StackView/StackWrap.native.js +14 -0
- package/lib/StackView/StackWrapBox.js +120 -0
- package/lib/StackView/StackWrapGap.js +71 -0
- package/lib/StackView/common.js +47 -0
- package/lib/StackView/getStackedContent.js +141 -0
- package/lib/StackView/index.js +29 -0
- package/lib/StepTracker/Step.js +245 -0
- package/lib/StepTracker/StepTracker.js +197 -0
- package/lib/StepTracker/dictionary.js +17 -0
- package/lib/StepTracker/index.js +13 -0
- package/lib/Tabs/Tabs.js +118 -0
- package/lib/Tabs/TabsItem.js +237 -0
- package/lib/Tabs/index.js +13 -0
- package/lib/Tags/Tags.js +250 -0
- package/lib/Tags/index.js +13 -0
- package/lib/TextInput/TextArea.js +109 -0
- package/lib/TextInput/TextInput.js +75 -0
- package/lib/TextInput/TextInputBase.js +255 -0
- package/lib/TextInput/index.js +23 -0
- package/lib/TextInput/propTypes.js +42 -0
- package/lib/ThemeProvider/ThemeProvider.js +46 -18
- package/lib/ThemeProvider/index.js +61 -6
- package/lib/ThemeProvider/useSetTheme.js +19 -5
- package/lib/ThemeProvider/useTheme.js +13 -4
- package/lib/ThemeProvider/useThemeTokens.js +111 -16
- package/lib/ThemeProvider/utils/index.js +31 -2
- package/lib/ThemeProvider/utils/styles.js +52 -16
- package/lib/ThemeProvider/utils/theme-tokens.js +154 -19
- package/lib/ToggleSwitch/ToggleSwitch.js +87 -93
- package/lib/ToggleSwitch/index.js +13 -2
- package/lib/Tooltip/Backdrop.js +56 -0
- package/lib/Tooltip/Backdrop.native.js +59 -0
- package/lib/Tooltip/Tooltip.js +357 -0
- package/lib/Tooltip/dictionary.js +15 -0
- package/lib/Tooltip/getTooltipPosition.js +172 -0
- package/lib/Tooltip/index.js +13 -0
- package/lib/TooltipButton/TooltipButton.js +83 -0
- package/lib/TooltipButton/index.js +13 -0
- package/lib/Typography/Typography.js +58 -49
- package/lib/Typography/index.js +13 -2
- package/lib/ViewportProvider/ViewportProvider.js +46 -0
- package/lib/ViewportProvider/index.js +22 -38
- package/lib/ViewportProvider/useViewport.js +15 -0
- package/lib/ViewportProvider/useViewportListener.js +57 -0
- package/lib/index.js +539 -17
- package/lib/utils/a11y/index.js +18 -0
- package/lib/utils/a11y/textSize.js +49 -0
- package/lib/utils/animation/index.js +15 -2
- package/lib/utils/animation/useVerticalExpandAnimation.js +28 -11
- package/lib/utils/children.js +134 -0
- package/lib/utils/index.js +163 -3
- package/lib/utils/info/index.js +19 -0
- package/lib/utils/info/platform/index.js +23 -0
- package/lib/utils/info/platform/platform.android.js +8 -0
- package/lib/utils/info/platform/platform.ios.js +8 -0
- package/lib/utils/info/platform/platform.js +8 -0
- package/lib/utils/info/platform/platform.native.js +11 -0
- package/lib/utils/info/versions.js +16 -0
- package/lib/utils/input.js +62 -38
- package/lib/utils/pressability.js +120 -0
- package/lib/utils/propTypes.js +360 -109
- package/lib/utils/useCopy.js +51 -0
- package/lib/utils/useHash.js +52 -0
- package/lib/utils/useHash.native.js +15 -0
- package/lib/utils/useResponsiveProp.js +59 -0
- package/lib/utils/useSpacingScale.js +135 -0
- package/lib/utils/useUniqueId.js +21 -0
- package/package.json +15 -14
- package/release-context.json +4 -4
- package/src/ActivityIndicator/{Spinner.web.jsx → Spinner.jsx} +0 -0
- package/src/Box/Box.jsx +180 -78
- package/src/Button/Button.jsx +9 -5
- package/src/Button/ButtonBase.jsx +74 -87
- package/src/Button/ButtonGroup.jsx +26 -43
- package/src/Button/ButtonLink.jsx +14 -4
- package/src/Button/propTypes.js +12 -2
- package/src/Card/Card.jsx +75 -0
- package/src/Card/CardBase.jsx +57 -0
- package/src/Card/PressableCardBase.jsx +112 -0
- package/src/Card/index.js +6 -0
- package/src/Checkbox/Checkbox.jsx +274 -0
- package/src/Checkbox/CheckboxGroup.jsx +196 -0
- package/src/Checkbox/CheckboxInput.jsx +55 -0
- package/src/Checkbox/CheckboxInput.native.jsx +6 -0
- package/src/Checkbox/index.js +5 -0
- package/src/Divider/Divider.jsx +38 -3
- package/src/ExpandCollapse/Control.jsx +3 -4
- package/src/ExpandCollapse/Panel.jsx +3 -3
- package/src/Feedback/Feedback.jsx +108 -0
- package/src/Feedback/index.js +3 -0
- package/src/Fieldset/Fieldset.jsx +129 -0
- package/src/Fieldset/FieldsetContainer.jsx +22 -0
- package/src/Fieldset/FieldsetContainer.native.jsx +16 -0
- package/src/Fieldset/Legend.jsx +16 -0
- package/src/Fieldset/Legend.native.jsx +22 -0
- package/src/Fieldset/cssReset.js +14 -0
- package/src/Fieldset/index.js +3 -0
- package/src/FlexGrid/Col/Col.jsx +4 -2
- package/src/HorizontalScroll/HorizontalScroll.jsx +165 -0
- package/src/HorizontalScroll/HorizontalScrollButton.jsx +108 -0
- package/src/HorizontalScroll/ScrollViewEnd.jsx +53 -0
- package/src/HorizontalScroll/ScrollViewEnd.native.jsx +24 -0
- package/src/HorizontalScroll/dictionary.js +11 -0
- package/src/HorizontalScroll/index.js +17 -0
- package/src/HorizontalScroll/itemPositions.js +101 -0
- package/src/Icon/Icon.jsx +23 -27
- package/src/Icon/IconText.jsx +63 -0
- package/src/Icon/index.js +3 -2
- package/src/IconButton/IconButton.jsx +107 -0
- package/src/IconButton/index.js +3 -0
- package/src/InputLabel/InputLabel.jsx +124 -0
- package/src/InputLabel/LabelContent.jsx +23 -0
- package/src/InputLabel/LabelContent.native.jsx +6 -0
- package/src/InputLabel/index.js +3 -0
- package/src/InputSupports/InputSupports.jsx +75 -0
- package/src/InputSupports/index.js +3 -0
- package/src/InputSupports/propTypes.js +44 -0
- package/src/InputSupports/useInputSupports.js +30 -0
- package/src/Link/ChevronLink.jsx +28 -7
- package/src/Link/InlinePressable.jsx +37 -0
- package/src/Link/InlinePressable.native.jsx +73 -0
- package/src/Link/Link.jsx +17 -13
- package/src/Link/LinkBase.jsx +71 -146
- package/src/Link/TextButton.jsx +25 -11
- package/src/Link/index.js +2 -1
- package/src/List/List.jsx +47 -0
- package/src/List/ListItem.jsx +184 -0
- package/src/List/index.js +3 -0
- package/src/Modal/Modal.jsx +185 -0
- package/src/Modal/dictionary.js +9 -0
- package/src/Modal/index.js +3 -0
- package/src/Notification/Notification.jsx +161 -0
- package/src/Notification/dictionary.js +8 -0
- package/src/Notification/index.js +3 -0
- package/src/Pagination/PageButton.jsx +70 -0
- package/src/Pagination/Pagination.jsx +135 -0
- package/src/Pagination/SideButton.jsx +82 -0
- package/src/Pagination/dictionary.js +18 -0
- package/src/Pagination/index.js +3 -0
- package/src/Pagination/usePagination.js +69 -0
- package/src/Progress/Progress.jsx +77 -0
- package/src/Progress/ProgressBar.jsx +110 -0
- package/src/Progress/ProgressBarBackground.jsx +34 -0
- package/src/Progress/index.js +6 -0
- package/src/Radio/Radio.jsx +233 -0
- package/src/Radio/RadioButton.jsx +131 -0
- package/src/Radio/RadioGroup.jsx +199 -0
- package/src/Radio/RadioInput.jsx +57 -0
- package/src/Radio/RadioInput.native.jsx +6 -0
- package/src/Radio/index.js +5 -0
- package/src/RadioCard/RadioCard.jsx +191 -0
- package/src/RadioCard/RadioCardGroup.jsx +211 -0
- package/src/RadioCard/index.js +5 -0
- package/src/Search/Search.jsx +215 -0
- package/src/Search/dictionary.js +12 -0
- package/src/Search/index.js +3 -0
- package/src/Select/Group.jsx +15 -0
- package/src/Select/Group.native.jsx +14 -0
- package/src/Select/Item.jsx +11 -0
- package/src/Select/Item.native.jsx +10 -0
- package/src/Select/Picker.jsx +67 -0
- package/src/Select/Picker.native.jsx +108 -0
- package/src/Select/Select.jsx +286 -0
- package/src/Select/index.js +8 -0
- package/src/SideNav/Item.jsx +5 -5
- package/src/SideNav/ItemsGroup.jsx +11 -13
- package/src/SideNav/SideNav.jsx +2 -1
- package/src/Skeleton/Skeleton.jsx +98 -0
- package/src/Skeleton/index.js +3 -0
- package/src/Skeleton/skeleton.constant.js +3 -0
- package/src/Skeleton/skeletonWebAnimation.js +13 -0
- package/src/Skeleton/useSkeletonNativeAnimation.js +27 -0
- package/src/Spacer/Spacer.jsx +91 -0
- package/src/Spacer/index.js +3 -0
- package/src/StackView/StackView.jsx +113 -0
- package/src/StackView/StackWrap.jsx +41 -0
- package/src/StackView/StackWrap.native.jsx +4 -0
- package/src/StackView/StackWrapBox.jsx +102 -0
- package/src/StackView/StackWrapGap.jsx +49 -0
- package/src/StackView/common.jsx +29 -0
- package/src/StackView/getStackedContent.jsx +112 -0
- package/src/StackView/index.js +6 -0
- package/src/StepTracker/Step.jsx +202 -0
- package/src/StepTracker/StepTracker.jsx +163 -0
- package/src/StepTracker/dictionary.js +10 -0
- package/src/StepTracker/index.js +3 -0
- package/src/Tabs/Tabs.jsx +92 -0
- package/src/Tabs/TabsItem.jsx +205 -0
- package/src/Tabs/index.js +3 -0
- package/src/Tags/Tags.jsx +207 -0
- package/src/Tags/index.js +3 -0
- package/src/TextInput/TextArea.jsx +78 -0
- package/src/TextInput/TextInput.jsx +52 -0
- package/src/TextInput/TextInputBase.jsx +211 -0
- package/src/TextInput/index.js +4 -0
- package/src/TextInput/propTypes.js +29 -0
- package/src/ThemeProvider/ThemeProvider.jsx +11 -7
- package/src/ThemeProvider/useSetTheme.js +4 -0
- package/src/ThemeProvider/useThemeTokens.js +85 -7
- package/src/ThemeProvider/utils/styles.js +18 -5
- package/src/ThemeProvider/utils/theme-tokens.js +106 -8
- package/src/ToggleSwitch/ToggleSwitch.jsx +25 -46
- package/src/Tooltip/Backdrop.jsx +60 -0
- package/src/Tooltip/Backdrop.native.jsx +33 -0
- package/src/Tooltip/Tooltip.jsx +294 -0
- package/src/Tooltip/dictionary.js +8 -0
- package/src/Tooltip/getTooltipPosition.js +161 -0
- package/src/Tooltip/index.js +3 -0
- package/src/TooltipButton/TooltipButton.jsx +49 -0
- package/src/TooltipButton/index.js +3 -0
- package/src/Typography/Typography.jsx +10 -24
- package/src/ViewportProvider/ViewportProvider.jsx +21 -0
- package/src/ViewportProvider/index.jsx +2 -41
- package/src/ViewportProvider/useViewport.js +5 -0
- package/src/ViewportProvider/useViewportListener.js +43 -0
- package/src/index.js +38 -1
- package/src/utils/a11y/index.js +1 -0
- package/src/utils/a11y/textSize.js +30 -0
- package/src/utils/children.jsx +119 -0
- package/src/utils/index.js +11 -0
- package/src/utils/info/index.js +8 -0
- package/src/utils/info/platform/index.js +11 -0
- package/src/utils/info/platform/platform.android.js +1 -0
- package/src/utils/info/platform/platform.ios.js +1 -0
- package/src/utils/info/platform/platform.js +1 -0
- package/src/utils/info/platform/platform.native.js +4 -0
- package/src/utils/info/versions.js +6 -0
- package/src/utils/input.js +38 -26
- package/src/utils/pressability.js +96 -0
- package/src/utils/propTypes.js +298 -66
- package/src/utils/useCopy.js +39 -0
- package/src/utils/useHash.js +39 -0
- package/src/utils/useHash.native.js +6 -0
- package/src/utils/useResponsiveProp.js +50 -0
- package/src/utils/useSpacingScale.js +108 -0
- package/src/utils/useUniqueId.js +14 -0
- package/stories/A11yText/A11yText.stories.jsx +15 -13
- package/stories/ActivityIndicator/ActivityIndicator.stories.jsx +11 -2
- package/stories/Box/Box.stories.jsx +46 -17
- package/stories/Button/Button.stories.jsx +21 -20
- package/stories/Button/ButtonGroup.stories.jsx +2 -1
- package/stories/Button/ButtonLink.stories.jsx +6 -4
- package/stories/Card/Card.stories.jsx +62 -0
- package/stories/Checkbox/Checkbox.stories.jsx +94 -0
- package/stories/Divider/Divider.stories.jsx +26 -2
- package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +74 -79
- package/stories/Feedback/Feedback.stories.jsx +96 -0
- package/stories/FlexGrid/01 FlexGrid.stories.jsx +20 -7
- package/stories/Icon/Icon.stories.jsx +35 -7
- package/stories/IconButton/IconButton.stories.jsx +50 -0
- package/stories/InputLabel/InputLabel.stories.jsx +42 -0
- package/stories/Link/ChevronLink.stories.jsx +20 -4
- package/stories/Link/Link.stories.jsx +51 -20
- package/stories/Link/TextButton.stories.jsx +24 -3
- package/stories/List/List.stories.jsx +117 -0
- package/stories/Modal/Modal.stories.jsx +29 -0
- package/stories/Notification/Notification.stories.jsx +82 -0
- package/stories/Pagination/Pagination.stories.jsx +64 -0
- package/stories/Progress/Progress.stories.jsx +93 -0
- package/stories/Radio/Radio.stories.jsx +100 -0
- package/stories/RadioCard/RadioCard.stories.jsx +98 -0
- package/stories/Search/Search.stories.jsx +16 -0
- package/stories/Select/Select.stories.jsx +55 -0
- package/stories/SideNav/SideNav.stories.jsx +17 -2
- package/stories/Skeleton/Skeleton.stories.jsx +36 -0
- package/stories/Spacer/Spacer.stories.jsx +38 -0
- package/stories/StackView/StackView.stories.jsx +75 -0
- package/stories/StackView/StackWrap.stories.jsx +64 -0
- package/stories/StepTracker/StepTracker.stories.jsx +71 -0
- package/stories/Tabs/Tabs.stories.jsx +97 -0
- package/stories/Tags/Tags.stories.jsx +69 -0
- package/stories/TextInput/TextArea.stories.jsx +100 -0
- package/stories/TextInput/TextInput.stories.jsx +103 -0
- package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +16 -3
- package/stories/Tooltip/Tooltip.stories.jsx +81 -0
- package/stories/TooltipButton/TooltipButton.stories.jsx +11 -0
- package/stories/Typography/Typography.stories.jsx +12 -3
- package/stories/{platform-supports.web.jsx → platform-supports.jsx} +1 -1
- package/stories/supports.jsx +148 -14
- package/__fixtures__/accessible.icon.svg +0 -6
- package/docs/Contributing.stories.mdx +0 -9
- package/docs/Fonts.stories.mdx +0 -104
- package/docs/Icons.stories.mdx +0 -144
- package/docs/Introduction.stories.mdx +0 -9
- package/lib/ActivityIndicator/Spinner.web.js +0 -57
- package/lib/config/svgr-icons-web.js +0 -9
- package/lib/config/svgr-icons.js +0 -52
- package/src/config/svgr-icons-web.js +0 -11
- package/src/config/svgr-icons.js +0 -46
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { useViewport } from '../ViewportProvider'
|
|
2
|
+
import { useThemeTokens } from '../ThemeProvider'
|
|
3
|
+
import { resolveResponsiveProp } from './useResponsiveProp'
|
|
4
|
+
/**
|
|
5
|
+
* @typedef {import('@telus-uds/system-constants/viewports').Viewport} Viewport
|
|
6
|
+
* @typedef {import('./propTypes.js').SpacingValue} SpacingValue
|
|
7
|
+
* @typedef {import('./propTypes.js').SpacingIndex} SpacingIndex
|
|
8
|
+
* @typedef {import('./propTypes.js').SpacingObject} SpacingObject
|
|
9
|
+
* @typedef {import('./propTypes.js').SpacingOptions} SpacingOptions
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const resolveSpacingOptions = (space) => {
|
|
13
|
+
if (!space?.options) return {}
|
|
14
|
+
|
|
15
|
+
const { size, variant, subtract = 0 } = space.options
|
|
16
|
+
const overridden = typeof size === 'number'
|
|
17
|
+
|
|
18
|
+
// Might need an option that adapts the size value by current user's system font scale, so that
|
|
19
|
+
// meaningful spacing between items doesn't disappear on the highest a11y font scale settings.
|
|
20
|
+
// https://github.com/telus/universal-design-system/issues/583
|
|
21
|
+
|
|
22
|
+
return { tokens: { size }, variant, overridden, subtract }
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Pass a {@link SpacingValue}, which is one of:
|
|
27
|
+
*
|
|
28
|
+
* - A number 0-11 ({@link SpacingIndex}) pointing to an index on the theme's spacing scale
|
|
29
|
+
* - Or, an object ({@link SpacingObject}), with optional properties:
|
|
30
|
+
* - `xs`, `sm`, `md`, `lg`, `xl`: {@link SpacingIndex} to apply at or above these specified {@link Viewport}
|
|
31
|
+
* - `options`: an optional {@link SpacingOptions} object, see below
|
|
32
|
+
* - `space`: a {@link SpacingIndex} to apply to all viewports (can be used alongside `options`)
|
|
33
|
+
*
|
|
34
|
+
* ## Example
|
|
35
|
+
*
|
|
36
|
+
* If the theme's spacing scale is `[0, 4, 8, 12, 16, 24, 48]` with no theme rules:
|
|
37
|
+
*
|
|
38
|
+
* - `useSpacingScale(0)` returns `0`
|
|
39
|
+
* - `useSpacingScale(2)` returns `8`
|
|
40
|
+
* - `useSpacingScale({ xs: 3, lg: 4 })` returns `12` at 'xs', 'sm' or 'md' viewports, and `16` at 'lg' or 'xl'.
|
|
41
|
+
*
|
|
42
|
+
* These viewport properties are intended to support case-specific responsive layout changes, for example, where a
|
|
43
|
+
* grid item drops or adds spacing on a particular side at viewports where the parent changes the layout shape.
|
|
44
|
+
*
|
|
45
|
+
* ## Theming
|
|
46
|
+
*
|
|
47
|
+
* A theme's `'spacingScale'` has theme rules and appearances same as components, and may support `viewport`.
|
|
48
|
+
* For example, a theme with the following rule would change index [2] above from `8` to `12` on large viewports:
|
|
49
|
+
*
|
|
50
|
+
* ```json
|
|
51
|
+
* { if: { space: 2, viewport: ['lg', 'xl'] }, tokens: { size: 12 }}
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* Setting responsive spacing in the theme is the preferred way to adapt the aesthetic tightness or looseness of
|
|
55
|
+
* a theme to the available space without changing the shape of the layout itself.
|
|
56
|
+
*
|
|
57
|
+
* ## Options
|
|
58
|
+
*
|
|
59
|
+
* Space values passed as objects may have an `options` key, with the following optional properties:
|
|
60
|
+
*
|
|
61
|
+
* - `variant`: Themes may choose to have spacing scale variants, same as variants in component themes.
|
|
62
|
+
* For example, if a theme rule contains `{ if: { space: 2, compact: true }, tokens: { size: 6 }}`,
|
|
63
|
+
* this tighter spacing can be accessed with:
|
|
64
|
+
*
|
|
65
|
+
* ```jsx
|
|
66
|
+
* const compactSize = useSpacingScale({ space: 2, options: { variant: { compact: true }}})`
|
|
67
|
+
* ```
|
|
68
|
+
*
|
|
69
|
+
* - `subtract`: Sometimes on-brand spacing needs to be reduced by another value to achieve an on-brand result.
|
|
70
|
+
* For example, a component with a variable border may want to subtract its border width from its padding so
|
|
71
|
+
* the total distance from content edge to bounding box is a valid theme value, regardless of border width:
|
|
72
|
+
*
|
|
73
|
+
* ```jsx
|
|
74
|
+
* const padding = useSpacingScale({ space: 2, options: { subtract: themeTokens.borderWidth }})
|
|
75
|
+
* ```
|
|
76
|
+
*
|
|
77
|
+
* - `size`: In exceptional cases, the theme's spacing scale may be bypassed by passing a `size` option.
|
|
78
|
+
* This can result in layouts that may be rejected for being off-brand so should only be used as a
|
|
79
|
+
* last resort for fixing layout problems (e.g. when working around non-branded embedded content).
|
|
80
|
+
* Where possible, fixing layout issues using a spacing scale value and the `subtract` option is preferred.
|
|
81
|
+
*
|
|
82
|
+
* ```jsx
|
|
83
|
+
* // Comments should be included when `size` is used, stating why this off-brand size is needed
|
|
84
|
+
* const iframeOffset = useSpacingScale({ options: { size: 13 }})`
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* ## References
|
|
88
|
+
*
|
|
89
|
+
* `/ADRs/inter-component-spacing/README.md` - ADR on this structure
|
|
90
|
+
*
|
|
91
|
+
* @param {SpacingValue} [spaceValue] - a {@link SpacingIndex} number, or a {@link SpacingObject}
|
|
92
|
+
* @returns {number}
|
|
93
|
+
*/
|
|
94
|
+
const useSpacingScale = (spaceValue) => {
|
|
95
|
+
// In future, may need to consider window height as well as width, particularly for native apps,
|
|
96
|
+
// e.g. to ensure designs don't look lost on large, tall, not-so-wide portrait screens.
|
|
97
|
+
const viewport = useViewport()
|
|
98
|
+
const { tokens, variant, overridden, subtract = 0 } = resolveSpacingOptions(spaceValue)
|
|
99
|
+
const space = !overridden && (spaceValue?.space ?? resolveResponsiveProp(spaceValue, viewport, 0))
|
|
100
|
+
|
|
101
|
+
const { size } = useThemeTokens('spacingScale', tokens, variant, {
|
|
102
|
+
space: typeof space === 'number' ? space : 0,
|
|
103
|
+
viewport
|
|
104
|
+
})
|
|
105
|
+
return Math.max(size - subtract, 0)
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export default useSpacingScale
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/* eslint-disable react/no-multi-comp */
|
|
2
2
|
import React from 'react'
|
|
3
|
-
import { StyleSheet,
|
|
3
|
+
import { StyleSheet, View } from 'react-native'
|
|
4
4
|
|
|
5
5
|
import A11yText from '../../lib/A11yText'
|
|
6
6
|
import { Button, Typography } from '../../lib'
|
|
7
|
+
import { EachParentType, parentTypesParams } from '../supports'
|
|
7
8
|
|
|
8
9
|
const defaultArgs = {
|
|
9
10
|
text: 'This text is for screen readers,',
|
|
@@ -31,6 +32,10 @@ const Template = (args) => (
|
|
|
31
32
|
</>
|
|
32
33
|
)
|
|
33
34
|
|
|
35
|
+
export const Default = (args) => <A11yText {...args} />
|
|
36
|
+
Default.storyName = 'A11yText'
|
|
37
|
+
Default.args = defaultArgs
|
|
38
|
+
|
|
34
39
|
export const A11yTextInText = Template.bind({})
|
|
35
40
|
A11yTextInText.args = defaultArgs
|
|
36
41
|
|
|
@@ -39,23 +44,20 @@ A11yTextAsHeading.args = { ...defaultArgs, heading: true }
|
|
|
39
44
|
|
|
40
45
|
export const A11yTextInButton = (args) => (
|
|
41
46
|
<Button onPress={() => {}}>
|
|
42
|
-
{
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
<Text style={textStyles}>A11yText sandwich</Text>
|
|
46
|
-
<A11yText {...args} />
|
|
47
|
-
</>
|
|
48
|
-
)}
|
|
47
|
+
<A11yText {...args} />
|
|
48
|
+
A11yText sandwich
|
|
49
|
+
<A11yText {...args} />
|
|
49
50
|
</Button>
|
|
50
51
|
)
|
|
51
52
|
A11yTextInButton.args = defaultArgs
|
|
52
53
|
|
|
53
|
-
export const
|
|
54
|
-
<
|
|
55
|
-
<Template {...args} />
|
|
56
|
-
</
|
|
54
|
+
export const ParentTypes = (args) => (
|
|
55
|
+
<EachParentType {...args}>
|
|
56
|
+
{({ label }) => <Template {...args} key={label} text={label} />}
|
|
57
|
+
</EachParentType>
|
|
57
58
|
)
|
|
58
|
-
|
|
59
|
+
ParentTypes.args = defaultArgs
|
|
60
|
+
ParentTypes.parameters = parentTypesParams
|
|
59
61
|
|
|
60
62
|
const styles = StyleSheet.create({
|
|
61
63
|
// Use borders so any hairline gaps created by A11yText are visible
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
/* eslint-disable react/no-multi-comp */
|
|
1
2
|
import React from 'react'
|
|
2
3
|
import { ActivityIndicator } from '../../lib'
|
|
4
|
+
import { EachParentType, parentTypesParams } from '../supports'
|
|
3
5
|
|
|
4
6
|
export default {
|
|
5
7
|
title: 'Base/ActivityIndicator',
|
|
@@ -9,5 +11,12 @@ export default {
|
|
|
9
11
|
}
|
|
10
12
|
}
|
|
11
13
|
|
|
12
|
-
export const
|
|
13
|
-
|
|
14
|
+
export const Default = (args) => <ActivityIndicator {...args} />
|
|
15
|
+
Default.storyName = 'ActivityIndicator'
|
|
16
|
+
|
|
17
|
+
export const ParentTypes = (args) => (
|
|
18
|
+
<EachParentType {...args}>
|
|
19
|
+
{({ label }) => <ActivityIndicator {...args} label={label} />}
|
|
20
|
+
</EachParentType>
|
|
21
|
+
)
|
|
22
|
+
ParentTypes.parameters = parentTypesParams
|
|
@@ -2,21 +2,26 @@
|
|
|
2
2
|
import React from 'react'
|
|
3
3
|
|
|
4
4
|
import { View, StyleSheet } from 'react-native'
|
|
5
|
-
import { Box } from '../../lib'
|
|
6
|
-
import {
|
|
5
|
+
import { Box, Typography } from '../../lib'
|
|
6
|
+
import {
|
|
7
|
+
spacingObjectArg,
|
|
8
|
+
Container,
|
|
9
|
+
Placeholder,
|
|
10
|
+
EachParentType,
|
|
11
|
+
parentTypesParams
|
|
12
|
+
} from '../supports'
|
|
7
13
|
|
|
8
14
|
export default {
|
|
9
15
|
title: 'Base/Box',
|
|
10
|
-
component: Box
|
|
11
|
-
parameters: {
|
|
12
|
-
padded: false
|
|
13
|
-
}
|
|
16
|
+
component: Box
|
|
14
17
|
}
|
|
15
18
|
|
|
16
19
|
const Template = (args) => (
|
|
17
|
-
<
|
|
18
|
-
<
|
|
19
|
-
|
|
20
|
+
<Container margin={0} padding={0} borderWidth={1} offWhite>
|
|
21
|
+
<Box {...args}>
|
|
22
|
+
<Placeholder>Box</Placeholder>
|
|
23
|
+
</Box>
|
|
24
|
+
</Container>
|
|
20
25
|
)
|
|
21
26
|
|
|
22
27
|
const ScrollTemplate = (args) => (
|
|
@@ -68,39 +73,49 @@ const ScrollTemplate = (args) => (
|
|
|
68
73
|
</View>
|
|
69
74
|
)
|
|
70
75
|
|
|
71
|
-
const spacings = { xs: 2, sm: 4, md: 6, lg: 8, xl: 10 }
|
|
72
|
-
|
|
73
76
|
const styles = StyleSheet.create({
|
|
74
77
|
fixedHeight: { height: 200, overflow: 'hidden' }
|
|
75
78
|
})
|
|
79
|
+
|
|
80
|
+
export const Default = (args) => <Box {...args} />
|
|
81
|
+
Default.storyName = 'Box'
|
|
82
|
+
Default.args = { children: <Typography>Box</Typography> }
|
|
83
|
+
// By default the JSX object is shown as a huge human-unreadable JSON tree control; turn it off
|
|
84
|
+
Default.argTypes = { children: { control: { disable: true } } }
|
|
85
|
+
|
|
76
86
|
export const Top = Template.bind({})
|
|
77
87
|
Top.args = {
|
|
78
|
-
top:
|
|
88
|
+
top: spacingObjectArg
|
|
79
89
|
}
|
|
80
90
|
|
|
81
91
|
export const Bottom = Template.bind({})
|
|
82
92
|
Bottom.args = {
|
|
83
|
-
bottom:
|
|
93
|
+
bottom: spacingObjectArg
|
|
84
94
|
}
|
|
85
95
|
|
|
86
96
|
export const Left = Template.bind({})
|
|
87
97
|
Left.args = {
|
|
88
|
-
left:
|
|
98
|
+
left: spacingObjectArg
|
|
89
99
|
}
|
|
90
100
|
|
|
91
101
|
export const Right = Template.bind({})
|
|
92
102
|
Right.args = {
|
|
93
|
-
right:
|
|
103
|
+
right: spacingObjectArg
|
|
94
104
|
}
|
|
95
105
|
|
|
96
106
|
export const Horizontal = Template.bind({})
|
|
97
107
|
Horizontal.args = {
|
|
98
|
-
horizontal:
|
|
108
|
+
horizontal: spacingObjectArg
|
|
99
109
|
}
|
|
100
110
|
|
|
101
111
|
export const Vertical = Template.bind({})
|
|
102
112
|
Vertical.args = {
|
|
103
|
-
vertical:
|
|
113
|
+
vertical: spacingObjectArg
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export const AllSides = Template.bind({})
|
|
117
|
+
AllSides.args = {
|
|
118
|
+
space: spacingObjectArg
|
|
104
119
|
}
|
|
105
120
|
|
|
106
121
|
export const Scroll = ScrollTemplate.bind({})
|
|
@@ -112,3 +127,17 @@ export const NoScroll = ScrollTemplate.bind({})
|
|
|
112
127
|
NoScroll.args = {
|
|
113
128
|
scroll: false
|
|
114
129
|
}
|
|
130
|
+
|
|
131
|
+
export const ParentTypes = (args) => (
|
|
132
|
+
<EachParentType componentThemeName="Box" {...args}>
|
|
133
|
+
{({ label, variant }) => (
|
|
134
|
+
<Container key={label} margin={0} padding={0} borderWidth={1} dark>
|
|
135
|
+
<Box {...args} variant={variant}>
|
|
136
|
+
<Placeholder>{label}</Placeholder>
|
|
137
|
+
</Box>
|
|
138
|
+
</Container>
|
|
139
|
+
)}
|
|
140
|
+
</EachParentType>
|
|
141
|
+
)
|
|
142
|
+
ParentTypes.args = { space: 2 }
|
|
143
|
+
ParentTypes.parameters = parentTypesParams
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
/* eslint-disable react/no-multi-comp */
|
|
1
2
|
import React from 'react'
|
|
2
|
-
import { Button
|
|
3
|
-
import { Container, useVariants,
|
|
3
|
+
import { Button, useTheme } from '../../lib'
|
|
4
|
+
import { Container, useVariants, EachParentType, parentTypesParams } from '../supports'
|
|
4
5
|
import { getComponentTheme } from '../../lib/ThemeProvider/utils'
|
|
5
6
|
|
|
6
|
-
export const
|
|
7
|
+
export const Default = (args) => <Button {...args} />
|
|
8
|
+
Default.storyName = 'Button'
|
|
7
9
|
|
|
8
10
|
const defaultLabel = "I'm a button"
|
|
9
11
|
|
|
@@ -14,7 +16,8 @@ export default {
|
|
|
14
16
|
// eslint-disable-next-line no-console
|
|
15
17
|
onPress: () => console.log('Button pressed'),
|
|
16
18
|
children: defaultLabel,
|
|
17
|
-
variant: {} // @TODO work out why this isn't coming from jsdoc
|
|
19
|
+
variant: {}, // @TODO work out why this isn't coming from jsdoc
|
|
20
|
+
tokens: {}
|
|
18
21
|
}
|
|
19
22
|
}
|
|
20
23
|
|
|
@@ -52,20 +55,18 @@ LongLabelButtonVariants.args = {
|
|
|
52
55
|
children: 'This button has a label that is much longer than is considered advisable'
|
|
53
56
|
}
|
|
54
57
|
|
|
55
|
-
export const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
<Container borderWidth={1} key={parentLabel} offWhite>
|
|
59
|
-
<ParentType>
|
|
60
|
-
{variants.map(([key, value, variantLabel]) => {
|
|
61
|
-
const label = `${parentLabel}: ${variantLabel}`
|
|
62
|
-
return (
|
|
63
|
-
<Button {...args} key={label} variant={{ [key]: value }}>
|
|
64
|
-
{label}
|
|
65
|
-
</Button>
|
|
66
|
-
)
|
|
67
|
-
})}
|
|
68
|
-
</ParentType>
|
|
69
|
-
</Container>
|
|
70
|
-
))
|
|
58
|
+
export const ShortLabelButtonVariants = VariantsTemplate.bind({})
|
|
59
|
+
ShortLabelButtonVariants.args = {
|
|
60
|
+
children: 'k'
|
|
71
61
|
}
|
|
62
|
+
|
|
63
|
+
export const ParentTypes = (args) => (
|
|
64
|
+
<EachParentType componentThemeName="Button" {...args}>
|
|
65
|
+
{({ label, variant }) => (
|
|
66
|
+
<Button {...args} key={label} variant={variant}>
|
|
67
|
+
{label}
|
|
68
|
+
</Button>
|
|
69
|
+
)}
|
|
70
|
+
</EachParentType>
|
|
71
|
+
)
|
|
72
|
+
ParentTypes.parameters = parentTypesParams
|
|
@@ -59,7 +59,8 @@ const ControlledTemplate = ({ values, ...args }) => {
|
|
|
59
59
|
|
|
60
60
|
ControlledTemplate.propTypes = ButtonGroup.propTypes
|
|
61
61
|
|
|
62
|
-
export const
|
|
62
|
+
export const Default = UncontrolledTemplate.bind({})
|
|
63
|
+
Default.storyName = 'ButtonGroup'
|
|
63
64
|
|
|
64
65
|
export const ButtonGroupMaxThree = UncontrolledTemplate.bind({})
|
|
65
66
|
ButtonGroupMaxThree.args = { maxValues: 3 }
|
|
@@ -6,7 +6,7 @@ export default {
|
|
|
6
6
|
title: 'Base/ButtonLink',
|
|
7
7
|
component: ButtonLink,
|
|
8
8
|
args: {
|
|
9
|
-
|
|
9
|
+
children: "I'm a button link",
|
|
10
10
|
href: 'https://telus.com',
|
|
11
11
|
target: '_blank',
|
|
12
12
|
rel: 'nofollow'
|
|
@@ -18,11 +18,13 @@ const Template = (args) => {
|
|
|
18
18
|
return variants.map(([key, value, label]) => (
|
|
19
19
|
<Container key={`${key}:${value}`} dark={key === 'inverse'}>
|
|
20
20
|
<ButtonLink {...args} href="https://telus.com" variant={{ [key]: value }}>
|
|
21
|
-
{args.label || `
|
|
21
|
+
{args.label || `ButtonLink ${label}`}
|
|
22
22
|
</ButtonLink>
|
|
23
23
|
</Container>
|
|
24
24
|
))
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
export const
|
|
28
|
-
|
|
27
|
+
export const Default = (args) => <ButtonLink {...args} />
|
|
28
|
+
Default.storyName = 'ButtonLink'
|
|
29
|
+
|
|
30
|
+
export const Variants = Template.bind({})
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/* eslint-disable react/no-multi-comp */
|
|
2
|
+
import React from 'react'
|
|
3
|
+
import { StyleSheet, Text, View } from 'react-native'
|
|
4
|
+
|
|
5
|
+
import { Card } from '../../lib'
|
|
6
|
+
import { Container, useVariants, EachParentType, parentTypesParams } from '../supports'
|
|
7
|
+
|
|
8
|
+
export default {
|
|
9
|
+
title: 'Base/Card',
|
|
10
|
+
component: Card
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const styles = StyleSheet.create({
|
|
14
|
+
cardContent: {
|
|
15
|
+
padding: 4,
|
|
16
|
+
borderWidth: 1,
|
|
17
|
+
borderColor: '#C12335',
|
|
18
|
+
borderStyle: 'dashed',
|
|
19
|
+
backgroundColor: '#FFF6F8'
|
|
20
|
+
}
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
export const Default = (args) => (
|
|
24
|
+
<Card {...args}>
|
|
25
|
+
<View style={styles.cardContent}>
|
|
26
|
+
<Text>This is a card</Text>
|
|
27
|
+
</View>
|
|
28
|
+
</Card>
|
|
29
|
+
)
|
|
30
|
+
Default.storyName = 'Card'
|
|
31
|
+
Default.argTypes = {
|
|
32
|
+
children: { table: { disable: true } }
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export const CardVariants = (args) => {
|
|
36
|
+
const variants = useVariants('Card')
|
|
37
|
+
const cardVariants = variants.map(([key, value, label]) => (
|
|
38
|
+
<Container key={`${key}:${value}`} padding={16}>
|
|
39
|
+
<Card {...args} variant={{ [key]: value }}>
|
|
40
|
+
<View style={styles.cardContent}>
|
|
41
|
+
<Text>
|
|
42
|
+
Card with
|
|
43
|
+
{` ${label}`}
|
|
44
|
+
</Text>
|
|
45
|
+
</View>
|
|
46
|
+
</Card>
|
|
47
|
+
</Container>
|
|
48
|
+
))
|
|
49
|
+
|
|
50
|
+
return cardVariants
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export const ParentTypes = (args) => (
|
|
54
|
+
<EachParentType componentThemeName="Card" {...args}>
|
|
55
|
+
{({ label, variant }) => (
|
|
56
|
+
<Card {...args} variant={variant} key={label}>
|
|
57
|
+
<Text>{label}</Text>
|
|
58
|
+
</Card>
|
|
59
|
+
)}
|
|
60
|
+
</EachParentType>
|
|
61
|
+
)
|
|
62
|
+
ParentTypes.parameters = parentTypesParams
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/* eslint-disable react/no-multi-comp */
|
|
2
|
+
import React from 'react'
|
|
3
|
+
|
|
4
|
+
import { Checkbox, CheckboxGroup, Typography } from '../../lib'
|
|
5
|
+
import { Container, EachParentType, parentTypesParams } from '../supports'
|
|
6
|
+
|
|
7
|
+
export default {
|
|
8
|
+
title: 'Base/Checkbox',
|
|
9
|
+
component: Checkbox,
|
|
10
|
+
argTypes: {
|
|
11
|
+
checked: {
|
|
12
|
+
control: { type: 'radio' },
|
|
13
|
+
options: [true, false, undefined]
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
args: {
|
|
17
|
+
label: 'Checkbox',
|
|
18
|
+
checked: undefined
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const Template = (args) => (
|
|
23
|
+
<Container>
|
|
24
|
+
<Checkbox {...args} />
|
|
25
|
+
</Container>
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
export const Default = Template.bind({})
|
|
29
|
+
Default.argTypes = {
|
|
30
|
+
checked: { table: { disable: true } }
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export const Controlled = Template.bind({})
|
|
34
|
+
Controlled.argTypes = {
|
|
35
|
+
defaultChecked: { table: { disable: true } }
|
|
36
|
+
}
|
|
37
|
+
Controlled.args = {
|
|
38
|
+
checked: false,
|
|
39
|
+
defaultChecked: undefined
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export const Inactive = Template.bind({})
|
|
43
|
+
Inactive.argTypes = {
|
|
44
|
+
inactive: { table: { disable: true } }
|
|
45
|
+
}
|
|
46
|
+
Inactive.args = {
|
|
47
|
+
inactive: true
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export const WithFeedback = Template.bind({})
|
|
51
|
+
WithFeedback.argTypes = {
|
|
52
|
+
feedback: { table: { disable: true } }
|
|
53
|
+
}
|
|
54
|
+
WithFeedback.args = {
|
|
55
|
+
feedback: 'Something happened'
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export const CheckboxGroupStory = (args) => <CheckboxGroup {...args} />
|
|
59
|
+
CheckboxGroupStory.storyName = 'CheckboxGroup'
|
|
60
|
+
CheckboxGroupStory.args = {
|
|
61
|
+
items: [
|
|
62
|
+
{
|
|
63
|
+
label: 'Checkbox 1'
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
label: 'Checkbox 2'
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
label: 'Checkbox 3'
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
label: 'Checkbox 4'
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
legend: 'Choose checkboxes.',
|
|
76
|
+
hint: 'Of the checkboxes below, choose some.',
|
|
77
|
+
tooltip: 'Decide which checkboxes you like best, then press them.',
|
|
78
|
+
name: 'example'
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export const ParentTypes = (args) => (
|
|
82
|
+
<EachParentType componentThemeName="Checkbox" {...args}>
|
|
83
|
+
{({ label, variant }) => (
|
|
84
|
+
<Container key={label}>
|
|
85
|
+
<Typography>{`${label} `}</Typography>
|
|
86
|
+
<Checkbox {...args} variant={variant} />
|
|
87
|
+
</Container>
|
|
88
|
+
)}
|
|
89
|
+
</EachParentType>
|
|
90
|
+
)
|
|
91
|
+
ParentTypes.parameters = parentTypesParams
|
|
92
|
+
ParentTypes.args = {
|
|
93
|
+
defaultChecked: undefined
|
|
94
|
+
}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
+
/* eslint-disable react/no-multi-comp */
|
|
1
2
|
import React from 'react'
|
|
2
3
|
import { View, StyleSheet } from 'react-native'
|
|
3
4
|
import { Divider, Typography } from '../../lib'
|
|
5
|
+
import { EachParentType, parentTypesParams } from '../supports'
|
|
4
6
|
|
|
5
7
|
export default {
|
|
6
8
|
title: 'Base/Divider',
|
|
7
9
|
component: Divider
|
|
8
10
|
}
|
|
9
11
|
|
|
12
|
+
export const Default = (args) => <Divider {...args} />
|
|
13
|
+
Default.storyName = 'Divider'
|
|
14
|
+
|
|
10
15
|
const Template = ({ vertical, ...rest }) => (
|
|
11
16
|
<View style={vertical ? styles.row : styles.column}>
|
|
12
17
|
<View style={vertical ? styles.contentRow : styles.contentColumn}>
|
|
@@ -24,8 +29,27 @@ const Template = ({ vertical, ...rest }) => (
|
|
|
24
29
|
|
|
25
30
|
Template.propTypes = Divider.propTypes
|
|
26
31
|
|
|
27
|
-
export const
|
|
28
|
-
|
|
32
|
+
export const Horizontal = Template.bind({})
|
|
33
|
+
|
|
34
|
+
export const Vertical = Template.bind({})
|
|
35
|
+
Vertical.args = { vertical: true }
|
|
36
|
+
|
|
37
|
+
export const ParentTypes = (args) => (
|
|
38
|
+
<EachParentType componentThemeName="Divider" {...args}>
|
|
39
|
+
{({ label, variant, index }) =>
|
|
40
|
+
label.match(/Row/) ? (
|
|
41
|
+
<Typography>{index ? '' : 'Skipping Row examples; see Vertical story. '}</Typography>
|
|
42
|
+
) : (
|
|
43
|
+
<>
|
|
44
|
+
<Typography>{`"${label}" is below this moderately lengthy text appearing before the Divider.`}</Typography>
|
|
45
|
+
<Divider {...args} variant={variant} />
|
|
46
|
+
<Typography>{`"${label}" is above.`}</Typography>
|
|
47
|
+
</>
|
|
48
|
+
)
|
|
49
|
+
}
|
|
50
|
+
</EachParentType>
|
|
51
|
+
)
|
|
52
|
+
ParentTypes.parameters = parentTypesParams
|
|
29
53
|
|
|
30
54
|
const styles = StyleSheet.create({
|
|
31
55
|
row: {
|