@telus-uds/components-base 2.0.0 → 2.0.2

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 (970) hide show
  1. package/CHANGELOG.md +1046 -3
  2. package/README.md +35 -0
  3. package/babel.config.cjs +35 -0
  4. package/{jest.config-android.js → jest.config-android.cjs} +1 -1
  5. package/{jest.config-ios.js → jest.config-ios.cjs} +1 -1
  6. package/{jest.config-web.js → jest.config-web.cjs} +1 -1
  7. package/jest.config.cjs +40 -0
  8. package/jest.setup.js +7 -0
  9. package/lib/A11yInfoProvider/index.js +33 -64
  10. package/lib/A11yText/index.js +29 -40
  11. package/lib/ActionCard/ActionCard.js +342 -0
  12. package/lib/ActionCard/index.js +2 -0
  13. package/lib/ActivityIndicator/Spinner.js +27 -42
  14. package/lib/ActivityIndicator/Spinner.native.js +37 -70
  15. package/lib/ActivityIndicator/index.js +17 -33
  16. package/lib/ActivityIndicator/shared.js +12 -26
  17. package/lib/Autocomplete/Autocomplete.js +478 -0
  18. package/lib/Autocomplete/Loading.js +35 -0
  19. package/lib/Autocomplete/Suggestions.js +64 -0
  20. package/lib/Autocomplete/constants.js +4 -0
  21. package/lib/Autocomplete/dictionary.js +12 -0
  22. package/lib/Autocomplete/index.js +2 -0
  23. package/lib/Badge/Badge.js +102 -0
  24. package/lib/Badge/index.js +2 -0
  25. package/lib/BaseProvider/HydrationContext.js +17 -43
  26. package/lib/BaseProvider/index.js +24 -41
  27. package/lib/Box/Box.js +191 -93
  28. package/lib/Box/backgroundImageStylesMap.js +94 -0
  29. package/lib/Box/index.js +2 -13
  30. package/lib/Button/Button.js +21 -33
  31. package/lib/Button/ButtonBase.js +143 -136
  32. package/lib/Button/ButtonDropdown.js +41 -75
  33. package/lib/Button/ButtonGroup.js +92 -110
  34. package/lib/Button/ButtonLink.js +25 -36
  35. package/lib/Button/index.js +5 -39
  36. package/lib/Button/propTypes.js +16 -40
  37. package/lib/Card/Card.js +266 -45
  38. package/lib/Card/CardBase.js +67 -40
  39. package/lib/Card/PressableCardBase.js +35 -67
  40. package/lib/Card/index.js +4 -40
  41. package/lib/CardGroup/CardGroup.js +210 -0
  42. package/lib/CardGroup/dictionary.js +8 -0
  43. package/lib/CardGroup/index.js +2 -0
  44. package/lib/Carousel/Carousel.js +476 -332
  45. package/lib/Carousel/CarouselContext.js +20 -42
  46. package/lib/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +18 -39
  47. package/lib/Carousel/CarouselItem/CarouselItem.js +106 -58
  48. package/lib/Carousel/CarouselItem/index.js +2 -13
  49. package/lib/Carousel/CarouselStepTracker/CarouselStepTracker.js +21 -32
  50. package/lib/Carousel/CarouselStepTracker/index.js +2 -13
  51. package/lib/Carousel/CarouselTabs/CarouselTabs.js +17 -36
  52. package/lib/Carousel/CarouselTabs/CarouselTabsPanel.js +36 -51
  53. package/lib/Carousel/CarouselTabs/CarouselTabsPanelItem.js +25 -55
  54. package/lib/Carousel/CarouselTabs/index.js +2 -13
  55. package/lib/Carousel/CarouselThumbnail.js +76 -62
  56. package/lib/Carousel/CarouselThumbnailNavigation.js +31 -47
  57. package/lib/Carousel/dictionary.js +13 -16
  58. package/lib/Carousel/index.js +3 -41
  59. package/lib/Checkbox/Checkbox.js +64 -107
  60. package/lib/Checkbox/CheckboxButton.js +163 -0
  61. package/lib/Checkbox/CheckboxGroup.js +64 -90
  62. package/lib/Checkbox/CheckboxInput.js +16 -42
  63. package/lib/Checkbox/CheckboxInput.native.js +1 -10
  64. package/lib/Checkbox/index.js +3 -21
  65. package/{lib-module/RadioCard/RadioCard.js → lib/CheckboxCard/CheckboxCard.js} +43 -88
  66. package/lib/CheckboxCard/index.js +2 -0
  67. package/lib/CheckboxCardGroup/CheckboxCardGroup.js +206 -0
  68. package/lib/CheckboxCardGroup/index.js +2 -0
  69. package/lib/ColourToggle/ColourBubble.js +126 -0
  70. package/lib/ColourToggle/ColourToggle.js +91 -0
  71. package/lib/ColourToggle/index.js +2 -0
  72. package/lib/Divider/Divider.js +37 -54
  73. package/lib/Divider/index.js +2 -13
  74. package/lib/DownloadApp/DownloadApp.js +160 -0
  75. package/lib/DownloadApp/dictionary.js +10 -0
  76. package/lib/DownloadApp/index.js +2 -0
  77. package/lib/ExpandCollapse/Accordion.js +6 -22
  78. package/lib/ExpandCollapse/Control.js +72 -67
  79. package/lib/ExpandCollapse/ExpandCollapse.js +39 -56
  80. package/lib/ExpandCollapse/Panel.js +144 -86
  81. package/lib/ExpandCollapse/dictionary.js +10 -0
  82. package/lib/ExpandCollapse/index.js +7 -25
  83. package/lib/Feedback/Feedback.js +41 -69
  84. package/lib/Feedback/index.js +2 -13
  85. package/lib/Fieldset/Fieldset.js +81 -90
  86. package/lib/Fieldset/FieldsetContainer.js +26 -33
  87. package/lib/Fieldset/FieldsetContainer.native.js +18 -27
  88. package/lib/Fieldset/Legend.js +9 -26
  89. package/lib/Fieldset/Legend.native.js +10 -30
  90. package/lib/Fieldset/cssReset.js +2 -9
  91. package/lib/Fieldset/index.js +2 -13
  92. package/lib/FileUpload/FileUpload.js +328 -0
  93. package/lib/FileUpload/NotificationContent.js +54 -0
  94. package/lib/FileUpload/dictionary.js +40 -0
  95. package/lib/FileUpload/index.js +2 -0
  96. package/lib/FlexGrid/Col/Col.js +104 -148
  97. package/lib/FlexGrid/Col/index.js +2 -13
  98. package/lib/FlexGrid/FlexGrid.js +92 -110
  99. package/lib/FlexGrid/Row/Row.js +82 -108
  100. package/lib/FlexGrid/Row/index.js +2 -13
  101. package/lib/FlexGrid/helpers/index.js +1 -12
  102. package/lib/FlexGrid/index.js +2 -13
  103. package/lib/FlexGrid/providers/GutterContext.js +3 -15
  104. package/lib/Footnote/Footnote.js +316 -0
  105. package/lib/Footnote/FootnoteLink.js +107 -0
  106. package/lib/Footnote/dictionary.js +12 -0
  107. package/lib/Footnote/index.js +4 -0
  108. package/lib/HorizontalScroll/HorizontalScroll.js +48 -87
  109. package/lib/HorizontalScroll/HorizontalScrollButton.js +26 -52
  110. package/lib/HorizontalScroll/ScrollViewEnd.js +17 -38
  111. package/lib/HorizontalScroll/ScrollViewEnd.native.js +8 -26
  112. package/lib/HorizontalScroll/dictionary.js +2 -9
  113. package/lib/HorizontalScroll/index.js +11 -35
  114. package/lib/HorizontalScroll/itemPositions.js +25 -46
  115. package/lib/Icon/Icon.js +59 -48
  116. package/lib/Icon/IconText.js +59 -55
  117. package/lib/Icon/index.js +4 -31
  118. package/lib/IconButton/IconButton.js +127 -85
  119. package/lib/IconButton/index.js +2 -13
  120. package/lib/InputLabel/InputLabel.js +42 -76
  121. package/lib/InputLabel/LabelContent.js +10 -26
  122. package/lib/InputLabel/LabelContent.native.js +8 -27
  123. package/lib/InputLabel/index.js +2 -13
  124. package/lib/InputSupports/InputSupports.js +39 -56
  125. package/lib/InputSupports/index.js +2 -13
  126. package/lib/InputSupports/useInputSupports.js +7 -19
  127. package/lib/Link/ChevronLink.js +35 -38
  128. package/lib/Link/InlinePressable.js +14 -29
  129. package/lib/Link/InlinePressable.native.js +20 -40
  130. package/lib/Link/Link.js +9 -27
  131. package/lib/Link/LinkBase.js +96 -103
  132. package/lib/Link/TextButton.js +19 -29
  133. package/lib/Link/index.js +5 -39
  134. package/lib/List/List.js +39 -50
  135. package/lib/List/ListItem.js +13 -37
  136. package/lib/List/ListItemBase.js +72 -70
  137. package/lib/List/ListItemContent.js +36 -48
  138. package/lib/List/ListItemMark.js +42 -75
  139. package/lib/List/PressableListItemBase.js +35 -69
  140. package/lib/List/index.js +5 -28
  141. package/lib/Listbox/GroupControl.js +105 -0
  142. package/lib/Listbox/Listbox.js +171 -0
  143. package/lib/Listbox/ListboxContext.js +4 -0
  144. package/lib/Listbox/ListboxGroup.js +125 -0
  145. package/lib/Listbox/ListboxItem.js +76 -0
  146. package/lib/Listbox/ListboxOverlay.js +77 -0
  147. package/lib/Listbox/PressableItem.js +139 -0
  148. package/lib/Listbox/index.js +2 -0
  149. package/lib/Modal/Modal.js +212 -96
  150. package/lib/Modal/ModalContent.js +179 -0
  151. package/lib/Modal/WebModal.js +76 -0
  152. package/lib/Modal/dictionary.js +2 -9
  153. package/lib/Modal/index.js +2 -13
  154. package/lib/MultiSelectFilter/ModalOverlay.js +114 -95
  155. package/lib/MultiSelectFilter/MultiSelectFilter.js +380 -170
  156. package/lib/MultiSelectFilter/dictionary.js +2 -9
  157. package/lib/MultiSelectFilter/index.js +2 -13
  158. package/lib/Notification/Notification.js +290 -116
  159. package/lib/Notification/dictionary.js +2 -9
  160. package/lib/Notification/index.js +2 -13
  161. package/lib/OrderedList/Item.js +159 -0
  162. package/lib/OrderedList/ItemBase.js +43 -0
  163. package/lib/OrderedList/OrderedList.js +64 -0
  164. package/lib/OrderedList/OrderedListBase.js +36 -0
  165. package/lib/OrderedList/index.js +2 -0
  166. package/lib/Pagination/PageButton.js +38 -57
  167. package/lib/Pagination/Pagination.js +124 -95
  168. package/lib/Pagination/SideButton.js +25 -58
  169. package/lib/Pagination/constants.js +3 -0
  170. package/lib/Pagination/dictionary.js +5 -12
  171. package/lib/Pagination/index.js +2 -13
  172. package/lib/Pagination/usePagination.js +20 -23
  173. package/lib/Portal/Portal.js +50 -0
  174. package/lib/Portal/Portal.native.js +2 -0
  175. package/lib/Portal/index.js +2 -0
  176. package/lib/PriceLockup/PriceLockup.js +223 -0
  177. package/lib/PriceLockup/index.js +2 -0
  178. package/lib/PriceLockup/utils/renderFootnoteContent.js +85 -0
  179. package/lib/PriceLockup/utils/renderFootnoteLinks.js +28 -0
  180. package/lib/PriceLockup/utils/renderPrice.js +139 -0
  181. package/lib/PriceLockup/utils/renderTypography.js +23 -0
  182. package/lib/ProductCard/ProductCard.js +231 -0
  183. package/lib/ProductCard/dictionary.js +38 -0
  184. package/lib/ProductCard/index.js +2 -0
  185. package/lib/ProductCardGroup/ProductCardGroup.js +70 -0
  186. package/lib/ProductCardGroup/index.js +2 -0
  187. package/lib/Progress/Progress.js +22 -43
  188. package/lib/Progress/ProgressBar.js +31 -60
  189. package/lib/Progress/ProgressBarBackground.js +13 -35
  190. package/lib/Progress/index.js +4 -16
  191. package/lib/QuickLinks/QuickLinks.js +31 -44
  192. package/lib/QuickLinks/QuickLinksCard.js +16 -30
  193. package/lib/QuickLinks/QuickLinksItem.js +22 -44
  194. package/lib/QuickLinks/index.js +4 -16
  195. package/lib/QuickLinksFeature/QuickLinksFeature.js +25 -47
  196. package/lib/QuickLinksFeature/QuickLinksFeatureItem.js +88 -99
  197. package/lib/QuickLinksFeature/index.js +4 -16
  198. package/lib/Radio/Radio.js +63 -95
  199. package/lib/Radio/RadioButton.js +94 -76
  200. package/lib/Radio/RadioGroup.js +70 -94
  201. package/lib/Radio/RadioInput.js +18 -46
  202. package/lib/Radio/RadioInput.native.js +1 -10
  203. package/lib/Radio/index.js +3 -21
  204. package/lib/RadioCard/RadioCard.js +47 -90
  205. package/lib/RadioCard/RadioCardGroup.js +66 -91
  206. package/lib/RadioCard/index.js +3 -21
  207. package/lib/Responsive/Responsive.js +48 -41
  208. package/{lib-module/Responsive/Responsive.js → lib/Responsive/ResponsiveProp.js} +13 -20
  209. package/lib/Responsive/ResponsiveWithMediaQueryStyleSheet.js +68 -0
  210. package/lib/Responsive/index.js +2 -13
  211. package/lib/Search/Search.js +73 -96
  212. package/lib/Search/dictionary.js +2 -9
  213. package/lib/Search/index.js +2 -13
  214. package/lib/Select/Group.js +15 -25
  215. package/lib/Select/Group.native.js +8 -18
  216. package/lib/Select/Item.js +14 -23
  217. package/lib/Select/Item.native.js +1 -10
  218. package/lib/Select/Picker.js +71 -60
  219. package/lib/Select/Picker.native.js +40 -65
  220. package/lib/Select/Select.js +70 -109
  221. package/lib/Select/constants.js +4 -14
  222. package/lib/Select/index.js +6 -19
  223. package/lib/SideNav/Item.js +41 -65
  224. package/lib/SideNav/ItemContent.js +22 -41
  225. package/lib/SideNav/ItemsGroup.js +43 -60
  226. package/lib/SideNav/SideNav.js +42 -68
  227. package/lib/SideNav/index.js +1 -15
  228. package/lib/Skeleton/Skeleton.js +54 -86
  229. package/lib/Skeleton/index.js +2 -13
  230. package/lib/Skeleton/skeleton.constant.js +2 -12
  231. package/lib/Skeleton/skeletonWebAnimation.js +12 -25
  232. package/lib/Skeleton/useSkeletonNativeAnimation.js +22 -33
  233. package/lib/SkipLink/SkipLink.js +48 -75
  234. package/lib/SkipLink/index.js +2 -13
  235. package/lib/Spacer/Spacer.js +17 -41
  236. package/lib/Spacer/index.js +2 -13
  237. package/lib/StackView/StackView.js +34 -59
  238. package/lib/StackView/StackWrap.js +23 -44
  239. package/lib/StackView/StackWrap.native.js +2 -12
  240. package/lib/StackView/StackWrapBox.js +32 -58
  241. package/lib/StackView/StackWrapGap.js +22 -45
  242. package/lib/StackView/common.js +4 -19
  243. package/lib/StackView/getStackedContent.js +21 -41
  244. package/lib/StackView/index.js +5 -29
  245. package/lib/Status/Status.js +165 -0
  246. package/lib/Status/index.js +2 -0
  247. package/lib/StepTracker/Step.js +70 -79
  248. package/lib/StepTracker/StepTracker.js +67 -79
  249. package/lib/StepTracker/dictionary.js +26 -13
  250. package/lib/StepTracker/index.js +2 -13
  251. package/lib/TabBar/TabBar.js +125 -0
  252. package/lib/TabBar/TabBarItem.js +175 -0
  253. package/lib/TabBar/index.js +2 -0
  254. package/lib/Tabs/Tabs.js +75 -71
  255. package/lib/Tabs/TabsItem.js +70 -91
  256. package/lib/Tabs/index.js +2 -13
  257. package/lib/Tags/Tags.js +59 -97
  258. package/lib/Tags/index.js +2 -13
  259. package/lib/TextInput/TextArea.js +27 -46
  260. package/lib/TextInput/TextInput.js +38 -54
  261. package/lib/TextInput/TextInputBase.js +210 -137
  262. package/lib/TextInput/dictionary.js +8 -11
  263. package/lib/TextInput/index.js +3 -23
  264. package/lib/TextInput/propTypes.js +11 -21
  265. package/lib/ThemeProvider/ThemeProvider.js +40 -52
  266. package/lib/ThemeProvider/index.js +7 -61
  267. package/lib/ThemeProvider/useResponsiveThemeTokens.js +81 -0
  268. package/lib/ThemeProvider/useSetTheme.js +10 -20
  269. package/lib/ThemeProvider/useTheme.js +5 -17
  270. package/lib/ThemeProvider/useThemeTokens.js +16 -33
  271. package/lib/ThemeProvider/utils/index.js +2 -31
  272. package/lib/ThemeProvider/utils/styles.js +48 -60
  273. package/lib/ThemeProvider/utils/theme-tokens.js +37 -78
  274. package/lib/Timeline/Timeline.js +39 -63
  275. package/lib/Timeline/index.js +2 -13
  276. package/lib/ToggleSwitch/ToggleSwitch.js +105 -108
  277. package/lib/ToggleSwitch/ToggleSwitchGroup.js +47 -91
  278. package/lib/ToggleSwitch/index.js +3 -23
  279. package/lib/Tooltip/Backdrop.js +22 -29
  280. package/lib/Tooltip/Backdrop.native.js +14 -33
  281. package/lib/Tooltip/Tooltip.js +65 -92
  282. package/lib/Tooltip/Tooltip.native.js +107 -110
  283. package/lib/Tooltip/dictionary.js +2 -9
  284. package/lib/Tooltip/getTooltipPosition.js +35 -49
  285. package/lib/Tooltip/index.js +5 -18
  286. package/lib/Tooltip/shared.js +26 -24
  287. package/lib/TooltipButton/TooltipButton.js +48 -53
  288. package/lib/TooltipButton/index.js +2 -13
  289. package/lib/Typography/Typography.js +164 -87
  290. package/lib/Typography/index.js +2 -13
  291. package/lib/Validator/Validator.js +222 -0
  292. package/lib/Validator/index.js +2 -0
  293. package/lib/ViewportProvider/ViewportProvider.js +11 -31
  294. package/lib/ViewportProvider/index.js +3 -28
  295. package/lib/ViewportProvider/useViewport.js +3 -15
  296. package/lib/ViewportProvider/useViewportListener.js +13 -29
  297. package/lib/index.js +71 -681
  298. package/lib/server.js +4 -0
  299. package/lib/utils/BaseView/BaseView.js +14 -36
  300. package/lib/utils/BaseView/BaseView.native.js +2 -13
  301. package/lib/utils/BaseView/index.js +2 -13
  302. package/lib/utils/a11y/index.js +2 -31
  303. package/lib/utils/a11y/semantics.js +18 -60
  304. package/lib/utils/a11y/textSize.js +8 -24
  305. package/lib/utils/animation/index.js +2 -15
  306. package/lib/utils/animation/useVerticalExpandAnimation.js +27 -47
  307. package/lib/utils/children.js +25 -47
  308. package/lib/utils/containUniqueFields.js +3 -13
  309. package/lib/utils/convertFromMegaByteToByte.js +10 -0
  310. package/lib/utils/floating-ui/index.js +1 -43
  311. package/lib/utils/floating-ui/index.native.js +1 -43
  312. package/lib/utils/formatImageSource.js +27 -0
  313. package/lib/utils/hasOwnProperty.js +1 -8
  314. package/lib/utils/htmlAttrs.js +23 -0
  315. package/lib/utils/index.js +25 -222
  316. package/lib/utils/info/index.js +6 -17
  317. package/lib/utils/info/platform/index.js +8 -17
  318. package/lib/utils/info/platform/platform.android.js +1 -8
  319. package/lib/utils/info/platform/platform.ios.js +1 -8
  320. package/lib/utils/info/platform/platform.js +1 -8
  321. package/lib/utils/info/platform/platform.native.js +1 -8
  322. package/lib/utils/info/versions.js +4 -14
  323. package/lib/utils/input.js +38 -52
  324. package/lib/utils/pressability.js +18 -40
  325. package/lib/utils/props/a11yProps.js +105 -119
  326. package/lib/utils/props/clickProps.js +4 -16
  327. package/lib/utils/props/componentPropType.js +4 -24
  328. package/lib/utils/props/copyPropTypes.js +2 -14
  329. package/lib/utils/props/getPropSelector.js +15 -21
  330. package/lib/utils/props/handlerProps.js +28 -52
  331. package/lib/utils/props/hrefAttrsProp.js +6 -17
  332. package/lib/utils/props/index.js +19 -190
  333. package/lib/utils/props/inputSupportsProps.js +22 -27
  334. package/lib/utils/props/linkProps.js +17 -35
  335. package/lib/utils/props/paddingProp.js +8 -19
  336. package/lib/utils/props/pressProps.js +23 -38
  337. package/lib/utils/props/rectProp.js +8 -19
  338. package/lib/utils/props/responsiveProps.js +6 -18
  339. package/lib/utils/props/selectSystemProps.js +7 -15
  340. package/lib/utils/props/spacingProps.js +13 -27
  341. package/lib/utils/props/textInputProps.js +64 -90
  342. package/lib/utils/props/textProps.js +23 -34
  343. package/lib/utils/props/tokens.js +26 -55
  344. package/lib/utils/props/variantProp.js +4 -14
  345. package/lib/utils/props/viewProps.js +10 -23
  346. package/lib/utils/ssr-media-query/create-stylesheet/create-stylesheet-mobile.js +48 -0
  347. package/lib/utils/ssr-media-query/create-stylesheet/index.android.js +2 -0
  348. package/lib/utils/ssr-media-query/create-stylesheet/index.ios.js +2 -0
  349. package/lib/utils/ssr-media-query/create-stylesheet/index.js +36 -0
  350. package/lib/utils/ssr-media-query/hash.js +13 -0
  351. package/lib/utils/ssr-media-query/index.js +6 -0
  352. package/lib/utils/ssr-media-query/utils/common.js +33 -0
  353. package/lib/utils/ssr-media-query/utils/create-declaration-block.js +16 -0
  354. package/lib/utils/ssr-media-query/utils/create-media-query-styles.js +60 -0
  355. package/lib/utils/ssr-media-query/utils/hyphenate-style-name.js +12 -0
  356. package/lib/utils/ssr-media-query/utils/inject.js +39 -0
  357. package/lib/utils/ssr.js +27 -55
  358. package/lib/utils/transformGradient.js +15 -0
  359. package/lib/utils/useCopy.js +4 -15
  360. package/lib/utils/useHash.js +11 -23
  361. package/lib/utils/useHash.native.js +1 -10
  362. package/lib/utils/useOverlaidPosition.js +214 -0
  363. package/lib/utils/useResponsiveProp.js +13 -29
  364. package/lib/utils/useSafeLayoutEffect.js +10 -22
  365. package/lib/utils/useScrollBlocking.js +13 -28
  366. package/lib/utils/useScrollBlocking.native.js +1 -10
  367. package/lib/utils/useSpacingScale.js +12 -24
  368. package/lib/utils/useUniqueId.js +4 -15
  369. package/lib/utils/withLinkRouter.js +23 -36
  370. package/package.json +32 -22
  371. package/src/A11yInfoProvider/index.jsx +13 -20
  372. package/src/A11yText/index.jsx +14 -4
  373. package/src/ActionCard/ActionCard.jsx +306 -0
  374. package/src/ActionCard/index.js +3 -0
  375. package/src/ActivityIndicator/Spinner.jsx +3 -2
  376. package/src/ActivityIndicator/Spinner.native.jsx +2 -2
  377. package/src/ActivityIndicator/index.jsx +12 -3
  378. package/src/Autocomplete/Autocomplete.jsx +486 -0
  379. package/src/Autocomplete/Loading.jsx +21 -0
  380. package/src/Autocomplete/Suggestions.jsx +54 -0
  381. package/src/Autocomplete/constants.js +4 -0
  382. package/src/Autocomplete/dictionary.js +12 -0
  383. package/src/Autocomplete/index.js +3 -0
  384. package/src/Badge/Badge.jsx +76 -0
  385. package/src/Badge/index.js +3 -0
  386. package/src/BaseProvider/HydrationContext.jsx +5 -5
  387. package/src/BaseProvider/index.jsx +5 -2
  388. package/src/Box/Box.jsx +162 -20
  389. package/src/Box/backgroundImageStylesMap.js +21 -0
  390. package/src/Button/Button.jsx +12 -7
  391. package/src/Button/ButtonBase.jsx +76 -35
  392. package/src/Button/ButtonDropdown.jsx +5 -2
  393. package/src/Button/ButtonGroup.jsx +20 -3
  394. package/src/Button/ButtonLink.jsx +10 -4
  395. package/src/Card/Card.jsx +269 -17
  396. package/src/Card/CardBase.jsx +79 -28
  397. package/src/Card/PressableCardBase.jsx +21 -5
  398. package/src/CardGroup/CardGroup.jsx +249 -0
  399. package/src/CardGroup/dictionary.js +8 -0
  400. package/src/CardGroup/index.js +3 -0
  401. package/src/Carousel/Carousel.jsx +406 -117
  402. package/src/Carousel/CarouselFirstFocus/CarouselFirstFocus.jsx +2 -2
  403. package/src/Carousel/CarouselItem/CarouselItem.jsx +99 -18
  404. package/src/Carousel/CarouselStepTracker/CarouselStepTracker.jsx +15 -5
  405. package/src/Carousel/CarouselTabs/CarouselTabs.jsx +2 -2
  406. package/src/Carousel/CarouselTabs/CarouselTabsPanel.jsx +22 -12
  407. package/src/Carousel/CarouselTabs/CarouselTabsPanelItem.jsx +3 -3
  408. package/src/Carousel/CarouselThumbnail.jsx +45 -27
  409. package/src/Carousel/CarouselThumbnailNavigation.jsx +11 -7
  410. package/src/Carousel/dictionary.js +11 -7
  411. package/src/Checkbox/Checkbox.jsx +8 -4
  412. package/src/Checkbox/CheckboxButton.jsx +178 -0
  413. package/src/Checkbox/CheckboxGroup.jsx +24 -4
  414. package/src/Checkbox/CheckboxInput.jsx +15 -12
  415. package/src/CheckboxCard/CheckboxCard.jsx +190 -0
  416. package/src/CheckboxCard/index.js +3 -0
  417. package/src/CheckboxCardGroup/CheckboxCardGroup.jsx +231 -0
  418. package/src/CheckboxCardGroup/index.js +3 -0
  419. package/src/ColourToggle/ColourBubble.jsx +112 -0
  420. package/src/ColourToggle/ColourToggle.jsx +83 -0
  421. package/src/ColourToggle/index.js +3 -0
  422. package/src/Divider/Divider.jsx +5 -2
  423. package/src/DownloadApp/DownloadApp.jsx +165 -0
  424. package/src/DownloadApp/dictionary.js +10 -0
  425. package/src/DownloadApp/index.js +3 -0
  426. package/src/ExpandCollapse/Accordion.jsx +4 -2
  427. package/src/ExpandCollapse/Control.jsx +44 -14
  428. package/src/ExpandCollapse/ExpandCollapse.jsx +15 -7
  429. package/src/ExpandCollapse/Panel.jsx +119 -24
  430. package/src/ExpandCollapse/dictionary.js +10 -0
  431. package/src/Feedback/Feedback.jsx +3 -4
  432. package/src/Fieldset/Fieldset.jsx +47 -23
  433. package/src/Fieldset/FieldsetContainer.jsx +15 -7
  434. package/src/Fieldset/FieldsetContainer.native.jsx +15 -7
  435. package/src/Fieldset/Legend.jsx +2 -2
  436. package/src/Fieldset/Legend.native.jsx +2 -2
  437. package/src/FileUpload/FileUpload.jsx +396 -0
  438. package/src/FileUpload/NotificationContent.jsx +44 -0
  439. package/src/FileUpload/dictionary.js +40 -0
  440. package/src/FileUpload/index.js +3 -0
  441. package/src/FlexGrid/Col/Col.jsx +76 -79
  442. package/src/FlexGrid/FlexGrid.jsx +62 -43
  443. package/src/FlexGrid/Row/Row.jsx +60 -54
  444. package/src/Footnote/Footnote.jsx +326 -0
  445. package/src/Footnote/FootnoteLink.jsx +110 -0
  446. package/src/Footnote/dictionary.js +12 -0
  447. package/src/Footnote/index.js +6 -0
  448. package/src/HorizontalScroll/HorizontalScroll.jsx +8 -8
  449. package/src/HorizontalScroll/HorizontalScrollButton.jsx +2 -2
  450. package/src/HorizontalScroll/ScrollViewEnd.jsx +4 -8
  451. package/src/HorizontalScroll/ScrollViewEnd.native.jsx +2 -2
  452. package/src/Icon/Icon.jsx +53 -6
  453. package/src/Icon/IconText.jsx +46 -14
  454. package/src/IconButton/IconButton.jsx +116 -20
  455. package/src/InputLabel/InputLabel.jsx +8 -6
  456. package/src/InputLabel/LabelContent.jsx +2 -2
  457. package/src/InputLabel/LabelContent.native.jsx +2 -2
  458. package/src/InputSupports/InputSupports.jsx +22 -3
  459. package/src/Link/ChevronLink.jsx +24 -7
  460. package/src/Link/InlinePressable.jsx +23 -15
  461. package/src/Link/InlinePressable.native.jsx +12 -6
  462. package/src/Link/Link.jsx +2 -2
  463. package/src/Link/LinkBase.jsx +75 -31
  464. package/src/Link/TextButton.jsx +11 -4
  465. package/src/List/List.jsx +26 -8
  466. package/src/List/ListItem.jsx +3 -5
  467. package/src/List/ListItemBase.jsx +38 -9
  468. package/src/List/ListItemContent.jsx +24 -6
  469. package/src/List/ListItemMark.jsx +14 -13
  470. package/src/List/PressableListItemBase.jsx +4 -2
  471. package/src/Listbox/GroupControl.jsx +101 -0
  472. package/src/Listbox/Listbox.jsx +177 -0
  473. package/src/Listbox/ListboxContext.js +6 -0
  474. package/src/Listbox/ListboxGroup.jsx +127 -0
  475. package/src/Listbox/ListboxItem.jsx +87 -0
  476. package/src/Listbox/ListboxOverlay.jsx +81 -0
  477. package/src/Listbox/PressableItem.jsx +138 -0
  478. package/src/Listbox/index.js +3 -0
  479. package/src/Modal/Modal.jsx +190 -16
  480. package/src/Modal/ModalContent.jsx +180 -0
  481. package/src/Modal/WebModal.jsx +70 -0
  482. package/src/MultiSelectFilter/ModalOverlay.jsx +103 -30
  483. package/src/MultiSelectFilter/MultiSelectFilter.jsx +326 -68
  484. package/src/Notification/Notification.jsx +273 -49
  485. package/src/OrderedList/Item.jsx +147 -0
  486. package/src/OrderedList/ItemBase.jsx +43 -0
  487. package/src/OrderedList/OrderedList.jsx +64 -0
  488. package/src/OrderedList/OrderedListBase.jsx +33 -0
  489. package/src/OrderedList/index.js +3 -0
  490. package/src/Pagination/PageButton.jsx +14 -5
  491. package/src/Pagination/Pagination.jsx +83 -17
  492. package/src/Pagination/SideButton.jsx +2 -2
  493. package/src/Pagination/constants.js +3 -0
  494. package/src/Pagination/dictionary.js +3 -3
  495. package/src/Pagination/usePagination.js +14 -3
  496. package/src/Portal/Portal.jsx +52 -0
  497. package/src/Portal/Portal.native.jsx +3 -0
  498. package/src/Portal/index.js +3 -0
  499. package/src/PriceLockup/PriceLockup.jsx +237 -0
  500. package/src/PriceLockup/index.js +3 -0
  501. package/src/PriceLockup/utils/renderFootnoteContent.jsx +77 -0
  502. package/src/PriceLockup/utils/renderFootnoteLinks.jsx +38 -0
  503. package/src/PriceLockup/utils/renderPrice.jsx +201 -0
  504. package/src/PriceLockup/utils/renderTypography.jsx +13 -0
  505. package/src/ProductCard/ProductCard.jsx +199 -0
  506. package/src/ProductCard/dictionary.js +38 -0
  507. package/src/ProductCard/index.js +3 -0
  508. package/src/ProductCardGroup/ProductCardGroup.jsx +75 -0
  509. package/src/ProductCardGroup/index.js +3 -0
  510. package/src/Progress/Progress.jsx +8 -5
  511. package/src/Progress/ProgressBar.jsx +6 -4
  512. package/src/Progress/ProgressBarBackground.jsx +6 -4
  513. package/src/QuickLinks/QuickLinks.jsx +11 -2
  514. package/src/QuickLinks/QuickLinksCard.jsx +9 -3
  515. package/src/QuickLinks/QuickLinksItem.jsx +2 -2
  516. package/src/QuickLinksFeature/QuickLinksFeature.jsx +31 -27
  517. package/src/QuickLinksFeature/QuickLinksFeatureItem.jsx +43 -36
  518. package/src/Radio/Radio.jsx +24 -6
  519. package/src/Radio/RadioButton.jsx +58 -6
  520. package/src/Radio/RadioGroup.jsx +27 -5
  521. package/src/Radio/RadioInput.jsx +15 -14
  522. package/src/RadioCard/RadioCard.jsx +2 -2
  523. package/src/RadioCard/RadioCardGroup.jsx +25 -4
  524. package/src/Responsive/Responsive.jsx +43 -13
  525. package/src/Responsive/ResponsiveProp.jsx +33 -0
  526. package/src/Responsive/ResponsiveWithMediaQueryStyleSheet.jsx +67 -0
  527. package/src/Search/Search.jsx +10 -5
  528. package/src/Select/Group.jsx +12 -3
  529. package/src/Select/Group.native.jsx +3 -0
  530. package/src/Select/Item.jsx +10 -1
  531. package/src/Select/Picker.jsx +32 -5
  532. package/src/Select/Picker.native.jsx +3 -3
  533. package/src/Select/Select.jsx +27 -10
  534. package/src/SideNav/Item.jsx +12 -7
  535. package/src/SideNav/ItemContent.jsx +14 -6
  536. package/src/SideNav/ItemsGroup.jsx +15 -4
  537. package/src/SideNav/SideNav.jsx +11 -3
  538. package/src/Skeleton/Skeleton.jsx +19 -7
  539. package/src/Skeleton/skeleton.constant.js +0 -1
  540. package/src/Skeleton/skeletonWebAnimation.js +11 -11
  541. package/src/Skeleton/useSkeletonNativeAnimation.js +5 -4
  542. package/src/SkipLink/SkipLink.jsx +14 -14
  543. package/src/Spacer/Spacer.jsx +2 -2
  544. package/src/StackView/StackView.jsx +5 -4
  545. package/src/StackView/StackWrap.jsx +3 -3
  546. package/src/StackView/StackWrapBox.jsx +2 -2
  547. package/src/StackView/StackWrapGap.jsx +2 -2
  548. package/src/StackView/getStackedContent.jsx +16 -7
  549. package/src/Status/Status.jsx +153 -0
  550. package/src/Status/index.js +3 -0
  551. package/src/StepTracker/Step.jsx +102 -70
  552. package/src/StepTracker/StepTracker.jsx +28 -6
  553. package/src/StepTracker/dictionary.js +24 -4
  554. package/src/TabBar/TabBar.jsx +123 -0
  555. package/src/TabBar/TabBarItem.jsx +149 -0
  556. package/src/TabBar/index.js +3 -0
  557. package/src/Tabs/Tabs.jsx +37 -5
  558. package/src/Tabs/TabsItem.jsx +19 -7
  559. package/src/Tags/Tags.jsx +7 -3
  560. package/src/TextInput/TextArea.jsx +3 -3
  561. package/src/TextInput/TextInput.jsx +11 -7
  562. package/src/TextInput/TextInputBase.jsx +145 -29
  563. package/src/TextInput/dictionary.js +6 -2
  564. package/src/TextInput/propTypes.js +4 -0
  565. package/src/ThemeProvider/ThemeProvider.jsx +17 -7
  566. package/src/ThemeProvider/index.js +1 -0
  567. package/src/ThemeProvider/useResponsiveThemeTokens.js +85 -0
  568. package/src/ThemeProvider/utils/styles.js +34 -2
  569. package/src/Timeline/Timeline.jsx +10 -6
  570. package/src/ToggleSwitch/ToggleSwitch.jsx +28 -11
  571. package/src/ToggleSwitch/ToggleSwitchGroup.jsx +2 -2
  572. package/src/Tooltip/Tooltip.jsx +38 -9
  573. package/src/Tooltip/Tooltip.native.jsx +82 -20
  574. package/src/Tooltip/getTooltipPosition.js +12 -13
  575. package/src/Tooltip/shared.js +17 -0
  576. package/src/TooltipButton/TooltipButton.jsx +34 -8
  577. package/src/Typography/Typography.jsx +173 -29
  578. package/src/Validator/Validator.jsx +230 -0
  579. package/src/Validator/index.js +3 -0
  580. package/src/ViewportProvider/ViewportProvider.jsx +2 -2
  581. package/src/index.js +31 -12
  582. package/src/server.js +4 -0
  583. package/src/utils/BaseView/BaseView.jsx +2 -2
  584. package/src/utils/a11y/semantics.js +7 -14
  585. package/src/utils/animation/useVerticalExpandAnimation.js +3 -3
  586. package/src/utils/children.jsx +4 -4
  587. package/src/utils/convertFromMegaByteToByte.js +11 -0
  588. package/src/utils/formatImageSource.js +29 -0
  589. package/src/utils/htmlAttrs.js +29 -0
  590. package/src/utils/index.js +6 -1
  591. package/src/utils/props/handlerProps.js +5 -1
  592. package/src/utils/props/inputSupportsProps.js +21 -1
  593. package/src/utils/props/textInputProps.js +1 -0
  594. package/src/utils/props/tokens.js +4 -2
  595. package/src/utils/ssr-media-query/create-stylesheet/create-stylesheet-mobile.js +41 -0
  596. package/src/utils/ssr-media-query/create-stylesheet/index.android.js +3 -0
  597. package/src/utils/ssr-media-query/create-stylesheet/index.ios.js +3 -0
  598. package/src/utils/ssr-media-query/create-stylesheet/index.js +35 -0
  599. package/src/utils/ssr-media-query/hash.js +16 -0
  600. package/src/utils/ssr-media-query/index.js +8 -0
  601. package/src/utils/ssr-media-query/utils/common.js +38 -0
  602. package/src/utils/ssr-media-query/utils/create-declaration-block.js +21 -0
  603. package/src/utils/ssr-media-query/utils/create-media-query-styles.js +46 -0
  604. package/src/utils/ssr-media-query/utils/hyphenate-style-name.js +15 -0
  605. package/src/utils/ssr-media-query/utils/inject.js +43 -0
  606. package/src/utils/ssr.jsx +3 -1
  607. package/src/utils/transformGradient.js +17 -0
  608. package/src/utils/useOverlaidPosition.js +224 -0
  609. package/src/utils/withLinkRouter.jsx +3 -3
  610. package/types/Badge.d.ts +28 -0
  611. package/types/Box.d.ts +52 -0
  612. package/types/Checkbox.d.ts +47 -0
  613. package/types/CheckboxCardGroup.d.ts +72 -0
  614. package/types/ChevronLink.d.ts +47 -0
  615. package/types/Common.d.ts +106 -0
  616. package/types/Divider.d.ts +19 -0
  617. package/types/ExpandCollapse.d.ts +65 -0
  618. package/types/FileUpload.d.ts +40 -0
  619. package/types/HorizontalScrollButton.d.ts +16 -0
  620. package/types/Icon.d.ts +21 -0
  621. package/types/Link.d.ts +48 -0
  622. package/types/List.d.ts +48 -0
  623. package/types/Portal.d.ts +5 -0
  624. package/types/Search.d.ts +38 -0
  625. package/types/Select.d.ts +57 -0
  626. package/types/Spacer.d.ts +5 -0
  627. package/types/StackView.d.ts +28 -0
  628. package/types/Tabs.d.ts +46 -0
  629. package/types/TextButton.d.ts +11 -0
  630. package/types/ToggleSwitch.d.ts +54 -0
  631. package/types/ToolTip.d.ts +40 -0
  632. package/types/Typography.d.ts +40 -0
  633. package/types/index.d.ts +78 -0
  634. package/.eslintrc.js +0 -9
  635. package/__tests17__/A11yText/A11yText.test.jsx +0 -34
  636. package/__tests17__/ActivityIndicator/ActivityIndicator.test.jsx +0 -68
  637. package/__tests17__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +0 -299
  638. package/__tests17__/Box/Box.test.jsx +0 -111
  639. package/__tests17__/Button/Button.test.jsx +0 -86
  640. package/__tests17__/Button/ButtonBase.test.jsx +0 -82
  641. package/__tests17__/Button/ButtonGroup.test.jsx +0 -347
  642. package/__tests17__/Button/ButtonLink.test.jsx +0 -61
  643. package/__tests17__/Card/Card.test.jsx +0 -63
  644. package/__tests17__/Carousel/Carousel.test.jsx +0 -128
  645. package/__tests17__/Carousel/CarouselTabs.test.jsx +0 -142
  646. package/__tests17__/Checkbox/Checkbox.test.jsx +0 -94
  647. package/__tests17__/Checkbox/CheckboxGroup.test.jsx +0 -246
  648. package/__tests17__/Divider/Divider.test.jsx +0 -91
  649. package/__tests17__/ExpandCollapse/ExpandCollapse.test.jsx +0 -109
  650. package/__tests17__/Feedback/Feedback.test.jsx +0 -42
  651. package/__tests17__/FlexGrid/Col.test.jsx +0 -261
  652. package/__tests17__/FlexGrid/FlexGrid.test.jsx +0 -136
  653. package/__tests17__/FlexGrid/Row.test.jsx +0 -273
  654. package/__tests17__/HorizontalScroll/HorizontalScroll.test.jsx +0 -165
  655. package/__tests17__/Icon/Icon.test.jsx +0 -61
  656. package/__tests17__/IconButton/IconButton.test.jsx +0 -52
  657. package/__tests17__/InputLabel/InputLabel.test.jsx +0 -28
  658. package/__tests17__/InputLabel/__snapshots__/InputLabel.test.jsx.snap +0 -3
  659. package/__tests17__/InputSupports/InputSupports.test.jsx +0 -60
  660. package/__tests17__/Link/Link.test.jsx +0 -63
  661. package/__tests17__/Link/TextButton.test.jsx +0 -35
  662. package/__tests17__/List/List.test.jsx +0 -82
  663. package/__tests17__/Modal/Modal.test.jsx +0 -47
  664. package/__tests17__/Notification/Notification.test.jsx +0 -20
  665. package/__tests17__/Pagination/Pagination.test.jsx +0 -160
  666. package/__tests17__/Progress/Progress.test.jsx +0 -79
  667. package/__tests17__/Radio/Radio.test.jsx +0 -87
  668. package/__tests17__/Radio/RadioGroup.test.jsx +0 -220
  669. package/__tests17__/RadioCard/RadioCard.test.jsx +0 -87
  670. package/__tests17__/RadioCard/RadioCardGroup.test.jsx +0 -246
  671. package/__tests17__/Search/Search.test.jsx +0 -87
  672. package/__tests17__/Select/Select.test.jsx +0 -94
  673. package/__tests17__/SideNav/SideNav.test.jsx +0 -110
  674. package/__tests17__/Skeleton/Skeleton.test.jsx +0 -61
  675. package/__tests17__/SkipLink/SkipLink.test.jsx +0 -61
  676. package/__tests17__/Spacer/Spacer.test.jsx +0 -63
  677. package/__tests17__/StackView/StackView.test.jsx +0 -211
  678. package/__tests17__/StackView/StackWrap.test.jsx +0 -47
  679. package/__tests17__/StackView/getStackedContent.test.jsx +0 -295
  680. package/__tests17__/StepTracker/StepTracker.test.jsx +0 -108
  681. package/__tests17__/Tabs/Tabs.test.jsx +0 -49
  682. package/__tests17__/Tags/Tags.test.jsx +0 -327
  683. package/__tests17__/TextInput/TextArea.test.jsx +0 -35
  684. package/__tests17__/TextInput/TextInputBase.test.jsx +0 -125
  685. package/__tests17__/ThemeProvider/ThemeProvider.test.jsx +0 -82
  686. package/__tests17__/ThemeProvider/useThemeTokens.test.jsx +0 -514
  687. package/__tests17__/ThemeProvider/utils/theme-tokens.test.js +0 -41
  688. package/__tests17__/ToggleSwitch/ToggleSwitch.test.jsx +0 -82
  689. package/__tests17__/ToggleSwitch/ToggleSwitchGroup.test.jsx +0 -192
  690. package/__tests17__/Tooltip/Tooltip.test.jsx +0 -65
  691. package/__tests17__/Tooltip/getTooltipPosition.test.js +0 -79
  692. package/__tests17__/Typography/typography.test.jsx +0 -90
  693. package/__tests17__/utils/children.test.jsx +0 -128
  694. package/__tests17__/utils/containUniqueFields.test.js +0 -25
  695. package/__tests17__/utils/input.test.js +0 -375
  696. package/__tests17__/utils/props.test.js +0 -36
  697. package/__tests17__/utils/semantics.test.jsx +0 -34
  698. package/__tests17__/utils/useCopy.test.js +0 -42
  699. package/__tests17__/utils/useResponsiveProp.test.jsx +0 -202
  700. package/__tests17__/utils/useSpacingScale.test.jsx +0 -273
  701. package/__tests17__/utils/useUniqueId.test.js +0 -31
  702. package/component-docs.json +0 -13646
  703. package/lib-module/A11yInfoProvider/index.js +0 -73
  704. package/lib-module/A11yText/index.js +0 -56
  705. package/lib-module/ActivityIndicator/Spinner.js +0 -79
  706. package/lib-module/ActivityIndicator/Spinner.native.js +0 -146
  707. package/lib-module/ActivityIndicator/index.js +0 -48
  708. package/lib-module/ActivityIndicator/shared.js +0 -13
  709. package/lib-module/BaseProvider/HydrationContext.js +0 -51
  710. package/lib-module/BaseProvider/index.js +0 -41
  711. package/lib-module/Box/Box.js +0 -259
  712. package/lib-module/Box/index.js +0 -2
  713. package/lib-module/Button/Button.js +0 -26
  714. package/lib-module/Button/ButtonBase.js +0 -309
  715. package/lib-module/Button/ButtonDropdown.js +0 -181
  716. package/lib-module/Button/ButtonGroup.js +0 -264
  717. package/lib-module/Button/ButtonLink.js +0 -40
  718. package/lib-module/Button/index.js +0 -5
  719. package/lib-module/Button/propTypes.js +0 -53
  720. package/lib-module/Card/Card.js +0 -85
  721. package/lib-module/Card/CardBase.js +0 -66
  722. package/lib-module/Card/PressableCardBase.js +0 -114
  723. package/lib-module/Card/index.js +0 -4
  724. package/lib-module/Carousel/Carousel.js +0 -690
  725. package/lib-module/Carousel/CarouselContext.js +0 -56
  726. package/lib-module/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +0 -51
  727. package/lib-module/Carousel/CarouselItem/CarouselItem.js +0 -81
  728. package/lib-module/Carousel/CarouselItem/index.js +0 -2
  729. package/lib-module/Carousel/CarouselStepTracker/CarouselStepTracker.js +0 -50
  730. package/lib-module/Carousel/CarouselStepTracker/index.js +0 -2
  731. package/lib-module/Carousel/CarouselTabs/CarouselTabs.js +0 -51
  732. package/lib-module/Carousel/CarouselTabs/CarouselTabsPanel.js +0 -84
  733. package/lib-module/Carousel/CarouselTabs/CarouselTabsPanelItem.js +0 -126
  734. package/lib-module/Carousel/CarouselTabs/index.js +0 -2
  735. package/lib-module/Carousel/CarouselThumbnail.js +0 -85
  736. package/lib-module/Carousel/CarouselThumbnailNavigation.js +0 -66
  737. package/lib-module/Carousel/dictionary.js +0 -18
  738. package/lib-module/Carousel/index.js +0 -3
  739. package/lib-module/Checkbox/Checkbox.js +0 -355
  740. package/lib-module/Checkbox/CheckboxGroup.js +0 -242
  741. package/lib-module/Checkbox/CheckboxInput.js +0 -60
  742. package/lib-module/Checkbox/CheckboxInput.native.js +0 -6
  743. package/lib-module/Checkbox/index.js +0 -3
  744. package/lib-module/Divider/Divider.js +0 -127
  745. package/lib-module/Divider/index.js +0 -2
  746. package/lib-module/ExpandCollapse/Accordion.js +0 -15
  747. package/lib-module/ExpandCollapse/Control.js +0 -139
  748. package/lib-module/ExpandCollapse/ExpandCollapse.js +0 -95
  749. package/lib-module/ExpandCollapse/Panel.js +0 -160
  750. package/lib-module/ExpandCollapse/index.js +0 -7
  751. package/lib-module/Feedback/Feedback.js +0 -165
  752. package/lib-module/Feedback/index.js +0 -2
  753. package/lib-module/Fieldset/Fieldset.js +0 -182
  754. package/lib-module/Fieldset/FieldsetContainer.js +0 -38
  755. package/lib-module/Fieldset/FieldsetContainer.native.js +0 -23
  756. package/lib-module/Fieldset/Legend.js +0 -24
  757. package/lib-module/Fieldset/Legend.native.js +0 -31
  758. package/lib-module/Fieldset/cssReset.js +0 -14
  759. package/lib-module/Fieldset/index.js +0 -2
  760. package/lib-module/FlexGrid/Col/Col.js +0 -275
  761. package/lib-module/FlexGrid/Col/index.js +0 -2
  762. package/lib-module/FlexGrid/FlexGrid.js +0 -149
  763. package/lib-module/FlexGrid/Row/Row.js +0 -184
  764. package/lib-module/FlexGrid/Row/index.js +0 -2
  765. package/lib-module/FlexGrid/helpers/index.js +0 -18
  766. package/lib-module/FlexGrid/index.js +0 -2
  767. package/lib-module/FlexGrid/providers/GutterContext.js +0 -3
  768. package/lib-module/HorizontalScroll/HorizontalScroll.js +0 -175
  769. package/lib-module/HorizontalScroll/HorizontalScrollButton.js +0 -81
  770. package/lib-module/HorizontalScroll/ScrollViewEnd.js +0 -48
  771. package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +0 -27
  772. package/lib-module/HorizontalScroll/dictionary.js +0 -11
  773. package/lib-module/HorizontalScroll/index.js +0 -11
  774. package/lib-module/HorizontalScroll/itemPositions.js +0 -112
  775. package/lib-module/Icon/Icon.js +0 -62
  776. package/lib-module/Icon/IconText.js +0 -88
  777. package/lib-module/Icon/index.js +0 -4
  778. package/lib-module/IconButton/IconButton.js +0 -132
  779. package/lib-module/IconButton/index.js +0 -2
  780. package/lib-module/InputLabel/InputLabel.js +0 -154
  781. package/lib-module/InputLabel/LabelContent.js +0 -27
  782. package/lib-module/InputLabel/LabelContent.native.js +0 -19
  783. package/lib-module/InputLabel/index.js +0 -2
  784. package/lib-module/InputSupports/InputSupports.js +0 -103
  785. package/lib-module/InputSupports/index.js +0 -2
  786. package/lib-module/InputSupports/useInputSupports.js +0 -33
  787. package/lib-module/Link/ChevronLink.js +0 -52
  788. package/lib-module/Link/InlinePressable.js +0 -44
  789. package/lib-module/Link/InlinePressable.native.js +0 -89
  790. package/lib-module/Link/Link.js +0 -28
  791. package/lib-module/Link/LinkBase.js +0 -244
  792. package/lib-module/Link/TextButton.js +0 -35
  793. package/lib-module/Link/index.js +0 -5
  794. package/lib-module/List/List.js +0 -66
  795. package/lib-module/List/ListItem.js +0 -38
  796. package/lib-module/List/ListItemBase.js +0 -139
  797. package/lib-module/List/ListItemContent.js +0 -66
  798. package/lib-module/List/ListItemMark.js +0 -143
  799. package/lib-module/List/PressableListItemBase.js +0 -114
  800. package/lib-module/List/index.js +0 -5
  801. package/lib-module/Modal/Modal.js +0 -225
  802. package/lib-module/Modal/dictionary.js +0 -9
  803. package/lib-module/Modal/index.js +0 -2
  804. package/lib-module/MultiSelectFilter/ModalOverlay.js +0 -112
  805. package/lib-module/MultiSelectFilter/MultiSelectFilter.js +0 -286
  806. package/lib-module/MultiSelectFilter/dictionary.js +0 -12
  807. package/lib-module/MultiSelectFilter/index.js +0 -2
  808. package/lib-module/Notification/Notification.js +0 -230
  809. package/lib-module/Notification/dictionary.js +0 -8
  810. package/lib-module/Notification/index.js +0 -2
  811. package/lib-module/Pagination/PageButton.js +0 -66
  812. package/lib-module/Pagination/Pagination.js +0 -159
  813. package/lib-module/Pagination/SideButton.js +0 -118
  814. package/lib-module/Pagination/dictionary.js +0 -18
  815. package/lib-module/Pagination/index.js +0 -2
  816. package/lib-module/Pagination/usePagination.js +0 -73
  817. package/lib-module/Progress/Progress.js +0 -89
  818. package/lib-module/Progress/ProgressBar.js +0 -138
  819. package/lib-module/Progress/ProgressBarBackground.js +0 -42
  820. package/lib-module/Progress/index.js +0 -4
  821. package/lib-module/QuickLinks/QuickLinks.js +0 -71
  822. package/lib-module/QuickLinks/QuickLinksCard.js +0 -33
  823. package/lib-module/QuickLinks/QuickLinksItem.js +0 -50
  824. package/lib-module/QuickLinks/index.js +0 -4
  825. package/lib-module/QuickLinksFeature/QuickLinksFeature.js +0 -69
  826. package/lib-module/QuickLinksFeature/QuickLinksFeatureItem.js +0 -130
  827. package/lib-module/QuickLinksFeature/index.js +0 -4
  828. package/lib-module/Radio/Radio.js +0 -288
  829. package/lib-module/Radio/RadioButton.js +0 -138
  830. package/lib-module/Radio/RadioGroup.js +0 -255
  831. package/lib-module/Radio/RadioInput.js +0 -62
  832. package/lib-module/Radio/RadioInput.native.js +0 -6
  833. package/lib-module/Radio/index.js +0 -3
  834. package/lib-module/RadioCard/RadioCardGroup.js +0 -259
  835. package/lib-module/RadioCard/index.js +0 -3
  836. package/lib-module/Responsive/index.js +0 -2
  837. package/lib-module/Search/Search.js +0 -241
  838. package/lib-module/Search/dictionary.js +0 -12
  839. package/lib-module/Search/index.js +0 -2
  840. package/lib-module/Select/Group.js +0 -21
  841. package/lib-module/Select/Group.native.js +0 -15
  842. package/lib-module/Select/Item.js +0 -20
  843. package/lib-module/Select/Item.native.js +0 -3
  844. package/lib-module/Select/Picker.js +0 -68
  845. package/lib-module/Select/Picker.native.js +0 -122
  846. package/lib-module/Select/Select.js +0 -347
  847. package/lib-module/Select/constants.js +0 -5
  848. package/lib-module/Select/index.js +0 -6
  849. package/lib-module/SideNav/Item.js +0 -145
  850. package/lib-module/SideNav/ItemContent.js +0 -48
  851. package/lib-module/SideNav/ItemsGroup.js +0 -117
  852. package/lib-module/SideNav/SideNav.js +0 -136
  853. package/lib-module/SideNav/index.js +0 -1
  854. package/lib-module/Skeleton/Skeleton.js +0 -182
  855. package/lib-module/Skeleton/index.js +0 -2
  856. package/lib-module/Skeleton/skeleton.constant.js +0 -3
  857. package/lib-module/Skeleton/skeletonWebAnimation.js +0 -18
  858. package/lib-module/Skeleton/useSkeletonNativeAnimation.js +0 -25
  859. package/lib-module/SkipLink/SkipLink.js +0 -188
  860. package/lib-module/SkipLink/index.js +0 -2
  861. package/lib-module/Spacer/Spacer.js +0 -98
  862. package/lib-module/Spacer/index.js +0 -2
  863. package/lib-module/StackView/StackView.js +0 -127
  864. package/lib-module/StackView/StackWrap.js +0 -53
  865. package/lib-module/StackView/StackWrap.native.js +0 -3
  866. package/lib-module/StackView/StackWrapBox.js +0 -117
  867. package/lib-module/StackView/StackWrapGap.js +0 -61
  868. package/lib-module/StackView/common.js +0 -35
  869. package/lib-module/StackView/getStackedContent.js +0 -124
  870. package/lib-module/StackView/index.js +0 -5
  871. package/lib-module/StepTracker/Step.js +0 -253
  872. package/lib-module/StepTracker/StepTracker.js +0 -191
  873. package/lib-module/StepTracker/dictionary.js +0 -10
  874. package/lib-module/StepTracker/index.js +0 -2
  875. package/lib-module/Tabs/Tabs.js +0 -152
  876. package/lib-module/Tabs/TabsItem.js +0 -228
  877. package/lib-module/Tabs/index.js +0 -2
  878. package/lib-module/Tags/Tags.js +0 -257
  879. package/lib-module/Tags/index.js +0 -2
  880. package/lib-module/TextInput/TextArea.js +0 -94
  881. package/lib-module/TextInput/TextInput.js +0 -73
  882. package/lib-module/TextInput/TextInputBase.js +0 -333
  883. package/lib-module/TextInput/dictionary.js +0 -8
  884. package/lib-module/TextInput/index.js +0 -3
  885. package/lib-module/TextInput/propTypes.js +0 -33
  886. package/lib-module/ThemeProvider/ThemeProvider.js +0 -74
  887. package/lib-module/ThemeProvider/index.js +0 -6
  888. package/lib-module/ThemeProvider/useSetTheme.js +0 -25
  889. package/lib-module/ThemeProvider/useTheme.js +0 -14
  890. package/lib-module/ThemeProvider/useThemeTokens.js +0 -110
  891. package/lib-module/ThemeProvider/utils/index.js +0 -2
  892. package/lib-module/ThemeProvider/utils/styles.js +0 -188
  893. package/lib-module/ThemeProvider/utils/theme-tokens.js +0 -163
  894. package/lib-module/Timeline/Timeline.js +0 -174
  895. package/lib-module/Timeline/index.js +0 -2
  896. package/lib-module/ToggleSwitch/ToggleSwitch.js +0 -255
  897. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +0 -227
  898. package/lib-module/ToggleSwitch/index.js +0 -3
  899. package/lib-module/Tooltip/Backdrop.js +0 -45
  900. package/lib-module/Tooltip/Backdrop.native.js +0 -44
  901. package/lib-module/Tooltip/Tooltip.js +0 -278
  902. package/lib-module/Tooltip/Tooltip.native.js +0 -326
  903. package/lib-module/Tooltip/dictionary.js +0 -8
  904. package/lib-module/Tooltip/getTooltipPosition.js +0 -175
  905. package/lib-module/Tooltip/index.js +0 -5
  906. package/lib-module/Tooltip/shared.js +0 -27
  907. package/lib-module/TooltipButton/TooltipButton.js +0 -78
  908. package/lib-module/TooltipButton/index.js +0 -2
  909. package/lib-module/Typography/Typography.js +0 -154
  910. package/lib-module/Typography/index.js +0 -2
  911. package/lib-module/ViewportProvider/ViewportProvider.js +0 -29
  912. package/lib-module/ViewportProvider/index.js +0 -3
  913. package/lib-module/ViewportProvider/useViewport.js +0 -3
  914. package/lib-module/ViewportProvider/useViewportListener.js +0 -39
  915. package/lib-module/index.js +0 -58
  916. package/lib-module/utils/BaseView/BaseView.js +0 -43
  917. package/lib-module/utils/BaseView/BaseView.native.js +0 -6
  918. package/lib-module/utils/BaseView/index.js +0 -2
  919. package/lib-module/utils/a11y/index.js +0 -2
  920. package/lib-module/utils/a11y/semantics.js +0 -157
  921. package/lib-module/utils/a11y/textSize.js +0 -36
  922. package/lib-module/utils/animation/index.js +0 -2
  923. package/lib-module/utils/animation/useVerticalExpandAnimation.js +0 -89
  924. package/lib-module/utils/children.js +0 -119
  925. package/lib-module/utils/containUniqueFields.js +0 -26
  926. package/lib-module/utils/floating-ui/index.js +0 -1
  927. package/lib-module/utils/floating-ui/index.native.js +0 -1
  928. package/lib-module/utils/hasOwnProperty.js +0 -11
  929. package/lib-module/utils/index.js +0 -19
  930. package/lib-module/utils/info/index.js +0 -7
  931. package/lib-module/utils/info/platform/index.js +0 -11
  932. package/lib-module/utils/info/platform/platform.android.js +0 -1
  933. package/lib-module/utils/info/platform/platform.ios.js +0 -1
  934. package/lib-module/utils/info/platform/platform.js +0 -1
  935. package/lib-module/utils/info/platform/platform.native.js +0 -4
  936. package/lib-module/utils/info/versions.js +0 -5
  937. package/lib-module/utils/input.js +0 -187
  938. package/lib-module/utils/pressability.js +0 -111
  939. package/lib-module/utils/props/a11yProps.js +0 -308
  940. package/lib-module/utils/props/clickProps.js +0 -26
  941. package/lib-module/utils/props/componentPropType.js +0 -63
  942. package/lib-module/utils/props/copyPropTypes.js +0 -2
  943. package/lib-module/utils/props/getPropSelector.js +0 -48
  944. package/lib-module/utils/props/handlerProps.js +0 -117
  945. package/lib-module/utils/props/hrefAttrsProp.js +0 -33
  946. package/lib-module/utils/props/index.js +0 -19
  947. package/lib-module/utils/props/inputSupportsProps.js +0 -62
  948. package/lib-module/utils/props/linkProps.js +0 -44
  949. package/lib-module/utils/props/paddingProp.js +0 -9
  950. package/lib-module/utils/props/pressProps.js +0 -42
  951. package/lib-module/utils/props/rectProp.js +0 -9
  952. package/lib-module/utils/props/responsiveProps.js +0 -30
  953. package/lib-module/utils/props/selectSystemProps.js +0 -24
  954. package/lib-module/utils/props/spacingProps.js +0 -56
  955. package/lib-module/utils/props/textInputProps.js +0 -201
  956. package/lib-module/utils/props/textProps.js +0 -59
  957. package/lib-module/utils/props/tokens.js +0 -133
  958. package/lib-module/utils/props/variantProp.js +0 -18
  959. package/lib-module/utils/props/viewProps.js +0 -22
  960. package/lib-module/utils/ssr.js +0 -144
  961. package/lib-module/utils/useCopy.js +0 -44
  962. package/lib-module/utils/useHash.js +0 -45
  963. package/lib-module/utils/useHash.native.js +0 -7
  964. package/lib-module/utils/useResponsiveProp.js +0 -46
  965. package/lib-module/utils/useSafeLayoutEffect.js +0 -30
  966. package/lib-module/utils/useScrollBlocking.js +0 -58
  967. package/lib-module/utils/useScrollBlocking.native.js +0 -2
  968. package/lib-module/utils/useSpacingScale.js +0 -125
  969. package/lib-module/utils/useUniqueId.js +0 -13
  970. package/lib-module/utils/withLinkRouter.js +0 -81
@@ -1,32 +1,62 @@
1
1
  import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
- import { viewports } from '@telus-uds/system-constants'
4
- import { useResponsiveProp } from '../utils'
3
+ import { useTheme } from '../ThemeProvider'
4
+ import ResponsiveProp from './ResponsiveProp'
5
+ import ResponsiveWithMediaQueryStyleSheet from './ResponsiveWithMediaQueryStyleSheet'
5
6
 
6
7
  /**
7
8
  * Responsive conditionally renders children based on whether the viewport matches the provided
8
9
  * min and max viewports.
9
10
  *
10
- * In SSR, like other viewport utilities, it treats the viewport as `xs` both in SSR itself and
11
+ * If enableMediaQueryStyleSheet themeOption is set to false in ThemeProvider, then in SSR,
12
+ * like other viewport utilities, it treats the viewport as `xs` both in SSR itself and
11
13
  * during first hydration on the client side; then if the viewport is not `xs`, it re-renders
12
14
  * after hydration. This may cause a layout shift on devices other than the narrowest.
15
+ *
16
+ * If enableMediaQueryStyleSheet themeOption is set to true in ThemeProvider, then media query stylesheet
17
+ * is used to hide and show children of `Responsive` within a View.
13
18
  */
14
19
 
15
- const Responsive = ({ min = 'xs', max, children }) => {
16
- // Start returning children at the 'min' viewport or greater
17
- const byViewports = { [min]: children }
18
- if (max && max !== 'xl') {
19
- // Stop returning children at the viewport one above 'max' or greater
20
- const maxIndex = viewports.keys.indexOf(max)
21
- const maxPlusOne = maxIndex >= 0 ? viewports.keys[maxIndex + 1] : null
22
- if (maxPlusOne) byViewports[maxPlusOne] = null
20
+ const Responsive = React.forwardRef(({ min = 'xs', max, inheritedStyles = [], children }, ref) => {
21
+ const {
22
+ themeOptions: { enableMediaQueryStyleSheet }
23
+ } = useTheme()
24
+ if (enableMediaQueryStyleSheet) {
25
+ return (
26
+ <ResponsiveWithMediaQueryStyleSheet
27
+ inheritedStyles={inheritedStyles}
28
+ min={min}
29
+ max={max}
30
+ ref={ref}
31
+ >
32
+ {children}
33
+ </ResponsiveWithMediaQueryStyleSheet>
34
+ )
23
35
  }
24
- return <>{useResponsiveProp(byViewports, null)}</>
25
- }
36
+ return (
37
+ <ResponsiveProp min={min} max={max}>
38
+ {children}
39
+ </ResponsiveProp>
40
+ )
41
+ })
42
+
43
+ Responsive.displayName = 'Responsive'
26
44
 
27
45
  Responsive.propTypes = {
46
+ /**
47
+ * To hide children of `Responsive` if the current viewport is smaller than `min`
48
+ */
28
49
  min: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),
50
+ /**
51
+ * To hide children of `Responsive` if the current viewport is larger than `max`
52
+ */
29
53
  max: PropTypes.oneOf(['sm', 'md', 'lg', 'xl']),
54
+ /**
55
+ * Styles to be inherited by `Responsive`.
56
+ * It should be an array of style property names.
57
+ * Note: This prop is only applicable when `enableMediaQueryStylesheet` is set to true in the `ThemeProvider`.
58
+ */
59
+ inheritedStyles: PropTypes.arrayOf(PropTypes.string),
30
60
  children: PropTypes.node.isRequired
31
61
  }
32
62
 
@@ -0,0 +1,33 @@
1
+ import React from 'react'
2
+ import PropTypes from 'prop-types'
3
+
4
+ import { viewports } from '@telus-uds/system-constants'
5
+ import { useResponsiveProp } from '../utils'
6
+
7
+ const ResponsiveProp = ({ min = 'xs', max, children }) => {
8
+ const byViewports = { [min]: children }
9
+ if (max && max !== 'xl') {
10
+ // Stop returning children at the viewport one above 'max' or greater
11
+ const maxIndex = viewports.keys.indexOf(max)
12
+ const maxPlusOne = maxIndex >= 0 ? viewports.keys[maxIndex + 1] : null
13
+ if (maxPlusOne) byViewports[maxPlusOne] = null
14
+ }
15
+ const responsiveProp = useResponsiveProp(byViewports, null)
16
+ return <>{responsiveProp}</>
17
+ }
18
+
19
+ ResponsiveProp.displayName = 'Responsive'
20
+
21
+ ResponsiveProp.propTypes = {
22
+ /**
23
+ * To hide children of `Responsive` if the current viewport is smaller than `min`
24
+ */
25
+ min: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),
26
+ /**
27
+ * To hide children of `Responsive` if the current viewport is larger than `max`
28
+ */
29
+ max: PropTypes.oneOf(['sm', 'md', 'lg', 'xl']),
30
+ children: PropTypes.node.isRequired
31
+ }
32
+
33
+ export default ResponsiveProp
@@ -0,0 +1,67 @@
1
+ import React from 'react'
2
+ import PropTypes from 'prop-types'
3
+ import { viewports } from '@telus-uds/system-constants'
4
+ import { BaseView, StyleSheet, createMediaQueryStyles } from '../utils'
5
+
6
+ function generateResponsiveStyles(min, max) {
7
+ const viewportsArray = viewports.keys
8
+ const minIndex = viewportsArray.indexOf(min)
9
+ const maxIndex = viewportsArray.indexOf(max)
10
+ let hiddenViewports = []
11
+
12
+ if (minIndex !== -1) {
13
+ hiddenViewports = viewportsArray.slice(0, minIndex)
14
+ }
15
+ if (maxIndex !== -1) {
16
+ hiddenViewports = hiddenViewports.concat(viewportsArray.slice(maxIndex + 1))
17
+ }
18
+
19
+ const styles = {}
20
+
21
+ viewportsArray.forEach((viewport) => {
22
+ if (hiddenViewports.includes(viewport)) {
23
+ styles[viewport] = { display: 'none' }
24
+ }
25
+ })
26
+ return createMediaQueryStyles(styles, false)
27
+ }
28
+
29
+ const ResponsiveWithMediaQueryStyleSheet = React.forwardRef(
30
+ ({ min, max, inheritedStyles = [], children }, ref) => {
31
+ const { ids, styles } = StyleSheet.create({
32
+ responsive: {
33
+ ...inheritedStyles.reduce((acc, prop) => {
34
+ acc[prop] = 'inherit'
35
+ return acc
36
+ }, {}),
37
+ ...generateResponsiveStyles(min, max)
38
+ }
39
+ })
40
+ return (
41
+ <BaseView
42
+ style={styles.responsive}
43
+ dataSet={ids.responsive && { media: ids.responsive }}
44
+ ref={ref}
45
+ >
46
+ {children}
47
+ </BaseView>
48
+ )
49
+ }
50
+ )
51
+
52
+ ResponsiveWithMediaQueryStyleSheet.displayName = 'Responsive'
53
+
54
+ ResponsiveWithMediaQueryStyleSheet.propTypes = {
55
+ /**
56
+ * To hide children of `Responsive` if the current viewport is smaller than `min`
57
+ */
58
+ min: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),
59
+ /**
60
+ * To hide children of `Responsive` if the current viewport is larger than `max`
61
+ */
62
+ max: PropTypes.oneOf(['sm', 'md', 'lg', 'xl']),
63
+ inheritedStyles: PropTypes.arrayOf(PropTypes.string),
64
+ children: PropTypes.node.isRequired
65
+ }
66
+
67
+ export default ResponsiveWithMediaQueryStyleSheet
@@ -1,4 +1,4 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
  import { View } from 'react-native'
3
3
 
4
4
  import PropTypes from 'prop-types'
@@ -56,7 +56,7 @@ const selectIconTokens = ({ iconSize, iconColor }) => ({ color: iconColor, size:
56
56
  * Use the following props to supply additional accessibility labels for the input - `accessibilityLabel`,
57
57
  * clear button - `clearButtonAccessibilityLabel`, and submit button - `submitButtonAccessibilityLabel`.
58
58
  */
59
- const Search = forwardRef(
59
+ const Search = React.forwardRef(
60
60
  (
61
61
  {
62
62
  initialValue,
@@ -71,6 +71,7 @@ const Search = forwardRef(
71
71
  copy = 'en',
72
72
  tokens,
73
73
  variant,
74
+ nativeSubmitBtnID,
74
75
  ...rest
75
76
  },
76
77
  ref
@@ -81,9 +82,8 @@ const Search = forwardRef(
81
82
  onChange
82
83
  })
83
84
 
84
- const themeTokens = useThemeTokens('Search', tokens, variant)
85
+ const themeTokens = useThemeTokens('Search', tokens, { inactive, ...variant })
85
86
  const buttonTokens = useThemeTokens('SearchButton', tokens, variant)
86
-
87
87
  const getThemeTokens = useThemeTokensCallback('Search', tokens, variant)
88
88
  const getButtonTokens = useThemeTokensCallback('SearchButton', tokens, variant)
89
89
 
@@ -174,6 +174,7 @@ const Search = forwardRef(
174
174
  tokens={(buttonState) =>
175
175
  selectButtonTokens(getButtonTokens({ ...buttonState, priority: 'high' }))
176
176
  }
177
+ nativeID={nativeSubmitBtnID}
177
178
  >
178
179
  {(buttonState) => (
179
180
  <SubmitButtonIcon
@@ -243,7 +244,11 @@ Search.propTypes = {
243
244
  })
244
245
  ]),
245
246
  tokens: getTokensPropType('Search'),
246
- variant: variantProp.propType
247
+ variant: variantProp.propType,
248
+ /**
249
+ * ID for Submit button element on web
250
+ */
251
+ nativeSubmitBtnID: PropTypes.string
247
252
  }
248
253
 
249
254
  export default Search
@@ -3,13 +3,22 @@ import PropTypes from 'prop-types'
3
3
 
4
4
  import { componentPropType } from '../utils'
5
5
 
6
- const Group = ({ children, label }) => {
7
- return <optgroup label={label}>{children}</optgroup>
8
- }
6
+ const Group = React.forwardRef(({ children, label }, ref) => {
7
+ return (
8
+ <optgroup label={label} ref={ref}>
9
+ {children}
10
+ </optgroup>
11
+ )
12
+ })
13
+
14
+ Group.displayName = 'Group'
9
15
 
10
16
  export default Group
11
17
 
12
18
  Group.propTypes = {
13
19
  children: componentPropType('Item'),
20
+ /**
21
+ * The label for the group.
22
+ */
14
23
  label: PropTypes.string.isRequired
15
24
  }
@@ -10,5 +10,8 @@ export default Group
10
10
 
11
11
  Group.propTypes = {
12
12
  children: componentPropType('Item'),
13
+ /**
14
+ * The label for the group.
15
+ */
13
16
  label: PropTypes.string.isRequired
14
17
  }
@@ -1,11 +1,20 @@
1
1
  import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
 
4
- const Item = ({ children, value }) => <option value={value}>{children}</option>
4
+ const Item = React.forwardRef(({ children, value }, ref) => (
5
+ <option value={value} ref={ref}>
6
+ {children}
7
+ </option>
8
+ ))
9
+
10
+ Item.displayName = 'Item'
5
11
 
6
12
  export default Item
7
13
 
8
14
  Item.propTypes = {
9
15
  children: PropTypes.string.isRequired,
16
+ /**
17
+ * The value of the option
18
+ */
10
19
  value: PropTypes.string.isRequired
11
20
  }
@@ -1,9 +1,11 @@
1
- import React, { forwardRef } from 'react'
1
+ import React from 'react'
2
2
 
3
3
  import PropTypes from 'prop-types'
4
- import { componentPropType } from '../utils'
4
+ import { componentPropType, selectSystemProps, htmlAttrs } from '../utils'
5
5
 
6
- const Picker = forwardRef(
6
+ const [selectProps, selectedSystemPropTypes] = selectSystemProps([htmlAttrs])
7
+
8
+ const Picker = React.forwardRef(
7
9
  (
8
10
  {
9
11
  value,
@@ -12,6 +14,8 @@ const Picker = forwardRef(
12
14
  onBlur,
13
15
  onMouseOver,
14
16
  onMouseOut,
17
+ onOpen = () => {},
18
+ onClose = () => {},
15
19
  style,
16
20
  inactive,
17
21
  children,
@@ -22,24 +26,38 @@ const Picker = forwardRef(
22
26
  },
23
27
  ref
24
28
  ) => {
29
+ const selectedProps = selectProps(rest)
25
30
  const { accessibilityLabel, accessibilityDescribedBy, accessibilityInvalid } = rest
26
31
 
27
32
  return (
33
+ /**
34
+ * The onOpen and onClose methods are to call the new active variant that changes the icon of the select,
35
+ * onOpen when the select is open and onClose when the select is closed, onOpen is in the event onMousedown
36
+ * when is selected and oClose is in onMouseOut and onChange when the select is closed.
37
+ */
28
38
  <select
29
39
  ref={ref}
30
40
  style={style}
31
41
  onMouseOver={onMouseOver}
32
- onMouseOut={onMouseOut}
42
+ onMouseOut={() => {
43
+ onMouseOut?.()
44
+ onClose?.()
45
+ }}
33
46
  onFocus={onFocus}
34
47
  onBlur={onBlur}
48
+ onMouseDown={onOpen}
35
49
  disabled={inactive}
36
50
  value={value || (placeholder !== undefined ? placeholder.value : undefined)}
37
- onChange={(event) => onChange(event.target.value, event)}
51
+ onChange={(event) => {
52
+ onClose()
53
+ onChange(event.target.value, event)
54
+ }}
38
55
  id={nativeID}
39
56
  aria-label={accessibilityLabel}
40
57
  aria-describedby={accessibilityDescribedBy}
41
58
  aria-invalid={accessibilityInvalid}
42
59
  data-testid={testID}
60
+ {...selectedProps}
43
61
  >
44
62
  {placeholder !== undefined && (
45
63
  <option value={placeholder.value} disabled hidden>
@@ -56,12 +74,21 @@ Picker.displayName = 'Picker'
56
74
  export default Picker
57
75
 
58
76
  Picker.propTypes = {
77
+ ...selectedSystemPropTypes,
59
78
  value: PropTypes.string,
60
79
  onChange: PropTypes.func,
61
80
  onFocus: PropTypes.func,
62
81
  onBlur: PropTypes.func,
63
82
  onMouseOver: PropTypes.func,
64
83
  onMouseOut: PropTypes.func,
84
+ /**
85
+ * It executes when the select choices are open
86
+ */
87
+ onOpen: PropTypes.func,
88
+ /**
89
+ * It executes when the select choices are closed
90
+ */
91
+ onClose: PropTypes.func,
65
92
  style: PropTypes.object,
66
93
  inactive: PropTypes.bool,
67
94
  children: componentPropType(['Item', 'Group']),
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, Children } from 'react'
1
+ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import { View, Platform } from 'react-native'
4
4
  import NativePicker from 'react-native-picker-select'
@@ -40,10 +40,10 @@ const selectAndroidContainerStyles = ({
40
40
  height: rest.height + ANDROID_HEIGHT_OFFSET
41
41
  })
42
42
 
43
- const Picker = forwardRef(
43
+ const Picker = React.forwardRef(
44
44
  ({ value, onChange, onFocus, onBlur, style, inactive, children, placeholder, ...rest }, ref) => {
45
45
  // Ungroup items, since there's no way to support groups on native
46
- const flatChildren = Children.toArray(children).flatMap((child) => {
46
+ const flatChildren = React.Children.toArray(children).flatMap((child) => {
47
47
  if (child.type === Group) {
48
48
  return child.props.children
49
49
  }
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, useState } from 'react'
1
+ import React from 'react'
2
2
 
3
3
  import { View, Platform, StyleSheet } from 'react-native'
4
4
  import PropTypes from 'prop-types'
@@ -11,7 +11,8 @@ import {
11
11
  selectSystemProps,
12
12
  useInputValue,
13
13
  variantProp,
14
- viewProps
14
+ viewProps,
15
+ htmlAttrs
15
16
  } from '../utils'
16
17
  import Picker from './Picker'
17
18
  import InputSupports from '../InputSupports'
@@ -21,7 +22,8 @@ import { ANDROID_VALIDATION_ICON_CONTAINER_OFFSET } from './constants'
21
22
  const [selectProps, selectedSystemPropTypes] = selectSystemProps([
22
23
  a11yProps,
23
24
  inputSupportsProps,
24
- viewProps
25
+ viewProps,
26
+ htmlAttrs
25
27
  ])
26
28
 
27
29
  const selectInputStyles = (
@@ -119,7 +121,8 @@ const selectIconTokens = ({ iconSize, iconColor }) => ({
119
121
  })
120
122
 
121
123
  const selectIconContainerStyles = ({ paddingRight, paddingBottom }) => ({
122
- paddingRight,
124
+ paddingRight: paddingRight + 4,
125
+ marginRight: -4,
123
126
  paddingBottom
124
127
  })
125
128
 
@@ -134,7 +137,7 @@ const selectValidationIconContainerStyles = ({
134
137
  paddingRight = 0,
135
138
  paddingBottom
136
139
  }) => ({
137
- paddingRight: icon ? paddingRight + iconSize : paddingRight,
140
+ paddingRight: icon ? paddingRight + iconSize + 4 : paddingRight,
138
141
  ...(Platform.OS === 'android'
139
142
  ? {
140
143
  paddingBottom: paddingBottom + ANDROID_VALIDATION_ICON_CONTAINER_OFFSET
@@ -142,6 +145,10 @@ const selectValidationIconContainerStyles = ({
142
145
  : { paddingBottom })
143
146
  })
144
147
 
148
+ const selectCustomFeedbackStyles = ({ feedbackBackgroundColor }) => ({
149
+ backgroundColor: feedbackBackgroundColor
150
+ })
151
+
145
152
  /**
146
153
  * A basic form single-choice select component. Use in forms or individually to receive user's input.
147
154
  *
@@ -174,7 +181,7 @@ const selectValidationIconContainerStyles = ({
174
181
  * NOTE: this does not work on native platforms - the grouped items will be shown at the same level as the non-grouped items.
175
182
  *
176
183
  */
177
- const Select = forwardRef(
184
+ const Select = React.forwardRef(
178
185
  (
179
186
  {
180
187
  value,
@@ -199,20 +206,23 @@ const Select = forwardRef(
199
206
  readOnly
200
207
  })
201
208
 
202
- const [isFocused, setIsFocused] = useState(false)
209
+ const [isFocused, setIsFocused] = React.useState(false)
203
210
  const handleFocus = () => setIsFocused(true)
204
211
  const handleBlur = () => setIsFocused(false)
205
212
 
206
- const [isHovered, setIsHovered] = useState(false)
213
+ const [isHovered, setIsHovered] = React.useState(false)
207
214
  const handleMouseOver = () => setIsHovered(true)
208
215
  const handleMouseOut = () => setIsHovered(false)
209
216
 
217
+ const [isOpen, setIsOpen] = React.useState(false)
218
+
210
219
  const { supportsProps, ...selectedProps } = selectProps(rest)
211
220
 
212
221
  const themeTokens = useThemeTokens('Select', tokens, variant, {
213
222
  focus: isFocused,
214
223
  hover: isHovered,
215
224
  inactive,
225
+ active: isOpen,
216
226
  validation
217
227
  })
218
228
 
@@ -221,7 +231,12 @@ const Select = forwardRef(
221
231
  const { themeOptions } = useTheme()
222
232
 
223
233
  return (
224
- <InputSupports {...supportsProps} {...selectedProps} validation={validation}>
234
+ <InputSupports
235
+ {...supportsProps}
236
+ {...selectedProps}
237
+ validation={validation}
238
+ feedbackTokens={selectCustomFeedbackStyles(themeTokens)}
239
+ >
225
240
  {({ inputId, ...props }) => (
226
241
  <View style={selectOuterBorderStyles(themeTokens)}>
227
242
  <Picker
@@ -231,7 +246,9 @@ const Select = forwardRef(
231
246
  onBlur={handleBlur}
232
247
  onMouseOver={handleMouseOver}
233
248
  onMouseOut={handleMouseOut}
234
- onChange={setValue}
249
+ onOpen={() => setIsOpen(true)}
250
+ onClose={() => setIsOpen(false)}
251
+ onChange={(e) => setValue(e, null)}
235
252
  value={currentValue}
236
253
  inactive={inactive}
237
254
  placeholder={
@@ -1,5 +1,5 @@
1
- import React, { forwardRef } from 'react'
2
- import { Pressable } from 'react-native'
1
+ import React from 'react'
2
+ import { Pressable, Platform } from 'react-native'
3
3
  import PropTypes from 'prop-types'
4
4
  import {
5
5
  a11yProps,
@@ -46,7 +46,7 @@ function selectItemStyles({
46
46
 
47
47
  This component can only be accessed as a name-spaced component: `SideNav.Item`.
48
48
  */
49
- const Item = forwardRef(
49
+ const Item = React.forwardRef(
50
50
  (
51
51
  {
52
52
  children,
@@ -76,13 +76,16 @@ const Item = forwardRef(
76
76
  })
77
77
 
78
78
  const getTokens = useThemeTokensCallback('SideNavItem', tokens, variant)
79
- const getAppearanceState = ({ hovered }) => ({
79
+ const getAppearanceState = ({ hovered, focused }) => ({
80
80
  hover: hovered,
81
81
  active: isActive,
82
- expanded: isExpanded
82
+ expanded: isExpanded,
83
+ focus: focused
84
+ })
85
+ const getPressableStyle = (pressableState) => ({
86
+ ...selectItemStyles(getTokens(getAppearanceState(pressableState))),
87
+ ...(Platform.OS === 'web' ? { outline: 'none' } : {})
83
88
  })
84
- const getPressableStyle = (pressableState) =>
85
- selectItemStyles(getTokens(getAppearanceState(pressableState)))
86
89
 
87
90
  return (
88
91
  <Pressable
@@ -134,6 +137,8 @@ Item.propTypes = {
134
137
  * Set internally in `SideNav.ItemsGroup` render function. Used to mark expanded `ItemsGroup` parent.
135
138
  */
136
139
  isExpanded: PropTypes.bool,
140
+ accessibilityRole: PropTypes.string,
141
+ testID: PropTypes.number,
137
142
  tokens: getTokensPropType('SideNavItem'),
138
143
  variant: variantProp.propType
139
144
  }
@@ -19,12 +19,20 @@ export function selectAccentStyles(tokens) {
19
19
  /**
20
20
  * Content inside an item or control in a SideNav, themed by the SideNavItem theme
21
21
  */
22
- const ItemContent = ({ children, tokens }) => (
23
- <>
24
- <Typography tokens={selectTokens('Typography', tokens)}>{children}</Typography>
25
- <View style={[staticStyles.absolute, selectAccentStyles(tokens)]} />
26
- </>
27
- )
22
+ const ItemContent = React.forwardRef(({ children, tokens }, ref) => {
23
+ const typographyTokens = selectTokens('Typography', tokens)
24
+
25
+ return (
26
+ <>
27
+ <Typography tokens={typographyTokens} ref={ref}>
28
+ {children}
29
+ </Typography>
30
+ <View style={[staticStyles.absolute, selectAccentStyles(tokens)]} />
31
+ </>
32
+ )
33
+ })
34
+
35
+ ItemContent.displayName = 'ItemContent'
28
36
 
29
37
  ItemContent.propTypes = {
30
38
  tokens: getTokensPropType('SideNavItem'),
@@ -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 ItemContent from './ItemContent'
@@ -16,7 +16,7 @@ import { useThemeTokensCallback } from '../ThemeProvider'
16
16
  ## Usage Criteria
17
17
  - Use `SideNav.ItemsGroup` with large pages that have multiple sections
18
18
  */
19
- const ItemsGroup = forwardRef(
19
+ const ItemsGroup = React.forwardRef(
20
20
  (
21
21
  {
22
22
  children,
@@ -37,8 +37,15 @@ const ItemsGroup = forwardRef(
37
37
  const getItemAppearance = (appearance) => ({ ...getAppearance(appearance), type: 'parent' })
38
38
 
39
39
  const getGroupTokens = useThemeTokensCallback('SideNavItemsGroup', tokens, variant)
40
- const getPanelTokens = (appearance) =>
41
- selectTokens('ExpandCollapsePanel', getGroupTokens(getAppearance(appearance)))
40
+ const getPanelTokens = (appearance) => {
41
+ const { panelBorderColor, ...itemsGroupTokens } = getGroupTokens(getAppearance(appearance))
42
+ const groupTokens = {
43
+ ...itemsGroupTokens,
44
+ borderWidth: 0,
45
+ marginBottom: 0
46
+ }
47
+ return selectTokens('ExpandCollapsePanel', groupTokens)
48
+ }
42
49
 
43
50
  const getItemTokens = useThemeTokensCallback('SideNavItem', itemTokens, variant)
44
51
  const getControlTokens = (appearance) =>
@@ -49,6 +56,7 @@ const ItemsGroup = forwardRef(
49
56
 
50
57
  const controlContent = (controlState) => {
51
58
  const currentItemTokens = getItemTokens(getItemAppearance(controlState))
59
+
52
60
  return <ItemContent tokens={currentItemTokens}>{label}</ItemContent>
53
61
  }
54
62
 
@@ -101,6 +109,9 @@ ItemsGroup.propTypes = {
101
109
  isActive: PropTypes.bool,
102
110
  variant: variantProp.propType,
103
111
  tokens: getTokensPropType('SideNavItemsGroup'),
112
+ /**
113
+ * Custom tokens for `SideNav.Item`
114
+ */
104
115
  itemTokens: getTokensPropType('SideNavItem')
105
116
  }
106
117
 
@@ -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
 
4
4
  import ExpandCollapse from '../ExpandCollapse'
@@ -29,10 +29,10 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, vie
29
29
  - Use in conjunction with a large amount of educational / informational content
30
30
  - Allow the user to navigate between options frequently and efficiently
31
31
  */
32
- const SideNav = forwardRef(
32
+ const SideNav = React.forwardRef(
33
33
  ({ children, variant = {}, tokens, accordion = true, itemTokens, groupTokens, ...rest }, ref) => {
34
34
  const themeTokens = useThemeTokens('SideNav', tokens, variant)
35
- const [active, setActive] = useState({ groupId: undefined, itemId: undefined })
35
+ const [active, setActive] = React.useState({ groupId: undefined, itemId: undefined })
36
36
 
37
37
  const onItemPress = (itemId, groupId) => {
38
38
  setActive({ itemId, groupId })
@@ -56,6 +56,7 @@ const SideNav = forwardRef(
56
56
  onItemPress(...args)
57
57
  if (onPress) onPress(...args)
58
58
  }
59
+
59
60
  return (
60
61
  <Item
61
62
  {...item.props}
@@ -78,6 +79,7 @@ const SideNav = forwardRef(
78
79
  const { groupId = `group-${index}` } = child.props
79
80
  const isGroupActive = active.itemId !== undefined && active.groupId === groupId
80
81
  const handleToggle = (event) => onToggle(groupId, event)
82
+
81
83
  return (
82
84
  <ItemsGroup
83
85
  {...child.props}
@@ -118,7 +120,13 @@ SideNav.propTypes = {
118
120
  accordion: PropTypes.bool,
119
121
  variant: variantProp.propType,
120
122
  tokens: getTokensPropType('SideNav'),
123
+ /**
124
+ * Custom tokens for `SideNav.Item`
125
+ */
121
126
  itemTokens: getTokensPropType('SideNavItem'),
127
+ /**
128
+ * Custom tokens for `SideNavItemsGroup`
129
+ */
122
130
  groupTokens: getTokensPropType('SideNavItemsGroup')
123
131
  }
124
132