@simplybusiness/mobius 10.4.3 → 10.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/components/AddressLookup/AddressLookup.js +39 -36
  3. package/dist/cjs/components/AddressLookup/AddressLookup.js.map +3 -3
  4. package/dist/cjs/components/AddressLookup/LoqateAddressLookupService.js +28 -40
  5. package/dist/cjs/components/AddressLookup/LoqateAddressLookupService.js.map +1 -1
  6. package/dist/cjs/components/AddressLookup/index.js +67 -76
  7. package/dist/cjs/components/AddressLookup/index.js.map +3 -3
  8. package/dist/cjs/components/Breadcrumbs/Breadcrumbs.js +3 -7
  9. package/dist/cjs/components/Breadcrumbs/Breadcrumbs.js.map +2 -2
  10. package/dist/cjs/components/Breadcrumbs/index.js +3 -7
  11. package/dist/cjs/components/Breadcrumbs/index.js.map +2 -2
  12. package/dist/cjs/components/Combobox/Combobox.js +35 -32
  13. package/dist/cjs/components/Combobox/Combobox.js.map +3 -3
  14. package/dist/cjs/components/Combobox/index.js +35 -32
  15. package/dist/cjs/components/Combobox/index.js.map +3 -3
  16. package/dist/cjs/components/DateField/DateField.js +11 -8
  17. package/dist/cjs/components/DateField/DateField.js.map +3 -3
  18. package/dist/cjs/components/DateField/index.js +11 -8
  19. package/dist/cjs/components/DateField/index.js.map +3 -3
  20. package/dist/cjs/components/DropdownMenu/Item.js +3 -6
  21. package/dist/cjs/components/DropdownMenu/Item.js.map +2 -2
  22. package/dist/cjs/components/DropdownMenu/index.js +3 -6
  23. package/dist/cjs/components/DropdownMenu/index.js.map +2 -2
  24. package/dist/cjs/components/MaskedField/MaskedField.js +11 -8
  25. package/dist/cjs/components/MaskedField/MaskedField.js.map +3 -3
  26. package/dist/cjs/components/MaskedField/index.js +13 -10
  27. package/dist/cjs/components/MaskedField/index.js.map +3 -3
  28. package/dist/cjs/components/NumberField/NumberField.js +10 -7
  29. package/dist/cjs/components/NumberField/NumberField.js.map +3 -3
  30. package/dist/cjs/components/NumberField/index.js +10 -7
  31. package/dist/cjs/components/NumberField/index.js.map +3 -3
  32. package/dist/cjs/components/PasswordField/PasswordField.js +9 -6
  33. package/dist/cjs/components/PasswordField/PasswordField.js.map +3 -3
  34. package/dist/cjs/components/PasswordField/index.js +9 -6
  35. package/dist/cjs/components/PasswordField/index.js.map +3 -3
  36. package/dist/cjs/components/StickyOnMobile/StickyOnMobile.js +49 -0
  37. package/dist/cjs/components/StickyOnMobile/StickyOnMobile.js.map +7 -0
  38. package/dist/cjs/components/StickyOnMobile/index.js +51 -0
  39. package/dist/cjs/components/StickyOnMobile/index.js.map +7 -0
  40. package/dist/cjs/components/TextField/TextField.js +6 -3
  41. package/dist/cjs/components/TextField/TextField.js.map +3 -3
  42. package/dist/cjs/components/TextField/adornmentWithClassName.js +3 -2
  43. package/dist/cjs/components/TextField/adornmentWithClassName.js.map +2 -2
  44. package/dist/cjs/components/TextField/index.js +6 -3
  45. package/dist/cjs/components/TextField/index.js.map +3 -3
  46. package/dist/cjs/components/index.js +343 -343
  47. package/dist/cjs/components/index.js.map +4 -4
  48. package/dist/cjs/index.js +343 -343
  49. package/dist/cjs/index.js.map +4 -4
  50. package/dist/cjs/meta.json +329 -107
  51. package/dist/esm/{chunk-NEFRXIFY.js → chunk-53QMWUHB.js} +2 -2
  52. package/dist/esm/chunk-53QMWUHB.js.map +7 -0
  53. package/dist/esm/{chunk-4HI2AOBC.js → chunk-6TSYA7CJ.js} +4 -7
  54. package/dist/esm/{chunk-4HI2AOBC.js.map → chunk-6TSYA7CJ.js.map} +2 -2
  55. package/dist/esm/{chunk-VHAA22YE.js → chunk-A7KFYNH6.js} +1 -3
  56. package/dist/esm/{chunk-IQKS662C.js → chunk-AKCNBW55.js} +8 -6
  57. package/dist/esm/chunk-AKCNBW55.js.map +7 -0
  58. package/dist/esm/{chunk-6JCU4CGA.js → chunk-AZUVQRYC.js} +4 -4
  59. package/dist/esm/{chunk-XNEQHHNV.js → chunk-C2QJDKXS.js} +2 -2
  60. package/dist/esm/chunk-CTY6LDFI.js +1 -0
  61. package/dist/esm/{chunk-KFHPI67N.js → chunk-GJBH37DH.js} +4 -4
  62. package/dist/esm/{chunk-IM3I5CZL.js → chunk-I6CFRGID.js} +4 -3
  63. package/dist/esm/{chunk-IM3I5CZL.js.map → chunk-I6CFRGID.js.map} +2 -2
  64. package/dist/esm/{chunk-LGZWQZLS.js → chunk-IF7FRSC2.js} +2 -2
  65. package/dist/esm/{chunk-OEDU5ZEA.js → chunk-KUH5AB5T.js} +2 -2
  66. package/dist/esm/chunk-L2X5IF3K.js +1 -0
  67. package/dist/esm/chunk-L2X5IF3K.js.map +7 -0
  68. package/dist/esm/{chunk-2HUMNED2.js → chunk-M3X3ECNH.js} +4 -4
  69. package/dist/esm/chunk-NXWWQSZA.js +82 -0
  70. package/dist/esm/{chunk-VVL4B2KD.js.map → chunk-NXWWQSZA.js.map} +1 -1
  71. package/dist/esm/{chunk-JFDDW3IV.js → chunk-P7TPNRU4.js} +4 -8
  72. package/dist/esm/{chunk-JFDDW3IV.js.map → chunk-P7TPNRU4.js.map} +2 -2
  73. package/dist/esm/{chunk-VZ3IWSK6.js → chunk-Q5RB4O4S.js} +7 -7
  74. package/dist/esm/{chunk-S4CU4XRB.js → chunk-RBB3WHBJ.js} +2 -2
  75. package/dist/esm/{chunk-GV36OVX7.js → chunk-TQWUPLN6.js} +2 -2
  76. package/dist/esm/{chunk-X4CMSAET.js → chunk-YEZ6KR3Q.js} +2 -2
  77. package/dist/esm/chunk-YWFAKGQQ.js +19 -0
  78. package/dist/esm/chunk-YWFAKGQQ.js.map +7 -0
  79. package/dist/esm/{chunk-P6YHEIFT.js → chunk-ZLAAOGRQ.js} +4 -4
  80. package/dist/esm/components/Accordion/Accordion.js +1 -1
  81. package/dist/esm/components/Accordion/AccordionLink.js +1 -1
  82. package/dist/esm/components/Accordion/AccordionList.js +1 -1
  83. package/dist/esm/components/Accordion/index.js +1 -1
  84. package/dist/esm/components/AddressLookup/AddressLookup.js +7 -7
  85. package/dist/esm/components/AddressLookup/LoqateAddressLookupError.js +1 -1
  86. package/dist/esm/components/AddressLookup/LoqateAddressLookupService.js +2 -2
  87. package/dist/esm/components/AddressLookup/__mocks__/LoqateAddressLookupService.js +1 -1
  88. package/dist/esm/components/AddressLookup/index.js +10 -10
  89. package/dist/esm/components/AddressLookup/utils.js +1 -1
  90. package/dist/esm/components/Alert/Alert.js +1 -1
  91. package/dist/esm/components/Alert/index.js +1 -1
  92. package/dist/esm/components/Box/Box.js +1 -1
  93. package/dist/esm/components/Box/index.js +1 -1
  94. package/dist/esm/components/Breadcrumbs/BreadcrumbItem.js +1 -1
  95. package/dist/esm/components/Breadcrumbs/Breadcrumbs.js +2 -2
  96. package/dist/esm/components/Breadcrumbs/index.js +3 -3
  97. package/dist/esm/components/Button/Button.js +1 -1
  98. package/dist/esm/components/Button/Loading.js +1 -1
  99. package/dist/esm/components/Button/Success.js +1 -1
  100. package/dist/esm/components/Button/index.js +1 -1
  101. package/dist/esm/components/Checkbox/Checkbox.js +1 -1
  102. package/dist/esm/components/Checkbox/CheckboxGroup.js +3 -3
  103. package/dist/esm/components/Checkbox/index.js +3 -3
  104. package/dist/esm/components/Combobox/Combobox.js +6 -6
  105. package/dist/esm/components/Combobox/Listbox.js +1 -1
  106. package/dist/esm/components/Combobox/Option.js +1 -1
  107. package/dist/esm/components/Combobox/fixtures.js +1 -1
  108. package/dist/esm/components/Combobox/index.js +6 -6
  109. package/dist/esm/components/Combobox/useComboboxHighlight.js +1 -1
  110. package/dist/esm/components/Combobox/useComboboxOptions.js +1 -1
  111. package/dist/esm/components/Combobox/utils.js +1 -1
  112. package/dist/esm/components/Container/Container.js +1 -1
  113. package/dist/esm/components/Container/index.js +1 -1
  114. package/dist/esm/components/DateField/DateField.js +6 -6
  115. package/dist/esm/components/DateField/index.js +6 -6
  116. package/dist/esm/components/DateField/validation.js +1 -1
  117. package/dist/esm/components/Divider/Divider.js +1 -1
  118. package/dist/esm/components/Divider/index.js +1 -1
  119. package/dist/esm/components/Drawer/Content.js +1 -1
  120. package/dist/esm/components/Drawer/Drawer.js +1 -1
  121. package/dist/esm/components/Drawer/DrawerContext.js +1 -1
  122. package/dist/esm/components/Drawer/Header.js +1 -1
  123. package/dist/esm/components/Drawer/index.js +4 -4
  124. package/dist/esm/components/Drawer/useDrawer.js +1 -1
  125. package/dist/esm/components/DropdownMenu/DropdownMenu.js +1 -1
  126. package/dist/esm/components/DropdownMenu/Item.js +2 -2
  127. package/dist/esm/components/DropdownMenu/index.js +3 -3
  128. package/dist/esm/components/ErrorMessage/ErrorMessage.js +1 -1
  129. package/dist/esm/components/ErrorMessage/index.js +1 -1
  130. package/dist/esm/components/ExpandableText/ExpandableText.js +1 -1
  131. package/dist/esm/components/ExpandableText/index.js +1 -1
  132. package/dist/esm/components/Fieldset/Fieldset.js +1 -1
  133. package/dist/esm/components/Fieldset/index.js +1 -1
  134. package/dist/esm/components/Flex/Flex.js +1 -1
  135. package/dist/esm/components/Flex/index.js +1 -1
  136. package/dist/esm/components/Flex/propUtils.js +1 -1
  137. package/dist/esm/components/Grid/Grid.js +1 -1
  138. package/dist/esm/components/Grid/Item.js +1 -1
  139. package/dist/esm/components/Grid/index.js +1 -1
  140. package/dist/esm/components/Icon/Icon.js +1 -1
  141. package/dist/esm/components/Icon/index.js +1 -1
  142. package/dist/esm/components/Image/Image.js +1 -1
  143. package/dist/esm/components/Image/index.js +1 -1
  144. package/dist/esm/components/Label/Label.js +1 -1
  145. package/dist/esm/components/Label/index.js +1 -1
  146. package/dist/esm/components/Link/Link.js +1 -1
  147. package/dist/esm/components/Link/index.js +1 -1
  148. package/dist/esm/components/LinkButton/LinkButton.js +1 -1
  149. package/dist/esm/components/LinkButton/index.js +1 -1
  150. package/dist/esm/components/List/List.js +1 -1
  151. package/dist/esm/components/List/ListItem.js +1 -1
  152. package/dist/esm/components/List/index.js +1 -1
  153. package/dist/esm/components/LoadingIndicator/LoadingIndicator.js +1 -1
  154. package/dist/esm/components/LoadingIndicator/index.js +1 -1
  155. package/dist/esm/components/Logo/Logo.js +1 -1
  156. package/dist/esm/components/Logo/index.js +1 -1
  157. package/dist/esm/components/MaskedField/MaskedField.js +5 -5
  158. package/dist/esm/components/MaskedField/index.js +6 -6
  159. package/dist/esm/components/Modal/Content.js +1 -1
  160. package/dist/esm/components/Modal/Header.js +1 -1
  161. package/dist/esm/components/Modal/Modal.js +1 -1
  162. package/dist/esm/components/Modal/ModalContext.js +1 -1
  163. package/dist/esm/components/Modal/index.js +1 -1
  164. package/dist/esm/components/Modal/useModal.js +1 -1
  165. package/dist/esm/components/NumberField/NumberField.js +6 -6
  166. package/dist/esm/components/NumberField/index.js +6 -6
  167. package/dist/esm/components/Option/Option.js +1 -1
  168. package/dist/esm/components/Option/index.js +1 -1
  169. package/dist/esm/components/PasswordField/PasswordField.js +6 -6
  170. package/dist/esm/components/PasswordField/ShowHideButton.js +1 -1
  171. package/dist/esm/components/PasswordField/index.js +6 -6
  172. package/dist/esm/components/Popover/Arrow.js +1 -1
  173. package/dist/esm/components/Popover/Popover.js +4 -4
  174. package/dist/esm/components/Popover/index.js +4 -4
  175. package/dist/esm/components/Popover/useAutoUpdate.js +1 -1
  176. package/dist/esm/components/Popover/useFloatingPosition.js +1 -1
  177. package/dist/esm/components/Popover/useOutsidePress.js +1 -1
  178. package/dist/esm/components/Progress/Progress.js +1 -1
  179. package/dist/esm/components/Progress/index.js +1 -1
  180. package/dist/esm/components/Radio/Radio.js +1 -1
  181. package/dist/esm/components/Radio/RadioGroup.js +4 -4
  182. package/dist/esm/components/Radio/index.js +6 -6
  183. package/dist/esm/components/SVG/SVG.js +1 -1
  184. package/dist/esm/components/SVG/index.js +1 -1
  185. package/dist/esm/components/Segment/Segment.js +1 -1
  186. package/dist/esm/components/Segment/SegmentGroup.js +1 -1
  187. package/dist/esm/components/Segment/index.js +1 -1
  188. package/dist/esm/components/Select/Select.js +4 -4
  189. package/dist/esm/components/Select/index.js +4 -4
  190. package/dist/esm/components/Slider/Slider.js +1 -1
  191. package/dist/esm/components/Slider/helpers.js +1 -1
  192. package/dist/esm/components/Slider/index.js +1 -1
  193. package/dist/esm/components/Stack/Stack.js +1 -1
  194. package/dist/esm/components/Stack/index.js +1 -1
  195. package/dist/esm/components/StickyOnMobile/StickyOnMobile.js +8 -0
  196. package/dist/esm/components/StickyOnMobile/StickyOnMobile.js.map +7 -0
  197. package/dist/esm/components/StickyOnMobile/index.js +9 -0
  198. package/dist/esm/components/StickyOnMobile/index.js.map +7 -0
  199. package/dist/esm/components/Switch/Switch.js +1 -1
  200. package/dist/esm/components/Switch/index.js +1 -1
  201. package/dist/esm/components/Table/Body.js +1 -1
  202. package/dist/esm/components/Table/Cell.js +1 -1
  203. package/dist/esm/components/Table/Foot.js +1 -1
  204. package/dist/esm/components/Table/Head.js +1 -1
  205. package/dist/esm/components/Table/HeaderCell.js +1 -1
  206. package/dist/esm/components/Table/Row.js +1 -1
  207. package/dist/esm/components/Table/Table.js +1 -1
  208. package/dist/esm/components/Table/index.js +1 -1
  209. package/dist/esm/components/Text/Text.js +1 -1
  210. package/dist/esm/components/Text/index.js +1 -1
  211. package/dist/esm/components/TextArea/TextArea.js +4 -4
  212. package/dist/esm/components/TextArea/index.js +4 -4
  213. package/dist/esm/components/TextAreaInput/TextAreaInput.js +1 -1
  214. package/dist/esm/components/TextAreaInput/index.js +1 -1
  215. package/dist/esm/components/TextField/TextField.js +5 -5
  216. package/dist/esm/components/TextField/adornmentWithClassName.js +2 -2
  217. package/dist/esm/components/TextField/index.js +5 -5
  218. package/dist/esm/components/TextOrHTML/TextOrHTML.js +1 -1
  219. package/dist/esm/components/TextOrHTML/index.js +1 -1
  220. package/dist/esm/components/Title/Title.js +1 -1
  221. package/dist/esm/components/Title/index.js +1 -1
  222. package/dist/esm/components/Toast/Toast.js +1 -1
  223. package/dist/esm/components/Toast/ToastOptionsDoc.js +1 -1
  224. package/dist/esm/components/Toast/Toaster.js +1 -1
  225. package/dist/esm/components/Toast/index.js +1 -1
  226. package/dist/esm/components/Toast/state.js +1 -1
  227. package/dist/esm/components/Trust/Trust.js +1 -1
  228. package/dist/esm/components/Trust/TrustpilotProvider.js +1 -1
  229. package/dist/esm/components/Trust/constants.js +1 -1
  230. package/dist/esm/components/Trust/index.js +1 -1
  231. package/dist/esm/components/VisuallyHidden/VisuallyHidden.js +1 -1
  232. package/dist/esm/components/VisuallyHidden/index.js +1 -1
  233. package/dist/esm/components/index.js +68 -63
  234. package/dist/esm/hooks/index.js +1 -1
  235. package/dist/esm/hooks/useBreakpoint/index.js +1 -1
  236. package/dist/esm/hooks/useBreakpoint/useBreakpoint.js +1 -1
  237. package/dist/esm/hooks/useButton/index.js +1 -1
  238. package/dist/esm/hooks/useButton/useButton.js +1 -1
  239. package/dist/esm/hooks/useDialog/index.js +1 -1
  240. package/dist/esm/hooks/useDialog/useDialog.js +1 -1
  241. package/dist/esm/hooks/useDialogPolyfill/index.js +1 -1
  242. package/dist/esm/hooks/useDialogPolyfill/useDialogPolyfill.js +1 -1
  243. package/dist/esm/hooks/useLabel/index.js +1 -1
  244. package/dist/esm/hooks/useLabel/useLabel.js +1 -1
  245. package/dist/esm/hooks/useTextField/index.js +1 -1
  246. package/dist/esm/hooks/useTextField/useTextField.js +1 -1
  247. package/dist/esm/hooks/useValidationClasses/index.js +1 -1
  248. package/dist/esm/hooks/useValidationClasses/useValidationClasses.js +1 -1
  249. package/dist/esm/index.js +68 -63
  250. package/dist/esm/meta.json +3460 -3303
  251. package/dist/esm/utils/StoryContainer.js +1 -1
  252. package/dist/esm/utils/changeCSS.js +1 -1
  253. package/dist/esm/utils/colours.js +1 -1
  254. package/dist/esm/utils/delay.js +1 -1
  255. package/dist/esm/utils/excludeControls.js +1 -1
  256. package/dist/esm/utils/filterUndefinedProps.js +1 -1
  257. package/dist/esm/utils/filterUnsetValues.js +1 -1
  258. package/dist/esm/utils/getSpacingValue.js +1 -1
  259. package/dist/esm/utils/htmlDialogPolyfill.js +1 -1
  260. package/dist/esm/utils/index.js +1 -1
  261. package/dist/esm/utils/mergeRefs.js +1 -1
  262. package/dist/esm/utils/mockMatchMedia.js +1 -1
  263. package/dist/esm/utils/polyfill-tests.js +1 -1
  264. package/dist/esm/utils/sizeClasses.js +1 -1
  265. package/dist/esm/utils/sizeOptions.js +1 -1
  266. package/dist/esm/utils/spaceDelimitedList.js +1 -1
  267. package/dist/tsconfig.build.tsbuildinfo +1 -1
  268. package/dist/types/components/Accordion/Accordion.d.ts +4 -4
  269. package/dist/types/components/Accordion/AccordionList.d.ts +4 -4
  270. package/dist/types/components/AddressLookup/AddressLookup.d.ts +4 -4
  271. package/dist/types/components/AddressLookup/LoqateAddressLookupService.d.ts +1 -1
  272. package/dist/types/components/Alert/Alert.d.ts +4 -4
  273. package/dist/types/components/Box/Box.d.ts +4 -4
  274. package/dist/types/components/Breadcrumbs/BreadcrumbItem.d.ts +4 -4
  275. package/dist/types/components/Breadcrumbs/Breadcrumbs.d.ts +4 -4
  276. package/dist/types/components/Button/Button.d.ts +4 -4
  277. package/dist/types/components/Checkbox/Checkbox.d.ts +4 -4
  278. package/dist/types/components/Checkbox/CheckboxGroup.d.ts +4 -4
  279. package/dist/types/components/Combobox/Combobox.d.ts +2 -5
  280. package/dist/types/components/Combobox/useComboboxOptions.d.ts +1 -1
  281. package/dist/types/components/Container/Container.d.ts +4 -4
  282. package/dist/types/components/DateField/DateField.d.ts +4 -4
  283. package/dist/types/components/Divider/Divider.d.ts +4 -4
  284. package/dist/types/components/Drawer/Content.d.ts +4 -4
  285. package/dist/types/components/Drawer/Drawer.d.ts +4 -4
  286. package/dist/types/components/Drawer/Header.d.ts +4 -4
  287. package/dist/types/components/DropdownMenu/DropdownMenu.d.ts +4 -4
  288. package/dist/types/components/DropdownMenu/Item.d.ts +4 -4
  289. package/dist/types/components/ErrorMessage/ErrorMessage.d.ts +4 -4
  290. package/dist/types/components/ExpandableText/ExpandableText.d.ts +4 -4
  291. package/dist/types/components/Fieldset/Fieldset.d.ts +4 -4
  292. package/dist/types/components/Flex/Flex.d.ts +4 -4
  293. package/dist/types/components/Grid/Grid.d.ts +4 -4
  294. package/dist/types/components/Grid/Item.d.ts +4 -4
  295. package/dist/types/components/Image/Image.d.ts +4 -4
  296. package/dist/types/components/Label/Label.d.ts +4 -4
  297. package/dist/types/components/Link/Link.d.ts +4 -4
  298. package/dist/types/components/List/List.d.ts +4 -4
  299. package/dist/types/components/List/ListItem.d.ts +4 -4
  300. package/dist/types/components/LoadingIndicator/LoadingIndicator.d.ts +4 -4
  301. package/dist/types/components/Logo/Logo.d.ts +4 -4
  302. package/dist/types/components/MaskedField/MaskedField.d.ts +4 -4
  303. package/dist/types/components/Modal/Content.d.ts +4 -4
  304. package/dist/types/components/Modal/Header.d.ts +4 -4
  305. package/dist/types/components/Modal/Modal.d.ts +4 -4
  306. package/dist/types/components/NumberField/NumberField.d.ts +4 -4
  307. package/dist/types/components/Option/Option.d.ts +4 -4
  308. package/dist/types/components/PasswordField/PasswordField.d.ts +4 -4
  309. package/dist/types/components/Progress/Progress.d.ts +4 -4
  310. package/dist/types/components/Radio/Radio.d.ts +4 -4
  311. package/dist/types/components/Radio/RadioGroup.d.ts +4 -4
  312. package/dist/types/components/SVG/SVG.d.ts +4 -4
  313. package/dist/types/components/Segment/Segment.d.ts +4 -4
  314. package/dist/types/components/Segment/SegmentGroup.d.ts +4 -4
  315. package/dist/types/components/Select/Select.d.ts +4 -4
  316. package/dist/types/components/Stack/Stack.d.ts +4 -4
  317. package/dist/types/components/StickyOnMobile/StickyOnMobile.d.ts +15 -0
  318. package/dist/types/components/StickyOnMobile/index.d.ts +1 -0
  319. package/dist/types/components/Switch/Switch.d.ts +4 -4
  320. package/dist/types/components/Table/Body.d.ts +4 -4
  321. package/dist/types/components/Table/Cell.d.ts +4 -4
  322. package/dist/types/components/Table/Foot.d.ts +4 -4
  323. package/dist/types/components/Table/Head.d.ts +4 -4
  324. package/dist/types/components/Table/HeaderCell.d.ts +4 -4
  325. package/dist/types/components/Table/Row.d.ts +4 -4
  326. package/dist/types/components/Table/Table.d.ts +4 -4
  327. package/dist/types/components/Text/Text.d.ts +4 -4
  328. package/dist/types/components/TextArea/TextArea.d.ts +4 -4
  329. package/dist/types/components/TextAreaInput/TextAreaInput.d.ts +4 -4
  330. package/dist/types/components/TextField/TextField.d.ts +1 -4
  331. package/dist/types/components/TextField/adornmentWithClassName.d.ts +3 -1
  332. package/dist/types/components/TextOrHTML/TextOrHTML.d.ts +4 -4
  333. package/dist/types/components/Title/Title.d.ts +4 -4
  334. package/dist/types/components/Toast/ToastOptionsDoc.d.ts +4 -8
  335. package/dist/types/components/Toast/Toaster.d.ts +4 -4
  336. package/dist/types/components/index.d.ts +1 -0
  337. package/dist/types/hooks/useButton/useButton.d.ts +5 -5
  338. package/dist/types/hooks/useLabel/useLabel.d.ts +1 -1
  339. package/package.json +22 -21
  340. package/src/components/Box/Box.test.tsx +1 -2
  341. package/src/components/Breadcrumbs/Breadcrumbs.tsx +3 -7
  342. package/src/components/Button/Button.stories.tsx +1 -1
  343. package/src/components/Combobox/Combobox.tsx +2 -4
  344. package/src/components/DropdownMenu/DropdownMenu.stories.tsx +1 -1
  345. package/src/components/DropdownMenu/Item.tsx +3 -6
  346. package/src/components/Grid/Grid.stories.tsx +1 -1
  347. package/src/components/StickyOnMobile/StickyOnMobile.css +19 -0
  348. package/src/components/StickyOnMobile/StickyOnMobile.mdx +52 -0
  349. package/src/components/StickyOnMobile/StickyOnMobile.stories.tsx +99 -0
  350. package/src/components/StickyOnMobile/StickyOnMobile.test.tsx +100 -0
  351. package/src/components/StickyOnMobile/StickyOnMobile.tsx +37 -0
  352. package/src/components/StickyOnMobile/index.tsx +1 -0
  353. package/src/components/TextField/TextField.tsx +3 -1
  354. package/src/components/TextField/adornmentWithClassName.ts +4 -3
  355. package/src/components/index.tsx +1 -0
  356. package/src/hooks/useBreakpoint/useBreakpoint.test.tsx +4 -4
  357. package/src/styles.d.ts +2 -0
  358. package/dist/esm/chunk-IQKS662C.js.map +0 -7
  359. package/dist/esm/chunk-NEFRXIFY.js.map +0 -7
  360. package/dist/esm/chunk-NOQ27VLY.js +0 -1
  361. package/dist/esm/chunk-VVL4B2KD.js +0 -92
  362. /package/dist/esm/{chunk-NOQ27VLY.js.map → chunk-A7KFYNH6.js.map} +0 -0
  363. /package/dist/esm/{chunk-6JCU4CGA.js.map → chunk-AZUVQRYC.js.map} +0 -0
  364. /package/dist/esm/{chunk-XNEQHHNV.js.map → chunk-C2QJDKXS.js.map} +0 -0
  365. /package/dist/esm/{chunk-VHAA22YE.js.map → chunk-CTY6LDFI.js.map} +0 -0
  366. /package/dist/esm/{chunk-KFHPI67N.js.map → chunk-GJBH37DH.js.map} +0 -0
  367. /package/dist/esm/{chunk-LGZWQZLS.js.map → chunk-IF7FRSC2.js.map} +0 -0
  368. /package/dist/esm/{chunk-OEDU5ZEA.js.map → chunk-KUH5AB5T.js.map} +0 -0
  369. /package/dist/esm/{chunk-2HUMNED2.js.map → chunk-M3X3ECNH.js.map} +0 -0
  370. /package/dist/esm/{chunk-VZ3IWSK6.js.map → chunk-Q5RB4O4S.js.map} +0 -0
  371. /package/dist/esm/{chunk-S4CU4XRB.js.map → chunk-RBB3WHBJ.js.map} +0 -0
  372. /package/dist/esm/{chunk-GV36OVX7.js.map → chunk-TQWUPLN6.js.map} +0 -0
  373. /package/dist/esm/{chunk-X4CMSAET.js.map → chunk-YEZ6KR3Q.js.map} +0 -0
  374. /package/dist/esm/{chunk-P6YHEIFT.js.map → chunk-ZLAAOGRQ.js.map} +0 -0
@@ -11,8 +11,8 @@ export interface SegmentProps extends DOMProps, RefAttributes<SegmentElementType
11
11
  inverted?: boolean;
12
12
  children?: ReactNode;
13
13
  }
14
- declare const Segment: {
15
- ({ ref, ...props }: SegmentProps): import("react/jsx-runtime").JSX.Element;
16
- displayName: string;
17
- };
14
+ declare function Segment({ ref, ...props }: SegmentProps): import("react/jsx-runtime").JSX.Element;
15
+ declare namespace Segment {
16
+ var displayName: string;
17
+ }
18
18
  export { Segment };
@@ -6,8 +6,8 @@ export interface SegmentGroupProps extends DOMProps {
6
6
  gap?: "size-xs" | "size-s" | "size-m" | "size-l" | "size-xl" | "size-xxl";
7
7
  children?: ReactNode;
8
8
  }
9
- declare const SegmentGroup: {
10
- (props: SegmentGroupProps): import("react/jsx-runtime").JSX.Element;
11
- displayName: string;
12
- };
9
+ declare function SegmentGroup(props: SegmentGroupProps): import("react/jsx-runtime").JSX.Element;
10
+ declare namespace SegmentGroup {
11
+ var displayName: string;
12
+ }
13
13
  export { SegmentGroup };
@@ -15,8 +15,8 @@ export interface SelectProps extends UseLabelProps, Validation, DOMProps, RefAtt
15
15
  "aria-describedby"?: string;
16
16
  isDisabled?: boolean;
17
17
  }
18
- declare const Select: {
19
- ({ ref, ...props }: SelectProps): import("react/jsx-runtime").JSX.Element;
20
- displayName: string;
21
- };
18
+ declare function Select({ ref, ...props }: SelectProps): import("react/jsx-runtime").JSX.Element;
19
+ declare namespace Select {
20
+ var displayName: string;
21
+ }
22
22
  export { Select };
@@ -13,7 +13,7 @@ export interface StackProps extends DOMProps, RefAttributes<StackElementType> {
13
13
  elementType?: React.ElementType;
14
14
  }
15
15
  export type StackRef = Ref<StackElementType>;
16
- export declare const Stack: {
17
- ({ ref, ...props }: StackProps): import("react/jsx-runtime").JSX.Element;
18
- displayName: string;
19
- };
16
+ export declare function Stack({ ref, ...props }: StackProps): import("react/jsx-runtime").JSX.Element;
17
+ export declare namespace Stack {
18
+ var displayName: string;
19
+ }
@@ -0,0 +1,15 @@
1
+ import type { RefAttributes, ReactNode, ElementType, CSSProperties, HTMLAttributes } from "react";
2
+ import "./StickyOnMobile.css";
3
+ export type StickyOnMobileElementType = HTMLElement;
4
+ export interface StickyOnMobileProps extends HTMLAttributes<StickyOnMobileElementType>, RefAttributes<StickyOnMobileElementType> {
5
+ children?: ReactNode;
6
+ /** HTML element to render. Defaults to `div`. */
7
+ elementType?: ElementType;
8
+ className?: string;
9
+ style?: CSSProperties;
10
+ }
11
+ declare function StickyOnMobile({ ref, ...props }: StickyOnMobileProps): import("react/jsx-runtime").JSX.Element;
12
+ declare namespace StickyOnMobile {
13
+ var displayName: string;
14
+ }
15
+ export { StickyOnMobile };
@@ -0,0 +1 @@
1
+ export * from "./StickyOnMobile";
@@ -9,8 +9,8 @@ export interface SwitchProps extends DOMProps, RefAttributes<SwitchElementType>
9
9
  onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
10
10
  isDisabled?: boolean;
11
11
  }
12
- declare const Switch: {
13
- ({ ref, ...props }: SwitchProps): import("react/jsx-runtime").JSX.Element;
14
- displayName: string;
15
- };
12
+ declare function Switch({ ref, ...props }: SwitchProps): import("react/jsx-runtime").JSX.Element;
13
+ declare namespace Switch {
14
+ var displayName: string;
15
+ }
16
16
  export { Switch };
@@ -4,8 +4,8 @@ export interface BodyProps extends RefAttributes<HTMLTableSectionElement> {
4
4
  className?: string;
5
5
  }
6
6
  export type BodyRef = Ref<HTMLTableSectionElement>;
7
- declare const Body: {
8
- ({ ref, ...props }: BodyProps): import("react/jsx-runtime").JSX.Element;
9
- displayName: string;
10
- };
7
+ declare function Body({ ref, ...props }: BodyProps): import("react/jsx-runtime").JSX.Element;
8
+ declare namespace Body {
9
+ var displayName: string;
10
+ }
11
11
  export { Body };
@@ -6,8 +6,8 @@ export interface CellProps extends RefAttributes<HTMLTableCellElement> {
6
6
  rowSpan?: number;
7
7
  }
8
8
  export type CellRef = Ref<HTMLTableCellElement>;
9
- declare const Cell: {
10
- ({ ref, ...props }: CellProps): import("react/jsx-runtime").JSX.Element;
11
- displayName: string;
12
- };
9
+ declare function Cell({ ref, ...props }: CellProps): import("react/jsx-runtime").JSX.Element;
10
+ declare namespace Cell {
11
+ var displayName: string;
12
+ }
13
13
  export { Cell };
@@ -4,8 +4,8 @@ export interface FootProps extends RefAttributes<HTMLTableSectionElement> {
4
4
  className?: string;
5
5
  }
6
6
  export type FootRef = Ref<HTMLTableSectionElement>;
7
- declare const Foot: {
8
- ({ ref, ...props }: FootProps): import("react/jsx-runtime").JSX.Element;
9
- displayName: string;
10
- };
7
+ declare function Foot({ ref, ...props }: FootProps): import("react/jsx-runtime").JSX.Element;
8
+ declare namespace Foot {
9
+ var displayName: string;
10
+ }
11
11
  export { Foot };
@@ -4,8 +4,8 @@ export interface HeadProps extends RefAttributes<HTMLTableSectionElement> {
4
4
  className?: string;
5
5
  }
6
6
  export type HeadRef = Ref<HTMLTableSectionElement>;
7
- declare const Head: {
8
- ({ ref, ...props }: HeadProps): import("react/jsx-runtime").JSX.Element;
9
- displayName: string;
10
- };
7
+ declare function Head({ ref, ...props }: HeadProps): import("react/jsx-runtime").JSX.Element;
8
+ declare namespace Head {
9
+ var displayName: string;
10
+ }
11
11
  export { Head };
@@ -7,8 +7,8 @@ export interface HeaderCellProps extends RefAttributes<HTMLTableCellElement> {
7
7
  scope?: "col" | "row" | "colgroup" | "rowgroup";
8
8
  }
9
9
  export type HeaderCellRef = Ref<HTMLTableCellElement>;
10
- declare const HeaderCell: {
11
- ({ ref, scope, ...props }: HeaderCellProps): import("react/jsx-runtime").JSX.Element;
12
- displayName: string;
13
- };
10
+ declare function HeaderCell({ ref, scope, ...props }: HeaderCellProps): import("react/jsx-runtime").JSX.Element;
11
+ declare namespace HeaderCell {
12
+ var displayName: string;
13
+ }
14
14
  export { HeaderCell };
@@ -4,8 +4,8 @@ export interface RowProps extends RefAttributes<HTMLTableRowElement> {
4
4
  className?: string;
5
5
  }
6
6
  export type RowRef = Ref<HTMLTableRowElement>;
7
- declare const Row: {
8
- ({ ref, ...props }: RowProps): import("react/jsx-runtime").JSX.Element;
9
- displayName: string;
10
- };
7
+ declare function Row({ ref, ...props }: RowProps): import("react/jsx-runtime").JSX.Element;
8
+ declare namespace Row {
9
+ var displayName: string;
10
+ }
11
11
  export { Row };
@@ -7,8 +7,8 @@ export interface TableProps extends DOMProps, RefAttributes<TableElementType> {
7
7
  className?: string;
8
8
  }
9
9
  export type TableRef = Ref<TableElementType>;
10
- declare const Table: {
11
- ({ ref, ...props }: TableProps): import("react/jsx-runtime").JSX.Element;
12
- displayName: string;
13
- };
10
+ declare function Table({ ref, ...props }: TableProps): import("react/jsx-runtime").JSX.Element;
11
+ declare namespace Table {
12
+ var displayName: string;
13
+ }
14
14
  export { Table };
@@ -17,8 +17,8 @@ export interface TextProps extends DOMProps, RefAttributes<TextElementType> {
17
17
  style?: React.CSSProperties;
18
18
  }
19
19
  export declare const getElementType: (variant: TextVariantType | undefined, elementType: ElementType | undefined) => ElementType;
20
- declare const Text: {
21
- ({ ref, elementType, ...props }: TextProps): import("react/jsx-runtime").JSX.Element;
22
- displayName: string;
23
- };
20
+ declare function Text({ ref, elementType, ...props }: TextProps): import("react/jsx-runtime").JSX.Element;
21
+ declare namespace Text {
22
+ var displayName: string;
23
+ }
24
24
  export { Text };
@@ -7,8 +7,8 @@ export interface TextAreaProps extends UseTextFieldProps, DOMProps, RefAttribute
7
7
  className?: string;
8
8
  errorMessage?: string;
9
9
  }
10
- declare const TextArea: {
11
- ({ ref, ...props }: TextAreaProps): import("react/jsx-runtime").JSX.Element;
12
- displayName: string;
13
- };
10
+ declare function TextArea({ ref, ...props }: TextAreaProps): import("react/jsx-runtime").JSX.Element;
11
+ declare namespace TextArea {
12
+ var displayName: string;
13
+ }
14
14
  export { TextArea };
@@ -10,8 +10,8 @@ export interface TextAreaInputProps extends DOMProps, InteractionStateProps, Ref
10
10
  isReadOnly?: boolean;
11
11
  isRequired?: boolean;
12
12
  }
13
- declare const TextAreaInput: {
14
- ({ ref, ...props }: TextAreaInputProps): import("react/jsx-runtime").JSX.Element;
15
- displayName: string;
16
- };
13
+ declare function TextAreaInput({ ref, ...props }: TextAreaInputProps): import("react/jsx-runtime").JSX.Element;
14
+ declare namespace TextAreaInput {
15
+ var displayName: string;
16
+ }
17
17
  export { TextAreaInput };
@@ -15,8 +15,5 @@ export interface TextFieldProps extends DOMProps, FocusEvents, UseTextFieldProps
15
15
  suffixOutside?: ReactElement;
16
16
  }
17
17
  export type TextFieldRef = Ref<TextFieldElementType>;
18
- declare const TextField: {
19
- ({ ref, ...props }: TextFieldProps): import("react/jsx-runtime").JSX.Element;
20
- displayName: string;
21
- };
18
+ declare const TextField: import("react").MemoExoticComponent<({ ref, ...props }: TextFieldProps) => import("react/jsx-runtime").JSX.Element>;
22
19
  export { TextField };
@@ -1,2 +1,4 @@
1
1
  import type { ReactElement } from "react";
2
- export declare const adornmentWithClassName: (component?: ReactElement, validationClasses?: string, className?: string) => ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | null;
2
+ export declare const adornmentWithClassName: (component?: ReactElement, validationClasses?: string, className?: string) => ReactElement<{
3
+ className?: string;
4
+ }, string | import("react").JSXElementConstructor<any>> | null;
@@ -13,8 +13,8 @@ export interface TextOrHTMLProps extends Omit<TextProps, "children">, RefAttribu
13
13
  /** If true, auto-detects whether text is HTML or plain text to determine wrapping and element type */
14
14
  autoDetect?: boolean;
15
15
  }
16
- declare const TextOrHTML: {
17
- ({ ref, text, htmlClassName, htmlElementType, textWrapper, autoDetect, ...textProps }: TextOrHTMLProps): import("react/jsx-runtime").JSX.Element;
18
- displayName: string;
19
- };
16
+ declare function TextOrHTML({ ref, text, htmlClassName, htmlElementType, textWrapper, autoDetect, ...textProps }: TextOrHTMLProps): import("react/jsx-runtime").JSX.Element;
17
+ declare namespace TextOrHTML {
18
+ var displayName: string;
19
+ }
20
20
  export { TextOrHTML };
@@ -10,8 +10,8 @@ export interface TitleProps extends DOMProps, RefAttributes<TitleElementType> {
10
10
  title: string;
11
11
  description: string;
12
12
  }
13
- declare const Title: {
14
- ({ ref, ...props }: TitleProps): import("react/jsx-runtime").JSX.Element;
15
- displayName: string;
16
- };
13
+ declare function Title({ ref, ...props }: TitleProps): import("react/jsx-runtime").JSX.Element;
14
+ declare namespace Title {
15
+ var displayName: string;
16
+ }
17
17
  export { Title };
@@ -1,9 +1,5 @@
1
1
  import type { ToastOptions } from "./types";
2
- /**
3
- * Documentation-only component for ToastOptions.
4
- * Exists solely to provide ArgTypes for the toast() function options.
5
- */
6
- export declare const ToastOptionsDoc: {
7
- (_props: ToastOptions): null;
8
- displayName: string;
9
- };
2
+ export declare function ToastOptionsDoc(_props: ToastOptions): null;
3
+ export declare namespace ToastOptionsDoc {
4
+ var displayName: string;
5
+ }
@@ -13,7 +13,7 @@ export interface ToasterProps {
13
13
  /** Gap between toasts in pixels */
14
14
  gap?: number;
15
15
  }
16
- export declare const Toaster: {
17
- ({ position, closeButton, expand, duration, visibleToasts, gap, }: ToasterProps): import("react/jsx-runtime").JSX.Element;
18
- displayName: string;
19
- };
16
+ export declare function Toaster({ position, closeButton, expand, duration, visibleToasts, gap }: ToasterProps): import("react/jsx-runtime").JSX.Element;
17
+ export declare namespace Toaster {
18
+ var displayName: string;
19
+ }
@@ -34,6 +34,7 @@ export * from "./Segment";
34
34
  export * from "./Select";
35
35
  export * from "./Slider";
36
36
  export * from "./Stack";
37
+ export * from "./StickyOnMobile";
37
38
  export * from "./SVG";
38
39
  export * from "./Switch";
39
40
  export * from "./Table";
@@ -12,10 +12,9 @@ export interface UseButtonProps {
12
12
  name?: string | undefined;
13
13
  value?: string | undefined;
14
14
  }
15
- export declare function useButton({ elementType, type, isDisabled, href, target, rel, role, name, value, onClick, onPress, }: UseButtonProps): {
15
+ export declare function useButton({ elementType, type, isDisabled, href, target, rel, role, name, value, onClick, onPress }: UseButtonProps): {
16
16
  buttonProps: {
17
- onClick: (event: React.MouseEvent<HTMLButtonElement>) => void;
18
- type: "reset" | "submit" | "button";
17
+ type: "button" | "reset" | "submit";
19
18
  role?: undefined;
20
19
  href: string | undefined;
21
20
  target: string | undefined;
@@ -25,10 +24,10 @@ export declare function useButton({ elementType, type, isDisabled, href, target,
25
24
  "aria-disabled": true | undefined;
26
25
  name: string | undefined;
27
26
  value: string | undefined;
28
- } | {
29
27
  onClick: (event: React.MouseEvent<HTMLButtonElement>) => void;
30
- role: string | undefined;
28
+ } | {
31
29
  type?: undefined;
30
+ role: string | undefined;
32
31
  href: string | undefined;
33
32
  target: string | undefined;
34
33
  rel: string | undefined;
@@ -37,5 +36,6 @@ export declare function useButton({ elementType, type, isDisabled, href, target,
37
36
  "aria-disabled": true | undefined;
38
37
  name: string | undefined;
39
38
  value: string | undefined;
39
+ onClick: (event: React.MouseEvent<HTMLButtonElement>) => void;
40
40
  };
41
41
  };
@@ -19,7 +19,7 @@ export type LabellingProps = {
19
19
  "aria-describedby"?: string | undefined;
20
20
  "aria-details"?: string | undefined;
21
21
  };
22
- export declare function useLabel({ id: providedId, label, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, labelElementType, }: UseLabelProps): {
22
+ export declare function useLabel({ id: providedId, label, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, labelElementType }: UseLabelProps): {
23
23
  labelProps: {
24
24
  id?: string | undefined;
25
25
  } & LabelHTMLAttributes<HTMLLabelElement>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@simplybusiness/mobius",
3
3
  "license": "UNLICENSED",
4
- "version": "10.4.3",
4
+ "version": "10.5.0",
5
5
  "description": "Core library of Mobius react components",
6
6
  "repository": {
7
7
  "type": "git",
@@ -47,12 +47,12 @@
47
47
  "turbo:build": "yarn build:esm && yarn build:cjs && yarn build:types",
48
48
  "build:esm": "build-package esm",
49
49
  "build:cjs": "build-package cjs",
50
- "build:types": "tsc --emitDeclarationOnly --project tsconfig.build.json",
50
+ "build:types": "tsgo --emitDeclarationOnly --project tsconfig.build.json",
51
51
  "lint": "eslint . --cache",
52
52
  "lint:fix": "eslint . --fix",
53
53
  "test": "vitest run",
54
54
  "test:coverage": "vitest run --coverage",
55
- "check-types": "tsc --noEmit --pretty",
55
+ "check-types": "tsgo --pretty",
56
56
  "size": "turbo run turbo:size --",
57
57
  "turbo:size": "yarn workspace @simplybusiness/bundle-checker start",
58
58
  "lint:css": "lint-css",
@@ -63,33 +63,34 @@
63
63
  "dist/**/*.css"
64
64
  ],
65
65
  "devDependencies": {
66
- "@eslint/compat": "^2.0.2",
67
- "@eslint/eslintrc": "^3.3.4",
68
- "@eslint/js": "^9.39.3",
69
- "@react-types/progress": "^3.5.18",
66
+ "@eslint/compat": "^2.0.5",
67
+ "@eslint/eslintrc": "^3.3.5",
68
+ "@eslint/js": "^9.39.4",
69
+ "@react-types/progress": "^3.6.0",
70
70
  "@simplybusiness/build-scripts": "^3.0.0",
71
- "@simplybusiness/eslint-config": "^2.0.5",
72
- "@simplybusiness/eslint-plugin": "^1.3.1",
71
+ "@simplybusiness/eslint-config": "^2.0.7",
72
+ "@simplybusiness/eslint-plugin": "^1.3.2",
73
73
  "@testing-library/dom": "^10.4.1",
74
74
  "@testing-library/jest-dom": "6.9.1",
75
75
  "@testing-library/react": "^16.3.2",
76
76
  "@testing-library/user-event": "^14.6.1",
77
77
  "@total-typescript/shoehorn": "^0.1.2",
78
- "@types/node": "^25.3.3",
78
+ "@types/node": "^25.6.0",
79
79
  "@types/react": "^19.2.14",
80
80
  "@types/react-dom": "^19.2.3",
81
- "@typescript-eslint/eslint-plugin": "^8.56.1",
82
- "@typescript-eslint/parser": "^8.56.1",
83
- "@vitest/coverage-v8": "^4.0.18",
81
+ "@typescript-eslint/eslint-plugin": "^8.59.0",
82
+ "@typescript-eslint/parser": "^8.59.0",
83
+ "@typescript/native-preview": "7.0.0-dev.20260421.2",
84
+ "@vitest/coverage-v8": "^4.1.4",
84
85
  "csstype": "^3.2.3",
85
- "eslint": "^9.39.3",
86
+ "eslint": "^9.39.4",
86
87
  "eslint-plugin-ssr-friendly": "^1.3.0",
87
- "prettier": "^3.8.1",
88
- "react": "^19.2.4",
89
- "react-dom": "^19.2.4",
88
+ "prettier": "^3.8.3",
89
+ "react": "^19.2.5",
90
+ "react-dom": "^19.2.5",
90
91
  "tslib": "^2.8.1",
91
- "typescript": "^5.9.3",
92
- "vitest": "^4.0.18"
92
+ "typescript": "^6.0.3",
93
+ "vitest": "^4.1.4"
93
94
  },
94
95
  "peerDependencies": {
95
96
  "react": "^19.2.0",
@@ -97,8 +98,8 @@
97
98
  },
98
99
  "dependencies": {
99
100
  "@loadable/component": "^5.16.7",
100
- "@simplybusiness/icons": "^5.1.0",
101
- "@simplybusiness/mobius-hooks": "^0.2.0",
101
+ "@simplybusiness/icons": "^5.1.1",
102
+ "@simplybusiness/mobius-hooks": "^0.2.1",
102
103
  "classnames": "^2.5.1",
103
104
  "dialog-polyfill": "^0.5.6",
104
105
  "react-accessible-dropdown-menu-hook": "^4.0.1",
@@ -1,6 +1,5 @@
1
1
  import { createRef } from "react";
2
2
  import { render } from "@testing-library/react";
3
- import type { CSSProperties } from "react";
4
3
  import { Box } from ".";
5
4
 
6
5
  const CLASS_NAME = "mobius-box";
@@ -221,7 +220,7 @@ describe("Box", () => {
221
220
 
222
221
  it("does not remove prop padding when style padding is undefined", () => {
223
222
  const { container } = render(
224
- <Box padding={50} style={{ padding: undefined } as CSSProperties} />,
223
+ <Box padding={50} style={{ padding: undefined }} />,
225
224
  );
226
225
 
227
226
  expect(container.firstChild).toHaveStyle({ padding: "50px" });
@@ -31,13 +31,9 @@ const Breadcrumbs = ({ ref, ...props }: BreadcrumbsProps) => {
31
31
  <nav ref={ref} {...otherProps} {...navProps} className={classes}>
32
32
  <ul>
33
33
  {childArray.map((child, i) =>
34
- cloneElement(
35
- child as ReactElement,
36
- {
37
- key: i,
38
- isCurrent: i === childArray.length - 1,
39
- } as { key: number; isCurrent: boolean },
40
- ),
34
+ cloneElement(child as ReactElement<{ isCurrent?: boolean }>, {
35
+ isCurrent: i === childArray.length - 1,
36
+ }),
41
37
  )}
42
38
  </ul>
43
39
  </nav>
@@ -5,7 +5,7 @@ import type { ButtonProps } from "./Button";
5
5
  import { Button } from "./Button";
6
6
  import { Icon } from "../Icon";
7
7
  import { excludeControls } from "../../utils";
8
- // eslint-disable-next-line no-restricted-imports -- story-only styles
8
+
9
9
  import "./Button.story.styles.css";
10
10
 
11
11
  type StoryType = StoryObj<typeof Button>;
@@ -7,7 +7,7 @@ import { useBreakpoint } from "../../hooks";
7
7
  import { TextField } from "../TextField";
8
8
  import { VisuallyHidden } from "../VisuallyHidden";
9
9
  import { Listbox } from "./Listbox"; // Import Listbox component
10
- import type { ComboboxOption, ComboboxProps, ComboboxRef } from "./types";
10
+ import type { ComboboxOption, ComboboxProps } from "./types";
11
11
  import { useComboboxHighlight } from "./useComboboxHighlight";
12
12
  import { useComboboxOptions } from "./useComboboxOptions";
13
13
  import { getOptionLabel, getOptionValue, isOptionGroup } from "./utils";
@@ -406,6 +406,4 @@ const ComboboxInner = <T extends ComboboxOption>({
406
406
  );
407
407
  };
408
408
 
409
- export const Combobox = ComboboxInner as <T extends ComboboxOption>(
410
- props: ComboboxProps<T> & { ref?: ComboboxRef },
411
- ) => React.JSX.Element;
409
+ export const Combobox = ComboboxInner;
@@ -7,7 +7,7 @@ import { DropdownMenu } from ".";
7
7
  import { excludeControls } from "../../utils";
8
8
  import { StoryContainer } from "../../utils/StoryContainer";
9
9
  import { Icon } from "../Icon";
10
- // eslint-disable-next-line no-restricted-imports -- story-only styles
10
+
11
11
  import "./DropdownMenu.story.styles.css";
12
12
 
13
13
  type StoryType = StoryObj<typeof DropdownMenu>;
@@ -39,12 +39,9 @@ const Item = ({ ref, ...props }: ItemProps) => {
39
39
  (child.props as { className?: string }).className,
40
40
  classes,
41
41
  );
42
- return cloneElement(
43
- child as ReactElement,
44
- {
45
- className: childClasses,
46
- } as { className: string },
47
- );
42
+ return cloneElement(child as ReactElement<{ className?: string }>, {
43
+ className: childClasses,
44
+ });
48
45
  }
49
46
 
50
47
  return <span className={classes}>{child}</span>;
@@ -6,7 +6,7 @@ import { Box } from "../Box";
6
6
  import { Flex } from "../Flex";
7
7
  import type { GridItem } from "./Item";
8
8
  import { sizeOptions } from "../../utils";
9
- // eslint-disable-next-line no-restricted-imports -- story-only styles
9
+
10
10
  import "./Grid.story.styles.css";
11
11
 
12
12
  type StoryType = StoryObj<typeof Grid>;
@@ -0,0 +1,19 @@
1
+ @layer atoms {
2
+ @media (max-width: 768px) {
3
+ .mobius-sticky-on-mobile {
4
+ position: fixed;
5
+ bottom: 0;
6
+ left: 0;
7
+ right: 0;
8
+ box-sizing: border-box;
9
+ padding: var(--size-sm);
10
+ padding-bottom: max(var(--size-sm), env(safe-area-inset-bottom));
11
+ background-color: var(--color-background);
12
+ /* Second shadow paints a 1px background-coloured band below the bar so sub-pixel rounding can't reveal a hairline gap. */
13
+ box-shadow: var(--shadow-card),
14
+ 0 1px 0 var(--color-background);
15
+ /* Sit above Zendesk's launcher (z-index: 999999). */
16
+ z-index: 999999;
17
+ }
18
+ }
19
+ }
@@ -0,0 +1,52 @@
1
+ import { Meta, ArgTypes, Canvas } from "@storybook/addon-docs/blocks";
2
+ import * as StickyOnMobileStories from "./StickyOnMobile.stories";
3
+ import { StickyOnMobile } from "./StickyOnMobile";
4
+
5
+ <Meta of={StickyOnMobileStories} />
6
+
7
+ # StickyOnMobile
8
+
9
+ `StickyOnMobile` is a thin layout wrapper that pins a single child to the bottom of the viewport on mobile (`max-width: 768px`) and renders in document flow on desktop. Use it for primary CTAs such as the Combined Payments checkout button.
10
+
11
+ ## Install
12
+
13
+ ```bash
14
+ yarn add @simplybusiness/mobius
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ ```js
20
+ import { StickyOnMobile } from "@simplybusiness/mobius";
21
+ ```
22
+
23
+ ### Default
24
+
25
+ <Canvas of={StickyOnMobileStories.Default} />
26
+
27
+ ### As a `footer` element
28
+
29
+ <Canvas of={StickyOnMobileStories.AsFooterElement} />
30
+
31
+ ## Behaviour
32
+
33
+ - **≥ 769px** — renders as a plain block element with no margin or padding. The wrapper has no material impact on layout.
34
+ - **≤ 768px** — clamped to the bottom of the viewport with `position: fixed; bottom: 0; left: 0; right: 0;`. White background (`var(--color-background)`) and a soft upward shadow visually layer the bar above the scrolling content. Padding of `var(--size-sm)` is applied, with `env(safe-area-inset-bottom)` honoured for iOS home-indicator safe area.
35
+
36
+ ## Composition
37
+
38
+ `StickyOnMobile` accepts a single child. For complex content, compose it into its own component first.
39
+
40
+ The breakpoint is fixed at 768px and is **not** dynamic. To override it, pass a `className` and rely on consumer-side CSS — `StickyOnMobile`'s rules sit inside `@layer atoms`, so any unlayered consumer rule wins.
41
+
42
+ ## Props
43
+
44
+ <ArgTypes of={StickyOnMobile} />
45
+
46
+ ## Component HTML Structure and Class names
47
+
48
+ The following HTML is rendered for a StickyOnMobile:
49
+
50
+ ```html
51
+ <div class="mobius mobius-sticky-on-mobile">{children}</div>
52
+ ```