@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
@@ -17,26 +17,28 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, vie
17
17
  * `Carousel.Item` is used to wrap the content of an individual slide and is suppsoed to be the
18
18
  * only top-level component passed to the `Carousel`
19
19
  */
20
- const CarouselItem = ({ children, elementIndex, tag = 'li', hidden, ...rest }) => {
21
- const { width, activeIndex } = useCarousel()
20
+ const CarouselItem = React.forwardRef(
21
+ ({ children, elementIndex, tag = 'li', hidden, ...rest }, ref) => {
22
+ const { width, activeIndex } = useCarousel()
22
23
 
23
- const selectedProps = selectProps({
24
- ...rest,
25
- ...getA11yPropsFromHtmlTag(tag, rest.accessibilityRole)
26
- })
24
+ const selectedProps = selectProps({
25
+ ...rest,
26
+ ...getA11yPropsFromHtmlTag(tag, rest.accessibilityRole)
27
+ })
27
28
 
28
- const focusabilityProps = activeIndex === elementIndex ? {} : a11yProps.nonFocusableProps
29
- const style = { width }
30
- if (hidden && Platform.OS === 'web') {
31
- // On web, visibility: hidden makes all children non-focusable. It doesn't exist on native.
32
- style.visibility = 'hidden'
29
+ const focusabilityProps = activeIndex === elementIndex ? {} : a11yProps.nonFocusableProps
30
+ const style = { width }
31
+ if (hidden && Platform.OS === 'web') {
32
+ // On web, visibility: hidden makes all children non-focusable. It doesn't exist on native.
33
+ style.visibility = 'hidden'
34
+ }
35
+ return (
36
+ <View style={style} {...selectedProps} {...focusabilityProps} ref={ref}>
37
+ {children}
38
+ </View>
39
+ )
33
40
  }
34
- return (
35
- <View style={style} {...selectedProps} {...focusabilityProps}>
36
- {children}
37
- </View>
38
- )
39
- }
41
+ )
40
42
 
41
43
  CarouselItem.propTypes = {
42
44
  ...selectedSystemPropTypes,
@@ -4,7 +4,7 @@ import StepTracker from '../../StepTracker'
4
4
  import StackView from '../../StackView'
5
5
  import { variantProp } from '../../utils'
6
6
 
7
- const CarouselStepTracker = ({ variant }) => {
7
+ const CarouselStepTracker = React.forwardRef(({ variant }, ref) => {
8
8
  const {
9
9
  activeIndex,
10
10
  totalItems,
@@ -27,7 +27,7 @@ const CarouselStepTracker = ({ variant }) => {
27
27
 
28
28
  const steps = Array.from(Array(totalItems)).map((_, index) => String(index))
29
29
  return (
30
- <StackView direction="row" tokens={stackViewTokens}>
30
+ <StackView direction="row" tokens={stackViewTokens} ref={ref}>
31
31
  <StepTracker
32
32
  current={activeIndex}
33
33
  steps={steps}
@@ -41,7 +41,9 @@ const CarouselStepTracker = ({ variant }) => {
41
41
  />
42
42
  </StackView>
43
43
  )
44
- }
44
+ })
45
+
46
+ CarouselStepTracker.displayName = 'CarouselStepTracker'
45
47
 
46
48
  CarouselStepTracker.propTypes = {
47
49
  variant: variantProp.propType
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
 
4
4
  import { useResponsiveProp } from '../../utils'
@@ -7,7 +7,7 @@ import Carousel from '../Carousel'
7
7
  /**
8
8
  * @deprecated Please use Carousel and pass the `tabs` prop.
9
9
  */
10
- const CarouselTabs = forwardRef(({ items, refocus = true, ...carouselProps }, ref) => {
10
+ const CarouselTabs = React.forwardRef(({ items, refocus = true, ...carouselProps }, ref) => {
11
11
  const tabs = useResponsiveProp({ md: items })
12
12
 
13
13
  return (
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, useEffect, useRef, useState } from 'react'
1
+ import React from 'react'
2
2
  import { View } from 'react-native'
3
3
 
4
4
  import PropTypes from 'prop-types'
@@ -11,16 +11,16 @@ const selectTabPanelStyle = () => ({
11
11
  backgroundColor: 'transparent'
12
12
  })
13
13
 
14
- const CarouselTabsPanel = forwardRef(({ items }, ref) => {
14
+ const CarouselTabsPanel = React.forwardRef(({ items }, ref) => {
15
15
  const { activeIndex, goTo } = useCarousel()
16
- const nextFocusRef = useRef()
17
- const firstTabRef = useRef()
18
- const [isInverse, setIsInverse] = useState(false)
16
+ const nextFocusRef = React.useRef()
17
+ const firstTabRef = React.useRef()
18
+ const [isInverse, setIsInverse] = React.useState(false)
19
19
 
20
20
  const lastTabSelected = activeIndex === items.length - 1
21
21
 
22
22
  // Get current select tab style
23
- useEffect(() => {
23
+ React.useEffect(() => {
24
24
  const [selectedVariantIsInverse] = items.filter((_, index) => index === activeIndex)
25
25
  setIsInverse(selectedVariantIsInverse?.inverse)
26
26
  }, [items, activeIndex])
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, useState } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import { Pressable, Text, Platform } from 'react-native'
4
4
 
@@ -64,12 +64,12 @@ const selectTextStyles = ({
64
64
  color
65
65
  })
66
66
 
67
- const CarouselTabsPanelItem = forwardRef(
67
+ const CarouselTabsPanelItem = React.forwardRef(
68
68
  ({ title, selected, inactive, variant, tokens, accessibilityRole = 'tab', ...rest }, ref) => {
69
69
  // Workaround for React Native Web https://github.com/necolas/react-native-web/issues/2357
70
70
  // Don't allow disabled to be set while focus is true else focus state gets locked `true`
71
71
  // (must refocus _after_ calling `goTo`, else focus target content is not up to date)
72
- const [isFocused, setIsFocused] = useState(false)
72
+ const [isFocused, setIsFocused] = React.useState(false)
73
73
  const disabled = (inactive || selected) && !isFocused
74
74
 
75
75
  const getTokens = useThemeTokensCallback('CarouselTabsPanelItem', tokens, variant)
@@ -17,7 +17,7 @@ const selectPressableTokens = ({ borderColor, borderRadius, borderWidth, margin,
17
17
  * `Carousel.Thumbnail` is used to wrap the content of an individual slide and is suppsoed to be the
18
18
  * only top-level component passed to the `Carousel`
19
19
  */
20
- const CarouselThumbnail = ({ accessibilityLabel, alt, index, src }) => {
20
+ const CarouselThumbnail = React.forwardRef(({ accessibilityLabel, alt, index, src }, ref) => {
21
21
  const { activeIndex, itemLabel, totalItems, getCopyWithPlaceholders, goTo } = useCarousel()
22
22
  const getThumbnailTokens = useThemeTokensCallback('CarouselThumbnail')
23
23
  const viewport = useViewport()
@@ -70,6 +70,7 @@ const CarouselThumbnail = ({ accessibilityLabel, alt, index, src }) => {
70
70
  index === activeIndex ? [styles.selected, { outline: 'none' }] : styles.nonSelected
71
71
  ]
72
72
  }}
73
+ ref={ref}
73
74
  >
74
75
  <Image
75
76
  accessibilityIgnoresInvertColors
@@ -80,7 +81,10 @@ const CarouselThumbnail = ({ accessibilityLabel, alt, index, src }) => {
80
81
  />
81
82
  </Pressable>
82
83
  )
83
- }
84
+ })
85
+
86
+ CarouselThumbnail.displayName = 'CarouselThumbnail'
87
+
84
88
  CarouselThumbnail.propTypes = {
85
89
  accessibilityLabel: PropTypes.string,
86
90
  alt: PropTypes.string,
@@ -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 { View } from 'react-native'
4
4
  import { useCarousel } from './CarouselContext'
@@ -7,7 +7,7 @@ import { StackWrap } from '../StackView'
7
7
  import { useThemeTokens } from '../ThemeProvider'
8
8
  import { useViewport } from '../ViewportProvider'
9
9
 
10
- const CarouselThumbnailNavigation = forwardRef(({ thumbnails = [] }, ref) => {
10
+ const CarouselThumbnailNavigation = React.forwardRef(({ thumbnails = [] }, ref) => {
11
11
  const viewport = useViewport()
12
12
  const { alignItems } = useThemeTokens('CarouselThumbnail', {}, { viewport })
13
13
  const { totalItems } = useCarousel()
@@ -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, Pressable, StyleSheet, Text, View } from 'react-native'
4
4
 
@@ -122,7 +122,7 @@ const selectFeedbackTokens = ({ feedbackMarginBottom, feedbackMarginTop, feedbac
122
122
  * or the internal state in case of uncontrolled checkbox.
123
123
  *
124
124
  */
125
- const Checkbox = forwardRef(
125
+ const Checkbox = React.forwardRef(
126
126
  (
127
127
  {
128
128
  checked,
@@ -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, StyleSheet, View } from 'react-native'
4
4
 
@@ -75,7 +75,7 @@ export const selectCheckboxTokens = (themeTokens, prefix) =>
75
75
  * The visual toggle of a checkbox input. Is not interactive on its own, should be used inside
76
76
  * an interactive parent that passes down props when interacted with. Used in CheckboxCard
77
77
  */
78
- const CheckboxButton = forwardRef(
78
+ const CheckboxButton = React.forwardRef(
79
79
  (
80
80
  {
81
81
  isChecked,
@@ -92,11 +92,9 @@ const CheckboxButton = forwardRef(
92
92
  },
93
93
  ref
94
94
  ) => {
95
- const { icon: IconComponent, ...stateTokens } = useThemeTokens(
96
- 'Checkbox',
97
- {},
98
- { checked: isChecked }
99
- )
95
+ const { icon: IconComponent, ...stateTokens } = useThemeTokens('Checkbox', tokens, {
96
+ checked: isChecked
97
+ })
100
98
  const iconTokens = selectIconTokens(stateTokens)
101
99
 
102
100
  return (
@@ -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
 
@@ -72,7 +72,7 @@ const [selectItemProps, selectedItemPropTypes] = selectSystemProps([
72
72
  * />
73
73
  * ```
74
74
  */
75
- const CheckboxGroup = forwardRef(
75
+ const CheckboxGroup = React.forwardRef(
76
76
  (
77
77
  {
78
78
  tokens,
@@ -1,11 +1,23 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
 
4
4
  /**
5
5
  * On Web we need to include an actual input but hide it.
6
6
  */
7
- const CheckboxInput = forwardRef(
8
- ({ checked, defaultChecked, disabled, id, isControlled, name, onChange, value }, ref) => {
7
+ const CheckboxInput = React.forwardRef(
8
+ (
9
+ {
10
+ checked,
11
+ defaultChecked,
12
+ disabled = false,
13
+ id,
14
+ isControlled,
15
+ name,
16
+ onChange = () => {},
17
+ value
18
+ },
19
+ ref
20
+ ) => {
9
21
  const handleClick = (event) => {
10
22
  // Cancel the click dispatched via the label tag, since it's already wrapped
11
23
  // in <Pressable>
@@ -43,13 +55,4 @@ CheckboxInput.propTypes = {
43
55
  value: PropTypes.string
44
56
  }
45
57
 
46
- CheckboxInput.defaultProps = {
47
- checked: undefined,
48
- defaultChecked: undefined,
49
- disabled: false,
50
- name: undefined,
51
- onChange: () => {},
52
- value: undefined
53
- }
54
-
55
58
  export default CheckboxInput
@@ -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 { StyleSheet, Text, View } from 'react-native'
4
4
 
@@ -24,7 +24,7 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([
24
24
  viewProps
25
25
  ])
26
26
 
27
- const CheckboxCard = forwardRef(
27
+ const CheckboxCard = React.forwardRef(
28
28
  (
29
29
  {
30
30
  tokens,
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
 
4
4
  import { useViewport } from '../ViewportProvider'
@@ -24,7 +24,7 @@ const [selectItemProps, selectedItemPropTypes] = selectSystemProps([
24
24
  viewProps
25
25
  ])
26
26
 
27
- const CheckboxCardGroup = forwardRef(
27
+ const CheckboxCardGroup = React.forwardRef(
28
28
  (
29
29
  {
30
30
  copy = 'en',
@@ -1,9 +1,10 @@
1
- import React, { forwardRef, useMemo } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
 
4
4
  import { View, Pressable, Platform } from 'react-native'
5
5
  import { resolvePressableTokens } from '../utils/pressability'
6
6
  import { applyShadowToken } from '../ThemeProvider'
7
+ import { getTokensPropType } from '../utils'
7
8
 
8
9
  const selectGeneralBubbleTokens = ({
9
10
  outerBubbleHeight,
@@ -50,13 +51,13 @@ const selectBorderBubbleTokens = ({
50
51
  borderRadius: bubbleBorderRadius
51
52
  })
52
53
 
53
- const ColourBubble = forwardRef(
54
+ const ColourBubble = React.forwardRef(
54
55
  ({ tokens = {}, id, colourHexCode, colourName, isSelected, onPress }, ref) => {
55
56
  const defaultTokens = tokens({ selected: isSelected })
56
57
 
57
58
  const resolveColourBubbleTokens = (pressState) => resolvePressableTokens(tokens, pressState, {})
58
59
 
59
- const themeTokens = useMemo(() => tokens(), [tokens])
60
+ const themeTokens = React.useMemo(() => tokens(), [tokens])
60
61
 
61
62
  return (
62
63
  <Pressable
@@ -83,7 +84,7 @@ ColourBubble.propTypes = {
83
84
  /**
84
85
  * Colour toggle tokens callback.
85
86
  */
86
- tokens: PropTypes.func,
87
+ tokens: getTokensPropType('ColourToggle'),
87
88
  /**
88
89
  * ID of each colour bubble
89
90
  */
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, useState } from 'react'
1
+ import React from 'react'
2
2
  import { View } from 'react-native'
3
3
  import PropTypes from 'prop-types'
4
4
 
@@ -10,9 +10,9 @@ import ColourBubble from './ColourBubble'
10
10
 
11
11
  const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps])
12
12
 
13
- const ColourToggle = forwardRef(
13
+ const ColourToggle = React.forwardRef(
14
14
  ({ tokens, variant, defaultColourId, items, onChange, ...rest }, ref) => {
15
- const [currentColourId, setCurrentColourId] = useState(defaultColourId)
15
+ const [currentColourId, setCurrentColourId] = React.useState(defaultColourId)
16
16
  const getTokens = useThemeTokensCallback('ColourToggle', tokens, variant)
17
17
 
18
18
  const { space } = getTokens()
@@ -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 { View, StyleSheet, Platform } from 'react-native'
4
4
  import { useThemeTokens } from '../ThemeProvider'
@@ -55,7 +55,7 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, vie
55
55
  *
56
56
  * For accessibility purposes a divider component will be described with ARIA attributes, i.e. `role="separator"` and `aria-orientation="vertical/horizontal"`.
57
57
  */
58
- const Divider = forwardRef(({ variant, vertical = false, space, tokens, ...rest }, ref) => {
58
+ const Divider = React.forwardRef(({ variant, vertical = false, space, tokens, ...rest }, ref) => {
59
59
  const { color, width } = useThemeTokens('Divider', tokens, variant)
60
60
 
61
61
  const borderStyles = vertical
@@ -1,10 +1,12 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import ExpandCollapse from './ExpandCollapse'
3
3
 
4
4
  /**
5
5
  * 'Accordion' is a shorthand for an ExpandCollapse where only one item may be open at a time
6
6
  */
7
- const Accordion = forwardRef((props, ref) => <ExpandCollapse ref={ref} {...props} maxOpen={1} />)
7
+ const Accordion = React.forwardRef((props, ref) => (
8
+ <ExpandCollapse ref={ref} {...props} maxOpen={1} />
9
+ ))
8
10
  Accordion.displayName = 'Accordion'
9
11
  Accordion.propTypes = ExpandCollapse.propTypes
10
12
 
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import { Pressable, View, Platform, StyleSheet } from 'react-native'
3
3
  import PropTypes from 'prop-types'
4
4
 
@@ -66,7 +66,7 @@ function selectIconTokens(tokens) {
66
66
  }
67
67
  }
68
68
 
69
- const ExpandCollapseControl = forwardRef(
69
+ const ExpandCollapseControl = React.forwardRef(
70
70
  (
71
71
  { onPress, isExpanded, children, tokens, accessibilityRole = 'button', variant, ...rest },
72
72
  ref
@@ -1,5 +1,5 @@
1
- import React, { forwardRef } from 'react'
2
- import { View } from 'react-native'
1
+ import React from 'react'
2
+ import { View, StyleSheet } from 'react-native'
3
3
  import PropTypes from 'prop-types'
4
4
 
5
5
  import { useThemeTokens } from '../ThemeProvider'
@@ -29,7 +29,7 @@ function selectBorderStyles(tokens) {
29
29
  * <ExpandCollapse.Panel> children, and assign the panels explicit `panelId` props. The panels may be
30
30
  * nested (they do not need to be direct children), and non-interactive items may be included too.
31
31
  */
32
- const ExpandCollapse = forwardRef(
32
+ const ExpandCollapse = React.forwardRef(
33
33
  ({ children, tokens, variant, maxOpen, open, initialOpen, onChange, ...rest }, ref) => {
34
34
  const {
35
35
  currentValues: openIds,
@@ -46,10 +46,12 @@ const ExpandCollapse = forwardRef(
46
46
  const themeTokens = useThemeTokens('ExpandCollapse', tokens, variant)
47
47
 
48
48
  return (
49
- <View ref={ref} style={selectBorderStyles(themeTokens)} {...selectProps(rest)}>
50
- {typeof children === 'function'
51
- ? children({ openIds, onToggle, resetValues, setValues, unsetValues })
52
- : children}
49
+ <View style={staticStyles.container} ref={ref} {...selectProps(rest)}>
50
+ <View style={selectBorderStyles(themeTokens)}>
51
+ {typeof children === 'function'
52
+ ? children({ openIds, onToggle, resetValues, setValues, unsetValues })
53
+ : children}
54
+ </View>
53
55
  </View>
54
56
  )
55
57
  }
@@ -86,3 +88,9 @@ ExpandCollapse.propTypes = {
86
88
  }
87
89
 
88
90
  export default ExpandCollapse
91
+
92
+ const staticStyles = StyleSheet.create({
93
+ container: {
94
+ display: 'flex'
95
+ }
96
+ })
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, useState } from 'react'
1
+ import React from 'react'
2
2
  import { Animated, Platform, View, Text } from 'react-native'
3
3
  import PropTypes from 'prop-types'
4
4
  import ABBPropTypes from 'airbnb-prop-types'
@@ -11,9 +11,12 @@ import {
11
11
  selectSystemProps,
12
12
  useVerticalExpandAnimation,
13
13
  variantProp,
14
- viewProps
14
+ viewProps,
15
+ useCopy
15
16
  } from '../utils'
16
17
 
18
+ import dictionary from './dictionary'
19
+
17
20
  const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps])
18
21
 
19
22
  // just void functions for now, since there are no style tokens for a panel or control at this point
@@ -78,7 +81,7 @@ const selectControlPanelStyles = ({ contentPanelBackgroundColor }) => ({
78
81
  * The panel does not need to be a direct child of the `<ExpandCollapse>` (unless this is required
79
82
  * by the chosen accessibility props for a particular accessibility tools).
80
83
  */
81
- const ExpandCollapsePanel = forwardRef(
84
+ const ExpandCollapsePanel = React.forwardRef(
82
85
  (
83
86
  {
84
87
  openIds = [],
@@ -92,12 +95,14 @@ const ExpandCollapsePanel = forwardRef(
92
95
  variant,
93
96
  controlRef,
94
97
  content,
98
+ copy = 'en',
95
99
  ...rest
96
100
  },
97
101
  ref
98
102
  ) => {
99
- const [containerHeight, setContainerHeight] = useState(null)
103
+ const [containerHeight, setContainerHeight] = React.useState(null)
100
104
  const isExpanded = openIds.includes(panelId)
105
+ const getCopy = useCopy({ dictionary, copy })
101
106
 
102
107
  const selectedProps = selectProps({
103
108
  ...rest,
@@ -130,16 +135,28 @@ const ExpandCollapsePanel = forwardRef(
130
135
  })
131
136
 
132
137
  const focusabilityProps = isExpanded ? {} : a11yProps.nonFocusableProps
138
+
139
+ const panelAccessibilityLabel = `${panelId} ${getCopy('panel')}`
140
+ const subPanelAccessibilityLabel = `${panelId} ${getCopy('subPanel')}`
141
+
133
142
  return content ? (
134
- <View style={selectContentPanelStyles(themeTokens)}>
143
+ <View
144
+ style={selectContentPanelStyles(themeTokens)}
145
+ accessibilityLabel={panelAccessibilityLabel}
146
+ >
135
147
  {typeof children === 'string' ? (
136
- <Text style={selectTextStyles(themeTokens)}>{children}</Text>
148
+ <Text
149
+ style={selectTextStyles(themeTokens)}
150
+ accessibilityLabel={subPanelAccessibilityLabel}
151
+ >
152
+ {children}
153
+ </Text>
137
154
  ) : (
138
155
  children
139
156
  )}
140
157
  </View>
141
158
  ) : (
142
- <View ref={ref} style={themeTokens}>
159
+ <View ref={ref} style={themeTokens} accessibilityLabel={panelAccessibilityLabel}>
143
160
  <View style={selectControlPanelStyles(themeTokens)}>
144
161
  <ExpandCollapseControl
145
162
  {...selectedProps}
@@ -174,7 +191,12 @@ const ExpandCollapsePanel = forwardRef(
174
191
  })
175
192
  }}
176
193
  >
177
- <View style={selectContainerStyles(themeTokens)}>{children}</View>
194
+ <View
195
+ style={selectContainerStyles(themeTokens)}
196
+ accessibilityLabel={subPanelAccessibilityLabel}
197
+ >
198
+ {children}
199
+ </View>
178
200
  </View>
179
201
  </Animated.View>
180
202
  </View>
@@ -0,0 +1,10 @@
1
+ export default {
2
+ en: {
3
+ panel: 'Panel',
4
+ subPanel: 'SubPanel'
5
+ },
6
+ fr: {
7
+ panel: 'Panneau',
8
+ subPanel: 'Sous-Panneau'
9
+ }
10
+ }
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import { StyleSheet, Text, View } from 'react-native'
3
3
  import PropTypes from 'prop-types'
4
4
 
@@ -55,7 +55,7 @@ const selectIconContainerStyles = ({ iconGap }) => ({
55
55
  * ### Accessibility
56
56
  * All accessibility props set on this component will be applied to the outer container.
57
57
  */
58
- const Feedback = forwardRef(
58
+ const Feedback = React.forwardRef(
59
59
  ({ title, children, id, validation, tokens, variant, ...rest }, ref) => {
60
60
  const themeTokens = useThemeTokens('Feedback', tokens, {
61
61
  ...variant,
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
 
4
4
  import Feedback from '../Feedback'
@@ -15,7 +15,7 @@ import useInputSupports from '../InputSupports/useInputSupports'
15
15
  *
16
16
  * Follows the same theming and most of the same props as InputSupports.
17
17
  */
18
- const Fieldset = forwardRef(
18
+ const Fieldset = React.forwardRef(
19
19
  (
20
20
  {
21
21
  copy = 'en',
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
 
4
4
  import cssReset from './cssReset'
@@ -10,7 +10,7 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, htm
10
10
  /**
11
11
  * On Web, wraps children with a HTML `<fieldset>` and sets its attributes as necessary.
12
12
  */
13
- const FieldsetContainer = forwardRef(
13
+ const FieldsetContainer = React.forwardRef(
14
14
  (
15
15
  {
16
16
  children,
@@ -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 { View } from 'react-native'
4
4
 
@@ -8,7 +8,7 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, vie
8
8
 
9
9
  // No equivalent of `<fieldset>` on native, so just apply accessibility role to container.
10
10
  // If a11y testing finds any additional handling is needed at the container level, add it here.
11
- const FieldsetContainer = forwardRef(({ children, accessibilityRole, ...rest }, ref) => (
11
+ const FieldsetContainer = React.forwardRef(({ children, accessibilityRole, ...rest }, ref) => (
12
12
  <View ref={ref} accessibilityRole={accessibilityRole} {...selectProps(rest)}>
13
13
  {children}
14
14
  </View>
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
 
4
4
  import cssReset from './cssReset'
@@ -7,7 +7,7 @@ import cssReset from './cssReset'
7
7
  * On Web, wraps children in HTML `<legend>` tag.
8
8
  * On Native, `<legend>` does not exist, wraps in a width 100% block to follow <legend>'s behaviour in a flex.
9
9
  */
10
- const Legend = forwardRef(({ children }, ref) => (
10
+ const Legend = React.forwardRef(({ children }, ref) => (
11
11
  <legend ref={ref} style={cssReset}>
12
12
  {children}
13
13
  </legend>
@@ -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
 
@@ -6,7 +6,7 @@ import PropTypes from 'prop-types'
6
6
  * On Web, wraps children in HTML `<legend>` tag.
7
7
  * On Native, `<legend>` does not exist, wraps in a width 100% block to follow <legend>'s behaviour in a flex.
8
8
  */
9
- const Legend = forwardRef(({ children }, ref) => (
9
+ const Legend = React.forwardRef(({ children }, ref) => (
10
10
  <View ref={ref} style={staticStyles.stretch}>
11
11
  {children}
12
12
  </View>