@telus-uds/components-base 1.66.0 → 1.67.1

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 (486) hide show
  1. package/CHANGELOG.md +23 -3
  2. package/lib/A11yInfoProvider/index.js +5 -20
  3. package/lib/A11yText/index.js +3 -17
  4. package/lib/ActivityIndicator/Spinner.js +2 -9
  5. package/lib/ActivityIndicator/Spinner.native.js +4 -27
  6. package/lib/ActivityIndicator/index.js +1 -13
  7. package/lib/ActivityIndicator/shared.js +0 -3
  8. package/lib/Autocomplete/Autocomplete.js +34 -85
  9. package/lib/Autocomplete/Loading.js +0 -10
  10. package/lib/Autocomplete/Suggestions.js +0 -11
  11. package/lib/Autocomplete/index.js +0 -3
  12. package/lib/BaseProvider/HydrationContext.js +4 -18
  13. package/lib/BaseProvider/index.js +0 -12
  14. package/lib/Box/Box.js +10 -35
  15. package/lib/Box/index.js +0 -3
  16. package/lib/Button/Button.js +4 -13
  17. package/lib/Button/ButtonBase.js +23 -55
  18. package/lib/Button/ButtonDropdown.js +7 -32
  19. package/lib/Button/ButtonGroup.js +15 -48
  20. package/lib/Button/ButtonLink.js +3 -17
  21. package/lib/Button/index.js +0 -5
  22. package/lib/Button/propTypes.js +0 -15
  23. package/lib/Card/Card.js +3 -14
  24. package/lib/Card/CardBase.js +5 -16
  25. package/lib/Card/PressableCardBase.js +7 -30
  26. package/lib/Card/index.js +0 -7
  27. package/lib/Carousel/Carousel.js +22 -115
  28. package/lib/Carousel/CarouselContext.js +0 -14
  29. package/lib/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +6 -18
  30. package/lib/Carousel/CarouselItem/CarouselItem.js +5 -20
  31. package/lib/Carousel/CarouselItem/index.js +0 -3
  32. package/lib/Carousel/CarouselStepTracker/CarouselStepTracker.js +0 -9
  33. package/lib/Carousel/CarouselStepTracker/index.js +0 -3
  34. package/lib/Carousel/CarouselTabs/CarouselTabs.js +5 -15
  35. package/lib/Carousel/CarouselTabs/CarouselTabsPanel.js +7 -16
  36. package/lib/Carousel/CarouselTabs/CarouselTabsPanelItem.js +2 -22
  37. package/lib/Carousel/CarouselTabs/index.js +0 -3
  38. package/lib/Carousel/CarouselThumbnail.js +1 -16
  39. package/lib/Carousel/CarouselThumbnailNavigation.js +0 -15
  40. package/lib/Carousel/index.js +0 -5
  41. package/lib/Checkbox/Checkbox.js +5 -44
  42. package/lib/Checkbox/CheckboxButton.js +7 -33
  43. package/lib/Checkbox/CheckboxGroup.js +14 -45
  44. package/lib/Checkbox/CheckboxInput.js +1 -11
  45. package/lib/Checkbox/CheckboxInput.native.js +0 -2
  46. package/lib/Checkbox/index.js +0 -4
  47. package/lib/CheckboxCard/CheckboxCard.js +4 -37
  48. package/lib/CheckboxCard/index.js +0 -3
  49. package/lib/CheckboxCardGroup/CheckboxCardGroup.js +216 -0
  50. package/lib/CheckboxCardGroup/index.js +10 -0
  51. package/lib/Divider/Divider.js +13 -24
  52. package/lib/Divider/index.js +0 -3
  53. package/lib/ExpandCollapse/Accordion.js +1 -9
  54. package/lib/ExpandCollapse/Control.js +10 -32
  55. package/lib/ExpandCollapse/ExpandCollapse.js +3 -19
  56. package/lib/ExpandCollapse/Panel.js +13 -38
  57. package/lib/ExpandCollapse/index.js +0 -5
  58. package/lib/Feedback/Feedback.js +13 -30
  59. package/lib/Feedback/index.js +0 -3
  60. package/lib/Fieldset/Fieldset.js +6 -37
  61. package/lib/Fieldset/FieldsetContainer.js +1 -10
  62. package/lib/Fieldset/FieldsetContainer.native.js +0 -8
  63. package/lib/Fieldset/Legend.js +1 -10
  64. package/lib/Fieldset/Legend.native.js +1 -13
  65. package/lib/Fieldset/index.js +0 -3
  66. package/lib/FlexGrid/Col/Col.js +10 -53
  67. package/lib/FlexGrid/Col/index.js +0 -3
  68. package/lib/FlexGrid/FlexGrid.js +3 -34
  69. package/lib/FlexGrid/Row/Row.js +0 -38
  70. package/lib/FlexGrid/Row/index.js +0 -3
  71. package/lib/FlexGrid/helpers/index.js +0 -4
  72. package/lib/FlexGrid/index.js +0 -3
  73. package/lib/FlexGrid/providers/GutterContext.js +0 -4
  74. package/lib/HorizontalScroll/HorizontalScroll.js +17 -45
  75. package/lib/HorizontalScroll/HorizontalScrollButton.js +1 -17
  76. package/lib/HorizontalScroll/ScrollViewEnd.js +5 -13
  77. package/lib/HorizontalScroll/ScrollViewEnd.native.js +1 -10
  78. package/lib/HorizontalScroll/index.js +0 -7
  79. package/lib/HorizontalScroll/itemPositions.js +8 -19
  80. package/lib/Icon/Icon.js +4 -17
  81. package/lib/Icon/IconText.js +5 -25
  82. package/lib/Icon/index.js +0 -6
  83. package/lib/IconButton/IconButton.js +5 -37
  84. package/lib/IconButton/index.js +0 -3
  85. package/lib/InputLabel/InputLabel.js +4 -28
  86. package/lib/InputLabel/LabelContent.js +2 -8
  87. package/lib/InputLabel/LabelContent.native.js +0 -8
  88. package/lib/InputLabel/index.js +0 -3
  89. package/lib/InputSupports/InputSupports.js +0 -21
  90. package/lib/InputSupports/index.js +0 -3
  91. package/lib/InputSupports/useInputSupports.js +2 -6
  92. package/lib/Link/ChevronLink.js +7 -18
  93. package/lib/Link/InlinePressable.js +0 -10
  94. package/lib/Link/InlinePressable.native.js +5 -18
  95. package/lib/Link/Link.js +0 -8
  96. package/lib/Link/LinkBase.js +17 -47
  97. package/lib/Link/TextButton.js +3 -16
  98. package/lib/Link/index.js +0 -5
  99. package/lib/List/List.js +5 -21
  100. package/lib/List/ListItem.js +1 -11
  101. package/lib/List/ListItemBase.js +5 -34
  102. package/lib/List/ListItemContent.js +1 -14
  103. package/lib/List/ListItemMark.js +3 -23
  104. package/lib/List/PressableListItemBase.js +2 -28
  105. package/lib/List/index.js +0 -4
  106. package/lib/Listbox/GroupControl.js +0 -14
  107. package/lib/Listbox/Listbox.js +15 -40
  108. package/lib/Listbox/ListboxContext.js +0 -7
  109. package/lib/Listbox/ListboxGroup.js +7 -19
  110. package/lib/Listbox/ListboxItem.js +3 -17
  111. package/lib/Listbox/ListboxOverlay.js +4 -20
  112. package/lib/Listbox/PressableItem.js +3 -18
  113. package/lib/Listbox/index.js +0 -3
  114. package/lib/Modal/Modal.js +94 -45
  115. package/lib/Modal/ModalContent.js +184 -0
  116. package/lib/Modal/index.js +0 -3
  117. package/lib/MultiSelectFilter/ModalOverlay.js +1 -20
  118. package/lib/MultiSelectFilter/MultiSelectFilter.js +20 -69
  119. package/lib/MultiSelectFilter/index.js +0 -3
  120. package/lib/Notification/Notification.js +11 -38
  121. package/lib/Notification/index.js +0 -3
  122. package/lib/Pagination/PageButton.js +2 -22
  123. package/lib/Pagination/Pagination.js +21 -42
  124. package/lib/Pagination/SideButton.js +0 -24
  125. package/lib/Pagination/index.js +0 -3
  126. package/lib/Pagination/usePagination.js +4 -9
  127. package/lib/Progress/Progress.js +3 -17
  128. package/lib/Progress/ProgressBar.js +3 -25
  129. package/lib/Progress/ProgressBarBackground.js +0 -12
  130. package/lib/Progress/index.js +0 -4
  131. package/lib/QuickLinks/QuickLinks.js +1 -18
  132. package/lib/QuickLinks/QuickLinksCard.js +1 -11
  133. package/lib/QuickLinks/QuickLinksItem.js +3 -17
  134. package/lib/QuickLinks/index.js +0 -4
  135. package/lib/QuickLinksFeature/QuickLinksFeature.js +3 -20
  136. package/lib/QuickLinksFeature/QuickLinksFeatureItem.js +7 -30
  137. package/lib/QuickLinksFeature/index.js +0 -4
  138. package/lib/Radio/Radio.js +5 -39
  139. package/lib/Radio/RadioButton.js +7 -26
  140. package/lib/Radio/RadioGroup.js +6 -39
  141. package/lib/Radio/RadioInput.js +1 -11
  142. package/lib/Radio/RadioInput.native.js +0 -2
  143. package/lib/Radio/index.js +0 -4
  144. package/lib/RadioCard/RadioCard.js +5 -38
  145. package/lib/RadioCard/RadioCardGroup.js +25 -40
  146. package/lib/RadioCard/index.js +0 -4
  147. package/lib/Responsive/Responsive.js +1 -14
  148. package/lib/Responsive/index.js +0 -3
  149. package/lib/Search/Search.js +22 -45
  150. package/lib/Search/index.js +0 -3
  151. package/lib/Select/Group.js +0 -8
  152. package/lib/Select/Group.native.js +0 -6
  153. package/lib/Select/Item.js +0 -7
  154. package/lib/Select/Item.native.js +0 -2
  155. package/lib/Select/Picker.js +0 -8
  156. package/lib/Select/Picker.native.js +6 -22
  157. package/lib/Select/Select.js +9 -52
  158. package/lib/Select/index.js +0 -5
  159. package/lib/SideNav/Item.js +5 -29
  160. package/lib/SideNav/ItemContent.js +1 -14
  161. package/lib/SideNav/ItemsGroup.js +9 -31
  162. package/lib/SideNav/SideNav.js +9 -33
  163. package/lib/SideNav/index.js +0 -2
  164. package/lib/Skeleton/Skeleton.js +10 -42
  165. package/lib/Skeleton/index.js +0 -3
  166. package/lib/Skeleton/skeletonWebAnimation.js +0 -2
  167. package/lib/Skeleton/useSkeletonNativeAnimation.js +1 -9
  168. package/lib/SkipLink/SkipLink.js +7 -27
  169. package/lib/SkipLink/index.js +0 -3
  170. package/lib/Spacer/Spacer.js +4 -20
  171. package/lib/Spacer/index.js +0 -3
  172. package/lib/StackView/StackView.js +3 -21
  173. package/lib/StackView/StackWrap.js +11 -21
  174. package/lib/StackView/StackWrap.native.js +0 -3
  175. package/lib/StackView/StackWrapBox.js +5 -21
  176. package/lib/StackView/StackWrapGap.js +1 -14
  177. package/lib/StackView/common.js +0 -6
  178. package/lib/StackView/getStackedContent.js +10 -21
  179. package/lib/StackView/index.js +0 -5
  180. package/lib/StepTracker/Step.js +3 -27
  181. package/lib/StepTracker/StepTracker.js +5 -32
  182. package/lib/StepTracker/index.js +0 -3
  183. package/lib/Tabs/Tabs.js +7 -30
  184. package/lib/Tabs/TabsItem.js +13 -38
  185. package/lib/Tabs/index.js +0 -3
  186. package/lib/Tags/Tags.js +9 -42
  187. package/lib/Tags/index.js +0 -3
  188. package/lib/TextInput/TextArea.js +11 -20
  189. package/lib/TextInput/TextInput.js +7 -16
  190. package/lib/TextInput/TextInputBase.js +12 -58
  191. package/lib/TextInput/index.js +0 -3
  192. package/lib/TextInput/propTypes.js +0 -8
  193. package/lib/ThemeProvider/ThemeProvider.js +10 -18
  194. package/lib/ThemeProvider/index.js +0 -9
  195. package/lib/ThemeProvider/useSetTheme.js +6 -9
  196. package/lib/ThemeProvider/useTheme.js +2 -7
  197. package/lib/ThemeProvider/useThemeTokens.js +1 -9
  198. package/lib/ThemeProvider/utils/index.js +0 -4
  199. package/lib/ThemeProvider/utils/styles.js +14 -35
  200. package/lib/ThemeProvider/utils/theme-tokens.js +15 -43
  201. package/lib/Timeline/Timeline.js +11 -27
  202. package/lib/Timeline/index.js +0 -3
  203. package/lib/ToggleSwitch/ToggleSwitch.js +12 -43
  204. package/lib/ToggleSwitch/ToggleSwitchGroup.js +4 -38
  205. package/lib/ToggleSwitch/index.js +0 -3
  206. package/lib/Tooltip/Backdrop.js +4 -11
  207. package/lib/Tooltip/Backdrop.native.js +1 -14
  208. package/lib/Tooltip/Tooltip.js +9 -37
  209. package/lib/Tooltip/Tooltip.native.js +14 -45
  210. package/lib/Tooltip/getTooltipPosition.js +26 -31
  211. package/lib/Tooltip/index.js +0 -5
  212. package/lib/Tooltip/shared.js +0 -10
  213. package/lib/TooltipButton/TooltipButton.js +5 -20
  214. package/lib/TooltipButton/index.js +0 -3
  215. package/lib/Typography/Typography.js +15 -38
  216. package/lib/Typography/index.js +0 -3
  217. package/lib/Validator/Validator.js +10 -58
  218. package/lib/Validator/index.js +0 -3
  219. package/lib/ViewportProvider/ViewportProvider.js +1 -13
  220. package/lib/ViewportProvider/index.js +0 -5
  221. package/lib/ViewportProvider/useViewport.js +0 -4
  222. package/lib/ViewportProvider/useViewportListener.js +3 -12
  223. package/lib/index.js +8 -71
  224. package/lib/utils/BaseView/BaseView.js +3 -17
  225. package/lib/utils/BaseView/BaseView.native.js +0 -3
  226. package/lib/utils/BaseView/index.js +0 -3
  227. package/lib/utils/a11y/index.js +0 -4
  228. package/lib/utils/a11y/semantics.js +14 -32
  229. package/lib/utils/a11y/textSize.js +1 -8
  230. package/lib/utils/animation/index.js +0 -2
  231. package/lib/utils/animation/useVerticalExpandAnimation.js +5 -18
  232. package/lib/utils/children.js +16 -28
  233. package/lib/utils/containUniqueFields.js +2 -5
  234. package/lib/utils/floating-ui/index.js +0 -1
  235. package/lib/utils/floating-ui/index.native.js +0 -1
  236. package/lib/utils/hasOwnProperty.js +0 -1
  237. package/lib/utils/htmlAttrs.js +2 -4
  238. package/lib/utils/index.js +0 -31
  239. package/lib/utils/info/index.js +0 -4
  240. package/lib/utils/info/platform/index.js +0 -4
  241. package/lib/utils/info/versions.js +0 -3
  242. package/lib/utils/input.js +12 -24
  243. package/lib/utils/pressability.js +7 -21
  244. package/lib/utils/props/a11yProps.js +19 -25
  245. package/lib/utils/props/clickProps.js +0 -4
  246. package/lib/utils/props/componentPropType.js +0 -14
  247. package/lib/utils/props/copyPropTypes.js +0 -4
  248. package/lib/utils/props/getPropSelector.js +11 -12
  249. package/lib/utils/props/handlerProps.js +2 -23
  250. package/lib/utils/props/hrefAttrsProp.js +0 -4
  251. package/lib/utils/props/index.js +0 -22
  252. package/lib/utils/props/inputSupportsProps.js +0 -9
  253. package/lib/utils/props/linkProps.js +2 -12
  254. package/lib/utils/props/paddingProp.js +0 -3
  255. package/lib/utils/props/pressProps.js +2 -8
  256. package/lib/utils/props/rectProp.js +0 -3
  257. package/lib/utils/props/responsiveProps.js +1 -5
  258. package/lib/utils/props/selectSystemProps.js +4 -6
  259. package/lib/utils/props/spacingProps.js +3 -10
  260. package/lib/utils/props/textInputProps.js +10 -31
  261. package/lib/utils/props/textProps.js +6 -11
  262. package/lib/utils/props/tokens.js +7 -26
  263. package/lib/utils/props/variantProp.js +0 -3
  264. package/lib/utils/props/viewProps.js +0 -5
  265. package/lib/utils/ssr.js +13 -33
  266. package/lib/utils/useCopy.js +3 -6
  267. package/lib/utils/useHash.js +5 -10
  268. package/lib/utils/useHash.native.js +0 -2
  269. package/lib/utils/useOverlaidPosition.js +6 -29
  270. package/lib/utils/useResponsiveProp.js +6 -13
  271. package/lib/utils/useSafeLayoutEffect.js +5 -10
  272. package/lib/utils/useScrollBlocking.js +3 -11
  273. package/lib/utils/useScrollBlocking.native.js +0 -2
  274. package/lib/utils/useSpacingScale.js +5 -8
  275. package/lib/utils/useUniqueId.js +0 -4
  276. package/lib/utils/withLinkRouter.js +13 -18
  277. package/lib-module/A11yInfoProvider/index.js +5 -9
  278. package/lib-module/A11yText/index.js +3 -4
  279. package/lib-module/ActivityIndicator/Spinner.js +2 -2
  280. package/lib-module/ActivityIndicator/Spinner.native.js +4 -6
  281. package/lib-module/ActivityIndicator/index.js +1 -5
  282. package/lib-module/ActivityIndicator/shared.js +2 -1
  283. package/lib-module/Autocomplete/Autocomplete.js +34 -59
  284. package/lib-module/Autocomplete/Loading.js +0 -2
  285. package/lib-module/BaseProvider/HydrationContext.js +4 -7
  286. package/lib-module/BaseProvider/index.js +0 -3
  287. package/lib-module/Box/Box.js +10 -24
  288. package/lib-module/Button/Button.js +4 -2
  289. package/lib-module/Button/ButtonBase.js +23 -35
  290. package/lib-module/Button/ButtonDropdown.js +7 -16
  291. package/lib-module/Button/ButtonGroup.js +15 -32
  292. package/lib-module/Button/ButtonLink.js +3 -2
  293. package/lib-module/Button/propTypes.js +0 -7
  294. package/lib-module/Card/Card.js +3 -2
  295. package/lib-module/Card/CardBase.js +5 -4
  296. package/lib-module/Card/PressableCardBase.js +7 -11
  297. package/lib-module/Carousel/Carousel.js +22 -60
  298. package/lib-module/Carousel/CarouselContext.js +0 -5
  299. package/lib-module/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +7 -5
  300. package/lib-module/Carousel/CarouselItem/CarouselItem.js +5 -11
  301. package/lib-module/Carousel/CarouselStepTracker/CarouselStepTracker.js +0 -2
  302. package/lib-module/Carousel/CarouselTabs/CarouselTabs.js +3 -4
  303. package/lib-module/Carousel/CarouselTabs/CarouselTabsPanel.js +7 -6
  304. package/lib-module/Carousel/CarouselTabs/CarouselTabsPanelItem.js +2 -10
  305. package/lib-module/Carousel/CarouselThumbnail.js +1 -7
  306. package/lib-module/Carousel/CarouselThumbnailNavigation.js +0 -2
  307. package/lib-module/Checkbox/Checkbox.js +5 -23
  308. package/lib-module/Checkbox/CheckboxButton.js +7 -17
  309. package/lib-module/Checkbox/CheckboxGroup.js +14 -31
  310. package/lib-module/Checkbox/CheckboxInput.js +1 -3
  311. package/lib-module/Checkbox/CheckboxInput.native.js +0 -1
  312. package/lib-module/CheckboxCard/CheckboxCard.js +4 -21
  313. package/lib-module/CheckboxCardGroup/CheckboxCardGroup.js +206 -0
  314. package/lib-module/CheckboxCardGroup/index.js +2 -0
  315. package/lib-module/Divider/Divider.js +13 -11
  316. package/lib-module/ExpandCollapse/Accordion.js +1 -1
  317. package/lib-module/ExpandCollapse/Control.js +10 -17
  318. package/lib-module/ExpandCollapse/ExpandCollapse.js +3 -9
  319. package/lib-module/ExpandCollapse/Panel.js +13 -23
  320. package/lib-module/Feedback/Feedback.js +13 -16
  321. package/lib-module/Fieldset/Fieldset.js +6 -25
  322. package/lib-module/Fieldset/FieldsetContainer.js +1 -1
  323. package/lib-module/Fieldset/FieldsetContainer.native.js +0 -1
  324. package/lib-module/Fieldset/Legend.js +1 -1
  325. package/lib-module/Fieldset/Legend.native.js +1 -1
  326. package/lib-module/FlexGrid/Col/Col.js +10 -37
  327. package/lib-module/FlexGrid/FlexGrid.js +3 -17
  328. package/lib-module/FlexGrid/Row/Row.js +0 -25
  329. package/lib-module/FlexGrid/helpers/index.js +0 -3
  330. package/lib-module/HorizontalScroll/HorizontalScroll.js +17 -27
  331. package/lib-module/HorizontalScroll/HorizontalScrollButton.js +1 -3
  332. package/lib-module/HorizontalScroll/ScrollViewEnd.js +5 -4
  333. package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +0 -1
  334. package/lib-module/HorizontalScroll/itemPositions.js +11 -10
  335. package/lib-module/Icon/Icon.js +4 -8
  336. package/lib-module/Icon/IconText.js +6 -17
  337. package/lib-module/IconButton/IconButton.js +7 -20
  338. package/lib-module/InputLabel/InputLabel.js +4 -13
  339. package/lib-module/InputLabel/LabelContent.js +2 -1
  340. package/lib-module/InputLabel/LabelContent.native.js +0 -1
  341. package/lib-module/InputSupports/InputSupports.js +0 -9
  342. package/lib-module/InputSupports/useInputSupports.js +2 -4
  343. package/lib-module/Link/ChevronLink.js +7 -7
  344. package/lib-module/Link/InlinePressable.js +0 -2
  345. package/lib-module/Link/InlinePressable.native.js +4 -12
  346. package/lib-module/Link/LinkBase.js +17 -25
  347. package/lib-module/Link/TextButton.js +3 -5
  348. package/lib-module/List/List.js +5 -9
  349. package/lib-module/List/ListItem.js +1 -1
  350. package/lib-module/List/ListItemBase.js +5 -17
  351. package/lib-module/List/ListItemContent.js +1 -4
  352. package/lib-module/List/ListItemMark.js +3 -16
  353. package/lib-module/List/PressableListItemBase.js +2 -6
  354. package/lib-module/Listbox/GroupControl.js +0 -2
  355. package/lib-module/Listbox/Listbox.js +15 -23
  356. package/lib-module/Listbox/ListboxContext.js +0 -2
  357. package/lib-module/Listbox/ListboxGroup.js +6 -4
  358. package/lib-module/Listbox/ListboxItem.js +2 -1
  359. package/lib-module/Listbox/ListboxOverlay.js +3 -4
  360. package/lib-module/Listbox/PressableItem.js +2 -7
  361. package/lib-module/Modal/Modal.js +94 -25
  362. package/lib-module/Modal/ModalContent.js +175 -0
  363. package/lib-module/MultiSelectFilter/ModalOverlay.js +1 -4
  364. package/lib-module/MultiSelectFilter/MultiSelectFilter.js +20 -42
  365. package/lib-module/Notification/Notification.js +11 -22
  366. package/lib-module/Pagination/PageButton.js +2 -6
  367. package/lib-module/Pagination/Pagination.js +21 -21
  368. package/lib-module/Pagination/SideButton.js +3 -8
  369. package/lib-module/Pagination/usePagination.js +4 -8
  370. package/lib-module/Progress/Progress.js +3 -7
  371. package/lib-module/Progress/ProgressBar.js +3 -11
  372. package/lib-module/Progress/ProgressBarBackground.js +0 -2
  373. package/lib-module/QuickLinks/QuickLinks.js +1 -6
  374. package/lib-module/QuickLinks/QuickLinksCard.js +1 -3
  375. package/lib-module/QuickLinks/QuickLinksItem.js +3 -2
  376. package/lib-module/QuickLinksFeature/QuickLinksFeature.js +5 -9
  377. package/lib-module/QuickLinksFeature/QuickLinksFeatureItem.js +9 -13
  378. package/lib-module/Radio/Radio.js +5 -22
  379. package/lib-module/Radio/RadioButton.js +8 -10
  380. package/lib-module/Radio/RadioGroup.js +6 -25
  381. package/lib-module/Radio/RadioInput.js +1 -3
  382. package/lib-module/Radio/RadioInput.native.js +0 -1
  383. package/lib-module/RadioCard/RadioCard.js +5 -21
  384. package/lib-module/RadioCard/RadioCardGroup.js +25 -27
  385. package/lib-module/Responsive/Responsive.js +1 -6
  386. package/lib-module/Search/Search.js +22 -31
  387. package/lib-module/Select/Group.js +0 -3
  388. package/lib-module/Select/Group.native.js +0 -3
  389. package/lib-module/Select/Item.js +0 -3
  390. package/lib-module/Select/Item.native.js +0 -1
  391. package/lib-module/Select/Picker.native.js +8 -10
  392. package/lib-module/Select/Select.js +10 -35
  393. package/lib-module/SideNav/Item.js +5 -16
  394. package/lib-module/SideNav/ItemContent.js +1 -2
  395. package/lib-module/SideNav/ItemsGroup.js +9 -19
  396. package/lib-module/SideNav/SideNav.js +9 -22
  397. package/lib-module/Skeleton/Skeleton.js +10 -25
  398. package/lib-module/Skeleton/skeletonWebAnimation.js +0 -1
  399. package/lib-module/Skeleton/useSkeletonNativeAnimation.js +1 -3
  400. package/lib-module/SkipLink/SkipLink.js +7 -9
  401. package/lib-module/Spacer/Spacer.js +4 -7
  402. package/lib-module/StackView/StackView.js +3 -7
  403. package/lib-module/StackView/StackWrap.js +13 -13
  404. package/lib-module/StackView/StackWrap.native.js +2 -1
  405. package/lib-module/StackView/StackWrapBox.js +5 -8
  406. package/lib-module/StackView/StackWrapGap.js +1 -1
  407. package/lib-module/StackView/getStackedContent.js +10 -10
  408. package/lib-module/StepTracker/Step.js +3 -14
  409. package/lib-module/StepTracker/StepTracker.js +5 -13
  410. package/lib-module/Tabs/Tabs.js +7 -16
  411. package/lib-module/Tabs/TabsItem.js +13 -16
  412. package/lib-module/Tags/Tags.js +9 -26
  413. package/lib-module/TextInput/TextArea.js +11 -8
  414. package/lib-module/TextInput/TextInput.js +7 -5
  415. package/lib-module/TextInput/TextInputBase.js +13 -39
  416. package/lib-module/TextInput/propTypes.js +3 -7
  417. package/lib-module/ThemeProvider/ThemeProvider.js +10 -9
  418. package/lib-module/ThemeProvider/useSetTheme.js +6 -7
  419. package/lib-module/ThemeProvider/useTheme.js +2 -5
  420. package/lib-module/ThemeProvider/useThemeTokens.js +1 -2
  421. package/lib-module/ThemeProvider/utils/styles.js +15 -27
  422. package/lib-module/ThemeProvider/utils/theme-tokens.js +15 -20
  423. package/lib-module/Timeline/Timeline.js +11 -17
  424. package/lib-module/ToggleSwitch/ToggleSwitch.js +13 -26
  425. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +4 -23
  426. package/lib-module/Tooltip/Backdrop.js +4 -7
  427. package/lib-module/Tooltip/Backdrop.native.js +1 -4
  428. package/lib-module/Tooltip/Tooltip.js +9 -18
  429. package/lib-module/Tooltip/Tooltip.native.js +14 -23
  430. package/lib-module/Tooltip/getTooltipPosition.js +26 -30
  431. package/lib-module/Tooltip/shared.js +0 -6
  432. package/lib-module/TooltipButton/TooltipButton.js +5 -8
  433. package/lib-module/Typography/Typography.js +14 -22
  434. package/lib-module/Validator/Validator.js +10 -42
  435. package/lib-module/ViewportProvider/ViewportProvider.js +1 -3
  436. package/lib-module/ViewportProvider/useViewportListener.js +6 -8
  437. package/lib-module/index.js +1 -0
  438. package/lib-module/utils/BaseView/BaseView.js +3 -4
  439. package/lib-module/utils/BaseView/BaseView.native.js +0 -1
  440. package/lib-module/utils/a11y/semantics.js +14 -27
  441. package/lib-module/utils/a11y/textSize.js +1 -2
  442. package/lib-module/utils/animation/useVerticalExpandAnimation.js +8 -11
  443. package/lib-module/utils/children.js +17 -19
  444. package/lib-module/utils/containUniqueFields.js +2 -4
  445. package/lib-module/utils/htmlAttrs.js +2 -1
  446. package/lib-module/utils/info/index.js +2 -1
  447. package/lib-module/utils/info/platform/index.js +4 -1
  448. package/lib-module/utils/info/versions.js +2 -1
  449. package/lib-module/utils/input.js +11 -19
  450. package/lib-module/utils/pressability.js +8 -7
  451. package/lib-module/utils/props/a11yProps.js +22 -20
  452. package/lib-module/utils/props/clickProps.js +0 -1
  453. package/lib-module/utils/props/componentPropType.js +0 -13
  454. package/lib-module/utils/props/getPropSelector.js +12 -8
  455. package/lib-module/utils/props/handlerProps.js +2 -19
  456. package/lib-module/utils/props/hrefAttrsProp.js +2 -2
  457. package/lib-module/utils/props/inputSupportsProps.js +0 -6
  458. package/lib-module/utils/props/linkProps.js +2 -3
  459. package/lib-module/utils/props/pressProps.js +2 -2
  460. package/lib-module/utils/props/responsiveProps.js +1 -3
  461. package/lib-module/utils/props/selectSystemProps.js +4 -5
  462. package/lib-module/utils/props/spacingProps.js +4 -3
  463. package/lib-module/utils/props/textInputProps.js +13 -27
  464. package/lib-module/utils/props/textProps.js +9 -7
  465. package/lib-module/utils/props/tokens.js +10 -13
  466. package/lib-module/utils/props/variantProp.js +1 -1
  467. package/lib-module/utils/props/viewProps.js +0 -1
  468. package/lib-module/utils/ssr.js +14 -18
  469. package/lib-module/utils/useCopy.js +3 -5
  470. package/lib-module/utils/useHash.js +5 -9
  471. package/lib-module/utils/useHash.native.js +0 -1
  472. package/lib-module/utils/useOverlaidPosition.js +6 -25
  473. package/lib-module/utils/useResponsiveProp.js +6 -7
  474. package/lib-module/utils/useSafeLayoutEffect.js +5 -7
  475. package/lib-module/utils/useScrollBlocking.js +3 -10
  476. package/lib-module/utils/useSpacingScale.js +4 -4
  477. package/lib-module/utils/useUniqueId.js +0 -2
  478. package/lib-module/utils/withLinkRouter.js +13 -10
  479. package/package.json +2 -2
  480. package/src/Checkbox/CheckboxGroup.jsx +10 -8
  481. package/src/CheckboxCardGroup/CheckboxCardGroup.jsx +231 -0
  482. package/src/CheckboxCardGroup/index.js +3 -0
  483. package/src/Modal/Modal.jsx +98 -5
  484. package/src/Modal/ModalContent.jsx +171 -0
  485. package/src/RadioCard/RadioCardGroup.jsx +23 -2
  486. package/src/index.js +1 -0
@@ -7,6 +7,7 @@ import { useThemeTokens } from '../ThemeProvider';
7
7
  import textInputPropTypes from './propTypes';
8
8
  import { jsx as _jsx } from "react/jsx-runtime";
9
9
  const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, focusHandlerProps, inputSupportsProps, textInputHandlerProps, textInputProps, viewProps]);
10
+
10
11
  /**
11
12
  * Use to collect long-form information such as product feedback or support queries.
12
13
  * Due to React Native's implementation of `TextInput` it's not possible to access the current value by passing a ref.
@@ -31,7 +32,6 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, foc
31
32
  * or an indicator that the field is optional.
32
33
  * It is a more usable and accessible option than the HTML `placeholder` attribute.
33
34
  */
34
-
35
35
  const TextArea = /*#__PURE__*/forwardRef((_ref, ref) => {
36
36
  let {
37
37
  tokens,
@@ -39,8 +39,9 @@ const TextArea = /*#__PURE__*/forwardRef((_ref, ref) => {
39
39
  ...rest
40
40
  } = _ref;
41
41
  const themeTokens = useThemeTokens('TextArea', tokens, variant);
42
- const [inputHeight, setInputHeight] = useState(); // adjust the text area's height as new lines are added to the content
42
+ const [inputHeight, setInputHeight] = useState();
43
43
 
44
+ // adjust the text area's height as new lines are added to the content
44
45
  const onHeightChange = _ref2 => {
45
46
  let {
46
47
  nativeEvent: {
@@ -49,19 +50,19 @@ const TextArea = /*#__PURE__*/forwardRef((_ref, ref) => {
49
50
  }
50
51
  }
51
52
  } = _ref2;
52
-
53
53
  // on native this is happens out of the box
54
54
  if (Platform.OS === 'web') {
55
55
  setInputHeight(height);
56
56
  }
57
57
  };
58
-
59
58
  const {
60
59
  supportsProps,
61
60
  ...selectedProps
62
61
  } = selectProps(rest);
63
- const inputProps = { ...selectedProps,
64
- variant: { ...variant,
62
+ const inputProps = {
63
+ ...selectedProps,
64
+ variant: {
65
+ ...variant,
65
66
  validation: supportsProps.validation
66
67
  },
67
68
  multiline: true,
@@ -69,7 +70,8 @@ const TextArea = /*#__PURE__*/forwardRef((_ref, ref) => {
69
70
  height: inputHeight,
70
71
  tokens: themeTokens
71
72
  };
72
- return /*#__PURE__*/_jsx(InputSupports, { ...supportsProps,
73
+ return /*#__PURE__*/_jsx(InputSupports, {
74
+ ...supportsProps,
73
75
  children: _ref3 => {
74
76
  let {
75
77
  inputId,
@@ -85,7 +87,8 @@ const TextArea = /*#__PURE__*/forwardRef((_ref, ref) => {
85
87
  });
86
88
  });
87
89
  TextArea.displayName = 'TextArea';
88
- TextArea.propTypes = { ...selectedSystemPropTypes,
90
+ TextArea.propTypes = {
91
+ ...selectedSystemPropTypes,
89
92
  ...textInputPropTypes,
90
93
  tokens: getTokensPropType('TextArea', 'TextInput'),
91
94
  // TODO: support both TextArea and TextInput tokens
@@ -8,6 +8,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
8
8
  import { Fragment as _Fragment } from "react/jsx-runtime";
9
9
  import { jsxs as _jsxs } from "react/jsx-runtime";
10
10
  const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, focusHandlerProps, inputSupportsProps, textInputHandlerProps, textInputProps, viewProps]);
11
+
11
12
  /**
12
13
  * A basic text input component. Use in forms or individually to receive user's input.
13
14
  * Due to React Native's implementation of `TextInput` it's not possible to access the current value by passing a ref.
@@ -26,7 +27,6 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, foc
26
27
  * supported props and <a href="https://reactnative.dev/docs/textinput" target="_blank">React Native Web documentation</a> for
27
28
  * their implementation on the web.
28
29
  */
29
-
30
30
  const TextInput = /*#__PURE__*/forwardRef((_ref, ref) => {
31
31
  let {
32
32
  tokens,
@@ -38,9 +38,11 @@ const TextInput = /*#__PURE__*/forwardRef((_ref, ref) => {
38
38
  supportsProps,
39
39
  ...selectedProps
40
40
  } = selectProps(rest);
41
- const inputProps = { ...selectedProps,
41
+ const inputProps = {
42
+ ...selectedProps,
42
43
  tokens,
43
- variant: { ...variant,
44
+ variant: {
45
+ ...variant,
44
46
  validation: supportsProps.validation
45
47
  }
46
48
  };
@@ -64,9 +66,9 @@ const TextInput = /*#__PURE__*/forwardRef((_ref, ref) => {
64
66
  });
65
67
  });
66
68
  TextInput.displayName = 'TextInput';
67
- TextInput.propTypes = { ...selectedSystemPropTypes,
69
+ TextInput.propTypes = {
70
+ ...selectedSystemPropTypes,
68
71
  ...textInputPropTypes,
69
-
70
72
  /**
71
73
  * A callback which if provided will get a clear button rendered and will be called whenever that button gets pressed.
72
74
  */
@@ -13,7 +13,6 @@ import dictionary from './dictionary';
13
13
  import { jsx as _jsx } from "react/jsx-runtime";
14
14
  import { jsxs as _jsxs } from "react/jsx-runtime";
15
15
  const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, textInputHandlerProps, textInputProps, viewProps]);
16
-
17
16
  const selectInputStyles = (_ref, themeOptions, inactive, type) => {
18
17
  let {
19
18
  backgroundColor,
@@ -36,11 +35,9 @@ const selectInputStyles = (_ref, themeOptions, inactive, type) => {
36
35
  width,
37
36
  height
38
37
  } = _ref;
39
-
40
38
  // Subtract border width from padding so overall input width/height doesn't
41
39
  // jump around if the border width changes (avoiding NaN and negative padding)
42
40
  const offsetBorder = value => typeof value === 'number' ? Math.max(0, value - borderWidth) : value;
43
-
44
41
  const textStyles = applyTextStyles({
45
42
  fontName,
46
43
  fontSize,
@@ -48,14 +45,12 @@ const selectInputStyles = (_ref, themeOptions, inactive, type) => {
48
45
  fontWeight,
49
46
  themeOptions
50
47
  });
51
-
52
48
  function linesToHeight(lines) {
53
49
  const {
54
50
  lineHeight: absoluteLineHeight
55
51
  } = textStyles;
56
52
  return lines !== undefined ? lines * absoluteLineHeight + paddingTop + paddingBottom : undefined;
57
53
  }
58
-
59
54
  const minHeight = linesToHeight(minLines);
60
55
  const maxHeight = linesToHeight(maxLines);
61
56
  const webStyles = Platform.select({
@@ -63,9 +58,9 @@ const selectInputStyles = (_ref, themeOptions, inactive, type) => {
63
58
  outline: 'none',
64
59
  cursor: inactive ? 'not-allowed' : undefined,
65
60
  resize: minHeight !== maxHeight ? 'vertical' : 'none' // does nothing for an input, only needed for textarea
66
-
67
61
  }
68
62
  });
63
+
69
64
  const paddingWithIcon = iconSize + paddingRight;
70
65
  return {
71
66
  backgroundColor,
@@ -85,7 +80,6 @@ const selectInputStyles = (_ref, themeOptions, inactive, type) => {
85
80
  ...webStyles
86
81
  };
87
82
  };
88
-
89
83
  const selectOuterBorderStyles = _ref2 => {
90
84
  let {
91
85
  outerBackgroundColor,
@@ -102,7 +96,6 @@ const selectOuterBorderStyles = _ref2 => {
102
96
  })
103
97
  };
104
98
  };
105
-
106
99
  const selectIconTokens = _ref3 => {
107
100
  let {
108
101
  iconSize,
@@ -113,7 +106,6 @@ const selectIconTokens = _ref3 => {
113
106
  color: iconColor
114
107
  };
115
108
  };
116
-
117
109
  const selectIconContainerStyles = (_ref4, buttonCount) => {
118
110
  let {
119
111
  buttonSize,
@@ -126,7 +118,6 @@ const selectIconContainerStyles = (_ref4, buttonCount) => {
126
118
  paddingBottom
127
119
  };
128
120
  };
129
-
130
121
  const selectLeftIconContainerStyles = _ref5 => {
131
122
  let {
132
123
  leftIconPaddingBottom
@@ -137,7 +128,6 @@ const selectLeftIconContainerStyles = _ref5 => {
137
128
  paddingBottom: leftIconPaddingBottom
138
129
  };
139
130
  };
140
-
141
131
  const selectButtonsContainerStyle = _ref6 => {
142
132
  let {
143
133
  buttonsPaddingRight
@@ -146,7 +136,6 @@ const selectButtonsContainerStyle = _ref6 => {
146
136
  paddingRight: buttonsPaddingRight
147
137
  };
148
138
  };
149
-
150
139
  const getIcon = function () {
151
140
  let cardNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
152
141
  let {
@@ -183,7 +172,6 @@ const getIcon = function () {
183
172
  testID: selectedIcon.testID
184
173
  });
185
174
  };
186
-
187
175
  const TextInputBase = /*#__PURE__*/forwardRef((_ref7, ref) => {
188
176
  let {
189
177
  buttons = [],
@@ -208,29 +196,23 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref7, ref) => {
208
196
  } = _ref7;
209
197
  const [isFocused, setIsFocused] = useState(false);
210
198
  const [showPassword, setShowPassword] = useState(false);
211
-
212
199
  const handleFocus = event => {
213
200
  setIsFocused(true);
214
201
  if (typeof onFocus === 'function') onFocus(event);
215
202
  };
216
-
217
203
  const handleBlur = event => {
218
204
  setIsFocused(false);
219
205
  if (typeof onBlur === 'function') onBlur(event);
220
206
  };
221
-
222
207
  const [isHovered, setIsHovered] = useState(false);
223
-
224
208
  const handleMouseOver = event => {
225
209
  setIsHovered(true);
226
210
  if (typeof onMouseOver === 'function') onMouseOver(event);
227
211
  };
228
-
229
212
  const handleMouseOut = event => {
230
213
  setIsHovered(false);
231
214
  if (typeof onMouseOut === 'function') onMouseOut(event);
232
215
  };
233
-
234
216
  const defaultRef = useRef();
235
217
  const inputRef = ref ?? defaultRef;
236
218
  const {
@@ -260,43 +242,34 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref7, ref) => {
260
242
  element.pattern = pattern;
261
243
  }
262
244
  }, [element, pattern]);
263
-
264
245
  const handleChangeText = event => {
265
246
  var _event$nativeEvent, _event$target;
266
-
267
247
  const text = ((_event$nativeEvent = event.nativeEvent) === null || _event$nativeEvent === void 0 ? void 0 : _event$nativeEvent.text) || ((_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.value);
268
248
  let filteredText = isNumeric ? text === null || text === void 0 ? void 0 : text.replace(/[^\d]/g, '') : text;
269
-
270
249
  if (type === 'card' && filteredText) {
271
250
  const formattedValue = filteredText.replace(/[^a-zA-Z0-9]/g, '');
272
- const regex = new RegExp(`([a-zA-Z0-9]{4})(?=[a-zA-Z0-9])`, 'g'); // Add a space every 4 digits starting from the 5th position
273
-
251
+ const regex = new RegExp(`([a-zA-Z0-9]{4})(?=[a-zA-Z0-9])`, 'g');
252
+ // Add a space every 4 digits starting from the 5th position
274
253
  filteredText = formattedValue.replace(regex, '$1 ').trim();
275
254
  }
276
-
277
255
  setValue(filteredText, event);
278
256
  if (typeof onChangeText === 'function') onChangeText(filteredText, event);
279
257
  };
280
-
281
258
  const states = {
282
259
  focus: isFocused,
283
260
  hover: isHovered,
284
261
  inactive
285
262
  };
286
263
  const themeTokens = useThemeTokens('TextInput', tokens, variant, states);
287
-
288
264
  const handleClear = event => {
289
265
  var _inputRef$current;
290
-
291
266
  onClear === null || onClear === void 0 ? void 0 : onClear(event);
292
267
  resetValue(event);
293
268
  inputRef === null || inputRef === void 0 ? void 0 : (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
294
269
  };
295
-
296
270
  const handleShowOrHide = () => {
297
271
  if (!variant.inactive) setShowPassword(!showPassword);
298
272
  };
299
-
300
273
  const {
301
274
  buttonsGap,
302
275
  clearButtonIcon: ClearButtonIcon,
@@ -314,7 +287,6 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref7, ref) => {
314
287
  copy
315
288
  });
316
289
  const textInputButtons = buttons;
317
-
318
290
  if (onClear && isDirty) {
319
291
  textInputButtons === null || textInputButtons === void 0 ? void 0 : textInputButtons.unshift( /*#__PURE__*/_jsx(IconButton, {
320
292
  accessibilityLabel: getCopy('clearButtonAccessibilityLabel'),
@@ -325,7 +297,6 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref7, ref) => {
325
297
  }
326
298
  }, "clear"));
327
299
  }
328
-
329
300
  if (isPassword) {
330
301
  textInputButtons === null || textInputButtons === void 0 ? void 0 : textInputButtons.unshift( /*#__PURE__*/_jsx(IconButton, {
331
302
  accessibilityLabel: !showPassword ? getCopy('hidePasswordAccessibilityLabel') : getCopy('showPasswordAccessibilityLabel'),
@@ -343,8 +314,8 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref7, ref) => {
343
314
  }
344
315
  }, !showPassword ? 'hide' : 'show'));
345
316
  }
346
-
347
- const inputProps = { ...selectProps(rest),
317
+ const inputProps = {
318
+ ...selectProps(rest),
348
319
  editable: !inactive,
349
320
  onFocus: handleFocus,
350
321
  onBlur: handleBlur,
@@ -358,7 +329,8 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref7, ref) => {
358
329
  const {
359
330
  themeOptions
360
331
  } = useTheme();
361
- const nativeInputStyle = selectInputStyles({ ...themeTokens,
332
+ const nativeInputStyle = selectInputStyles({
333
+ ...themeTokens,
362
334
  height
363
335
  }, themeOptions, inactive, type);
364
336
  return /*#__PURE__*/_jsxs(View, {
@@ -382,10 +354,12 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref7, ref) => {
382
354
  }), IconComponent && /*#__PURE__*/_jsx(View, {
383
355
  pointerEvents: "none" // avoid hijacking input press events
384
356
  ,
385
- style: [staticStyles.rightIconContainer, selectIconContainerStyles({ ...themeTokens,
357
+ style: [staticStyles.rightIconContainer, selectIconContainerStyles({
358
+ ...themeTokens,
386
359
  buttonsGapSize
387
360
  }, buttons === null || buttons === void 0 ? void 0 : buttons.length)],
388
- children: /*#__PURE__*/_jsx(IconComponent, { ...selectIconTokens(themeTokens)
361
+ children: /*#__PURE__*/_jsx(IconComponent, {
362
+ ...selectIconTokens(themeTokens)
389
363
  })
390
364
  }), (buttons === null || buttons === void 0 ? void 0 : buttons.length) > 0 && /*#__PURE__*/_jsx(View, {
391
365
  style: [staticStyles.buttonsContainer, selectButtonsContainerStyle(themeTokens)],
@@ -398,9 +372,9 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref7, ref) => {
398
372
  });
399
373
  });
400
374
  TextInputBase.displayName = 'TextInputBase';
401
- TextInputBase.propTypes = { ...selectedSystemPropTypes,
375
+ TextInputBase.propTypes = {
376
+ ...selectedSystemPropTypes,
402
377
  buttons: PropTypes.arrayOf(PropTypes.node),
403
-
404
378
  /**
405
379
  * Select English or French copy for the accessible labels.
406
380
  * You may also pass in a custom dictionary object.
@@ -1,34 +1,30 @@
1
- import PropTypes from 'prop-types'; // These are prop types specific to UDS TextInput; see also ../utils/props/textInputProps
2
- // for generic React Native props and HTML input attrs that are passed through.
1
+ import PropTypes from 'prop-types';
3
2
 
3
+ // These are prop types specific to UDS TextInput; see also ../utils/props/textInputProps
4
+ // for generic React Native props and HTML input attrs that are passed through.
4
5
  const textInputPropTypes = {
5
6
  /**
6
7
  * If the input's state is to be controlled by a parent component, use this prop
7
8
  * together with the `onChange` to pass down and update the lifted state.
8
9
  */
9
10
  value: PropTypes.string,
10
-
11
11
  /**
12
12
  * Use this to set the type of the input. Defaults to `text`.
13
13
  */
14
14
  type: PropTypes.string,
15
-
16
15
  /**
17
16
  * Use this to set the initial value of an uncontrolled input.
18
17
  * Updating `initialValue` will **not** update the actual value.
19
18
  */
20
19
  initialValue: PropTypes.string,
21
-
22
20
  /**
23
21
  * Disables all user interactions with the input.
24
22
  */
25
23
  inactive: PropTypes.bool,
26
-
27
24
  /**
28
25
  * Makes it impossible to change the input's value.
29
26
  */
30
27
  readOnly: PropTypes.bool,
31
-
32
28
  /**
33
29
  * Use to react upon input's value changes. Required when the `value` prop is set.
34
30
  * Will receive the input's value as an argument.
@@ -5,9 +5,10 @@ import responsiveProps from '../utils/props/responsiveProps';
5
5
  import { jsx as _jsx } from "react/jsx-runtime";
6
6
  export const uninitialisedError = new Error('Theme context used outside of ThemeProvider');
7
7
  export const ThemeContext = /*#__PURE__*/createContext(uninitialisedError);
8
- export const ThemeSetterContext = /*#__PURE__*/createContext(uninitialisedError); // These options default to `true` in v1.x to match legacy defaults and avoid breaking changes.
9
- // This should change in future major releases to become "opt-in" legacy support.
8
+ export const ThemeSetterContext = /*#__PURE__*/createContext(uninitialisedError);
10
9
 
10
+ // These options default to `true` in v1.x to match legacy defaults and avoid breaking changes.
11
+ // This should change in future major releases to become "opt-in" legacy support.
11
12
  const defaultThemeOptions = {
12
13
  // TODO: switch `forceAbsoluteFontSizing` to be false by default in the next major version
13
14
  forceAbsoluteFontSizing: true,
@@ -16,7 +17,6 @@ const defaultThemeOptions = {
16
17
  // TODO: switch `enableHelmetSSR` to be false by default in the next major version
17
18
  enableHelmetSSR: true
18
19
  };
19
-
20
20
  const ThemeProvider = _ref => {
21
21
  let {
22
22
  children,
@@ -29,24 +29,26 @@ const ThemeProvider = _ref => {
29
29
  setTheme(defaultTheme);
30
30
  }
31
31
  }, [theme.metadata.name, defaultTheme]);
32
- const appliedThemeOptions = { ...defaultThemeOptions,
32
+ const appliedThemeOptions = {
33
+ ...defaultThemeOptions,
33
34
  ...themeOptions
34
- }; // Validate the theme tokens version on every render.
35
+ };
36
+
37
+ // Validate the theme tokens version on every render.
35
38
  // This will intentionally break the application when attempting to use an invalid theme.
36
39
  // This will surface an incompatibility quickly rather than allowing the potential for strange bugs due to missing or incompatible tokens.
37
-
38
40
  validateThemeTokensVersion(theme);
39
41
  return /*#__PURE__*/_jsx(ThemeSetterContext.Provider, {
40
42
  value: setTheme,
41
43
  children: /*#__PURE__*/_jsx(ThemeContext.Provider, {
42
- value: { ...theme,
44
+ value: {
45
+ ...theme,
43
46
  themeOptions: appliedThemeOptions
44
47
  },
45
48
  children: children
46
49
  })
47
50
  });
48
51
  };
49
-
50
52
  ThemeProvider.propTypes = {
51
53
  children: PropTypes.node.isRequired,
52
54
  defaultTheme: PropTypes.shape({
@@ -55,7 +57,6 @@ ThemeProvider.propTypes = {
55
57
  name: PropTypes.string.isRequired
56
58
  }).isRequired
57
59
  }).isRequired,
58
-
59
60
  /**
60
61
  * An object containing options allowing to customize the theming experience:
61
62
  *
@@ -1,18 +1,18 @@
1
1
  import { useCallback, useContext } from 'react';
2
2
  import { ThemeSetterContext } from './ThemeProvider';
3
-
4
3
  const useSetTheme = () => {
5
4
  // Replace current theme with provided object
6
- const setTheme = useContext(ThemeSetterContext); // Fail fast if dev uses useSetTheme outside of ThemeProvider
7
-
5
+ const setTheme = useContext(ThemeSetterContext);
6
+ // Fail fast if dev uses useSetTheme outside of ThemeProvider
8
7
  if (setTheme instanceof Error) {
9
8
  throw setTheme;
10
- } // Merge provided object into current theme
11
-
9
+ }
12
10
 
11
+ // Merge provided object into current theme
13
12
  const editTheme = useCallback(newTheme => setTheme(function () {
14
13
  let oldTheme = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
15
- return { ...oldTheme,
14
+ return {
15
+ ...oldTheme,
16
16
  ...newTheme
17
17
  };
18
18
  }), [setTheme]);
@@ -21,5 +21,4 @@ const useSetTheme = () => {
21
21
  editTheme
22
22
  };
23
23
  };
24
-
25
24
  export default useSetTheme;
@@ -1,14 +1,11 @@
1
1
  import { useContext } from 'react';
2
2
  import { ThemeContext } from './ThemeProvider';
3
-
4
3
  const useTheme = () => {
5
- const theme = useContext(ThemeContext); // Fail fast if dev uses useTheme outside of ThemeProvider
6
-
4
+ const theme = useContext(ThemeContext);
5
+ // Fail fast if dev uses useTheme outside of ThemeProvider
7
6
  if (theme instanceof Error) {
8
7
  throw theme;
9
8
  }
10
-
11
9
  return theme;
12
10
  };
13
-
14
11
  export default useTheme;
@@ -33,7 +33,6 @@ import { getComponentTheme, getThemeTokens, resolveThemeTokens, mergeAppearances
33
33
  * @param {AppearanceSet} [states] - optional object containing current theme appearances dictated by user action or context
34
34
  * @returns {TokensSet} - the currently-applicable resolved set of theme tokens to apply
35
35
  */
36
-
37
36
  export const useThemeTokens = function (componentName) {
38
37
  let tokens = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
39
38
  let variants = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
@@ -43,6 +42,7 @@ export const useThemeTokens = function (componentName) {
43
42
  const themeTokens = getThemeTokens(componentTheme, tokens, variants, states);
44
43
  return themeTokens;
45
44
  };
45
+
46
46
  /**
47
47
  * Returns a memoised tokens getter function that gets tokens similar to calling useThemeTokens.
48
48
  * Scenarios where `useThemeTokensCallback` should be used instead of `useThemeTokens` include:
@@ -95,7 +95,6 @@ export const useThemeTokens = function (componentName) {
95
95
  * tokenOverrides in rare cases where tokens overrides are also generated outside hook scope,
96
96
  * e.g. if one theme tokens callback needs to pass certain token overrides to another.
97
97
  */
98
-
99
98
  export const useThemeTokensCallback = function (componentName) {
100
99
  let tokens = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
101
100
  let variants = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
@@ -3,8 +3,9 @@
3
3
  * don't map directly to cross-platform design token values.
4
4
  */
5
5
  import Platform from "react-native-web/dist/exports/Platform";
6
- import { fontBasePixels } from '@telus-uds/system-constants'; // Make design tokens fit React Native's text styles' specific requirements and quirks
6
+ import { fontBasePixels } from '@telus-uds/system-constants';
7
7
 
8
+ // Make design tokens fit React Native's text styles' specific requirements and quirks
8
9
  export function applyTextStyles(_ref) {
9
10
  let {
10
11
  fontColor,
@@ -21,27 +22,24 @@ export function applyTextStyles(_ref) {
21
22
  },
22
23
  ...rest
23
24
  } = _ref;
24
- const styles = { ...rest
25
+ const styles = {
26
+ ...rest
25
27
  };
26
28
  const {
27
29
  forceAbsoluteFontSizing
28
30
  } = themeOptions;
29
-
30
31
  if (fontSize) {
31
32
  // If relative font sizes are needed, catch and calculate them here
32
33
  styles.fontSize = Platform.OS === 'web' && !forceAbsoluteFontSizing ? `${fontSize / fontBasePixels}rem` : fontSize;
33
34
  }
34
-
35
35
  if (typeof lineHeight === 'number') {
36
36
  // React Native expects absolute line heights but multipliers are better as design tokens
37
37
  styles.lineHeight = lineHeight * (fontSize || fontBasePixels);
38
38
  }
39
-
40
39
  if (typeof letterSpacing === 'number' && letterSpacing) {
41
40
  // Same as for line heights - React Native expects absolute letter spacing value
42
41
  styles.letterSpacing = letterSpacing * (fontSize || fontBasePixels);
43
42
  }
44
-
45
43
  if (fontName) {
46
44
  // Don't set undefined font families. May need some validation here that the font is available.
47
45
  // Android doesn't recognise font weights natively so apply custom font weights via `fontFamily`.
@@ -51,16 +49,17 @@ export function applyTextStyles(_ref) {
51
49
  // Font weight support in Android is limited to 'bold' or anything else === 'normal'.
52
50
  styles.fontWeight = Platform.OS === 'android' && Number(fontWeight) > 400 ? 'bold' : fontWeight;
53
51
  }
54
-
55
52
  if (fontColor) {
56
53
  styles.color = fontColor;
57
- } // TODO: look into calculating typographic spacing with PixelRatio.getFontScale()
54
+ }
55
+
56
+ // TODO: look into calculating typographic spacing with PixelRatio.getFontScale()
58
57
  // Do while implementing advanced typography e.g. paragraph etc
59
58
  // https://github.com/telus/universal-design-system/issues/89
60
59
 
61
-
62
60
  return styles;
63
61
  }
62
+
64
63
  /**
65
64
  * React Native's in-built shadow support is limited. Take an object describing an ideal shadow and
66
65
  * return a platform-appropriate implementation that gets close to the described effect.
@@ -74,7 +73,6 @@ export function applyTextStyles(_ref) {
74
73
  * @param {number} shadowToken.spread
75
74
  * @return {object}
76
75
  */
77
-
78
76
  export function applyShadowToken(shadowToken) {
79
77
  if (!shadowToken) return {};
80
78
  const applyShadow = Platform.select({
@@ -84,7 +82,6 @@ export function applyShadowToken(shadowToken) {
84
82
  });
85
83
  return applyShadow();
86
84
  }
87
-
88
85
  function applyWebShadow(_ref2) {
89
86
  let {
90
87
  inset,
@@ -100,7 +97,6 @@ function applyWebShadow(_ref2) {
100
97
  };
101
98
  return boxShadow;
102
99
  }
103
-
104
100
  function applyAndroidShadow(shadowToken) {
105
101
  const {
106
102
  color,
@@ -108,23 +104,20 @@ function applyAndroidShadow(shadowToken) {
108
104
  spread,
109
105
  offsetY,
110
106
  offsetX
111
- } = shadowToken; // Android shadows are very limited and workarounds are hacky. Use the built-in `elevation` API unless
107
+ } = shadowToken;
108
+ // Android shadows are very limited and workarounds are hacky. Use the built-in `elevation` API unless
112
109
  // shadow design is radically different to a simple top-down shadow (e.g. horizontal, upward, or inset)
113
-
114
110
  if (!inset && offsetY >= 0 && offsetY >= offsetX) {
115
111
  return {
116
112
  // Can't match other platforms, but can give longer shadows to elements designed for longer shadows
117
113
  elevation: spread + offsetY,
118
114
  shadowColor: color // Only applies on Android >= 9 and React Native >= 0.64.0
119
-
120
115
  };
121
- } // TODO: maybe use a library or workaround to increase capabilities.
116
+ }
117
+ // TODO: maybe use a library or workaround to increase capabilities.
122
118
  // https://github.com/telus/universal-design-system/issues/535
123
-
124
-
125
119
  return {};
126
120
  }
127
-
128
121
  function applyIosShadow(_ref3) {
129
122
  let {
130
123
  inset,
@@ -138,15 +131,15 @@ function applyIosShadow(_ref3) {
138
131
  // TODO: maybe use a library or workaround for inset shadows. This is a sizable task and would
139
132
  // involve changing component implementations to use a custom view, can't be done with styles alone.
140
133
  // https://github.com/telus/universal-design-system/issues/535
141
- if (inset) return {}; // React Native iOS doesn't support spread. Where there's an offset, can approximate positive spread by
134
+ if (inset) return {};
135
+
136
+ // React Native iOS doesn't support spread. Where there's an offset, can approximate positive spread by
142
137
  // increasing the (positive or negative) offset by the spread. This makes the shadow reach the point it
143
138
  // would if spread was supported (with a side effect that its start is further "under" the element).
144
-
145
139
  const nudgeBySpread = offset => {
146
140
  if (!offset || spread <= 0) return 0;
147
141
  return offset > 0 ? spread : spread * -1;
148
142
  };
149
-
150
143
  return {
151
144
  shadowColor: color,
152
145
  shadowOffset: {
@@ -155,7 +148,6 @@ function applyIosShadow(_ref3) {
155
148
  },
156
149
  shadowRadius: blur,
157
150
  shadowOpacity: 1 // opacity is applied via RGBA in the `color` token
158
-
159
151
  };
160
152
  }
161
153
 
@@ -171,20 +163,16 @@ export function verticalAlignRow(verticalAlign) {
171
163
  alignItems: verticalAlignToFlexRowAlign[verticalAlign]
172
164
  };
173
165
  }
174
-
175
166
  const calculateBorderRadius = (borderRadius, outerBorderGap, outerBorderWidth) => {
176
167
  if (borderRadius) {
177
168
  return borderRadius + outerBorderGap + outerBorderWidth;
178
169
  }
179
-
180
170
  return null;
181
171
  };
182
172
  /**
183
173
  * Use on an outer container to create an outer border with an optional gap around it
184
174
  * that matches the border radius of any inner border.
185
175
  */
186
-
187
-
188
176
  export const applyOuterBorder = _ref4 => {
189
177
  let {
190
178
  outerBorderColor,