@telus-uds/components-base 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/.turbo/turbo-build.log +5 -2
  2. package/CHANGELOG.json +82 -0
  3. package/CHANGELOG.md +42 -2
  4. package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +35 -0
  5. package/__tests__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +287 -0
  6. package/babel.config.js +27 -5
  7. package/component-docs.json +121 -438
  8. package/lib/A11yText/index.js +5 -4
  9. package/lib/ActivityIndicator/Spinner.js +46 -37
  10. package/lib/ActivityIndicator/Spinner.native.js +26 -15
  11. package/lib/Box/Box.js +4 -4
  12. package/lib/Button/ButtonBase.js +7 -8
  13. package/lib/Card/Card.js +5 -4
  14. package/lib/Card/PressableCardBase.js +6 -11
  15. package/lib/Checkbox/Checkbox.js +4 -6
  16. package/lib/Divider/Divider.js +12 -11
  17. package/lib/ExpandCollapse/Control.js +7 -7
  18. package/lib/ExpandCollapse/ExpandCollapse.js +6 -2
  19. package/lib/ExpandCollapse/Panel.js +6 -7
  20. package/lib/Feedback/Feedback.js +6 -5
  21. package/lib/Fieldset/Fieldset.js +1 -3
  22. package/lib/HorizontalScroll/HorizontalScroll.js +5 -7
  23. package/lib/HorizontalScroll/HorizontalScrollButton.js +23 -49
  24. package/lib/IconButton/IconButton.js +6 -6
  25. package/lib/InputLabel/InputLabel.js +7 -2
  26. package/lib/InputSupports/InputSupports.js +2 -2
  27. package/lib/Link/LinkBase.js +5 -6
  28. package/lib/List/List.js +4 -6
  29. package/lib/List/ListItem.js +6 -2
  30. package/lib/Modal/Modal.js +6 -2
  31. package/lib/Notification/Notification.js +12 -8
  32. package/lib/Pagination/Pagination.js +8 -3
  33. package/lib/Progress/Progress.js +5 -4
  34. package/lib/Progress/ProgressBar.js +8 -7
  35. package/lib/Radio/Radio.js +4 -6
  36. package/lib/Radio/RadioButton.js +6 -3
  37. package/lib/Radio/RadioGroup.js +7 -2
  38. package/lib/RadioCard/RadioCard.js +4 -4
  39. package/lib/RadioCard/RadioCardGroup.js +9 -6
  40. package/lib/Search/Search.js +7 -2
  41. package/lib/Select/Select.js +10 -9
  42. package/lib/SideNav/Item.js +7 -7
  43. package/lib/SideNav/SideNav.js +7 -3
  44. package/lib/Skeleton/Skeleton.js +6 -2
  45. package/lib/Spacer/Spacer.js +7 -18
  46. package/lib/StackView/StackView.js +7 -7
  47. package/lib/StackView/StackWrapBox.js +6 -7
  48. package/lib/StackView/StackWrapGap.js +6 -5
  49. package/lib/StepTracker/Step.js +7 -3
  50. package/lib/StepTracker/StepTracker.js +7 -7
  51. package/lib/Tabs/Tabs.js +6 -2
  52. package/lib/Tabs/TabsItem.js +6 -5
  53. package/lib/Tags/Tags.js +5 -6
  54. package/lib/TextInput/TextArea.js +13 -14
  55. package/lib/TextInput/TextInput.js +13 -14
  56. package/lib/TextInput/TextInputBase.js +5 -3
  57. package/lib/ToggleSwitch/ToggleSwitch.js +10 -9
  58. package/lib/ToggleSwitch/ToggleSwitchGroup.js +5 -7
  59. package/lib/Tooltip/Tooltip.js +7 -2
  60. package/lib/TooltipButton/TooltipButton.js +7 -2
  61. package/lib/Typography/Typography.js +8 -6
  62. package/lib/index.js +7 -0
  63. package/lib/utils/children.js +5 -1
  64. package/lib/utils/index.js +14 -0
  65. package/lib/utils/props/index.js +9 -0
  66. package/lib/{InputSupports/propTypes.js → utils/props/inputSupportsProps.js} +2 -3
  67. package/lib/utils/ssr.js +51 -0
  68. package/lib-module/A11yInfoProvider/index.js +62 -0
  69. package/lib-module/A11yText/index.js +55 -0
  70. package/lib-module/ActivityIndicator/Spinner.js +76 -0
  71. package/lib-module/ActivityIndicator/Spinner.native.js +143 -0
  72. package/lib-module/ActivityIndicator/index.js +40 -0
  73. package/lib-module/ActivityIndicator/shared.js +12 -0
  74. package/lib-module/BaseProvider/index.js +26 -0
  75. package/lib-module/Box/Box.js +243 -0
  76. package/lib-module/Box/index.js +2 -0
  77. package/lib-module/Button/Button.js +25 -0
  78. package/lib-module/Button/ButtonBase.js +254 -0
  79. package/lib-module/Button/ButtonGroup.js +164 -0
  80. package/lib-module/Button/ButtonLink.js +39 -0
  81. package/lib-module/Button/index.js +4 -0
  82. package/lib-module/Button/propTypes.js +36 -0
  83. package/lib-module/Card/Card.js +83 -0
  84. package/lib-module/Card/CardBase.js +62 -0
  85. package/lib-module/Card/PressableCardBase.js +113 -0
  86. package/lib-module/Card/index.js +4 -0
  87. package/lib-module/Checkbox/Checkbox.js +321 -0
  88. package/lib-module/Checkbox/CheckboxGroup.js +218 -0
  89. package/lib-module/Checkbox/CheckboxInput.js +58 -0
  90. package/lib-module/Checkbox/CheckboxInput.native.js +6 -0
  91. package/lib-module/Checkbox/index.js +3 -0
  92. package/lib-module/Divider/Divider.js +123 -0
  93. package/lib-module/Divider/index.js +2 -0
  94. package/lib-module/ExpandCollapse/Accordion.js +15 -0
  95. package/lib-module/ExpandCollapse/Control.js +130 -0
  96. package/lib-module/ExpandCollapse/ExpandCollapse.js +94 -0
  97. package/lib-module/ExpandCollapse/Panel.js +158 -0
  98. package/lib-module/ExpandCollapse/index.js +7 -0
  99. package/lib-module/Feedback/Feedback.js +144 -0
  100. package/lib-module/Feedback/index.js +2 -0
  101. package/lib-module/Fieldset/Fieldset.js +145 -0
  102. package/lib-module/Fieldset/FieldsetContainer.js +29 -0
  103. package/lib-module/Fieldset/FieldsetContainer.native.js +20 -0
  104. package/lib-module/Fieldset/Legend.js +21 -0
  105. package/lib-module/Fieldset/Legend.native.js +28 -0
  106. package/lib-module/Fieldset/cssReset.js +14 -0
  107. package/lib-module/Fieldset/index.js +2 -0
  108. package/lib-module/FlexGrid/Col/Col.js +265 -0
  109. package/lib-module/FlexGrid/Col/index.js +2 -0
  110. package/lib-module/FlexGrid/FlexGrid.js +147 -0
  111. package/lib-module/FlexGrid/Row/Row.js +177 -0
  112. package/lib-module/FlexGrid/Row/index.js +2 -0
  113. package/lib-module/FlexGrid/helpers/index.js +18 -0
  114. package/lib-module/FlexGrid/index.js +2 -0
  115. package/lib-module/FlexGrid/providers/GutterContext.js +3 -0
  116. package/lib-module/HorizontalScroll/HorizontalScroll.js +170 -0
  117. package/lib-module/HorizontalScroll/HorizontalScrollButton.js +77 -0
  118. package/lib-module/HorizontalScroll/ScrollViewEnd.js +47 -0
  119. package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +24 -0
  120. package/lib-module/HorizontalScroll/dictionary.js +11 -0
  121. package/lib-module/HorizontalScroll/index.js +11 -0
  122. package/lib-module/HorizontalScroll/itemPositions.js +106 -0
  123. package/lib-module/Icon/Icon.js +61 -0
  124. package/lib-module/Icon/IconText.js +81 -0
  125. package/lib-module/Icon/index.js +4 -0
  126. package/lib-module/IconButton/IconButton.js +115 -0
  127. package/lib-module/IconButton/index.js +2 -0
  128. package/lib-module/InputLabel/InputLabel.js +131 -0
  129. package/lib-module/InputLabel/LabelContent.js +24 -0
  130. package/lib-module/InputLabel/LabelContent.native.js +16 -0
  131. package/lib-module/InputLabel/index.js +2 -0
  132. package/lib-module/InputSupports/InputSupports.js +88 -0
  133. package/lib-module/InputSupports/index.js +2 -0
  134. package/lib-module/InputSupports/useInputSupports.js +31 -0
  135. package/lib-module/Link/ChevronLink.js +51 -0
  136. package/lib-module/Link/InlinePressable.js +37 -0
  137. package/lib-module/Link/InlinePressable.native.js +85 -0
  138. package/lib-module/Link/Link.js +27 -0
  139. package/lib-module/Link/LinkBase.js +210 -0
  140. package/lib-module/Link/TextButton.js +43 -0
  141. package/lib-module/Link/index.js +5 -0
  142. package/lib-module/List/List.js +55 -0
  143. package/lib-module/List/ListItem.js +213 -0
  144. package/lib-module/List/index.js +5 -0
  145. package/lib-module/Modal/Modal.js +208 -0
  146. package/lib-module/Modal/dictionary.js +9 -0
  147. package/lib-module/Modal/index.js +2 -0
  148. package/lib-module/Notification/Notification.js +196 -0
  149. package/lib-module/Notification/dictionary.js +8 -0
  150. package/lib-module/Notification/index.js +2 -0
  151. package/lib-module/Pagination/PageButton.js +65 -0
  152. package/lib-module/Pagination/Pagination.js +140 -0
  153. package/lib-module/Pagination/SideButton.js +103 -0
  154. package/lib-module/Pagination/dictionary.js +18 -0
  155. package/lib-module/Pagination/index.js +2 -0
  156. package/lib-module/Pagination/usePagination.js +72 -0
  157. package/lib-module/Progress/Progress.js +85 -0
  158. package/lib-module/Progress/ProgressBar.js +134 -0
  159. package/lib-module/Progress/ProgressBarBackground.js +41 -0
  160. package/lib-module/Progress/index.js +4 -0
  161. package/lib-module/Radio/Radio.js +263 -0
  162. package/lib-module/Radio/RadioButton.js +128 -0
  163. package/lib-module/Radio/RadioGroup.js +225 -0
  164. package/lib-module/Radio/RadioInput.js +60 -0
  165. package/lib-module/Radio/RadioInput.native.js +6 -0
  166. package/lib-module/Radio/index.js +3 -0
  167. package/lib-module/RadioCard/RadioCard.js +218 -0
  168. package/lib-module/RadioCard/RadioCardGroup.js +232 -0
  169. package/lib-module/RadioCard/index.js +3 -0
  170. package/lib-module/Search/Search.js +233 -0
  171. package/lib-module/Search/dictionary.js +12 -0
  172. package/lib-module/Search/index.js +2 -0
  173. package/lib-module/Select/Group.js +20 -0
  174. package/lib-module/Select/Group.native.js +14 -0
  175. package/lib-module/Select/Item.js +17 -0
  176. package/lib-module/Select/Item.native.js +9 -0
  177. package/lib-module/Select/Picker.js +67 -0
  178. package/lib-module/Select/Picker.native.js +110 -0
  179. package/lib-module/Select/Select.js +317 -0
  180. package/lib-module/Select/index.js +6 -0
  181. package/lib-module/SideNav/Item.js +139 -0
  182. package/lib-module/SideNav/ItemContent.js +45 -0
  183. package/lib-module/SideNav/ItemsGroup.js +115 -0
  184. package/lib-module/SideNav/SideNav.js +133 -0
  185. package/lib-module/SideNav/index.js +1 -0
  186. package/lib-module/Skeleton/Skeleton.js +117 -0
  187. package/lib-module/Skeleton/index.js +2 -0
  188. package/lib-module/Skeleton/skeleton.constant.js +3 -0
  189. package/lib-module/Skeleton/skeletonWebAnimation.js +18 -0
  190. package/lib-module/Skeleton/useSkeletonNativeAnimation.js +24 -0
  191. package/lib-module/Spacer/Spacer.js +97 -0
  192. package/lib-module/Spacer/index.js +2 -0
  193. package/lib-module/StackView/StackView.js +124 -0
  194. package/lib-module/StackView/StackWrap.js +48 -0
  195. package/lib-module/StackView/StackWrap.native.js +3 -0
  196. package/lib-module/StackView/StackWrapBox.js +114 -0
  197. package/lib-module/StackView/StackWrapGap.js +58 -0
  198. package/lib-module/StackView/common.js +32 -0
  199. package/lib-module/StackView/getStackedContent.js +123 -0
  200. package/lib-module/StackView/index.js +5 -0
  201. package/lib-module/StepTracker/Step.js +229 -0
  202. package/lib-module/StepTracker/StepTracker.js +175 -0
  203. package/lib-module/StepTracker/dictionary.js +10 -0
  204. package/lib-module/StepTracker/index.js +2 -0
  205. package/lib-module/Tabs/Tabs.js +113 -0
  206. package/lib-module/Tabs/TabsItem.js +215 -0
  207. package/lib-module/Tabs/index.js +2 -0
  208. package/lib-module/Tags/Tags.js +238 -0
  209. package/lib-module/Tags/index.js +2 -0
  210. package/lib-module/TextInput/TextArea.js +88 -0
  211. package/lib-module/TextInput/TextInput.js +60 -0
  212. package/lib-module/TextInput/TextInputBase.js +233 -0
  213. package/lib-module/TextInput/index.js +3 -0
  214. package/lib-module/TextInput/propTypes.js +31 -0
  215. package/lib-module/ThemeProvider/ThemeProvider.js +35 -0
  216. package/lib-module/ThemeProvider/index.js +6 -0
  217. package/lib-module/ThemeProvider/useSetTheme.js +22 -0
  218. package/lib-module/ThemeProvider/useTheme.js +14 -0
  219. package/lib-module/ThemeProvider/useThemeTokens.js +105 -0
  220. package/lib-module/ThemeProvider/utils/index.js +2 -0
  221. package/lib-module/ThemeProvider/utils/styles.js +174 -0
  222. package/lib-module/ThemeProvider/utils/theme-tokens.js +151 -0
  223. package/lib-module/ToggleSwitch/ToggleSwitch.js +224 -0
  224. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +202 -0
  225. package/lib-module/ToggleSwitch/index.js +3 -0
  226. package/lib-module/Tooltip/Backdrop.js +52 -0
  227. package/lib-module/Tooltip/Backdrop.native.js +43 -0
  228. package/lib-module/Tooltip/Tooltip.js +332 -0
  229. package/lib-module/Tooltip/dictionary.js +8 -0
  230. package/lib-module/Tooltip/getTooltipPosition.js +164 -0
  231. package/lib-module/Tooltip/index.js +2 -0
  232. package/lib-module/TooltipButton/TooltipButton.js +71 -0
  233. package/lib-module/TooltipButton/index.js +2 -0
  234. package/lib-module/Typography/Typography.js +118 -0
  235. package/lib-module/Typography/index.js +2 -0
  236. package/lib-module/ViewportProvider/ViewportProvider.js +28 -0
  237. package/lib-module/ViewportProvider/index.js +3 -0
  238. package/lib-module/ViewportProvider/useViewport.js +3 -0
  239. package/lib-module/ViewportProvider/useViewportListener.js +43 -0
  240. package/lib-module/index.js +48 -0
  241. package/lib-module/utils/a11y/index.js +2 -0
  242. package/lib-module/utils/a11y/semantics.js +154 -0
  243. package/lib-module/utils/a11y/textSize.js +34 -0
  244. package/lib-module/utils/animation/index.js +2 -0
  245. package/lib-module/utils/animation/useVerticalExpandAnimation.js +49 -0
  246. package/lib-module/utils/children.js +118 -0
  247. package/lib-module/utils/index.js +15 -0
  248. package/lib-module/utils/info/index.js +7 -0
  249. package/lib-module/utils/info/platform/index.js +11 -0
  250. package/lib-module/utils/info/platform/platform.android.js +1 -0
  251. package/lib-module/utils/info/platform/platform.ios.js +1 -0
  252. package/lib-module/utils/info/platform/platform.js +1 -0
  253. package/lib-module/utils/info/platform/platform.native.js +4 -0
  254. package/lib-module/utils/info/versions.js +5 -0
  255. package/lib-module/utils/input.js +180 -0
  256. package/lib-module/utils/pressability.js +97 -0
  257. package/lib-module/utils/props/a11yProps.js +140 -0
  258. package/lib-module/utils/props/clickProps.js +25 -0
  259. package/lib-module/utils/props/componentPropType.js +63 -0
  260. package/lib-module/utils/props/copyPropTypes.js +2 -0
  261. package/lib-module/utils/props/getPropSelector.js +6 -0
  262. package/lib-module/utils/props/hrefAttrsProp.js +30 -0
  263. package/lib-module/utils/props/index.js +16 -0
  264. package/lib-module/utils/props/inputSupportsProps.js +54 -0
  265. package/lib-module/utils/props/linkProps.js +47 -0
  266. package/lib-module/utils/props/paddingProp.js +9 -0
  267. package/lib-module/utils/props/pressProps.js +42 -0
  268. package/lib-module/utils/props/rectProp.js +9 -0
  269. package/lib-module/utils/props/responsiveProps.js +30 -0
  270. package/lib-module/utils/props/selectSystemProps.js +24 -0
  271. package/lib-module/utils/props/spacingProps.js +56 -0
  272. package/lib-module/utils/props/tokens.js +120 -0
  273. package/lib-module/utils/props/variantProp.js +18 -0
  274. package/lib-module/utils/props/viewProps.js +22 -0
  275. package/lib-module/utils/ssr.js +35 -0
  276. package/lib-module/utils/useCopy.js +42 -0
  277. package/lib-module/utils/useHash.js +44 -0
  278. package/lib-module/utils/useHash.native.js +7 -0
  279. package/lib-module/utils/useResponsiveProp.js +47 -0
  280. package/lib-module/utils/useSpacingScale.js +123 -0
  281. package/lib-module/utils/useUniqueId.js +12 -0
  282. package/lib-module/utils/withLinkRouter.js +82 -0
  283. package/package.json +9 -5
  284. package/src/A11yText/index.jsx +7 -3
  285. package/src/ActivityIndicator/Spinner.jsx +56 -44
  286. package/src/ActivityIndicator/Spinner.native.jsx +20 -12
  287. package/src/Box/Box.jsx +10 -9
  288. package/src/Button/ButtonBase.jsx +9 -8
  289. package/src/Card/Card.jsx +7 -4
  290. package/src/Card/PressableCardBase.jsx +12 -12
  291. package/src/Checkbox/Checkbox.jsx +12 -5
  292. package/src/Divider/Divider.jsx +17 -10
  293. package/src/ExpandCollapse/Control.jsx +12 -7
  294. package/src/ExpandCollapse/ExpandCollapse.jsx +13 -3
  295. package/src/ExpandCollapse/Panel.jsx +15 -5
  296. package/src/Feedback/Feedback.jsx +13 -3
  297. package/src/Fieldset/Fieldset.jsx +1 -1
  298. package/src/HorizontalScroll/HorizontalScroll.jsx +13 -6
  299. package/src/HorizontalScroll/HorizontalScrollButton.jsx +21 -58
  300. package/src/IconButton/IconButton.jsx +12 -8
  301. package/src/InputLabel/InputLabel.jsx +16 -2
  302. package/src/InputSupports/InputSupports.jsx +1 -1
  303. package/src/Link/LinkBase.jsx +10 -9
  304. package/src/List/List.jsx +12 -5
  305. package/src/List/ListItem.jsx +16 -2
  306. package/src/Modal/Modal.jsx +63 -50
  307. package/src/Notification/Notification.jsx +23 -6
  308. package/src/Pagination/Pagination.jsx +10 -3
  309. package/src/Progress/Progress.jsx +5 -3
  310. package/src/Progress/ProgressBar.jsx +8 -6
  311. package/src/Radio/Radio.jsx +13 -5
  312. package/src/Radio/RadioButton.jsx +13 -3
  313. package/src/Radio/RadioGroup.jsx +14 -2
  314. package/src/RadioCard/RadioCard.jsx +9 -6
  315. package/src/RadioCard/RadioCardGroup.jsx +16 -4
  316. package/src/Search/Search.jsx +15 -3
  317. package/src/Select/Select.jsx +21 -7
  318. package/src/SideNav/Item.jsx +15 -7
  319. package/src/SideNav/SideNav.jsx +13 -2
  320. package/src/Skeleton/Skeleton.jsx +55 -43
  321. package/src/Spacer/Spacer.jsx +8 -16
  322. package/src/StackView/StackView.jsx +13 -12
  323. package/src/StackView/StackWrapBox.jsx +12 -12
  324. package/src/StackView/StackWrapGap.jsx +9 -7
  325. package/src/StepTracker/Step.jsx +7 -4
  326. package/src/StepTracker/StepTracker.jsx +8 -8
  327. package/src/Tabs/Tabs.jsx +16 -3
  328. package/src/Tabs/TabsItem.jsx +13 -9
  329. package/src/Tags/Tags.jsx +20 -5
  330. package/src/TextInput/TextArea.jsx +20 -8
  331. package/src/TextInput/TextInput.jsx +20 -8
  332. package/src/TextInput/TextInputBase.jsx +13 -3
  333. package/src/ToggleSwitch/ToggleSwitch.jsx +16 -5
  334. package/src/ToggleSwitch/ToggleSwitchGroup.jsx +14 -6
  335. package/src/Tooltip/Tooltip.jsx +13 -3
  336. package/src/TooltipButton/TooltipButton.jsx +6 -4
  337. package/src/Typography/Typography.jsx +10 -6
  338. package/src/index.js +1 -1
  339. package/src/utils/children.jsx +2 -1
  340. package/src/utils/index.js +1 -0
  341. package/src/utils/props/index.js +1 -0
  342. package/src/{InputSupports/propTypes.js → utils/props/inputSupportsProps.js} +2 -4
  343. package/src/utils/ssr.js +35 -0
  344. package/release-context.json +0 -7
@@ -67,7 +67,11 @@ exports.unpackFragment = unpackFragment;
67
67
  const isStringOrNumber = child => typeof child === 'string' || typeof child === 'number'; // Wrap an A11yText with neighouring text strings so it doesn't split them into multiple <Text>s
68
68
 
69
69
 
70
- const isWrapable = child => isStringOrNumber(child) || child.type === _A11yText.default;
70
+ const isWrapable = child => {
71
+ var _child$type;
72
+
73
+ return isStringOrNumber(child) || child.type === _A11yText.default || ((_child$type = child.type) === null || _child$type === void 0 ? void 0 : _child$type.name) === 'FootnoteLink';
74
+ };
71
75
 
72
76
  const combineKeys = childrenArray => childrenArray.reduce((newKey, child) => `${newKey}${child.key || ''}`, ''); // Group wrappable children for one `<Text>` parent, merging adjacent text nodes
73
77
 
@@ -165,6 +165,20 @@ var _useUniqueId = _interopRequireDefault(require("./useUniqueId"));
165
165
 
166
166
  var _withLinkRouter = _interopRequireDefault(require("./withLinkRouter"));
167
167
 
168
+ var _ssr = require("./ssr");
169
+
170
+ Object.keys(_ssr).forEach(function (key) {
171
+ if (key === "default" || key === "__esModule") return;
172
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
173
+ if (key in exports && exports[key] === _ssr[key]) return;
174
+ Object.defineProperty(exports, key, {
175
+ enumerable: true,
176
+ get: function () {
177
+ return _ssr[key];
178
+ }
179
+ });
180
+ });
181
+
168
182
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
169
183
 
170
184
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -9,6 +9,7 @@ var _exportNames = {
9
9
  copyPropTypes: true,
10
10
  componentPropType: true,
11
11
  hrefAttrsProp: true,
12
+ inputSupportsProps: true,
12
13
  linkProps: true,
13
14
  pressProps: true,
14
15
  paddingProp: true,
@@ -49,6 +50,12 @@ Object.defineProperty(exports, "hrefAttrsProp", {
49
50
  return _hrefAttrsProp.default;
50
51
  }
51
52
  });
53
+ Object.defineProperty(exports, "inputSupportsProps", {
54
+ enumerable: true,
55
+ get: function () {
56
+ return _inputSupportsProps.default;
57
+ }
58
+ });
52
59
  Object.defineProperty(exports, "linkProps", {
53
60
  enumerable: true,
54
61
  get: function () {
@@ -128,6 +135,8 @@ var _componentPropType = _interopRequireDefault(require("./componentPropType"));
128
135
 
129
136
  var _hrefAttrsProp = _interopRequireDefault(require("./hrefAttrsProp"));
130
137
 
138
+ var _inputSupportsProps = _interopRequireDefault(require("./inputSupportsProps"));
139
+
131
140
  var _linkProps = _interopRequireDefault(require("./linkProps"));
132
141
 
133
142
  var _pressProps = _interopRequireDefault(require("./pressProps"));
@@ -9,7 +9,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
 
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
11
 
12
- const inputSupportProps = {
12
+ var _default = {
13
13
  types: {
14
14
  /**
15
15
  * The input label.
@@ -59,8 +59,7 @@ const inputSupportProps = {
59
59
  tooltip,
60
60
  validation
61
61
  },
62
- rest
62
+ ...rest
63
63
  })
64
64
  };
65
- var _default = inputSupportProps;
66
65
  exports.default = _default;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getSSRStyles = exports.getReactNativeWebSSRStyles = void 0;
7
+
8
+ var _AppRegistry = _interopRequireDefault(require("react-native-web/dist/cjs/exports/AppRegistry"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ /** @typedef {import('react').ComponentType} ReactComponent */
13
+
14
+ /** @typedef {import('react').ReactElement} ReactElement */
15
+
16
+ /**
17
+ * Registers the app's root component with React Native Web and generates
18
+ * the main <style> tag containing React Native Web stylesheet styles.
19
+ *
20
+ * @param {ReactComponent} AppRoot
21
+ * @param {string} [appName]
22
+ * @returns {ReactElement[]}
23
+ */
24
+ const getReactNativeWebSSRStyles = (AppRoot, appName = 'app') => {
25
+ _AppRegistry.default.registerComponent(appName, () => AppRoot);
26
+
27
+ const {
28
+ getStyleElement
29
+ } = _AppRegistry.default.getApplication(appName);
30
+
31
+ return [getStyleElement()];
32
+ };
33
+ /**
34
+ * Gets style tags for each currently supported CSS-in-JS library and returns
35
+ * them alongside any existing style tags.
36
+ *
37
+ * @param {ReactComponent} AppRoot
38
+ * @param {string} [appName]
39
+ * @param {ReactElement[]} [existingStyles]
40
+ * @returns {ReactElement[]}
41
+ */
42
+
43
+
44
+ exports.getReactNativeWebSSRStyles = getReactNativeWebSSRStyles;
45
+
46
+ const getSSRStyles = (AppRoot, appName = 'app', existingStyles = []) => {
47
+ return [...existingStyles, ...getReactNativeWebSSRStyles(AppRoot, appName) // if any other CSS-in-JS is added e.g. styled-components generate and add its styles here
48
+ ];
49
+ };
50
+
51
+ exports.getSSRStyles = getSSRStyles;
@@ -0,0 +1,62 @@
1
+ import React, { createContext, useContext, useEffect, useState } from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import AccessibilityInfo from "react-native-web/dist/exports/AccessibilityInfo";
4
+ import Platform from "react-native-web/dist/exports/Platform";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ const ScreenReaderContext = /*#__PURE__*/createContext(false);
7
+ const ReducedMotionContext = /*#__PURE__*/createContext(false);
8
+
9
+ const A11yInfoProvider = ({
10
+ children
11
+ }) => {
12
+ const [reduceMotionEnabled, setReduceMotionEnabled] = useState(false);
13
+ const [screenReaderEnabled, setScreenReaderEnabled] = useState(false);
14
+ useEffect(() => {
15
+ if (process.env.NODE_ENV === 'test') {
16
+ // On Jest these effects do nothing but can cause `act` state change warnings
17
+ // and "...after the Jest environment has been torn down" errors, so skip them.
18
+ return () => {};
19
+ }
20
+
21
+ AccessibilityInfo.addEventListener('reduceMotionChanged', setReduceMotionEnabled);
22
+ AccessibilityInfo.addEventListener('screenReaderChanged', setScreenReaderEnabled);
23
+
24
+ const setInitialA11yInfo = async () => {
25
+ const [initialReduceMotionEnabled, initialScreenReaderEnabled] = await Promise.all([AccessibilityInfo.isReduceMotionEnabled(), AccessibilityInfo.isScreenReaderEnabled()]); // Browsers can't detect screen readers; in RNW isScreenReaderEnabled() is always `true`
26
+ // https://github.com/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/AccessibilityInfo/index.js#L14
27
+
28
+ setScreenReaderEnabled(Platform.OS !== 'web' && !!initialScreenReaderEnabled); // RNW does support isReduceMotionEnabled looking for 'prefers-reduced-motion' state
29
+
30
+ setReduceMotionEnabled(!!initialReduceMotionEnabled);
31
+ };
32
+
33
+ if (AccessibilityInfo.isReduceMotionEnabled && AccessibilityInfo.isScreenReaderEnabled) {
34
+ setInitialA11yInfo();
35
+ }
36
+
37
+ return () => {
38
+ AccessibilityInfo.removeEventListener('reduceMotionChanged', setReduceMotionEnabled);
39
+ AccessibilityInfo.removeEventListener('screenReaderChanged', setScreenReaderEnabled);
40
+ };
41
+ }, []);
42
+ return /*#__PURE__*/_jsx(ReducedMotionContext.Provider, {
43
+ value: reduceMotionEnabled,
44
+ children: /*#__PURE__*/_jsx(ScreenReaderContext.Provider, {
45
+ value: screenReaderEnabled,
46
+ children: children
47
+ })
48
+ });
49
+ };
50
+
51
+ A11yInfoProvider.propTypes = {
52
+ children: PropTypes.node.isRequired
53
+ };
54
+ export default A11yInfoProvider;
55
+ export const useA11yInfo = () => {
56
+ const screenReaderEnabled = useContext(ScreenReaderContext);
57
+ const reduceMotionEnabled = useContext(ReducedMotionContext);
58
+ return {
59
+ reduceMotionEnabled,
60
+ screenReaderEnabled
61
+ };
62
+ };
@@ -0,0 +1,55 @@
1
+ import React, { forwardRef } from 'react';
2
+ import Platform from "react-native-web/dist/exports/Platform";
3
+ import StyleSheet from "react-native-web/dist/exports/StyleSheet";
4
+ import View from "react-native-web/dist/exports/View";
5
+ import PropTypes from 'prop-types';
6
+ import { a11yProps, selectSystemProps, viewProps } from '../utils/props';
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
9
+ /**
10
+ * A11yText is a zero-size invisible element that adds text to be read by screen readers.
11
+ *
12
+ * It should be used to add selectable screen-reader-only text to the main document flow,
13
+ * as a sibling to blocks of text like paragraphs and interactive elements like buttons.
14
+ */
15
+
16
+ const A11yText = /*#__PURE__*/forwardRef(({
17
+ text,
18
+ heading,
19
+ ...rest
20
+ }, ref) => {
21
+ const selectedProps = selectProps({
22
+ // On iOS, needs `accessible` to be true to be focusable without non-a11y content.
23
+ // On Web, `accessible` causes RNW to set attributes that may make the element be treated as a group.
24
+ // On Android, may cause this to be skipped when with `<Text>` siblings in an `accessible` View,
25
+ // see https://github.com/facebook/react-native/issues/30851#issuecomment-790165489
26
+ accessible: Platform.OS === 'ios',
27
+ accessibilityLabel: text,
28
+ accessibilityRole: heading ? 'header' : 'text',
29
+ ...rest
30
+ });
31
+ return /*#__PURE__*/_jsx(View, {
32
+ style: styles.invisible,
33
+ ref: ref,
34
+ ...selectedProps
35
+ });
36
+ });
37
+ A11yText.displayName = 'A11yText';
38
+ A11yText.propTypes = { ...selectedSystemPropTypes,
39
+ text: PropTypes.string.isRequired,
40
+ heading: PropTypes.bool
41
+ };
42
+ const styles = StyleSheet.create({
43
+ invisible: {
44
+ // Without width or height it is not shown
45
+ minHeight: 1,
46
+ minWidth: 1,
47
+ // Ensures it doesn't occupy space
48
+ // position: 'absolute' causes it to be read first in its container
49
+ marginEnd: -1,
50
+ marginBottom: -1,
51
+ // Ensures it is in the correct position on Native
52
+ top: -1
53
+ }
54
+ });
55
+ export default A11yText;
@@ -0,0 +1,76 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { DURATION, MIN_EMPTY_ANGLE, MIN_STROKE_ANGLE, BEZIER, propTypes } from './shared';
3
+ import { useA11yInfo } from '../A11yInfoProvider';
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ import { Fragment as _Fragment } from "react/jsx-runtime";
6
+ import { jsxs as _jsxs } from "react/jsx-runtime";
7
+ const SVG_RADIUS = 20;
8
+ const SVG_CIRCUMFERENCE = SVG_RADIUS * 2 * Math.PI;
9
+ const MIN_SVG_LENGTH = MIN_STROKE_ANGLE / 360 * SVG_CIRCUMFERENCE;
10
+ const MAX_SVG_LENGTH = (1 - MIN_EMPTY_ANGLE / 360) * SVG_CIRCUMFERENCE;
11
+ const animationProps = {
12
+ begin: '0s',
13
+ dur: `${DURATION}ms`,
14
+ fill: 'freeze',
15
+ repeatCount: 'indefinite'
16
+ };
17
+ const bezierProps = {
18
+ calcMode: 'spline',
19
+ keyTimes: '0; 0.5; 1',
20
+ keySplines: `${BEZIER.join(', ')} ; ${BEZIER.join(', ')}`
21
+ }; // We're using svg rather than css here to define the animation to avoid needing to introduce css injection mechanism
22
+ // 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.
23
+
24
+ const Spinner = /*#__PURE__*/forwardRef(({
25
+ size,
26
+ color,
27
+ thickness,
28
+ label
29
+ }, ref) => {
30
+ const {
31
+ reduceMotionEnabled
32
+ } = useA11yInfo();
33
+ return /*#__PURE__*/_jsx("svg", {
34
+ ref: ref,
35
+ width: `${size}px`,
36
+ height: `${size}px`,
37
+ viewBox: "0 0 48 48",
38
+ "aria-valuetext": label,
39
+ role: "progressbar",
40
+ "aria-busy": true,
41
+ children: /*#__PURE__*/_jsxs("g", {
42
+ children: [reduceMotionEnabled ? null : /*#__PURE__*/_jsx("animateTransform", {
43
+ attributeName: "transform",
44
+ type: "rotate",
45
+ values: `-180 24 24;${360 + MIN_STROKE_ANGLE - 180} 24 24`,
46
+ ...animationProps
47
+ }), /*#__PURE__*/_jsx("circle", {
48
+ fill: "none",
49
+ stroke: color,
50
+ strokeWidth: thickness * 48 / size,
51
+ strokeLinecap: "round",
52
+ cx: "24",
53
+ cy: "24",
54
+ r: "20",
55
+ strokeDasharray: reduceMotionEnabled ? MAX_SVG_LENGTH : [MIN_SVG_LENGTH, SVG_CIRCUMFERENCE],
56
+ strokeDashoffset: 0,
57
+ children: reduceMotionEnabled ? null : /*#__PURE__*/_jsxs(_Fragment, {
58
+ children: [/*#__PURE__*/_jsx("animate", {
59
+ attributeName: "stroke-dashoffset",
60
+ values: `0;-10;${MIN_SVG_LENGTH - SVG_CIRCUMFERENCE}`,
61
+ ...animationProps,
62
+ ...bezierProps
63
+ }), /*#__PURE__*/_jsx("animate", {
64
+ attributeName: "stroke-dasharray",
65
+ values: `${MIN_SVG_LENGTH}, 200;${MAX_SVG_LENGTH}, 200;${MIN_SVG_LENGTH}, 200`,
66
+ ...animationProps,
67
+ ...bezierProps
68
+ })]
69
+ })
70
+ })]
71
+ })
72
+ });
73
+ });
74
+ Spinner.displayName = 'Spinner';
75
+ Spinner.propTypes = propTypes;
76
+ export default Spinner;
@@ -0,0 +1,143 @@
1
+ import React, { forwardRef } from 'react';
2
+ import Animated from "react-native-web/dist/exports/Animated";
3
+ import Easing from "react-native-web/dist/exports/Easing";
4
+ import StyleSheet from "react-native-web/dist/exports/StyleSheet";
5
+ import View from "react-native-web/dist/exports/View";
6
+ import { DURATION, MIN_EMPTY_ANGLE, MIN_STROKE_ANGLE, BEZIER, propTypes } from './shared';
7
+ import { useA11yInfo } from '../A11yInfoProvider';
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ const ea = MIN_EMPTY_ANGLE / 2;
10
+ const sa = MIN_STROKE_ANGLE / 2;
11
+ const Spinner = /*#__PURE__*/forwardRef(({
12
+ size,
13
+ color,
14
+ thickness,
15
+ label
16
+ }, ref) => {
17
+ const {
18
+ current: timer
19
+ } = React.useRef(new Animated.Value(0));
20
+ const {
21
+ reduceMotionEnabled
22
+ } = useA11yInfo();
23
+ React.useLayoutEffect(() => {
24
+ const loop = Animated.timing(timer, {
25
+ duration: DURATION,
26
+ easing: Easing.linear,
27
+ // Animated.loop does not work if useNativeDriver is true on web
28
+ useNativeDriver: true,
29
+ toValue: 1,
30
+ isInteraction: false
31
+ });
32
+ if (!reduceMotionEnabled) Animated.loop(loop).start();else loop.stop();
33
+ }, [timer, reduceMotionEnabled]);
34
+ const frames = 60 * DURATION / 1000;
35
+ const easing = Easing.bezier(...BEZIER);
36
+ const containerStyle = {
37
+ width: size,
38
+ height: size / (reduceMotionEnabled ? 1.5 : 2),
39
+ overflow: 'hidden'
40
+ };
41
+ const animationFrequency = reduceMotionEnabled ? [0] : [0, 1]; // Credit to https://github.com/n4kz/react-native-indicators and https://github.com/callstack/react-native-paper for this
42
+
43
+ return /*#__PURE__*/_jsx(View, {
44
+ ref: ref,
45
+ style: [styles.container],
46
+ accessible: true,
47
+ accessibilityLabel: label,
48
+ accessibilityRole: "progressbar",
49
+ accessibilityState: {
50
+ busy: true
51
+ },
52
+ children: /*#__PURE__*/_jsx(Animated.View, {
53
+ style: [{
54
+ width: size,
55
+ height: size
56
+ }],
57
+ collapsable: false,
58
+ children: animationFrequency.map(index => {
59
+ const inputRange = Array.from(new Array(frames), (_, frameIndex) => frameIndex / (frames - 1));
60
+ const outputRange = Array.from(new Array(frames), (_, frameIndex) => {
61
+ let progress = 2 * frameIndex / (frames - 1);
62
+ const rotation = index ? +(360 - sa) : -(180 - sa);
63
+
64
+ if (progress > 1.0) {
65
+ progress = 2.0 - progress;
66
+ }
67
+
68
+ const direction = index ? -1 : +1;
69
+ return `${direction * (180 - (sa + ea)) * easing(progress) + rotation}deg`;
70
+ });
71
+ const layerStyle = {
72
+ width: size,
73
+ height: size
74
+ };
75
+ const viewportStyle = {
76
+ width: size,
77
+ height: size
78
+ };
79
+
80
+ if (!reduceMotionEnabled) {
81
+ layerStyle.transform = [{
82
+ rotate: timer.interpolate({
83
+ inputRange: [0, 1],
84
+ outputRange: [`${0 + ea + sa}deg`, `${2 * 360 + ea + sa}deg`]
85
+ })
86
+ }];
87
+ viewportStyle.transform = [{
88
+ translateY: index ? -size / 2 : 0
89
+ }, {
90
+ rotate: timer.interpolate({
91
+ inputRange,
92
+ outputRange
93
+ })
94
+ }];
95
+ }
96
+
97
+ const offsetStyle = index ? {
98
+ top: size / 2
99
+ } : null;
100
+ const lineStyle = {
101
+ width: size,
102
+ height: size,
103
+ borderColor: color,
104
+ borderWidth: thickness,
105
+ borderRadius: size / 2
106
+ };
107
+ return /*#__PURE__*/_jsx(Animated.View, {
108
+ style: [styles.layer],
109
+ children: /*#__PURE__*/_jsx(Animated.View, {
110
+ style: layerStyle,
111
+ children: /*#__PURE__*/_jsx(Animated.View, {
112
+ style: [containerStyle, offsetStyle],
113
+ collapsable: false,
114
+ children: /*#__PURE__*/_jsx(Animated.View, {
115
+ style: viewportStyle,
116
+ children: /*#__PURE__*/_jsx(Animated.View, {
117
+ style: containerStyle,
118
+ collapsable: false,
119
+ children: /*#__PURE__*/_jsx(Animated.View, {
120
+ style: lineStyle
121
+ })
122
+ })
123
+ })
124
+ })
125
+ })
126
+ }, index);
127
+ })
128
+ })
129
+ });
130
+ });
131
+ Spinner.displayName = 'Spinner';
132
+ Spinner.propTypes = propTypes;
133
+ const styles = StyleSheet.create({
134
+ container: {
135
+ flexGrow: 0,
136
+ flexShrink: 0
137
+ },
138
+ layer: { ...StyleSheet.absoluteFillObject,
139
+ justifyContent: 'center',
140
+ alignItems: 'center'
141
+ }
142
+ });
143
+ export default Spinner;
@@ -0,0 +1,40 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { useThemeTokens } from '../ThemeProvider';
4
+ import { getTokensPropType, variantProp } from '../utils/props';
5
+ import Spinner from './Spinner';
6
+ /**
7
+ * `ActivityIndicator` renders a visual loading state.
8
+ * It does not handle positioning or layout of that visual loader.
9
+ */
10
+
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+
13
+ const ActivityIndicator = ({
14
+ variant,
15
+ tokens,
16
+ label
17
+ }) => {
18
+ const {
19
+ size,
20
+ color,
21
+ thickness
22
+ } = useThemeTokens('ActivityIndicator', tokens, variant);
23
+ return /*#__PURE__*/_jsx(Spinner, {
24
+ size: size,
25
+ color: color,
26
+ thickness: thickness,
27
+ label: label
28
+ });
29
+ };
30
+
31
+ ActivityIndicator.propTypes = {
32
+ variant: variantProp.propType,
33
+ tokens: getTokensPropType('ActivityIndicator'),
34
+
35
+ /**
36
+ * A visually hidden accessible label describing the action taking place
37
+ */
38
+ label: PropTypes.string.isRequired
39
+ };
40
+ export default ActivityIndicator;
@@ -0,0 +1,12 @@
1
+ import PropTypes from 'prop-types'; // these could be specified by the theme
2
+
3
+ export const DURATION = 1800;
4
+ export const MIN_EMPTY_ANGLE = 60;
5
+ export const MIN_STROKE_ANGLE = 30;
6
+ export const BEZIER = [0.42, 0.0, 0.58, 1.0];
7
+ export const propTypes = {
8
+ color: PropTypes.string.isRequired,
9
+ label: PropTypes.string.isRequired,
10
+ size: PropTypes.number.isRequired,
11
+ thickness: PropTypes.number.isRequired
12
+ };
@@ -0,0 +1,26 @@
1
+ var _ThemeProvider$propTy;
2
+
3
+ import React from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import A11yInfoProvider from '../A11yInfoProvider';
6
+ import ViewportProvider from '../ViewportProvider';
7
+ import ThemeProvider from '../ThemeProvider';
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+
10
+ const BaseProvider = ({
11
+ defaultTheme,
12
+ children
13
+ }) => /*#__PURE__*/_jsx(A11yInfoProvider, {
14
+ children: /*#__PURE__*/_jsx(ViewportProvider, {
15
+ children: /*#__PURE__*/_jsx(ThemeProvider, {
16
+ defaultTheme: defaultTheme,
17
+ children: children
18
+ })
19
+ })
20
+ });
21
+
22
+ BaseProvider.propTypes = {
23
+ defaultTheme: (_ThemeProvider$propTy = ThemeProvider.propTypes) === null || _ThemeProvider$propTy === void 0 ? void 0 : _ThemeProvider$propTy.defaultTheme,
24
+ children: PropTypes.node.isRequired
25
+ };
26
+ export default BaseProvider;