@telus-uds/components-base 0.0.2-prerelease.5 → 0.0.2-prerelease.9
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 +65 -0
- package/__fixtures__/Accessible.js +33 -0
- package/__fixtures__/Accessible.native.js +32 -0
- package/__fixtures__/testTheme.js +871 -52
- package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +1 -1
- package/__tests__/Button/ButtonBase.test.jsx +3 -32
- package/__tests__/Button/ButtonGroup.test.jsx +2 -2
- package/__tests__/Checkbox/Checkbox.test.jsx +94 -0
- package/__tests__/Checkbox/CheckboxGroup.test.jsx +247 -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__/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 +2 -2
- package/__tests__/Progress/Progress.test.jsx +79 -0
- package/__tests__/Radio/Radio.test.jsx +87 -0
- package/__tests__/Radio/RadioGroup.test.jsx +221 -0
- package/__tests__/RadioCard/RadioCard.test.jsx +87 -0
- package/__tests__/RadioCard/RadioCardGroup.test.jsx +247 -0
- package/__tests__/Search/Search.test.jsx +72 -0
- package/__tests__/Select/Select.test.jsx +93 -0
- package/__tests__/Skeleton/Skeleton.test.jsx +61 -0
- package/__tests__/StackView/StackView.test.jsx +0 -26
- package/__tests__/StepTracker/StepTracker.test.jsx +94 -0
- package/__tests__/Tabs/Tabs.test.jsx +200 -0
- package/__tests__/Tags/Tags.test.jsx +328 -0
- package/__tests__/TextInput/TextArea.test.jsx +34 -0
- package/__tests__/TextInput/{TextInput.test.jsx → TextInputBase.test.jsx} +20 -46
- package/__tests__/Tooltip/Tooltip.test.jsx +65 -0
- package/__tests__/Tooltip/getTooltipPosition.test.js +79 -0
- package/__tests__/utils/input.test.js +58 -0
- package/__tests__/utils/useCopy.test.js +42 -0
- package/__tests__/utils/useResponsiveProp.test.jsx +202 -0
- package/__tests__/utils/{spacing.test.jsx → useSpacingScale.test.jsx} +1 -1
- package/babel.config.js +20 -0
- package/jest.config.js +13 -4
- package/lib/A11yInfoProvider/index.js +54 -26
- package/lib/A11yText/index.js +37 -14
- 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 +54 -31
- package/lib/Box/index.js +13 -2
- package/lib/Button/Button.js +38 -10
- package/lib/Button/ButtonBase.js +115 -94
- package/lib/Button/ButtonGroup.js +94 -86
- package/lib/Button/ButtonLink.js +41 -13
- package/lib/Button/index.js +31 -4
- package/lib/Button/propTypes.js +32 -9
- package/lib/Card/Card.js +36 -41
- package/lib/Card/CardBase.js +78 -0
- package/lib/Card/PressableCardBase.js +137 -0
- package/lib/Card/index.js +40 -2
- 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 +50 -24
- package/lib/Divider/index.js +13 -2
- package/lib/ExpandCollapse/Accordion.js +20 -7
- package/lib/ExpandCollapse/Control.js +50 -27
- package/lib/ExpandCollapse/ExpandCollapse.js +41 -24
- package/lib/ExpandCollapse/Panel.js +75 -37
- package/lib/ExpandCollapse/index.js +25 -7
- package/lib/Feedback/Feedback.js +85 -34
- package/lib/Feedback/index.js +13 -2
- 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 +67 -38
- package/lib/FlexGrid/Col/index.js +13 -2
- package/lib/FlexGrid/FlexGrid.js +70 -45
- package/lib/FlexGrid/Row/Row.js +48 -27
- 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/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 +70 -34
- package/lib/InputLabel/LabelContent.js +31 -0
- package/lib/InputLabel/LabelContent.native.js +9 -1
- package/lib/InputLabel/index.js +13 -2
- 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 +57 -15
- package/lib/Link/InlinePressable.js +50 -0
- package/lib/Link/InlinePressable.native.js +101 -0
- package/lib/Link/Link.js +30 -13
- package/lib/Link/LinkBase.js +114 -145
- package/lib/Link/TextButton.js +47 -17
- package/lib/Link/index.js +39 -4
- package/lib/List/List.js +80 -0
- package/lib/List/ListItem.js +237 -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 +200 -0
- package/lib/Notification/dictionary.js +15 -0
- package/lib/Notification/index.js +13 -0
- package/lib/Pagination/PageButton.js +45 -46
- package/lib/Pagination/Pagination.js +70 -40
- package/lib/Pagination/SideButton.js +74 -58
- package/lib/Pagination/dictionary.js +9 -2
- package/lib/Pagination/index.js +13 -2
- package/lib/Pagination/usePagination.js +12 -2
- 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 +233 -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 +240 -0
- package/lib/RadioCard/RadioCardGroup.js +251 -0
- package/lib/RadioCard/index.js +21 -0
- package/lib/Search/Search.js +243 -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 +115 -0
- package/lib/Select/Select.js +300 -0
- package/lib/Select/index.js +19 -0
- package/lib/SideNav/Item.js +54 -33
- package/lib/SideNav/ItemContent.js +41 -15
- package/lib/SideNav/ItemsGroup.js +46 -27
- package/lib/SideNav/SideNav.js +92 -69
- 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 +31 -12
- package/lib/Spacer/index.js +13 -2
- package/lib/StackView/StackView.js +57 -33
- package/lib/StackView/StackWrap.js +33 -10
- package/lib/StackView/StackWrap.native.js +13 -2
- package/lib/StackView/StackWrapBox.js +50 -23
- package/lib/StackView/StackWrapGap.js +45 -19
- package/lib/StackView/common.js +19 -4
- package/lib/StackView/getStackedContent.js +49 -19
- package/lib/StackView/index.js +29 -5
- 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/HorizontalScroll.js +199 -0
- package/lib/Tabs/ScrollViewEnd.js +66 -0
- package/lib/Tabs/ScrollViewEnd.native.js +41 -0
- package/lib/Tabs/Tabs.js +117 -0
- package/lib/Tabs/TabsItem.js +234 -0
- package/lib/Tabs/TabsScrollButton.js +121 -0
- package/lib/Tabs/dictionary.js +18 -0
- package/lib/Tabs/index.js +13 -0
- package/lib/Tabs/itemPositions.js +128 -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 +41 -303
- package/lib/TextInput/TextInputBase.js +252 -0
- package/lib/TextInput/index.js +23 -2
- package/lib/TextInput/propTypes.js +42 -0
- package/lib/ThemeProvider/ThemeProvider.js +38 -14
- package/lib/ThemeProvider/index.js +61 -6
- package/lib/ThemeProvider/useSetTheme.js +14 -5
- package/lib/ThemeProvider/useTheme.js +13 -4
- package/lib/ThemeProvider/useThemeTokens.js +86 -19
- package/lib/ThemeProvider/utils/index.js +31 -2
- package/lib/ThemeProvider/utils/styles.js +52 -16
- package/lib/ThemeProvider/utils/theme-tokens.js +94 -16
- package/lib/ToggleSwitch/ToggleSwitch.js +76 -52
- 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 -43
- 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 +518 -24
- 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 +87 -0
- package/lib/utils/index.js +163 -4
- 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 +51 -33
- package/lib/utils/pressability.js +120 -0
- package/lib/utils/propTypes.js +269 -116
- package/lib/utils/useCopy.js +51 -0
- package/lib/utils/useHash.js +48 -0
- package/lib/utils/useHash.native.js +15 -0
- package/lib/utils/useResponsiveProp.js +59 -0
- package/lib/utils/{spacing/useSpacingScale.js → useSpacingScale.js} +45 -12
- package/lib/utils/useUniqueId.js +13 -4
- package/package.json +12 -9
- package/release-context.json +4 -4
- package/src/ActivityIndicator/{Spinner.web.jsx → Spinner.jsx} +0 -0
- package/src/Box/Box.jsx +11 -4
- package/src/Button/Button.jsx +9 -5
- package/src/Button/ButtonBase.jsx +69 -69
- package/src/Button/ButtonGroup.jsx +11 -24
- package/src/Button/ButtonLink.jsx +14 -4
- package/src/Button/propTypes.js +12 -2
- package/src/Card/Card.jsx +4 -30
- package/src/Card/CardBase.jsx +57 -0
- package/src/Card/PressableCardBase.jsx +112 -0
- package/src/Card/index.js +3 -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/ExpandCollapse/Control.jsx +1 -1
- package/src/Feedback/Feedback.jsx +31 -22
- 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/Icon/Icon.jsx +21 -26
- 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 +11 -4
- package/src/InputLabel/{LabelContent.web.jsx → LabelContent.jsx} +0 -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 +67 -148
- 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 +187 -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 +149 -0
- package/src/Notification/dictionary.js +8 -0
- package/src/Notification/index.js +3 -0
- package/src/Pagination/PageButton.jsx +3 -17
- package/src/Pagination/SideButton.jsx +27 -38
- 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 +198 -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 +204 -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 +95 -0
- package/src/Select/Select.jsx +255 -0
- package/src/Select/index.js +8 -0
- package/src/SideNav/Item.jsx +2 -2
- 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/StackView/StackView.jsx +25 -17
- package/src/StackView/StackWrap.jsx +9 -1
- package/src/StackView/StackWrapBox.jsx +19 -7
- package/src/StackView/StackWrapGap.jsx +15 -5
- package/src/StackView/getStackedContent.jsx +8 -2
- 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/HorizontalScroll.jsx +165 -0
- package/src/Tabs/ScrollViewEnd.jsx +53 -0
- package/src/Tabs/ScrollViewEnd.native.jsx +24 -0
- package/src/Tabs/Tabs.jsx +89 -0
- package/src/Tabs/TabsItem.jsx +204 -0
- package/src/Tabs/TabsScrollButton.jsx +100 -0
- package/src/Tabs/dictionary.js +11 -0
- package/src/Tabs/index.js +3 -0
- package/src/Tabs/itemPositions.js +101 -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 +17 -290
- package/src/TextInput/TextInputBase.jsx +210 -0
- package/src/TextInput/index.js +2 -1
- package/src/TextInput/propTypes.js +29 -0
- package/src/ThemeProvider/useThemeTokens.js +56 -5
- package/src/ThemeProvider/utils/styles.js +18 -5
- package/src/ThemeProvider/utils/theme-tokens.js +46 -5
- package/src/ToggleSwitch/ToggleSwitch.jsx +3 -4
- 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 -20
- 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 +31 -3
- package/src/utils/a11y/index.js +1 -0
- package/src/utils/a11y/textSize.js +30 -0
- package/src/utils/children.jsx +66 -0
- package/src/utils/index.js +11 -1
- 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 +20 -12
- package/src/utils/pressability.js +96 -0
- package/src/utils/propTypes.js +195 -56
- package/src/utils/useCopy.js +39 -0
- package/src/utils/useHash.js +34 -0
- package/src/utils/useHash.native.js +6 -0
- package/src/utils/useResponsiveProp.js +50 -0
- package/src/utils/{spacing/useSpacingScale.js → useSpacingScale.js} +25 -10
- package/stories/A11yText/A11yText.stories.jsx +4 -8
- package/stories/Button/Button.stories.jsx +5 -0
- package/stories/Card/Card.stories.jsx +1 -1
- package/stories/Checkbox/Checkbox.stories.jsx +94 -0
- package/stories/Feedback/Feedback.stories.jsx +5 -6
- package/stories/Icon/Icon.stories.jsx +27 -7
- package/stories/IconButton/IconButton.stories.jsx +50 -0
- package/stories/InputLabel/InputLabel.stories.jsx +8 -3
- package/stories/Link/ChevronLink.stories.jsx +3 -3
- package/stories/Link/Link.stories.jsx +28 -18
- 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/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/Skeleton/Skeleton.stories.jsx +36 -0
- package/stories/Spacer/Spacer.stories.jsx +7 -2
- package/stories/StackView/StackView.stories.jsx +10 -0
- package/stories/StackView/StackWrap.stories.jsx +12 -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/Tooltip/Tooltip.stories.jsx +81 -0
- package/stories/TooltipButton/TooltipButton.stories.jsx +11 -0
- package/stories/{platform-supports.web.jsx → platform-supports.jsx} +0 -0
- package/stories/supports.jsx +36 -2
- package/__fixtures__/accessible.icon.svg +0 -6
- package/babel.config.json +0 -8
- 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 -55
- package/lib/InputLabel/LabelContent.web.js +0 -17
- package/lib/Pagination/useCopy.js +0 -10
- package/lib/config/svgr-icons-web.js +0 -9
- package/lib/config/svgr-icons.js +0 -52
- package/lib/utils/spacing/index.js +0 -2
- package/lib/utils/spacing/utils.js +0 -32
- package/src/Pagination/useCopy.js +0 -7
- package/src/config/svgr-icons-web.js +0 -11
- package/src/config/svgr-icons.js +0 -46
- package/src/utils/spacing/index.js +0 -3
- package/src/utils/spacing/utils.js +0 -28
package/docs/Icons.stories.mdx
DELETED
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import { Meta } from '@storybook/addon-docs/blocks'
|
|
2
|
-
|
|
3
|
-
<Meta title="Guides/Icons" />
|
|
4
|
-
|
|
5
|
-
# Icons
|
|
6
|
-
|
|
7
|
-
Icons are available through their respective brand palettes as raw SVG resources.
|
|
8
|
-
In order to use icons as React components we are using [SVGR](https://react-svgr.com/) to transform the SVG resources into components.
|
|
9
|
-
In order to use UDS icons in your application you will need to apply the SVGR transform in your build pipeline (_e.g._ webpack config), instructions on how to do this are included for common use cases below.
|
|
10
|
-
|
|
11
|
-
Using a build-time transform enables us to keep the rendering and theming React logic for icons in the same place as for all other components, and enable outcome teams to include only the icons which they need in their bundle.
|
|
12
|
-
|
|
13
|
-
## Configuring icon transforms
|
|
14
|
-
|
|
15
|
-
SVGR supports [cosmiconfig](https://github.com/davidtheclark/cosmiconfig#readme). You can use any of the cosmiconfig methods for applying the SVGR configuration exposed at `@telus-uds/components-base/config/svgr-icons`.
|
|
16
|
-
For example, you can create a `svgr.config.js` file at the root of your project, and add the following line to it:
|
|
17
|
-
|
|
18
|
-
```js
|
|
19
|
-
module.exports = require(@telus-uds/components-base/config/svgr-icons)
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
Once you have SVGR configuration in place, you will need to add a build step. Included below are example configurations for common use cases.
|
|
23
|
-
If your use case isn't covered below, or you are having problems configuring icons for your application, get in touch with the core UDS team.
|
|
24
|
-
|
|
25
|
-
The SVGR configuration is configured to transform SVGs into React Native components.
|
|
26
|
-
To do this it relies on `react-native-svg`. You will need to include this as a production dependency in your project.
|
|
27
|
-
We also offer a config preset for web-only builds to avoid this (see Webpack for web-only below). This is recommended for web projects to avoid the need to include an alias `react-native-svg`
|
|
28
|
-
|
|
29
|
-
### Standalone
|
|
30
|
-
|
|
31
|
-
SVGR can be applied as a standalone transform, via its own [well-documented CLI](https://react-svgr.com/docs/cli/).
|
|
32
|
-
|
|
33
|
-
### Webpack
|
|
34
|
-
|
|
35
|
-
For Webpack you will need to create a new Webpack loader rule to apply the SVGR using '@svgr/webpack' which you will need to include as a dev dependency in your project.
|
|
36
|
-
|
|
37
|
-
```js
|
|
38
|
-
/* in your webpack.config.js */
|
|
39
|
-
// create a new loader rule leveraging @svgr/webpack
|
|
40
|
-
const iconLoaderRule = {
|
|
41
|
-
test: /\.icon\.svg$/,
|
|
42
|
-
exclude: /node_modules/,
|
|
43
|
-
use: [
|
|
44
|
-
{
|
|
45
|
-
loader: '@svgr/webpack'
|
|
46
|
-
}
|
|
47
|
-
]
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// if you already have an svg loader rule, adjust it to avoid it matching icons
|
|
51
|
-
const svgLoaderRule = config.module.rules.find((rule) => rule.test.test('.svg'))
|
|
52
|
-
svgLoaderRule.exclude = iconLoaderRule.test
|
|
53
|
-
|
|
54
|
-
// add your new rule
|
|
55
|
-
config.module.rules.unshift(iconLoaderRule)
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
**Note**: if your Webpack config is using a `oneOf` rule to apply file loaders, you may need to tweak the above to target that `oneOf`:
|
|
59
|
-
|
|
60
|
-
```js
|
|
61
|
-
config.module.rules[1].oneOf.unshift(iconLoaderRule)
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
With a oneOf rule, you don't need to worry about adjusting existing SVG loaders, as long as you place your icon loader rule at the head of the list (_e.g._ via `unshift`).
|
|
65
|
-
|
|
66
|
-
### Storybook
|
|
67
|
-
|
|
68
|
-
Storybook uses Webpack under the hood, so the instructions are very similiar. You will again need to ensure that '@svgr/webpack' is included as a dev dependency.
|
|
69
|
-
|
|
70
|
-
```js
|
|
71
|
-
/* in your .storybook/main.js file */
|
|
72
|
-
// create a new loader rule leveraging @svgr/webpack
|
|
73
|
-
const iconLoaderRule = {
|
|
74
|
-
test: /\.icon\.svg$/,
|
|
75
|
-
exclude: /node_modules/,
|
|
76
|
-
use: [
|
|
77
|
-
{
|
|
78
|
-
loader: '@svgr/webpack'
|
|
79
|
-
}
|
|
80
|
-
]
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
module.exports = {
|
|
84
|
-
...
|
|
85
|
-
webpackFinal: async (config) => {
|
|
86
|
-
// tweak existing rule to avoid matching *.icon.svg
|
|
87
|
-
const fileLoaderRule = config.module.rules.find((rule) => rule.test.test('.svg'))
|
|
88
|
-
fileLoaderRule.exclude = iconLoaderRule.test
|
|
89
|
-
|
|
90
|
-
// Add icon loader rule
|
|
91
|
-
config.module.rules.push(iconLoaderRule)
|
|
92
|
-
return config
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### Metro (React Native)
|
|
98
|
-
|
|
99
|
-
For the Metro bundler the terminology is slightly different and we're applying a _transformer_ rather than a loader.
|
|
100
|
-
The example below uses the expo default metro config, but you can switch `getDefaultConfig` out for any metro config generator.
|
|
101
|
-
For Metro you will need to ensure you have `react-native-svg-transformer` installed as a dev dependency.
|
|
102
|
-
|
|
103
|
-
````js
|
|
104
|
-
/* in your metro.config.js file */
|
|
105
|
-
const { getDefaultConfig } = require("@expo/metro-config");
|
|
106
|
-
|
|
107
|
-
module.exports = (async () => {
|
|
108
|
-
const {
|
|
109
|
-
resolver: { sourceExts, assetExts }
|
|
110
|
-
} = await getDefaultConfig(__dirname);
|
|
111
|
-
return {
|
|
112
|
-
transformer: {
|
|
113
|
-
// apply the SVGR transformer
|
|
114
|
-
babelTransformerPath: require.resolve("react-native-svg-transformer")
|
|
115
|
-
},
|
|
116
|
-
resolver: {
|
|
117
|
-
// ensure SVGs are *not* treated as assets...
|
|
118
|
-
assetExts: assetExts.filter(ext => ext !== "svg"),
|
|
119
|
-
// ...but instead as source files to be transformed
|
|
120
|
-
sourceExts: [...sourceExts, "svg"]
|
|
121
|
-
}
|
|
122
|
-
};
|
|
123
|
-
})();
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
### Webpack for web-only
|
|
127
|
-
If you are only targeting the web platform, and want to avoid the dependency on `react-native-svg`, you can follow the Webpack instructions above, but replace the contents of your `svgr.config.js` file with:
|
|
128
|
-
|
|
129
|
-
```js
|
|
130
|
-
module.exports = require(@telus-uds/components-base/config/svgr-icons-web)
|
|
131
|
-
````
|
|
132
|
-
|
|
133
|
-
## Using icons
|
|
134
|
-
|
|
135
|
-
If you are using a standalone build you can use the generated files as you would any other React component.
|
|
136
|
-
Assuming you are using Metro or Webpack and have applied the correct configuration as above, you can simply use your icons as components with
|
|
137
|
-
|
|
138
|
-
```js
|
|
139
|
-
const MyIconComponent = require('path/to/my-icon.icon.svg')
|
|
140
|
-
|
|
141
|
-
...
|
|
142
|
-
|
|
143
|
-
return <MyIconComponent />
|
|
144
|
-
```
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { DURATION, MIN_EMPTY_ANGLE, MIN_STROKE_ANGLE, BEZIER, propTypes } from './shared';
|
|
3
|
-
const SVG_RADIUS = 20;
|
|
4
|
-
const SVG_CIRCUMFERENCE = SVG_RADIUS * 2 * Math.PI;
|
|
5
|
-
const MIN_SVG_LENGTH = MIN_STROKE_ANGLE / 360 * SVG_CIRCUMFERENCE;
|
|
6
|
-
const MAX_SVG_LENGTH = (1 - MIN_EMPTY_ANGLE / 360) * SVG_CIRCUMFERENCE;
|
|
7
|
-
const animationProps = {
|
|
8
|
-
begin: '0s',
|
|
9
|
-
dur: `${DURATION}ms`,
|
|
10
|
-
fill: 'freeze',
|
|
11
|
-
repeatCount: 'indefinite'
|
|
12
|
-
};
|
|
13
|
-
const bezierProps = {
|
|
14
|
-
calcMode: 'spline',
|
|
15
|
-
keyTimes: '0; 0.5; 1',
|
|
16
|
-
keySplines: `${BEZIER.join(', ')} ; ${BEZIER.join(', ')}`
|
|
17
|
-
}; // We're using svg rather than css here to define the animation to avoid needing to introduce css injection mechanism
|
|
18
|
-
// It's possible to replicate this functionality with RNW animations, but it snags on chrome at least, see https://github.com/telus/universal-design-system/pull/477 for details.
|
|
19
|
-
|
|
20
|
-
const Spinner = ({
|
|
21
|
-
size,
|
|
22
|
-
color,
|
|
23
|
-
thickness,
|
|
24
|
-
label
|
|
25
|
-
}) => /*#__PURE__*/React.createElement("svg", {
|
|
26
|
-
width: `${size}px`,
|
|
27
|
-
height: `${size}px`,
|
|
28
|
-
viewBox: "0 0 48 48",
|
|
29
|
-
"aria-valuetext": label,
|
|
30
|
-
role: "progressbar",
|
|
31
|
-
"aria-busy": true
|
|
32
|
-
}, /*#__PURE__*/React.createElement("g", null, /*#__PURE__*/React.createElement("animateTransform", Object.assign({
|
|
33
|
-
attributeName: "transform",
|
|
34
|
-
type: "rotate",
|
|
35
|
-
values: `-180 24 24;${360 + MIN_STROKE_ANGLE - 180} 24 24`
|
|
36
|
-
}, animationProps)), /*#__PURE__*/React.createElement("circle", {
|
|
37
|
-
fill: "none",
|
|
38
|
-
stroke: color,
|
|
39
|
-
strokeWidth: thickness * 48 / size,
|
|
40
|
-
strokeLinecap: "round",
|
|
41
|
-
cx: "24",
|
|
42
|
-
cy: "24",
|
|
43
|
-
r: "20",
|
|
44
|
-
strokeDasharray: [MIN_SVG_LENGTH, SVG_CIRCUMFERENCE],
|
|
45
|
-
strokeDashoffset: 0
|
|
46
|
-
}, /*#__PURE__*/React.createElement("animate", Object.assign({
|
|
47
|
-
attributeName: "stroke-dashoffset",
|
|
48
|
-
values: `0;-10;${MIN_SVG_LENGTH - SVG_CIRCUMFERENCE}`
|
|
49
|
-
}, animationProps, bezierProps)), /*#__PURE__*/React.createElement("animate", Object.assign({
|
|
50
|
-
attributeName: "stroke-dasharray",
|
|
51
|
-
values: `${MIN_SVG_LENGTH}, 200;${MAX_SVG_LENGTH}, 200;${MIN_SVG_LENGTH}, 200`
|
|
52
|
-
}, animationProps, bezierProps)))));
|
|
53
|
-
|
|
54
|
-
Spinner.propTypes = propTypes;
|
|
55
|
-
export default Spinner;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import PropTypes from 'prop-types';
|
|
3
|
-
|
|
4
|
-
function LabelContent({
|
|
5
|
-
children,
|
|
6
|
-
forId
|
|
7
|
-
}) {
|
|
8
|
-
return /*#__PURE__*/React.createElement("label", {
|
|
9
|
-
htmlFor: forId
|
|
10
|
-
}, children);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export default LabelContent;
|
|
14
|
-
LabelContent.propTypes = {
|
|
15
|
-
children: PropTypes.string,
|
|
16
|
-
forId: PropTypes.string
|
|
17
|
-
};
|
package/lib/config/svgr-icons.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
function themedTemplate({
|
|
2
|
-
template
|
|
3
|
-
}, opts, {
|
|
4
|
-
imports,
|
|
5
|
-
interfaces,
|
|
6
|
-
componentName,
|
|
7
|
-
jsx,
|
|
8
|
-
exports
|
|
9
|
-
}) {
|
|
10
|
-
const plugins = ['jsx'];
|
|
11
|
-
return template.smart({
|
|
12
|
-
plugins
|
|
13
|
-
}).ast`${imports}
|
|
14
|
-
import { Icon, iconComponentPropTypes, iconSvgPropTypes } from '@telus-uds/components-base'
|
|
15
|
-
${interfaces}
|
|
16
|
-
|
|
17
|
-
const IconSvg = ({ title, titleId, size, color }) => ${jsx}
|
|
18
|
-
IconSvg.propTypes = iconSvgPropTypes
|
|
19
|
-
const ${componentName} = (props) => <Icon {...props} IconSvg={IconSvg} />
|
|
20
|
-
${componentName}.propTypes = iconComponentPropTypes
|
|
21
|
-
|
|
22
|
-
${exports}
|
|
23
|
-
`;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
module.exports = {
|
|
27
|
-
native: true,
|
|
28
|
-
svgProps: {
|
|
29
|
-
height: '{size}',
|
|
30
|
-
width: '{size}',
|
|
31
|
-
fill: '{color}' // @TODO figure out if we need any a11y props here for RN
|
|
32
|
-
|
|
33
|
-
},
|
|
34
|
-
expandProps: false,
|
|
35
|
-
template: themedTemplate,
|
|
36
|
-
titleProp: true,
|
|
37
|
-
svgoConfig: {
|
|
38
|
-
plugins: [{
|
|
39
|
-
inlineStyles: {
|
|
40
|
-
onlyMatchedOnce: false
|
|
41
|
-
}
|
|
42
|
-
}, {
|
|
43
|
-
removeViewBox: false
|
|
44
|
-
}, {
|
|
45
|
-
removeUnknownsAndDefaults: false
|
|
46
|
-
}, {
|
|
47
|
-
convertColors: {
|
|
48
|
-
currentColor: true
|
|
49
|
-
}
|
|
50
|
-
}]
|
|
51
|
-
}
|
|
52
|
-
};
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { viewports as systemViewports } from '@telus-uds/system-constants';
|
|
2
|
-
export const resolveSpacingValue = (space, viewport) => {
|
|
3
|
-
// If spacing value has been passed as undefined or nullish, get the 0-index
|
|
4
|
-
if (!space) return 0; // Pass through simple non-responsive numbers (which may be in objects alongside options)
|
|
5
|
-
|
|
6
|
-
if (typeof space === 'number') return space;
|
|
7
|
-
if (typeof space.space === 'number') return space.space; // Get the appropriate space value for the current viewport.
|
|
8
|
-
// If no viewports available (e.g. SSR), default to the smallest.
|
|
9
|
-
// If no values are found (e.g. empty space object), default to 0.
|
|
10
|
-
|
|
11
|
-
return (viewport && systemViewports.inherit(space)[viewport]) ?? space.xs ?? 0;
|
|
12
|
-
};
|
|
13
|
-
export const resolveSpacingOptions = space => {
|
|
14
|
-
if (!space?.options) return {};
|
|
15
|
-
const {
|
|
16
|
-
size,
|
|
17
|
-
variant,
|
|
18
|
-
subtract = 0
|
|
19
|
-
} = space.options;
|
|
20
|
-
const overridden = typeof size === 'number'; // Might need an option that adapts the size value by current user's system font scale, so that
|
|
21
|
-
// meaningful spacing between items doesn't disappear on the highest a11y font scale settings.
|
|
22
|
-
// https://github.com/telus/universal-design-system/issues/583
|
|
23
|
-
|
|
24
|
-
return {
|
|
25
|
-
tokens: {
|
|
26
|
-
size
|
|
27
|
-
},
|
|
28
|
-
variant,
|
|
29
|
-
overridden,
|
|
30
|
-
subtract
|
|
31
|
-
};
|
|
32
|
-
};
|
package/src/config/svgr-icons.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
function themedTemplate({ template }, opts, { imports, interfaces, componentName, jsx, exports }) {
|
|
2
|
-
const plugins = ['jsx']
|
|
3
|
-
|
|
4
|
-
return template.smart({ plugins }).ast`${imports}
|
|
5
|
-
import { Icon, iconComponentPropTypes, iconSvgPropTypes } from '@telus-uds/components-base'
|
|
6
|
-
${interfaces}
|
|
7
|
-
|
|
8
|
-
const IconSvg = ({ title, titleId, size, color }) => ${jsx}
|
|
9
|
-
IconSvg.propTypes = iconSvgPropTypes
|
|
10
|
-
const ${componentName} = (props) => <Icon {...props} IconSvg={IconSvg} />
|
|
11
|
-
${componentName}.propTypes = iconComponentPropTypes
|
|
12
|
-
|
|
13
|
-
${exports}
|
|
14
|
-
`
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
module.exports = {
|
|
18
|
-
native: true,
|
|
19
|
-
svgProps: {
|
|
20
|
-
height: '{size}',
|
|
21
|
-
width: '{size}',
|
|
22
|
-
fill: '{color}'
|
|
23
|
-
// @TODO figure out if we need any a11y props here for RN
|
|
24
|
-
},
|
|
25
|
-
expandProps: false,
|
|
26
|
-
template: themedTemplate,
|
|
27
|
-
titleProp: true,
|
|
28
|
-
svgoConfig: {
|
|
29
|
-
plugins: [
|
|
30
|
-
{
|
|
31
|
-
inlineStyles: {
|
|
32
|
-
onlyMatchedOnce: false
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
removeViewBox: false
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
removeUnknownsAndDefaults: false
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
convertColors: { currentColor: true }
|
|
43
|
-
}
|
|
44
|
-
]
|
|
45
|
-
}
|
|
46
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { viewports as systemViewports } from '@telus-uds/system-constants'
|
|
2
|
-
|
|
3
|
-
export const resolveSpacingValue = (space, viewport) => {
|
|
4
|
-
// If spacing value has been passed as undefined or nullish, get the 0-index
|
|
5
|
-
if (!space) return 0
|
|
6
|
-
|
|
7
|
-
// Pass through simple non-responsive numbers (which may be in objects alongside options)
|
|
8
|
-
if (typeof space === 'number') return space
|
|
9
|
-
if (typeof space.space === 'number') return space.space
|
|
10
|
-
|
|
11
|
-
// Get the appropriate space value for the current viewport.
|
|
12
|
-
// If no viewports available (e.g. SSR), default to the smallest.
|
|
13
|
-
// If no values are found (e.g. empty space object), default to 0.
|
|
14
|
-
return (viewport && systemViewports.inherit(space)[viewport]) ?? space.xs ?? 0
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export const resolveSpacingOptions = (space) => {
|
|
18
|
-
if (!space?.options) return {}
|
|
19
|
-
|
|
20
|
-
const { size, variant, subtract = 0 } = space.options
|
|
21
|
-
const overridden = typeof size === 'number'
|
|
22
|
-
|
|
23
|
-
// Might need an option that adapts the size value by current user's system font scale, so that
|
|
24
|
-
// meaningful spacing between items doesn't disappear on the highest a11y font scale settings.
|
|
25
|
-
// https://github.com/telus/universal-design-system/issues/583
|
|
26
|
-
|
|
27
|
-
return { tokens: { size }, variant, overridden, subtract }
|
|
28
|
-
}
|