@telus-uds/components-base 1.83.0 → 1.85.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 (474) hide show
  1. package/CHANGELOG.md +36 -2
  2. package/lib/A11yInfoProvider/index.js +8 -10
  3. package/lib/A11yText/index.js +2 -4
  4. package/lib/ActivityIndicator/Spinner.js +3 -4
  5. package/lib/ActivityIndicator/Spinner.native.js +2 -4
  6. package/lib/Autocomplete/Autocomplete.js +13 -17
  7. package/lib/Autocomplete/Loading.js +4 -2
  8. package/lib/Autocomplete/Suggestions.js +2 -4
  9. package/lib/Badge/Badge.js +2 -4
  10. package/lib/BaseProvider/HydrationContext.js +5 -7
  11. package/lib/Box/Box.js +5 -7
  12. package/lib/Button/Button.js +3 -3
  13. package/lib/Button/ButtonBase.js +2 -7
  14. package/lib/Button/ButtonDropdown.js +3 -3
  15. package/lib/Button/ButtonGroup.js +11 -4
  16. package/lib/Button/ButtonLink.js +3 -3
  17. package/lib/Card/Card.js +159 -16
  18. package/lib/Card/CardBase.js +2 -4
  19. package/lib/Card/PressableCardBase.js +3 -5
  20. package/lib/CardGroup/CardGroup.js +220 -0
  21. package/lib/CardGroup/dictionary.js +15 -0
  22. package/lib/CardGroup/index.js +10 -0
  23. package/lib/Carousel/Carousel.js +308 -129
  24. package/lib/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +2 -4
  25. package/lib/Carousel/CarouselItem/CarouselItem.js +3 -2
  26. package/lib/Carousel/CarouselStepTracker/CarouselStepTracker.js +4 -2
  27. package/lib/Carousel/CarouselTabs/CarouselTabs.js +2 -4
  28. package/lib/Carousel/CarouselTabs/CarouselTabsPanel.js +6 -8
  29. package/lib/Carousel/CarouselTabs/CarouselTabsPanelItem.js +3 -5
  30. package/lib/Carousel/CarouselThumbnail.js +4 -2
  31. package/lib/Carousel/CarouselThumbnailNavigation.js +2 -4
  32. package/lib/Checkbox/Checkbox.js +2 -4
  33. package/lib/Checkbox/CheckboxButton.js +3 -5
  34. package/lib/Checkbox/CheckboxGroup.js +2 -4
  35. package/lib/Checkbox/CheckboxInput.js +4 -14
  36. package/lib/CheckboxCard/CheckboxCard.js +3 -3
  37. package/lib/CheckboxCardGroup/CheckboxCardGroup.js +3 -3
  38. package/lib/ColourToggle/ColourBubble.js +5 -6
  39. package/lib/ColourToggle/ColourToggle.js +3 -5
  40. package/lib/Divider/Divider.js +2 -4
  41. package/lib/ExpandCollapse/Accordion.js +2 -4
  42. package/lib/ExpandCollapse/Control.js +2 -4
  43. package/lib/ExpandCollapse/ExpandCollapse.js +20 -13
  44. package/lib/ExpandCollapse/Panel.js +15 -5
  45. package/lib/ExpandCollapse/dictionary.js +17 -0
  46. package/lib/Feedback/Feedback.js +2 -4
  47. package/lib/Fieldset/Fieldset.js +2 -4
  48. package/lib/Fieldset/FieldsetContainer.js +2 -4
  49. package/lib/Fieldset/FieldsetContainer.native.js +2 -4
  50. package/lib/Fieldset/Legend.js +2 -4
  51. package/lib/Fieldset/Legend.native.js +2 -4
  52. package/lib/FlexGrid/Col/Col.js +3 -5
  53. package/lib/FlexGrid/FlexGrid.js +2 -4
  54. package/lib/FlexGrid/Row/Row.js +2 -4
  55. package/lib/Footnote/Footnote.js +9 -9
  56. package/lib/Footnote/FootnoteLink.js +5 -3
  57. package/lib/HorizontalScroll/HorizontalScroll.js +8 -10
  58. package/lib/HorizontalScroll/HorizontalScrollButton.js +2 -4
  59. package/lib/HorizontalScroll/ScrollViewEnd.js +5 -10
  60. package/lib/HorizontalScroll/ScrollViewEnd.native.js +2 -4
  61. package/lib/Icon/Icon.js +2 -4
  62. package/lib/Icon/IconText.js +6 -6
  63. package/lib/IconButton/IconButton.js +2 -4
  64. package/lib/InputLabel/InputLabel.js +2 -4
  65. package/lib/InputLabel/LabelContent.js +2 -4
  66. package/lib/InputLabel/LabelContent.native.js +2 -4
  67. package/lib/InputSupports/InputSupports.js +4 -5
  68. package/lib/Link/ChevronLink.js +2 -4
  69. package/lib/Link/InlinePressable.js +8 -7
  70. package/lib/Link/InlinePressable.native.js +10 -8
  71. package/lib/Link/Link.js +2 -4
  72. package/lib/Link/LinkBase.js +2 -4
  73. package/lib/Link/TextButton.js +2 -4
  74. package/lib/List/List.js +13 -11
  75. package/lib/List/ListItem.js +2 -4
  76. package/lib/List/ListItemBase.js +6 -10
  77. package/lib/List/ListItemContent.js +4 -2
  78. package/lib/List/ListItemMark.js +4 -2
  79. package/lib/List/PressableListItemBase.js +2 -4
  80. package/lib/Listbox/GroupControl.js +4 -2
  81. package/lib/Listbox/Listbox.js +6 -6
  82. package/lib/Listbox/ListboxContext.js +3 -4
  83. package/lib/Listbox/ListboxGroup.js +2 -4
  84. package/lib/Listbox/ListboxItem.js +2 -6
  85. package/lib/Listbox/ListboxOverlay.js +2 -6
  86. package/lib/Listbox/PressableItem.js +2 -6
  87. package/lib/Modal/Modal.js +5 -7
  88. package/lib/Modal/ModalContent.js +7 -7
  89. package/lib/Modal/WebModal.js +19 -10
  90. package/lib/MultiSelectFilter/ModalOverlay.js +2 -4
  91. package/lib/MultiSelectFilter/MultiSelectFilter.js +10 -10
  92. package/lib/Notification/Notification.js +5 -7
  93. package/lib/OrderedList/Item.js +4 -10
  94. package/lib/OrderedList/ItemBase.js +2 -4
  95. package/lib/OrderedList/OrderedList.js +5 -13
  96. package/lib/OrderedList/OrderedListBase.js +2 -4
  97. package/lib/Pagination/PageButton.js +1 -1
  98. package/lib/Pagination/Pagination.js +1 -1
  99. package/lib/Pagination/SideButton.js +2 -4
  100. package/lib/PriceLockup/PriceLockup.js +5 -5
  101. package/lib/ProductCard/ProductCard.js +3 -2
  102. package/lib/ProductCardGroup/ProductCardGroup.js +5 -6
  103. package/lib/Progress/Progress.js +2 -4
  104. package/lib/Progress/ProgressBar.js +2 -4
  105. package/lib/Progress/ProgressBarBackground.js +2 -4
  106. package/lib/QuickLinks/QuickLinks.js +2 -4
  107. package/lib/QuickLinks/QuickLinksCard.js +4 -2
  108. package/lib/QuickLinks/QuickLinksItem.js +2 -4
  109. package/lib/QuickLinksFeature/QuickLinksFeature.js +9 -7
  110. package/lib/QuickLinksFeature/QuickLinksFeatureItem.js +10 -12
  111. package/lib/Radio/Radio.js +3 -3
  112. package/lib/Radio/RadioButton.js +61 -15
  113. package/lib/Radio/RadioGroup.js +2 -4
  114. package/lib/Radio/RadioInput.js +6 -18
  115. package/lib/RadioCard/RadioCard.js +3 -3
  116. package/lib/RadioCard/RadioCardGroup.js +3 -3
  117. package/lib/Responsive/Responsive.js +3 -2
  118. package/lib/Responsive/ResponsiveWithMediaQueryStyleSheet.js +3 -2
  119. package/lib/Search/Search.js +2 -4
  120. package/lib/Select/Group.js +4 -2
  121. package/lib/Select/Item.js +4 -2
  122. package/lib/Select/Picker.js +2 -4
  123. package/lib/Select/Picker.native.js +3 -5
  124. package/lib/Select/Select.js +4 -6
  125. package/lib/SideNav/Item.js +2 -4
  126. package/lib/SideNav/ItemContent.js +4 -2
  127. package/lib/SideNav/ItemsGroup.js +2 -4
  128. package/lib/SideNav/SideNav.js +2 -2
  129. package/lib/Skeleton/Skeleton.js +2 -4
  130. package/lib/SkipLink/SkipLink.js +2 -4
  131. package/lib/Spacer/Spacer.js +2 -4
  132. package/lib/StackView/StackView.js +2 -4
  133. package/lib/StackView/StackWrap.js +3 -5
  134. package/lib/StackView/StackWrapBox.js +2 -4
  135. package/lib/StackView/StackWrapGap.js +2 -4
  136. package/lib/StackView/getStackedContent.js +3 -3
  137. package/lib/StepTracker/Step.js +4 -2
  138. package/lib/StepTracker/StepTracker.js +2 -4
  139. package/lib/Tabs/Tabs.js +4 -4
  140. package/lib/Tabs/TabsItem.js +3 -5
  141. package/lib/Tags/Tags.js +2 -4
  142. package/lib/TextInput/TextArea.js +3 -5
  143. package/lib/TextInput/TextInput.js +2 -4
  144. package/lib/TextInput/TextInputBase.js +7 -9
  145. package/lib/ThemeProvider/ThemeProvider.js +5 -7
  146. package/lib/Timeline/Timeline.js +2 -4
  147. package/lib/ToggleSwitch/ToggleSwitch.js +2 -4
  148. package/lib/ToggleSwitch/ToggleSwitchGroup.js +2 -4
  149. package/lib/Tooltip/Tooltip.js +6 -8
  150. package/lib/Tooltip/Tooltip.native.js +12 -14
  151. package/lib/TooltipButton/TooltipButton.js +4 -2
  152. package/lib/Typography/Typography.js +2 -4
  153. package/lib/Validator/Validator.js +11 -13
  154. package/lib/ViewportProvider/ViewportProvider.js +2 -4
  155. package/lib/index.js +8 -0
  156. package/lib/utils/BaseView/BaseView.js +2 -4
  157. package/lib/utils/children.js +4 -6
  158. package/lib/utils/withLinkRouter.js +3 -5
  159. package/lib-module/A11yInfoProvider/index.js +8 -8
  160. package/lib-module/A11yText/index.js +2 -2
  161. package/lib-module/ActivityIndicator/Spinner.js +2 -2
  162. package/lib-module/ActivityIndicator/Spinner.native.js +2 -2
  163. package/lib-module/Autocomplete/Autocomplete.js +13 -14
  164. package/lib-module/Autocomplete/Loading.js +4 -2
  165. package/lib-module/Autocomplete/Suggestions.js +2 -2
  166. package/lib-module/Badge/Badge.js +2 -2
  167. package/lib-module/BaseProvider/HydrationContext.js +5 -5
  168. package/lib-module/Box/Box.js +5 -5
  169. package/lib-module/Button/Button.js +2 -2
  170. package/lib-module/Button/ButtonBase.js +2 -5
  171. package/lib-module/Button/ButtonDropdown.js +2 -2
  172. package/lib-module/Button/ButtonGroup.js +11 -2
  173. package/lib-module/Button/ButtonLink.js +2 -2
  174. package/lib-module/Card/Card.js +159 -14
  175. package/lib-module/Card/CardBase.js +2 -2
  176. package/lib-module/Card/PressableCardBase.js +4 -4
  177. package/lib-module/CardGroup/CardGroup.js +210 -0
  178. package/lib-module/CardGroup/dictionary.js +8 -0
  179. package/lib-module/CardGroup/index.js +2 -0
  180. package/lib-module/Carousel/Carousel.js +308 -129
  181. package/lib-module/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +2 -2
  182. package/lib-module/Carousel/CarouselItem/CarouselItem.js +3 -2
  183. package/lib-module/Carousel/CarouselStepTracker/CarouselStepTracker.js +4 -2
  184. package/lib-module/Carousel/CarouselTabs/CarouselTabs.js +2 -2
  185. package/lib-module/Carousel/CarouselTabs/CarouselTabsPanel.js +6 -6
  186. package/lib-module/Carousel/CarouselTabs/CarouselTabsPanelItem.js +3 -3
  187. package/lib-module/Carousel/CarouselThumbnail.js +4 -2
  188. package/lib-module/Carousel/CarouselThumbnailNavigation.js +2 -2
  189. package/lib-module/Checkbox/Checkbox.js +2 -2
  190. package/lib-module/Checkbox/CheckboxButton.js +3 -3
  191. package/lib-module/Checkbox/CheckboxGroup.js +2 -2
  192. package/lib-module/Checkbox/CheckboxInput.js +4 -12
  193. package/lib-module/CheckboxCard/CheckboxCard.js +2 -2
  194. package/lib-module/CheckboxCardGroup/CheckboxCardGroup.js +2 -2
  195. package/lib-module/ColourToggle/ColourBubble.js +5 -4
  196. package/lib-module/ColourToggle/ColourToggle.js +3 -3
  197. package/lib-module/Divider/Divider.js +2 -2
  198. package/lib-module/ExpandCollapse/Accordion.js +2 -2
  199. package/lib-module/ExpandCollapse/Control.js +2 -2
  200. package/lib-module/ExpandCollapse/ExpandCollapse.js +20 -11
  201. package/lib-module/ExpandCollapse/Panel.js +16 -4
  202. package/lib-module/ExpandCollapse/dictionary.js +10 -0
  203. package/lib-module/Feedback/Feedback.js +2 -2
  204. package/lib-module/Fieldset/Fieldset.js +2 -2
  205. package/lib-module/Fieldset/FieldsetContainer.js +2 -2
  206. package/lib-module/Fieldset/FieldsetContainer.native.js +2 -2
  207. package/lib-module/Fieldset/Legend.js +2 -2
  208. package/lib-module/Fieldset/Legend.native.js +2 -2
  209. package/lib-module/FlexGrid/Col/Col.js +3 -3
  210. package/lib-module/FlexGrid/FlexGrid.js +2 -2
  211. package/lib-module/FlexGrid/Row/Row.js +2 -2
  212. package/lib-module/Footnote/Footnote.js +9 -7
  213. package/lib-module/Footnote/FootnoteLink.js +5 -4
  214. package/lib-module/HorizontalScroll/HorizontalScroll.js +8 -8
  215. package/lib-module/HorizontalScroll/HorizontalScrollButton.js +2 -2
  216. package/lib-module/HorizontalScroll/ScrollViewEnd.js +5 -8
  217. package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +2 -2
  218. package/lib-module/Icon/Icon.js +2 -2
  219. package/lib-module/Icon/IconText.js +5 -5
  220. package/lib-module/IconButton/IconButton.js +2 -2
  221. package/lib-module/InputLabel/InputLabel.js +2 -2
  222. package/lib-module/InputLabel/LabelContent.js +2 -2
  223. package/lib-module/InputLabel/LabelContent.native.js +2 -2
  224. package/lib-module/InputSupports/InputSupports.js +4 -3
  225. package/lib-module/Link/ChevronLink.js +2 -2
  226. package/lib-module/Link/InlinePressable.js +10 -4
  227. package/lib-module/Link/InlinePressable.native.js +12 -6
  228. package/lib-module/Link/Link.js +2 -2
  229. package/lib-module/Link/LinkBase.js +2 -2
  230. package/lib-module/Link/TextButton.js +2 -2
  231. package/lib-module/List/List.js +13 -9
  232. package/lib-module/List/ListItem.js +2 -2
  233. package/lib-module/List/ListItemBase.js +6 -8
  234. package/lib-module/List/ListItemContent.js +4 -2
  235. package/lib-module/List/ListItemMark.js +4 -2
  236. package/lib-module/List/PressableListItemBase.js +2 -2
  237. package/lib-module/Listbox/GroupControl.js +4 -2
  238. package/lib-module/Listbox/Listbox.js +7 -7
  239. package/lib-module/Listbox/ListboxContext.js +2 -2
  240. package/lib-module/Listbox/ListboxGroup.js +2 -2
  241. package/lib-module/Listbox/ListboxItem.js +2 -3
  242. package/lib-module/Listbox/ListboxOverlay.js +2 -3
  243. package/lib-module/Listbox/PressableItem.js +2 -3
  244. package/lib-module/Modal/Modal.js +5 -5
  245. package/lib-module/Modal/ModalContent.js +7 -5
  246. package/lib-module/Modal/WebModal.js +19 -10
  247. package/lib-module/MultiSelectFilter/ModalOverlay.js +2 -2
  248. package/lib-module/MultiSelectFilter/MultiSelectFilter.js +10 -8
  249. package/lib-module/Notification/Notification.js +5 -5
  250. package/lib-module/OrderedList/Item.js +4 -8
  251. package/lib-module/OrderedList/ItemBase.js +2 -2
  252. package/lib-module/OrderedList/OrderedList.js +6 -12
  253. package/lib-module/OrderedList/OrderedListBase.js +2 -2
  254. package/lib-module/Pagination/PageButton.js +2 -2
  255. package/lib-module/Pagination/Pagination.js +2 -2
  256. package/lib-module/Pagination/SideButton.js +2 -2
  257. package/lib-module/PriceLockup/PriceLockup.js +5 -5
  258. package/lib-module/ProductCard/ProductCard.js +3 -2
  259. package/lib-module/ProductCardGroup/ProductCardGroup.js +5 -4
  260. package/lib-module/Progress/Progress.js +2 -2
  261. package/lib-module/Progress/ProgressBar.js +2 -2
  262. package/lib-module/Progress/ProgressBarBackground.js +2 -2
  263. package/lib-module/QuickLinks/QuickLinks.js +2 -2
  264. package/lib-module/QuickLinks/QuickLinksCard.js +4 -2
  265. package/lib-module/QuickLinks/QuickLinksItem.js +2 -2
  266. package/lib-module/QuickLinksFeature/QuickLinksFeature.js +9 -5
  267. package/lib-module/QuickLinksFeature/QuickLinksFeatureItem.js +10 -10
  268. package/lib-module/Radio/Radio.js +2 -2
  269. package/lib-module/Radio/RadioButton.js +62 -14
  270. package/lib-module/Radio/RadioGroup.js +2 -2
  271. package/lib-module/Radio/RadioInput.js +6 -16
  272. package/lib-module/RadioCard/RadioCard.js +2 -2
  273. package/lib-module/RadioCard/RadioCardGroup.js +2 -2
  274. package/lib-module/Responsive/Responsive.js +3 -2
  275. package/lib-module/Responsive/ResponsiveWithMediaQueryStyleSheet.js +3 -2
  276. package/lib-module/Search/Search.js +2 -2
  277. package/lib-module/Select/Group.js +4 -2
  278. package/lib-module/Select/Item.js +4 -2
  279. package/lib-module/Select/Picker.js +2 -2
  280. package/lib-module/Select/Picker.native.js +3 -3
  281. package/lib-module/Select/Select.js +4 -4
  282. package/lib-module/SideNav/Item.js +2 -2
  283. package/lib-module/SideNav/ItemContent.js +4 -2
  284. package/lib-module/SideNav/ItemsGroup.js +2 -2
  285. package/lib-module/SideNav/SideNav.js +3 -3
  286. package/lib-module/Skeleton/Skeleton.js +2 -2
  287. package/lib-module/SkipLink/SkipLink.js +2 -2
  288. package/lib-module/Spacer/Spacer.js +2 -2
  289. package/lib-module/StackView/StackView.js +2 -2
  290. package/lib-module/StackView/StackWrap.js +3 -3
  291. package/lib-module/StackView/StackWrapBox.js +2 -2
  292. package/lib-module/StackView/StackWrapGap.js +2 -2
  293. package/lib-module/StackView/getStackedContent.js +4 -4
  294. package/lib-module/StepTracker/Step.js +4 -2
  295. package/lib-module/StepTracker/StepTracker.js +2 -2
  296. package/lib-module/Tabs/Tabs.js +3 -3
  297. package/lib-module/Tabs/TabsItem.js +3 -3
  298. package/lib-module/Tags/Tags.js +2 -2
  299. package/lib-module/TextInput/TextArea.js +3 -3
  300. package/lib-module/TextInput/TextInput.js +2 -2
  301. package/lib-module/TextInput/TextInputBase.js +7 -7
  302. package/lib-module/ThemeProvider/ThemeProvider.js +5 -5
  303. package/lib-module/Timeline/Timeline.js +2 -2
  304. package/lib-module/ToggleSwitch/ToggleSwitch.js +2 -2
  305. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +2 -2
  306. package/lib-module/Tooltip/Tooltip.js +6 -6
  307. package/lib-module/Tooltip/Tooltip.native.js +12 -12
  308. package/lib-module/TooltipButton/TooltipButton.js +4 -2
  309. package/lib-module/Typography/Typography.js +2 -2
  310. package/lib-module/Validator/Validator.js +11 -11
  311. package/lib-module/ViewportProvider/ViewportProvider.js +2 -2
  312. package/lib-module/index.js +1 -0
  313. package/lib-module/utils/BaseView/BaseView.js +2 -2
  314. package/lib-module/utils/children.js +4 -4
  315. package/lib-module/utils/withLinkRouter.js +3 -3
  316. package/package.json +2 -2
  317. package/src/A11yInfoProvider/index.jsx +8 -8
  318. package/src/A11yText/index.jsx +2 -2
  319. package/src/ActivityIndicator/Spinner.jsx +2 -2
  320. package/src/ActivityIndicator/Spinner.native.jsx +2 -2
  321. package/src/Autocomplete/Autocomplete.jsx +15 -14
  322. package/src/Autocomplete/Loading.jsx +6 -3
  323. package/src/Autocomplete/Suggestions.jsx +2 -2
  324. package/src/Badge/Badge.jsx +2 -2
  325. package/src/BaseProvider/HydrationContext.jsx +5 -5
  326. package/src/Box/Box.jsx +5 -5
  327. package/src/Button/Button.jsx +11 -9
  328. package/src/Button/ButtonBase.jsx +2 -3
  329. package/src/Button/ButtonDropdown.jsx +2 -2
  330. package/src/Button/ButtonGroup.jsx +11 -2
  331. package/src/Button/ButtonLink.jsx +2 -2
  332. package/src/Card/Card.jsx +151 -11
  333. package/src/Card/CardBase.jsx +2 -2
  334. package/src/Card/PressableCardBase.jsx +18 -4
  335. package/src/CardGroup/CardGroup.jsx +249 -0
  336. package/src/CardGroup/dictionary.js +8 -0
  337. package/src/CardGroup/index.js +3 -0
  338. package/src/Carousel/Carousel.jsx +338 -117
  339. package/src/Carousel/CarouselFirstFocus/CarouselFirstFocus.jsx +2 -2
  340. package/src/Carousel/CarouselItem/CarouselItem.jsx +19 -17
  341. package/src/Carousel/CarouselStepTracker/CarouselStepTracker.jsx +5 -3
  342. package/src/Carousel/CarouselTabs/CarouselTabs.jsx +2 -2
  343. package/src/Carousel/CarouselTabs/CarouselTabsPanel.jsx +6 -6
  344. package/src/Carousel/CarouselTabs/CarouselTabsPanelItem.jsx +3 -3
  345. package/src/Carousel/CarouselThumbnail.jsx +6 -2
  346. package/src/Carousel/CarouselThumbnailNavigation.jsx +2 -2
  347. package/src/Checkbox/Checkbox.jsx +2 -2
  348. package/src/Checkbox/CheckboxButton.jsx +5 -7
  349. package/src/Checkbox/CheckboxGroup.jsx +2 -2
  350. package/src/Checkbox/CheckboxInput.jsx +15 -12
  351. package/src/CheckboxCard/CheckboxCard.jsx +2 -2
  352. package/src/CheckboxCardGroup/CheckboxCardGroup.jsx +2 -2
  353. package/src/ColourToggle/ColourBubble.jsx +5 -4
  354. package/src/ColourToggle/ColourToggle.jsx +3 -3
  355. package/src/Divider/Divider.jsx +2 -2
  356. package/src/ExpandCollapse/Accordion.jsx +4 -2
  357. package/src/ExpandCollapse/Control.jsx +2 -2
  358. package/src/ExpandCollapse/ExpandCollapse.jsx +15 -7
  359. package/src/ExpandCollapse/Panel.jsx +30 -8
  360. package/src/ExpandCollapse/dictionary.js +10 -0
  361. package/src/Feedback/Feedback.jsx +2 -2
  362. package/src/Fieldset/Fieldset.jsx +2 -2
  363. package/src/Fieldset/FieldsetContainer.jsx +2 -2
  364. package/src/Fieldset/FieldsetContainer.native.jsx +2 -2
  365. package/src/Fieldset/Legend.jsx +2 -2
  366. package/src/Fieldset/Legend.native.jsx +2 -2
  367. package/src/FlexGrid/Col/Col.jsx +3 -3
  368. package/src/FlexGrid/FlexGrid.jsx +2 -2
  369. package/src/FlexGrid/Row/Row.jsx +2 -2
  370. package/src/Footnote/Footnote.jsx +111 -98
  371. package/src/Footnote/FootnoteLink.jsx +35 -31
  372. package/src/HorizontalScroll/HorizontalScroll.jsx +8 -8
  373. package/src/HorizontalScroll/HorizontalScrollButton.jsx +2 -2
  374. package/src/HorizontalScroll/ScrollViewEnd.jsx +4 -8
  375. package/src/HorizontalScroll/ScrollViewEnd.native.jsx +2 -2
  376. package/src/Icon/Icon.jsx +2 -2
  377. package/src/Icon/IconText.jsx +7 -5
  378. package/src/IconButton/IconButton.jsx +2 -2
  379. package/src/InputLabel/InputLabel.jsx +2 -2
  380. package/src/InputLabel/LabelContent.jsx +2 -2
  381. package/src/InputLabel/LabelContent.native.jsx +2 -2
  382. package/src/InputSupports/InputSupports.jsx +4 -3
  383. package/src/Link/ChevronLink.jsx +2 -2
  384. package/src/Link/InlinePressable.jsx +22 -15
  385. package/src/Link/InlinePressable.native.jsx +12 -6
  386. package/src/Link/Link.jsx +2 -2
  387. package/src/Link/LinkBase.jsx +2 -2
  388. package/src/Link/TextButton.jsx +2 -2
  389. package/src/List/List.jsx +15 -7
  390. package/src/List/ListItem.jsx +2 -2
  391. package/src/List/ListItemBase.jsx +6 -12
  392. package/src/List/ListItemContent.jsx +5 -2
  393. package/src/List/ListItemMark.jsx +5 -3
  394. package/src/List/PressableListItemBase.jsx +2 -2
  395. package/src/Listbox/GroupControl.jsx +5 -2
  396. package/src/Listbox/Listbox.jsx +7 -7
  397. package/src/Listbox/ListboxContext.js +2 -2
  398. package/src/Listbox/ListboxGroup.jsx +2 -2
  399. package/src/Listbox/ListboxItem.jsx +2 -3
  400. package/src/Listbox/ListboxOverlay.jsx +2 -3
  401. package/src/Listbox/PressableItem.jsx +2 -3
  402. package/src/Modal/Modal.jsx +5 -5
  403. package/src/Modal/ModalContent.jsx +132 -125
  404. package/src/Modal/WebModal.jsx +17 -8
  405. package/src/MultiSelectFilter/ModalOverlay.jsx +2 -2
  406. package/src/MultiSelectFilter/MultiSelectFilter.jsx +263 -252
  407. package/src/Notification/Notification.jsx +5 -5
  408. package/src/OrderedList/Item.jsx +4 -6
  409. package/src/OrderedList/ItemBase.jsx +2 -2
  410. package/src/OrderedList/OrderedList.jsx +4 -7
  411. package/src/OrderedList/OrderedListBase.jsx +2 -2
  412. package/src/Pagination/PageButton.jsx +2 -2
  413. package/src/Pagination/Pagination.jsx +2 -2
  414. package/src/Pagination/SideButton.jsx +2 -2
  415. package/src/PriceLockup/PriceLockup.jsx +93 -88
  416. package/src/ProductCard/ProductCard.jsx +90 -84
  417. package/src/ProductCardGroup/ProductCardGroup.jsx +5 -5
  418. package/src/Progress/Progress.jsx +2 -2
  419. package/src/Progress/ProgressBar.jsx +2 -2
  420. package/src/Progress/ProgressBarBackground.jsx +4 -2
  421. package/src/QuickLinks/QuickLinks.jsx +2 -2
  422. package/src/QuickLinks/QuickLinksCard.jsx +9 -3
  423. package/src/QuickLinks/QuickLinksItem.jsx +2 -2
  424. package/src/QuickLinksFeature/QuickLinksFeature.jsx +31 -27
  425. package/src/QuickLinksFeature/QuickLinksFeatureItem.jsx +3 -3
  426. package/src/Radio/Radio.jsx +2 -2
  427. package/src/Radio/RadioButton.jsx +58 -6
  428. package/src/Radio/RadioGroup.jsx +2 -2
  429. package/src/Radio/RadioInput.jsx +15 -14
  430. package/src/RadioCard/RadioCard.jsx +2 -2
  431. package/src/RadioCard/RadioCardGroup.jsx +2 -2
  432. package/src/Responsive/Responsive.jsx +8 -3
  433. package/src/Responsive/ResponsiveWithMediaQueryStyleSheet.jsx +23 -16
  434. package/src/Search/Search.jsx +2 -2
  435. package/src/Select/Group.jsx +9 -3
  436. package/src/Select/Item.jsx +7 -1
  437. package/src/Select/Picker.jsx +2 -2
  438. package/src/Select/Picker.native.jsx +3 -3
  439. package/src/Select/Select.jsx +4 -4
  440. package/src/SideNav/Item.jsx +2 -2
  441. package/src/SideNav/ItemContent.jsx +7 -3
  442. package/src/SideNav/ItemsGroup.jsx +2 -2
  443. package/src/SideNav/SideNav.jsx +3 -3
  444. package/src/Skeleton/Skeleton.jsx +2 -2
  445. package/src/SkipLink/SkipLink.jsx +2 -2
  446. package/src/Spacer/Spacer.jsx +2 -2
  447. package/src/StackView/StackView.jsx +2 -2
  448. package/src/StackView/StackWrap.jsx +3 -3
  449. package/src/StackView/StackWrapBox.jsx +2 -2
  450. package/src/StackView/StackWrapGap.jsx +2 -2
  451. package/src/StackView/getStackedContent.jsx +4 -4
  452. package/src/StepTracker/Step.jsx +75 -67
  453. package/src/StepTracker/StepTracker.jsx +2 -2
  454. package/src/Tabs/Tabs.jsx +3 -3
  455. package/src/Tabs/TabsItem.jsx +3 -3
  456. package/src/Tags/Tags.jsx +2 -2
  457. package/src/TextInput/TextArea.jsx +3 -3
  458. package/src/TextInput/TextInput.jsx +2 -2
  459. package/src/TextInput/TextInputBase.jsx +7 -7
  460. package/src/ThemeProvider/ThemeProvider.jsx +5 -5
  461. package/src/Timeline/Timeline.jsx +2 -2
  462. package/src/ToggleSwitch/ToggleSwitch.jsx +2 -2
  463. package/src/ToggleSwitch/ToggleSwitchGroup.jsx +2 -2
  464. package/src/Tooltip/Tooltip.jsx +6 -6
  465. package/src/Tooltip/Tooltip.native.jsx +12 -12
  466. package/src/TooltipButton/TooltipButton.jsx +5 -2
  467. package/src/Typography/Typography.jsx +2 -2
  468. package/src/Validator/Validator.jsx +11 -11
  469. package/src/ViewportProvider/ViewportProvider.jsx +2 -2
  470. package/src/index.js +1 -0
  471. package/src/utils/BaseView/BaseView.jsx +2 -2
  472. package/src/utils/children.jsx +4 -4
  473. package/src/utils/withLinkRouter.jsx +3 -3
  474. package/types/ExpandCollapse.d.ts +1 -1
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react';
1
+ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import Text from "react-native-web/dist/exports/Text";
4
4
  import View from "react-native-web/dist/exports/View";
@@ -41,7 +41,7 @@ const selectTextStyles = (_ref, themeOptions) => {
41
41
  };
42
42
 
43
43
  // General-purpose flexible theme-neutral base component for text
44
- const Typography = /*#__PURE__*/forwardRef((_ref2, ref) => {
44
+ const Typography = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
45
45
  let {
46
46
  children,
47
47
  variant,
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, createRef, useRef, useMemo, useEffect, useState } from 'react';
1
+ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import View from "react-native-web/dist/exports/View";
4
4
  import StyleSheet from "react-native-web/dist/exports/StyleSheet";
@@ -21,7 +21,7 @@ const selectCodeTextInputTokens = _ref => {
21
21
  icon: null
22
22
  };
23
23
  };
24
- const Validator = /*#__PURE__*/forwardRef((_ref2, ref) => {
24
+ const Validator = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
25
25
  let {
26
26
  value = '',
27
27
  inactive,
@@ -30,18 +30,18 @@ const Validator = /*#__PURE__*/forwardRef((_ref2, ref) => {
30
30
  variant = {},
31
31
  ...rest
32
32
  } = _ref2;
33
- const defaultRef = useRef();
33
+ const defaultRef = React.useRef();
34
34
  const codeRef = ref ?? defaultRef;
35
35
  const {
36
36
  supportsProps
37
37
  } = selectProps(rest);
38
38
  const strValidation = supportsProps.validation;
39
- const [individualCodes, setIndividualCodes] = useState({});
40
- const [text, setText] = useState(value);
39
+ const [individualCodes, setIndividualCodes] = React.useState({});
40
+ const [text, setText] = React.useState(value);
41
41
  const validatorsLength = 6;
42
42
  const prefix = 'code';
43
43
  const sufixValidation = 'Validation';
44
- const [isHover, setIsHover] = useState(false);
44
+ const [isHover, setIsHover] = React.useState(false);
45
45
  const handleMouseOver = () => {
46
46
  setIsHover(true);
47
47
  };
@@ -51,11 +51,11 @@ const Validator = /*#__PURE__*/forwardRef((_ref2, ref) => {
51
51
  const themeTokens = useThemeTokens('TextInput', tokens, variant, {
52
52
  hover: isHover
53
53
  });
54
- const [codeReferences, singleCodes] = useMemo(() => {
54
+ const [codeReferences, singleCodes] = React.useMemo(() => {
55
55
  const codes = [];
56
56
  const valueCodes = {};
57
57
  for (let i = 0; validatorsLength && i < validatorsLength; i += 1) {
58
- codes[prefix + i] = /*#__PURE__*/createRef();
58
+ codes[prefix + i] = /*#__PURE__*/React.createRef();
59
59
  valueCodes[prefix + i] = '';
60
60
  valueCodes[prefix + i + sufixValidation] = '';
61
61
  }
@@ -135,13 +135,13 @@ const Validator = /*#__PURE__*/forwardRef((_ref2, ref) => {
135
135
  }
136
136
  return components;
137
137
  };
138
- useEffect(() => {
138
+ React.useEffect(() => {
139
139
  /* eslint-disable no-unused-expressions */
140
140
  if (Number(value).toString() !== 'NaN') setText(value);
141
141
  }, [value]);
142
142
 
143
143
  /* eslint-disable react-hooks/exhaustive-deps */
144
- useEffect(() => {
144
+ React.useEffect(() => {
145
145
  for (let i = 0; i < validatorsLength; i += 1) {
146
146
  codeReferences[prefix + i].current.value = text[i] ?? '';
147
147
  handleSingleCodes(prefix + i, text[i] ?? '', text[i] ? 'success' : '');
@@ -149,7 +149,7 @@ const Validator = /*#__PURE__*/forwardRef((_ref2, ref) => {
149
149
  }, [text]);
150
150
 
151
151
  /* eslint-disable react-hooks/exhaustive-deps */
152
- useEffect(() => {
152
+ React.useEffect(() => {
153
153
  const handlePasteCode = event => {
154
154
  setText('');
155
155
  const clipBoardText = event.clipboardData.getData('text');
@@ -1,4 +1,4 @@
1
- import React, { useState } from 'react';
1
+ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { viewports } from '@telus-uds/system-constants';
4
4
  import { ViewportContext } from './useViewport';
@@ -14,7 +14,7 @@ const ViewportProvider = _ref => {
14
14
  } = _ref;
15
15
  // Default to the smallest viewport for mobile-first SSR. On client side, this is updated
16
16
  // by useViewportListener in a layout effect before anything is shown to the user.
17
- const [viewport, setViewport] = useState(viewports.keys[0]);
17
+ const [viewport, setViewport] = React.useState(viewports.keys[0]);
18
18
  useViewportListener(setViewport);
19
19
  return /*#__PURE__*/_jsx(ViewportContext.Provider, {
20
20
  value: viewport,
@@ -5,6 +5,7 @@ export { default as Box } from './Box';
5
5
  export { default as Badge } from './Badge';
6
6
  export * from './Button';
7
7
  export { default as Card, PressableCardBase } from './Card';
8
+ export { default as CardGroup } from './CardGroup';
8
9
  export * from './Carousel';
9
10
  export { default as Listbox } from './Listbox';
10
11
  export { default as Checkbox } from './Checkbox';
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react';
1
+ import React from 'react';
2
2
  import NativeView from "react-native-web/dist/exports/View";
3
3
  import StyleSheet from "react-native-web/dist/exports/StyleSheet";
4
4
  import PropTypes from 'prop-types';
@@ -9,7 +9,7 @@ import { useTheme } from '../../ThemeProvider';
9
9
  * - a zIndex: 'auto' style added to prevent unexpectedly causing children to overlap other elements from other stacking contexts
10
10
  */
11
11
  import { jsx as _jsx } from "react/jsx-runtime";
12
- const BaseView = /*#__PURE__*/forwardRef((_ref, ref) => {
12
+ const BaseView = /*#__PURE__*/React.forwardRef((_ref, ref) => {
13
13
  let {
14
14
  children,
15
15
  style,
@@ -1,4 +1,4 @@
1
- import React, { Children, Fragment } from 'react';
1
+ import React from 'react';
2
2
  import Text from "react-native-web/dist/exports/Text";
3
3
  import A11yText from '../A11yText';
4
4
 
@@ -38,10 +38,10 @@ import { jsx as _jsx } from "react/jsx-runtime";
38
38
  export const unpackFragment = child => {
39
39
  var _child$props;
40
40
  // If this level is a set of top-level siblings rather than one child, check each in turn
41
- if (Children.count(child) > 1) return Children.map(child, unpackFragment);
41
+ if (React.Children.count(child) > 1) return React.Children.map(child, unpackFragment);
42
42
 
43
43
  // When a fragment is found, unpack its children to the top level and check them
44
- if ((child === null || child === void 0 ? void 0 : child.type) === Fragment) return unpackFragment((_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.children);
44
+ if ((child === null || child === void 0 ? void 0 : child.type) === React.Fragment) return unpackFragment((_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.children);
45
45
 
46
46
  // Stop unpacking as soon as any non-fragment child is found
47
47
  return child;
@@ -84,7 +84,7 @@ const wrapChild = (child, wrappedText) => {
84
84
  */
85
85
  export const wrapStringsInText = function (children) {
86
86
  let textProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
87
- const childrenArray = unpackFragment(Children.toArray(children));
87
+ const childrenArray = unpackFragment(React.Children.toArray(children));
88
88
 
89
89
  // Group adjacent wrapable children together in one Text element to create as few Text elements
90
90
  // as possible, e.g. give <X>Text {someString}</X> one Text, same as <X>{`Text ${someString}`}</X>
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react';
1
+ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import hasOwnProperty from './hasOwnProperty';
4
4
 
@@ -17,7 +17,7 @@ import hasOwnProperty from './hasOwnProperty';
17
17
  * @example A LinkRouter component to be used with link-like components might look like:
18
18
  *
19
19
  * ```jsx
20
- * const LinkLinkRouter = forwardRef(({ Component, linkRouterProps: { to, options }, href, ...rest }, ref) => {
20
+ * const LinkLinkRouter = React.forwardRef(({ Component, linkRouterProps: { to, options }, href, ...rest }, ref) => {
21
21
  * const { href: resolvedHref, onClick } = useSomeRouterHook({ to, href, options })
22
22
  * return <Component href={resolvedHref} onPress={onClick} {...rest} />
23
23
  * })
@@ -32,7 +32,7 @@ import hasOwnProperty from './hasOwnProperty';
32
32
  */
33
33
  import { jsx as _jsx } from "react/jsx-runtime";
34
34
  const withLinkRouter = Component => {
35
- const wrappedComponent = /*#__PURE__*/forwardRef((_ref, ref) => {
35
+ const wrappedComponent = /*#__PURE__*/React.forwardRef((_ref, ref) => {
36
36
  let {
37
37
  LinkRouter,
38
38
  linkRouterProps,
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "@floating-ui/react-native": "^0.8.1",
12
12
  "@gorhom/portal": "^1.0.14",
13
13
  "@telus-uds/system-constants": "^1.3.0",
14
- "@telus-uds/system-theme-tokens": "^2.54.0",
14
+ "@telus-uds/system-theme-tokens": "^2.56.0",
15
15
  "airbnb-prop-types": "^2.16.0",
16
16
  "css-mediaquery": "^0.1.2",
17
17
  "expo-linear-gradient": "^12.5.0",
@@ -85,6 +85,6 @@
85
85
  "standard-engine": {
86
86
  "skip": true
87
87
  },
88
- "version": "1.83.0",
88
+ "version": "1.85.0",
89
89
  "types": "types/index.d.ts"
90
90
  }
@@ -1,15 +1,15 @@
1
- import React, { createContext, useContext, useEffect, useState } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import { AccessibilityInfo, Platform } from 'react-native'
4
4
 
5
- const ScreenReaderContext = createContext(false)
6
- const ReducedMotionContext = createContext(false)
5
+ const ScreenReaderContext = React.createContext(false)
6
+ const ReducedMotionContext = React.createContext(false)
7
7
 
8
8
  const A11yInfoProvider = ({ children }) => {
9
- const [reduceMotionEnabled, setReduceMotionEnabled] = useState(false)
10
- const [screenReaderEnabled, setScreenReaderEnabled] = useState(false)
9
+ const [reduceMotionEnabled, setReduceMotionEnabled] = React.useState(false)
10
+ const [screenReaderEnabled, setScreenReaderEnabled] = React.useState(false)
11
11
 
12
- useEffect(() => {
12
+ React.useEffect(() => {
13
13
  if (process.env.NODE_ENV === 'test') {
14
14
  // On Jest these effects do nothing but can cause `act` state change warnings
15
15
  // and "...after the Jest environment has been torn down" errors, so skip them.
@@ -65,8 +65,8 @@ A11yInfoProvider.propTypes = {
65
65
  export default A11yInfoProvider
66
66
 
67
67
  export const useA11yInfo = () => {
68
- const screenReaderEnabled = useContext(ScreenReaderContext)
69
- const reduceMotionEnabled = useContext(ReducedMotionContext)
68
+ const screenReaderEnabled = React.useContext(ScreenReaderContext)
69
+ const reduceMotionEnabled = React.useContext(ReducedMotionContext)
70
70
 
71
71
  return {
72
72
  reduceMotionEnabled,
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import { Platform, StyleSheet, View } from 'react-native'
3
3
  import PropTypes from 'prop-types'
4
4
 
@@ -12,7 +12,7 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, vie
12
12
  * It should be used to add selectable screen-reader-only text to the main document flow,
13
13
  * as a sibling to blocks of text like paragraphs and interactive elements like buttons.
14
14
  */
15
- const A11yText = forwardRef(({ text, heading, ...rest }, ref) => {
15
+ const A11yText = React.forwardRef(({ text, heading, ...rest }, ref) => {
16
16
  const selectedProps = selectProps({
17
17
  // On iOS, needs `accessible` to be true to be focusable without non-a11y content.
18
18
  // On Web, `accessible` causes RNW to set attributes that may make the element be treated as a group.
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import { DURATION, MIN_EMPTY_ANGLE, MIN_STROKE_ANGLE, BEZIER, propTypes } from './shared'
3
3
  import { useA11yInfo } from '../A11yInfoProvider'
4
4
 
@@ -21,7 +21,7 @@ const bezierProps = {
21
21
  }
22
22
  // We're using svg rather than css here to define the animation to avoid needing to introduce css injection mechanism
23
23
  // 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.
24
- const Spinner = forwardRef(({ size, color, thickness, label, isStatic = false }, ref) => {
24
+ const Spinner = React.forwardRef(({ size, color, thickness, label, isStatic = false }, ref) => {
25
25
  const { reduceMotionEnabled } = useA11yInfo()
26
26
  const reduceMotion = reduceMotionEnabled || isStatic
27
27
  return (
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import { Animated, Easing, StyleSheet, View } from 'react-native'
3
3
  import { DURATION, MIN_EMPTY_ANGLE, MIN_STROKE_ANGLE, BEZIER, propTypes } from './shared'
4
4
  import { useA11yInfo } from '../A11yInfoProvider'
@@ -6,7 +6,7 @@ import { useA11yInfo } from '../A11yInfoProvider'
6
6
  const ea = MIN_EMPTY_ANGLE / 2
7
7
  const sa = MIN_STROKE_ANGLE / 2
8
8
 
9
- const Spinner = forwardRef(({ size, color, thickness, label, isStatic = false }, ref) => {
9
+ const Spinner = React.forwardRef(({ size, color, thickness, label, isStatic = false }, ref) => {
10
10
  const { current: timer } = React.useRef(new Animated.Value(0))
11
11
  const { reduceMotionEnabled } = useA11yInfo()
12
12
  const reduceMotion = reduceMotionEnabled || isStatic
@@ -1,5 +1,4 @@
1
- /* eslint-disable react/require-default-props */
2
- import React, { forwardRef, useEffect, useRef, useState } from 'react'
1
+ import React from 'react'
3
2
  import PropTypes from 'prop-types'
4
3
  import { Dimensions, Platform, View, StyleSheet } from 'react-native'
5
4
  import throttle from 'lodash.throttle'
@@ -83,7 +82,7 @@ const highlight = (items = [], text = '', color) =>
83
82
  return [...acc, item]
84
83
  }, [])
85
84
 
86
- const Autocomplete = forwardRef(
85
+ const Autocomplete = React.forwardRef(
87
86
  (
88
87
  {
89
88
  children,
@@ -116,22 +115,24 @@ const Autocomplete = forwardRef(
116
115
  const isControlled = value !== undefined
117
116
 
118
117
  // We need to store current items for uncontrolled usage
119
- const [currentItems, setCurrentItems] = useState(initialItems)
118
+ const [currentItems, setCurrentItems] = React.useState(initialItems)
120
119
 
121
- const [otherItems, setOtherItems] = useState(items)
120
+ const [otherItems, setOtherItems] = React.useState(items)
122
121
 
123
122
  // We need to store the current value as well to be able to highlight it
124
- const [currentValue, setCurrentValue] = useState(value ?? initialValue)
123
+ const [currentValue, setCurrentValue] = React.useState(value ?? initialValue)
125
124
  const inputTokens = { paddingLeft: INPUT_LEFT_PADDING }
126
125
 
127
126
  // Setting up the overlay
128
- const openOverlayRef = useRef()
129
- const [isExpanded, setIsExpanded] = useState((value ?? initialValue)?.length >= minToSuggestion)
130
- const [isFocused, setisFocused] = useState(false)
131
- const [sourceLayout, setSourceLayout] = useState(null)
127
+ const openOverlayRef = React.useRef()
128
+ const [isExpanded, setIsExpanded] = React.useState(
129
+ (value ?? initialValue)?.length >= minToSuggestion
130
+ )
131
+ const [isFocused, setisFocused] = React.useState(false)
132
+ const [sourceLayout, setSourceLayout] = React.useState(null)
132
133
 
133
134
  // When it's nested, selected value
134
- const [nestedSelectedValue, setNestedSelectedValue] = useState(null)
135
+ const [nestedSelectedValue, setNestedSelectedValue] = React.useState(null)
135
136
 
136
137
  const { supportsProps, ...selectedProps } = selectProps(rest)
137
138
  const { hint, label: inputLabel } = supportsProps
@@ -148,7 +149,7 @@ const Autocomplete = forwardRef(
148
149
  vertical: Platform.OS !== 'web' && (hint || inputLabel) ? 28 : 4
149
150
  }
150
151
  })
151
- const targetRef = useRef(null)
152
+ const targetRef = React.useRef(null)
152
153
  // We limit the number of suggestions displayed to avoid huge lists
153
154
  // TODO: add a way to make the `Listbox` occupy fixed height and be scrollable
154
155
  // within that height, which will unlock similar behaviour for `AutoComplete` as well
@@ -157,7 +158,7 @@ const Autocomplete = forwardRef(
157
158
 
158
159
  const getCopy = useCopy({ dictionary, copy })
159
160
  // Tracking input width changes to resize the listbox overlay accordingly
160
- const [inputWidth, setInputWidth] = useState()
161
+ const [inputWidth, setInputWidth] = React.useState()
161
162
  useSafeLayoutEffect(() => {
162
163
  if (Platform.OS === 'web') {
163
164
  const updateInputWidth = () => {
@@ -227,7 +228,7 @@ const Autocomplete = forwardRef(
227
228
  * within the list, if doesn't exist the nested item is added to the top of the list,
228
229
  * the nested item is added with an id equal "0"
229
230
  */
230
- useEffect(() => {
231
+ React.useEffect(() => {
231
232
  if (nestedSelectedValue && !items.find((item) => item.id === 0)) {
232
233
  const tmpItems = [...items]
233
234
  tmpItems.unshift({ label: nestedSelectedValue, title: true, id: 0 })
@@ -5,14 +5,17 @@ import Typography from '../Typography'
5
5
  import Box from '../Box'
6
6
  import StackView from '../StackView'
7
7
 
8
- const Loading = ({ label }) => (
9
- <Box space={3}>
8
+ const Loading = React.forwardRef(({ label }, ref) => (
9
+ <Box space={3} ref={ref}>
10
10
  <StackView direction="row" space={2} tokens={{ alignItems: 'center' }}>
11
11
  <ActivityIndicator variant={{ size: 'large' }} />
12
12
  <Typography>{label}</Typography>
13
13
  </StackView>
14
14
  </Box>
15
- )
15
+ ))
16
+
17
+ Loading.displayName = 'Loading'
18
+
16
19
  Loading.propTypes = { label: PropTypes.string }
17
20
 
18
21
  export default Loading
@@ -1,11 +1,11 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import A11yText from '../A11yText'
4
4
  import Typography from '../Typography'
5
5
  import Box from '../Box'
6
6
  import Listbox from '../Listbox'
7
7
 
8
- const Suggestions = forwardRef(
8
+ const Suggestions = React.forwardRef(
9
9
  ({ hasResults, items = [], noResults, onClose, onSelect, parentRef }, ref) => {
10
10
  const pressableItems = items.map(({ id, ...rest }) => ({
11
11
  id,
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import { View, StyleSheet } from 'react-native'
3
3
  import PropTypes from 'prop-types'
4
4
  import { useThemeTokens } from '../ThemeProvider'
@@ -32,7 +32,7 @@ const getTypographyTokens = ({ fontName, fontWeight, color }) => ({ fontName, fo
32
32
 
33
33
  const getTypographyVariant = ({ fontSize }) => ({ size: fontSizeMapping[fontSize] })
34
34
 
35
- const Badge = forwardRef(({ children, tokens, variant = {}, ...rest }, ref) => {
35
+ const Badge = React.forwardRef(({ children, tokens, variant = {}, ...rest }, ref) => {
36
36
  const themeTokens = useThemeTokens('Badge', tokens, variant)
37
37
 
38
38
  return (
@@ -1,8 +1,8 @@
1
- import React, { createContext, useContext, useEffect, useState } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import { Platform } from 'react-native'
4
4
 
5
- const HydrationContext = createContext()
5
+ const HydrationContext = React.createContext()
6
6
  const isSSR = typeof window === 'undefined'
7
7
  const hasWebStyleTag = () => {
8
8
  if (isSSR || Platform.OS !== 'web' || typeof document !== 'object') {
@@ -18,15 +18,15 @@ const hasWebStyleTag = () => {
18
18
  * during the very first client-side render or hydration, but not available on the server,
19
19
  * to ensure no changes happen until the original SSR DOM has been hydrated.
20
20
  */
21
- export const useHydrationContext = () => useContext(HydrationContext)
21
+ export const useHydrationContext = () => React.useContext(HydrationContext)
22
22
 
23
23
  /**
24
24
  * Allows components and hooks to observe if SSR hydration is currently in progress
25
25
  * and if so, to re-render with content that differs to the server when it is complete.
26
26
  */
27
27
  export const HydrationProvider = ({ children }) => {
28
- const [hasMounted, setHasMounted] = useState(false)
29
- useEffect(() => {
28
+ const [hasMounted, setHasMounted] = React.useState(false)
29
+ React.useEffect(() => {
30
30
  setHasMounted(true)
31
31
  }, [])
32
32
 
package/src/Box/Box.jsx CHANGED
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, useEffect, useState } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import { View, ScrollView, Platform, StyleSheet, ImageBackground, Image } from 'react-native'
4
4
  import { useThemeTokens } from '../ThemeProvider'
@@ -181,7 +181,7 @@ const setBackgroundImage = ({
181
181
  * text content is inside a scrollable box, as screens are not scrollable by default and even very
182
182
  * short text will require scrolling on small devices at the highest accessibility text scaling settings.
183
183
  */
184
- const Box = forwardRef(
184
+ const Box = React.forwardRef(
185
185
  (
186
186
  {
187
187
  space,
@@ -230,8 +230,8 @@ const Box = forwardRef(
230
230
  const backgroundImageResizeMode = useResponsiveProp(resizeMode, 'cover')
231
231
  const backgroundImagePosition = useResponsiveProp(position, 'none')
232
232
  const backgroundImageAlign = useResponsiveProp(align, 'stretch')
233
- const [backgroundImageWidth, setBackgroundImageWidth] = useState(0)
234
- const [backgroundImageHeight, setBackgroundImageHeight] = useState(0)
233
+ const [backgroundImageWidth, setBackgroundImageWidth] = React.useState(0)
234
+ const [backgroundImageHeight, setBackgroundImageHeight] = React.useState(0)
235
235
  if (backgroundImage)
236
236
  content = setBackgroundImage({
237
237
  src,
@@ -244,7 +244,7 @@ const Box = forwardRef(
244
244
  content
245
245
  })
246
246
 
247
- useEffect(() => {
247
+ React.useEffect(() => {
248
248
  if (backgroundImage && backgroundImageWidth === 0 && backgroundImageHeight === 0) {
249
249
  Image.getSize(src, (width, height) => {
250
250
  // Only update the state if the size has changed
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
 
3
3
  import ButtonBase from './ButtonBase'
4
4
  import buttonPropTypes, { textAndA11yText } from './propTypes'
@@ -6,14 +6,16 @@ import { useThemeTokensCallback } from '../ThemeProvider'
6
6
  import { a11yProps } from '../utils/props'
7
7
  import { useViewport } from '../ViewportProvider'
8
8
 
9
- const Button = forwardRef(({ accessibilityRole = 'button', tokens, variant, ...props }, ref) => {
10
- const viewport = useViewport()
11
- const buttonVariant = { viewport, ...variant }
12
- const getTokens = useThemeTokensCallback('Button', tokens, buttonVariant)
13
- return (
14
- <ButtonBase {...props} tokens={getTokens} accessibilityRole={accessibilityRole} ref={ref} />
15
- )
16
- })
9
+ const Button = React.forwardRef(
10
+ ({ accessibilityRole = 'button', tokens, variant, ...props }, ref) => {
11
+ const viewport = useViewport()
12
+ const buttonVariant = { viewport, ...variant }
13
+ const getTokens = useThemeTokensCallback('Button', tokens, buttonVariant)
14
+ return (
15
+ <ButtonBase {...props} tokens={getTokens} accessibilityRole={accessibilityRole} ref={ref} />
16
+ )
17
+ }
18
+ )
17
19
  Button.displayName = 'Button'
18
20
 
19
21
  Button.propTypes = {
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import { Pressable, View, StyleSheet, Platform } from 'react-native'
4
4
 
@@ -185,7 +185,7 @@ const selectItemIconTokens = ({ color, iconColor, iconSize }) => ({
185
185
  color: iconColor || color
186
186
  })
187
187
 
188
- const ButtonBase = forwardRef(
188
+ const ButtonBase = React.forwardRef(
189
189
  (
190
190
  {
191
191
  id,
@@ -303,7 +303,6 @@ ButtonBase.propTypes = {
303
303
  ...selectedSystemPropTypes,
304
304
  ...buttonPropTypes
305
305
  }
306
- ButtonBase.defaultProps = { id: undefined }
307
306
 
308
307
  const staticStyles = StyleSheet.create({
309
308
  row: {
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import { Platform, Text, View } from 'react-native'
4
4
  import buttonPropTypes, { textAndA11yText } from './propTypes'
@@ -50,7 +50,7 @@ const selectIconTokens = ({
50
50
  }
51
51
  })
52
52
 
53
- const ButtonDropdown = forwardRef(
53
+ const ButtonDropdown = React.forwardRef(
54
54
  (
55
55
  {
56
56
  value,
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import ABBPropTypes from 'airbnb-prop-types'
4
4
  import { Platform } from 'react-native'
@@ -30,10 +30,11 @@ const [selectItemProps, selectedItemPropTypes] = selectSystemProps([
30
30
  viewProps
31
31
  ])
32
32
 
33
- const ButtonGroup = forwardRef(
33
+ const ButtonGroup = React.forwardRef(
34
34
  (
35
35
  {
36
36
  variant,
37
+ buttonVariant,
37
38
  tokens,
38
39
  items = [],
39
40
  values,
@@ -140,6 +141,7 @@ const ButtonGroup = forwardRef(
140
141
  <ButtonBase
141
142
  ref={itemRef}
142
143
  key={id}
144
+ variant={buttonVariant}
143
145
  {...pressHandlers}
144
146
  onPress={handlePress}
145
147
  tokens={getButtonTokens}
@@ -167,6 +169,13 @@ ButtonGroup.displayName = 'ButtonGroup'
167
169
  ButtonGroup.propTypes = {
168
170
  ...selectedSystemPropTypes,
169
171
  tokens: getTokensPropType('ButtonGroup'),
172
+ /**
173
+ * To allow Button specific variant
174
+ */
175
+ buttonVariant: variantProp.propType,
176
+ /**
177
+ * Default variant prop
178
+ */
170
179
  variant: variantProp.propType,
171
180
  /**
172
181
  * The maximum number of items a user may select at once. Defaults to 1 and behaves
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import ButtonBase from './ButtonBase'
4
4
  import buttonPropTypes, { textAndA11yText } from './propTypes'
@@ -10,7 +10,7 @@ import { useViewport } from '../ViewportProvider'
10
10
  * `ButtonLink` is a component with the semantics and behaviour of a link, but with the visual appearance of a button.
11
11
  * ButtonLink is a block-level component and should not be used inline.
12
12
  */
13
- const ButtonLink = forwardRef(
13
+ const ButtonLink = React.forwardRef(
14
14
  ({ accessibilityRole = 'link', tokens, variant, dataSet, ...props }, ref) => {
15
15
  const { hrefAttrs, rest } = hrefAttrsProp.bundle(props)
16
16
  const viewport = useViewport()