@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
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-2JLZNSLY.js";
15
15
  import {
16
16
  TextField
17
- } from "./chunk-IQKS662C.js";
17
+ } from "./chunk-AKCNBW55.js";
18
18
  import {
19
19
  VisuallyHidden
20
20
  } from "./chunk-PRZRE6A5.js";
@@ -352,4 +352,4 @@ var Combobox = ComboboxInner;
352
352
  export {
353
353
  Combobox
354
354
  };
355
- //# sourceMappingURL=chunk-NEFRXIFY.js.map
355
+ //# sourceMappingURL=chunk-53QMWUHB.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/Combobox/Combobox.tsx"],
4
+ "sourcesContent": ["import { useOnUnmount } from \"@simplybusiness/mobius-hooks\";\nimport classNames from \"classnames/dedupe\";\nimport type React from \"react\";\nimport type { FocusEvent } from \"react\";\nimport { useEffect, useId, useRef, useState } from \"react\";\nimport { useBreakpoint } from \"../../hooks\";\nimport { TextField } from \"../TextField\";\nimport { VisuallyHidden } from \"../VisuallyHidden\";\nimport { Listbox } from \"./Listbox\"; // Import Listbox component\nimport type { ComboboxOption, ComboboxProps } from \"./types\";\nimport { useComboboxHighlight } from \"./useComboboxHighlight\";\nimport { useComboboxOptions } from \"./useComboboxOptions\";\nimport { getOptionLabel, getOptionValue, isOptionGroup } from \"./utils\";\nimport \"./Combobox.css\";\n\nconst ComboboxInner = <T extends ComboboxOption>({\n ref,\n ...props\n}: ComboboxProps<T>) => {\n const {\n id,\n defaultValue,\n value,\n options,\n asyncOptions,\n delay,\n minSearchLength,\n onSelected,\n className,\n placeholder,\n icon,\n onBlur,\n onFocus,\n onChange,\n // onSearched, // unused prop, consider removing\n optionComponent,\n optionTestIdPrefix,\n errorMessage,\n ...otherProps\n } = props;\n // Avoid re-fetching after selecting an option\n const skipNextDebounceRef = useRef(false);\n const fallbackRef = useRef<HTMLInputElement>(null);\n const [inputValue, setInputValue] = useState(defaultValue || \"\");\n const [isOpen, setIsOpen] = useState(false);\n const [isChanging, setIsChanging] = useState(false);\n const { filteredOptions, updateFilteredOptions, isLoading, error } =\n useComboboxOptions({\n options,\n asyncOptions,\n inputValue,\n delay,\n minSearchLength,\n skipNextDebounceRef,\n });\n const [validationError, setValidationError] = useState(\n error?.message || errorMessage,\n );\n const {\n highlightedIndex,\n highlightedGroupIndex,\n highlightNextOption,\n highlightPreviousOption,\n highlightFirstOption,\n highlightLastOption,\n clearHighlight,\n } = useComboboxHighlight(filteredOptions);\n\n const inputRef = ref || fallbackRef;\n const listboxId = useId();\n const statusId = useId();\n const blurTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n const userInteractedRef = useRef(false);\n const justSelectedRef = useRef(false);\n const { down } = useBreakpoint();\n const isMobile = down(\"md\");\n\n useEffect(() => {\n setValidationError(error?.message || errorMessage);\n }, [error, errorMessage]);\n\n // Helper to create properly-typed empty value based on option type\n const getEmptyValue = (): T => {\n // Check first available option to determine if we're using string or object options\n const firstOption = filteredOptions\n ? isOptionGroup(filteredOptions)\n ? filteredOptions[0]?.options[0]\n : filteredOptions[0]\n : options\n ? isOptionGroup(options)\n ? options[0]?.options[0]\n : options[0]\n : undefined;\n\n // If options are strings, return empty string\n if (typeof firstOption === \"string\") {\n return \"\" as T;\n }\n\n // If options are objects, return empty object with same shape\n return { label: \"\", value: \"\" } as T;\n };\n\n const handleFocus = (e: FocusEvent) => {\n onFocus?.(e);\n if (!filteredOptions || filteredOptions.length === 0) return;\n if (blurTimeoutRef.current) {\n clearTimeout(blurTimeoutRef.current);\n blurTimeoutRef.current = null;\n }\n\n // Check if this is natural focus (user click/Tab) or programmatic focus\n const isNaturalFocus =\n userInteractedRef.current || e.relatedTarget !== null;\n if (userInteractedRef.current) {\n userInteractedRef.current = false;\n }\n\n // Block opening only if programmatic focus right after selection\n if (justSelectedRef.current && !isNaturalFocus) {\n return;\n }\n\n // Open dropdown for natural focus\n if (isNaturalFocus) {\n setIsOpen(true);\n justSelectedRef.current = false;\n }\n };\n\n useEffect(() => {\n if (!inputRef || typeof inputRef === \"function\") return;\n const inputElement = inputRef.current;\n if (!inputElement) return;\n\n const handleMouseDown = () => {\n // Track that user clicked/interacted with input\n userInteractedRef.current = true;\n };\n\n inputElement.addEventListener(\"mousedown\", handleMouseDown);\n return () => {\n inputElement.removeEventListener(\"mousedown\", handleMouseDown);\n };\n }, [inputRef]);\n\n useOnUnmount(() => {\n if (blurTimeoutRef.current) {\n clearTimeout(blurTimeoutRef.current);\n }\n });\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setInputValue(newValue);\n setValidationError(undefined);\n justSelectedRef.current = false;\n setIsChanging(true);\n // Only open immediately for sync options; async options controlled by useEffect\n if (!asyncOptions) {\n setIsOpen(true);\n }\n clearHighlight();\n onChange?.(e);\n };\n\n const handleOptionSelect = (option: T) => {\n const val = getOptionValue(option);\n\n // Allow empty values to pass through\n if (!val && val !== \"\") return;\n\n if (\n typeof option === \"object\" &&\n \"callback\" in option &&\n option.callback &&\n typeof option.callback === \"function\"\n ) {\n justSelectedRef.current = true;\n setTimeout(() => {\n if (inputRef && typeof inputRef !== \"function\" && inputRef.current) {\n inputRef.current.focus();\n }\n }, 0);\n const callbackPromise = option.callback();\n updateFilteredOptions(callbackPromise);\n callbackPromise\n .then(() => {\n setIsOpen(true);\n setIsChanging(true);\n })\n .catch(() => {\n // error handled inside updateFilteredOptions via setError\n });\n return;\n }\n\n // Prevent re-fetching options after selecting an option\n skipNextDebounceRef.current = true;\n justSelectedRef.current = true;\n\n setIsChanging(false);\n setValidationError(undefined);\n setIsOpen(false);\n setInputValue(val);\n onSelected?.(option);\n };\n\n const getFirstOption = () => {\n if (!filteredOptions) return undefined;\n if (isOptionGroup(filteredOptions)) {\n return filteredOptions[0]?.options[0];\n }\n\n return filteredOptions[0];\n };\n\n const getHighlightedOption = () => {\n if (!filteredOptions) return undefined;\n if (highlightedIndex === -1) return undefined;\n\n if (isOptionGroup(filteredOptions)) {\n const group = filteredOptions[highlightedGroupIndex];\n return group?.options[highlightedIndex];\n }\n\n return filteredOptions[highlightedIndex];\n };\n\n const getHighlightedOptionId = () => {\n const option = getHighlightedOption();\n if (!option) return undefined;\n\n if (isOptionGroup(filteredOptions)) {\n return `${listboxId}-option-${highlightedGroupIndex}-${highlightedIndex}`;\n }\n\n return `${listboxId}-option-${highlightedIndex}`;\n };\n\n const handleBlur = (e: FocusEvent<Element, Element>) => {\n // Force selection if user has matched an entry by typing (not already selected)\n // Defer this to allow natural focus flow to complete first\n if (!justSelectedRef.current) {\n const typedText = inputValue.trim();\n const typedTextLower = typedText.toLowerCase();\n const highlightedOption = getHighlightedOption();\n const label = getOptionLabel(highlightedOption);\n\n if (typedTextLower === label?.toLowerCase()) {\n // Exact match with an option\n setTimeout(() => {\n handleOptionSelect(highlightedOption as T);\n }, 0);\n } else if (typedText === \"\") {\n // Allow empty values\n setTimeout(() => {\n handleOptionSelect(getEmptyValue());\n }, 0);\n } else {\n // Invalid value (not in options and not empty)\n setValidationError(\n errorMessage || \"Please select an option from the list\",\n );\n setTimeout(() => {\n setInputValue(\"\");\n }, 0);\n }\n }\n\n blurTimeoutRef.current = setTimeout(() => {\n onBlur?.(e);\n setIsOpen(false);\n setIsChanging(false);\n }, 150);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n justSelectedRef.current = false;\n setIsOpen(true);\n highlightNextOption();\n break;\n case \"ArrowUp\":\n e.preventDefault();\n justSelectedRef.current = false;\n setIsOpen(true);\n highlightPreviousOption();\n break;\n case \"Home\":\n e.preventDefault();\n justSelectedRef.current = false;\n setIsOpen(true);\n highlightFirstOption();\n break;\n case \"End\":\n e.preventDefault();\n justSelectedRef.current = false;\n setIsOpen(true);\n highlightLastOption();\n break;\n case \"Enter\":\n e.preventDefault();\n if (isOpen) {\n const selectedOption = getHighlightedOption() || getFirstOption();\n if (selectedOption) {\n handleOptionSelect(selectedOption);\n }\n }\n break;\n case \"Escape\":\n e.preventDefault();\n setInputValue(\"\");\n setIsOpen(false);\n clearHighlight();\n break;\n default:\n // Do nothing\n }\n };\n\n useEffect(() => {\n if (value) {\n setInputValue(value);\n }\n }, [value]);\n\n // Open and close the combobox based on async filtered options\n useEffect(() => {\n if (asyncOptions && isChanging) {\n setIsOpen(!!filteredOptions && filteredOptions.length > 0);\n }\n }, [filteredOptions, asyncOptions, isChanging]);\n\n const classes = classNames(\n \"mobius mobius-combobox\",\n {\n \"mobius-combobox--is-expanded\": isOpen,\n \"mobius-combobox--is-loading\": isLoading,\n \"mobius-combobox--is-mobile\": isMobile,\n },\n className,\n );\n\n const getStatusMessage = () => {\n if (isLoading) return \"Loading options\";\n if (!filteredOptions || filteredOptions.length === 0) {\n return isChanging ? \"No options found\" : \"\";\n }\n const count = isOptionGroup(filteredOptions)\n ? filteredOptions.reduce((sum, group) => sum + group.options.length, 0)\n : filteredOptions.length;\n return isOpen && isChanging\n ? `${count} option${count === 1 ? \"\" : \"s\"} available`\n : \"\";\n };\n\n return (\n <div id={id} data-testid=\"mobius-combobox__wrapper\" className={classes}>\n <VisuallyHidden\n role=\"status\"\n aria-live=\"polite\"\n id={statusId}\n elementType=\"div\"\n className=\"mobius-combobox__status\"\n >\n {getStatusMessage()}\n </VisuallyHidden>\n <TextField\n {...otherProps}\n className=\"mobius-combobox__input\"\n role=\"combobox\"\n value={inputValue}\n placeholder={placeholder}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onChange={handleInputChange}\n autoComplete=\"off\"\n aria-describedby={isLoading ? statusId : undefined}\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-controls={isOpen ? listboxId : undefined}\n aria-expanded={isOpen}\n aria-activedescendant={\n highlightedIndex === -1 ? undefined : getHighlightedOptionId()\n }\n prefixInside={icon}\n ref={inputRef}\n errorMessage={errorMessage || validationError || error?.message}\n />\n <Listbox\n id={listboxId}\n isOpen={isOpen}\n isLoading={isLoading}\n options={filteredOptions}\n highlightedIndex={highlightedIndex}\n highlightedGroupIndex={highlightedGroupIndex}\n onOptionSelect={handleOptionSelect}\n optionComponent={optionComponent}\n optionTestIdPrefix={optionTestIdPrefix}\n />\n </div>\n );\n};\n\nexport const Combobox = ComboboxInner;\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -22,12 +22,9 @@ var Item = ({ ref, ...props }) => {
22
22
  child.props.className,
23
23
  classes
24
24
  );
25
- return cloneElement(
26
- child,
27
- {
28
- className: childClasses
29
- }
30
- );
25
+ return cloneElement(child, {
26
+ className: childClasses
27
+ });
31
28
  }
32
29
  return /* @__PURE__ */ jsx("span", { className: classes, children: child });
33
30
  }) });
@@ -37,4 +34,4 @@ Item.displayName = "DropdownMenu.Item";
37
34
  export {
38
35
  Item
39
36
  };
40
- //# sourceMappingURL=chunk-4HI2AOBC.js.map
37
+ //# sourceMappingURL=chunk-6TSYA7CJ.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/components/DropdownMenu/Item.tsx"],
4
- "sourcesContent": ["import type { Ref, RefAttributes, ReactNode, ReactElement } from \"react\";\nimport { cloneElement, isValidElement, Children } from \"react\";\nimport classNames from \"classnames/dedupe\";\nimport type { DOMProps } from \"../../types/dom\";\n\nexport type ItemElementType = HTMLLIElement;\n\nexport interface ItemProps extends DOMProps, RefAttributes<ItemElementType> {\n elementType?: React.ElementType;\n /** Custom class name for setting specific CSS */\n className?: string;\n active?: boolean;\n children?: ReactNode;\n onClick?: () => void;\n}\n\nexport type ItemRef = Ref<ItemElementType>;\n\nconst Item = ({ ref, ...props }: ItemProps) => {\n const {\n elementType: Element = \"li\",\n active,\n onClick,\n children,\n ...otherProps\n } = props;\n const classes = classNames(\n \"mobius\",\n \"mobius-dropdown-menu__item\",\n { \"--is-active\": active },\n otherProps.className,\n );\n\n return (\n <Element ref={ref} onClick={onClick} {...otherProps}>\n {Children.map(children, child => {\n if (isValidElement(child)) {\n const childClasses = classNames(\n (child.props as { className?: string }).className,\n classes,\n );\n return cloneElement(\n child as ReactElement,\n {\n className: childClasses,\n } as { className: string },\n );\n }\n\n return <span className={classes}>{child}</span>;\n })}\n </Element>\n );\n};\n\nItem.displayName = \"DropdownMenu.Item\";\nexport { Item };\n"],
5
- "mappings": ";AACA,SAAS,cAAc,gBAAgB,gBAAgB;AACvD,OAAO,gBAAgB;AA+CR;AA/Bf,IAAM,OAAO,CAAC,EAAE,KAAK,GAAG,MAAM,MAAiB;AAC7C,QAAM;AAAA,IACJ,aAAa,UAAU;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AACJ,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA,EAAE,eAAe,OAAO;AAAA,IACxB,WAAW;AAAA,EACb;AAEA,SACE,oBAAC,WAAQ,KAAU,SAAmB,GAAG,YACtC,mBAAS,IAAI,UAAU,WAAS;AAC/B,QAAI,eAAe,KAAK,GAAG;AACzB,YAAM,eAAe;AAAA,QAClB,MAAM,MAAiC;AAAA,QACxC;AAAA,MACF;AACA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,UACE,WAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAEA,WAAO,oBAAC,UAAK,WAAW,SAAU,iBAAM;AAAA,EAC1C,CAAC,GACH;AAEJ;AAEA,KAAK,cAAc;",
4
+ "sourcesContent": ["import type { Ref, RefAttributes, ReactNode, ReactElement } from \"react\";\nimport { cloneElement, isValidElement, Children } from \"react\";\nimport classNames from \"classnames/dedupe\";\nimport type { DOMProps } from \"../../types/dom\";\n\nexport type ItemElementType = HTMLLIElement;\n\nexport interface ItemProps extends DOMProps, RefAttributes<ItemElementType> {\n elementType?: React.ElementType;\n /** Custom class name for setting specific CSS */\n className?: string;\n active?: boolean;\n children?: ReactNode;\n onClick?: () => void;\n}\n\nexport type ItemRef = Ref<ItemElementType>;\n\nconst Item = ({ ref, ...props }: ItemProps) => {\n const {\n elementType: Element = \"li\",\n active,\n onClick,\n children,\n ...otherProps\n } = props;\n const classes = classNames(\n \"mobius\",\n \"mobius-dropdown-menu__item\",\n { \"--is-active\": active },\n otherProps.className,\n );\n\n return (\n <Element ref={ref} onClick={onClick} {...otherProps}>\n {Children.map(children, child => {\n if (isValidElement(child)) {\n const childClasses = classNames(\n (child.props as { className?: string }).className,\n classes,\n );\n return cloneElement(child as ReactElement<{ className?: string }>, {\n className: childClasses,\n });\n }\n\n return <span className={classes}>{child}</span>;\n })}\n </Element>\n );\n};\n\nItem.displayName = \"DropdownMenu.Item\";\nexport { Item };\n"],
5
+ "mappings": ";AACA,SAAS,cAAc,gBAAgB,gBAAgB;AACvD,OAAO,gBAAgB;AA4CR;AA5Bf,IAAM,OAAO,CAAC,EAAE,KAAK,GAAG,MAAM,MAAiB;AAC7C,QAAM;AAAA,IACJ,aAAa,UAAU;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AACJ,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA,EAAE,eAAe,OAAO;AAAA,IACxB,WAAW;AAAA,EACb;AAEA,SACE,oBAAC,WAAQ,KAAU,SAAmB,GAAG,YACtC,mBAAS,IAAI,UAAU,WAAS;AAC/B,QAAI,eAAe,KAAK,GAAG;AACzB,YAAM,eAAe;AAAA,QAClB,MAAM,MAAiC;AAAA,QACxC;AAAA,MACF;AACA,aAAO,aAAa,OAA+C;AAAA,QACjE,WAAW;AAAA,MACb,CAAC;AAAA,IACH;AAEA,WAAO,oBAAC,UAAK,WAAW,SAAU,iBAAM;AAAA,EAC1C,CAAC,GACH;AAEJ;AAEA,KAAK,cAAc;",
6
6
  "names": []
7
7
  }
@@ -2,13 +2,11 @@ var __typeError = (msg) => {
2
2
  throw TypeError(msg);
3
3
  };
4
4
  var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
5
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
6
5
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
7
6
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
8
7
 
9
8
  export {
10
- __privateGet,
11
9
  __privateAdd,
12
10
  __privateSet
13
11
  };
14
- //# sourceMappingURL=chunk-VHAA22YE.js.map
12
+ //# sourceMappingURL=chunk-A7KFYNH6.js.map
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  adornmentWithClassName
3
- } from "./chunk-IM3I5CZL.js";
3
+ } from "./chunk-I6CFRGID.js";
4
4
  import {
5
5
  ErrorMessage
6
6
  } from "./chunk-MZJT3USG.js";
7
- import {
8
- Stack
9
- } from "./chunk-XH3OJQMW.js";
10
7
  import {
11
8
  Label
12
9
  } from "./chunk-ZN7OWLZY.js";
10
+ import {
11
+ Stack
12
+ } from "./chunk-XH3OJQMW.js";
13
13
  import {
14
14
  useTextField
15
15
  } from "./chunk-UYVF3QSW.js";
@@ -19,9 +19,10 @@ import {
19
19
 
20
20
  // src/components/TextField/TextField.tsx
21
21
  import classNames from "classnames/dedupe";
22
+ import { memo } from "react";
22
23
  import "@simplybusiness/mobius/src/components/TextField/TextField.css";
23
24
  import { jsx, jsxs } from "react/jsx-runtime";
24
- var TextField = ({ ref, ...props }) => {
25
+ var TextFieldInner = ({ ref, ...props }) => {
25
26
  const {
26
27
  isDisabled,
27
28
  type = "text",
@@ -115,9 +116,10 @@ var TextField = ({ ref, ...props }) => {
115
116
  /* @__PURE__ */ jsx(ErrorMessage, { ...errorMessageProps, errorMessage })
116
117
  ] });
117
118
  };
119
+ var TextField = memo(TextFieldInner);
118
120
  TextField.displayName = "TextField";
119
121
 
120
122
  export {
121
123
  TextField
122
124
  };
123
- //# sourceMappingURL=chunk-IQKS662C.js.map
125
+ //# sourceMappingURL=chunk-AKCNBW55.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/TextField/TextField.tsx"],
4
+ "sourcesContent": ["\"use client\";\n\nimport classNames from \"classnames/dedupe\";\nimport { memo } from \"react\";\nimport type {\n HTMLInputTypeAttribute,\n ReactElement,\n ReactNode,\n Ref,\n RefAttributes,\n} from \"react\";\nimport type { UseTextFieldProps } from \"../../hooks\";\nimport { useTextField, useValidationClasses } from \"../../hooks\";\nimport type { DOMProps, FocusEvents } from \"../../types\";\nimport { ErrorMessage } from \"../ErrorMessage\";\nimport { Label } from \"../Label\";\nimport { Stack } from \"../Stack\";\nimport { adornmentWithClassName } from \"./adornmentWithClassName\";\nimport \"./TextField.css\";\n\nexport type TextFieldElementType = HTMLInputElement;\nexport interface TextFieldProps\n extends\n DOMProps,\n FocusEvents,\n UseTextFieldProps,\n RefAttributes<TextFieldElementType> {\n className?: string;\n errorMessage?: string;\n children?: ReactNode;\n label?: string;\n type?: Exclude<\n HTMLInputTypeAttribute,\n | \"button\"\n | \"checkbox\"\n | \"color\"\n | \"date\"\n | \"datetime-local\"\n | \"file\"\n | \"image\"\n | \"month\"\n | \"radio\"\n | \"range\"\n | \"reset\"\n | \"submit\"\n | \"week\"\n >;\n prefixInside?: ReactElement;\n prefixOutside?: ReactElement;\n suffixInside?: ReactElement;\n suffixOutside?: ReactElement;\n}\n\nexport type TextFieldRef = Ref<TextFieldElementType>;\n\nconst TextFieldInner = ({ ref, ...props }: TextFieldProps) => {\n const {\n isDisabled,\n type = \"text\",\n isInvalid,\n className,\n label,\n errorMessage,\n children,\n isRequired,\n prefixInside,\n prefixOutside,\n suffixInside,\n suffixOutside,\n autoComplete,\n isReadOnly,\n ...otherProps\n } = props;\n\n const resolvedAutoComplete =\n autoComplete ??\n (type === \"email\" ? \"email\" : type === \"tel\" ? \"tel\" : undefined);\n\n const { inputProps, labelProps, errorMessageProps } = useTextField({\n ...props,\n autoComplete: resolvedAutoComplete,\n \"aria-errormessage\": errorMessage,\n });\n\n const hidden = type === \"hidden\";\n\n const validationClasses = useValidationClasses({ isInvalid });\n\n const textfieldClasses = {\n \"--is-disabled\": isDisabled,\n \"--is-required\": typeof isRequired === \"boolean\" && isRequired,\n \"--is-optional\": typeof isRequired === \"boolean\" && !isRequired,\n \"--is-hidden\": hidden,\n [className || \"\"]: true,\n };\n\n const sharedClasses = classNames(validationClasses, textfieldClasses);\n\n const labelClasses = classNames(\n {\n \"--is-disabled\": isDisabled,\n },\n validationClasses,\n );\n\n const containerClasses = classNames(\n \"mobius\",\n \"mobius-text-field\",\n sharedClasses,\n );\n\n const inputClasses = classNames(\n \"mobius\",\n \"mobius-text-field__input\",\n sharedClasses,\n );\n\n const inputWrapperClasses = classNames(\n \"mobius-text-field__input-wrapper\",\n sharedClasses,\n );\n\n return (\n <Stack gap=\"xs\" className={containerClasses}>\n {label && !hidden && (\n <Label {...labelProps} className={labelClasses}>\n {label}\n </Label>\n )}\n <div className=\"mobius-text-field__inner-container\">\n {adornmentWithClassName(\n prefixOutside,\n labelClasses,\n \"mobius-text-field__prefix-outside\",\n )}\n <div className={inputWrapperClasses}>\n {adornmentWithClassName(\n prefixInside,\n labelClasses,\n \"mobius-text-field__prefix-inside\",\n )}\n <input\n {...otherProps}\n {...inputProps}\n ref={ref}\n type={type}\n className={inputClasses}\n />\n {adornmentWithClassName(\n suffixInside,\n labelClasses,\n \"mobius-text-field__suffix-inside\",\n )}\n </div>\n {adornmentWithClassName(\n suffixOutside,\n labelClasses,\n \"mobius-text-field__suffix-outside\",\n )}\n </div>\n {children && (\n <div className=\"mobius-text-field__children\">{children}</div>\n )}\n\n <ErrorMessage {...errorMessageProps} errorMessage={errorMessage} />\n </Stack>\n );\n};\n\nconst TextField = memo(TextFieldInner);\nTextField.displayName = \"TextField\";\nexport { TextField };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAEA,OAAO,gBAAgB;AACvB,SAAS,YAAY;AAerB,OAAO;AA2GC,cAUA,YAVA;AAtER,IAAM,iBAAiB,CAAC,EAAE,KAAK,GAAG,MAAM,MAAsB;AAC5D,QAAM;AAAA,IACJ;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,uBACJ,iBACC,SAAS,UAAU,UAAU,SAAS,QAAQ,QAAQ;AAEzD,QAAM,EAAE,YAAY,YAAY,kBAAkB,IAAI,aAAa;AAAA,IACjE,GAAG;AAAA,IACH,cAAc;AAAA,IACd,qBAAqB;AAAA,EACvB,CAAC;AAED,QAAM,SAAS,SAAS;AAExB,QAAM,oBAAoB,qBAAqB,EAAE,UAAU,CAAC;AAE5D,QAAM,mBAAmB;AAAA,IACvB,iBAAiB;AAAA,IACjB,iBAAiB,OAAO,eAAe,aAAa;AAAA,IACpD,iBAAiB,OAAO,eAAe,aAAa,CAAC;AAAA,IACrD,eAAe;AAAA,IACf,CAAC,aAAa,EAAE,GAAG;AAAA,EACrB;AAEA,QAAM,gBAAgB,WAAW,mBAAmB,gBAAgB;AAEpE,QAAM,eAAe;AAAA,IACnB;AAAA,MACE,iBAAiB;AAAA,IACnB;AAAA,IACA;AAAA,EACF;AAEA,QAAM,mBAAmB;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,eAAe;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,sBAAsB;AAAA,IAC1B;AAAA,IACA;AAAA,EACF;AAEA,SACE,qBAAC,SAAM,KAAI,MAAK,WAAW,kBACxB;AAAA,aAAS,CAAC,UACT,oBAAC,SAAO,GAAG,YAAY,WAAW,cAC/B,iBACH;AAAA,IAEF,qBAAC,SAAI,WAAU,sCACZ;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,qBAAC,SAAI,WAAW,qBACb;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACH,GAAG;AAAA,YACJ;AAAA,YACA;AAAA,YACA,WAAW;AAAA;AAAA,QACb;AAAA,QACC;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,SACF;AAAA,MACC;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,OACF;AAAA,IACC,YACC,oBAAC,SAAI,WAAU,+BAA+B,UAAS;AAAA,IAGzD,oBAAC,gBAAc,GAAG,mBAAmB,cAA4B;AAAA,KACnE;AAEJ;AAEA,IAAM,YAAY,KAAK,cAAc;AACrC,UAAU,cAAc;",
6
+ "names": []
7
+ }
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  ErrorMessage
3
3
  } from "./chunk-MZJT3USG.js";
4
- import {
5
- Stack
6
- } from "./chunk-XH3OJQMW.js";
7
4
  import {
8
5
  Label
9
6
  } from "./chunk-ZN7OWLZY.js";
7
+ import {
8
+ Stack
9
+ } from "./chunk-XH3OJQMW.js";
10
10
  import {
11
11
  TextAreaInput
12
12
  } from "./chunk-BM4M36KU.js";
@@ -61,4 +61,4 @@ TextArea.displayName = "TextArea";
61
61
  export {
62
62
  TextArea
63
63
  };
64
- //# sourceMappingURL=chunk-6JCU4CGA.js.map
64
+ //# sourceMappingURL=chunk-AZUVQRYC.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-CI5GCPUG.js";
5
5
  import {
6
6
  TextField
7
- } from "./chunk-IQKS662C.js";
7
+ } from "./chunk-AKCNBW55.js";
8
8
  import {
9
9
  mergeRefs
10
10
  } from "./chunk-QGGILW3D.js";
@@ -97,4 +97,4 @@ export {
97
97
  MIN_MAX_ERROR,
98
98
  DateField
99
99
  };
100
- //# sourceMappingURL=chunk-XNEQHHNV.js.map
100
+ //# sourceMappingURL=chunk-C2QJDKXS.js.map
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-CTY6LDFI.js.map
@@ -1,12 +1,12 @@
1
- import {
2
- Header
3
- } from "./chunk-UZV5PZ7R.js";
4
1
  import {
5
2
  Content
6
3
  } from "./chunk-WHRUNWJI.js";
7
4
  import {
8
5
  Drawer
9
6
  } from "./chunk-VYQRTISC.js";
7
+ import {
8
+ Header
9
+ } from "./chunk-UZV5PZ7R.js";
10
10
 
11
11
  // src/components/Drawer/index.tsx
12
12
  var Drawer2 = Object.assign(Drawer, {
@@ -18,4 +18,4 @@ Drawer2.displayName = "Drawer";
18
18
  export {
19
19
  Drawer2 as Drawer
20
20
  };
21
- //# sourceMappingURL=chunk-KFHPI67N.js.map
21
+ //# sourceMappingURL=chunk-GJBH37DH.js.map
@@ -3,9 +3,10 @@ import classNames from "classnames/dedupe";
3
3
  import { cloneElement } from "react";
4
4
  var adornmentWithClassName = (component, validationClasses, className) => {
5
5
  if (!component) return null;
6
- return cloneElement(component, {
6
+ const typedComponent = component;
7
+ return cloneElement(typedComponent, {
7
8
  className: classNames(
8
- component.props.className,
9
+ typedComponent.props.className,
9
10
  validationClasses,
10
11
  className
11
12
  )
@@ -15,4 +16,4 @@ var adornmentWithClassName = (component, validationClasses, className) => {
15
16
  export {
16
17
  adornmentWithClassName
17
18
  };
18
- //# sourceMappingURL=chunk-IM3I5CZL.js.map
19
+ //# sourceMappingURL=chunk-I6CFRGID.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/components/TextField/adornmentWithClassName.ts"],
4
- "sourcesContent": ["import classNames from \"classnames/dedupe\";\nimport type { ReactElement } from \"react\";\nimport { cloneElement } from \"react\";\n\nexport const adornmentWithClassName = (\n component?: ReactElement,\n validationClasses?: string,\n className?: string,\n) => {\n if (!component) return null;\n\n return cloneElement(component, {\n className: classNames(\n (component.props as { className?: string }).className,\n validationClasses,\n className,\n ),\n } as { className: string });\n};\n"],
5
- "mappings": ";AAAA,OAAO,gBAAgB;AAEvB,SAAS,oBAAoB;AAEtB,IAAM,yBAAyB,CACpC,WACA,mBACA,cACG;AACH,MAAI,CAAC,UAAW,QAAO;AAEvB,SAAO,aAAa,WAAW;AAAA,IAC7B,WAAW;AAAA,MACR,UAAU,MAAiC;AAAA,MAC5C;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAA0B;AAC5B;",
4
+ "sourcesContent": ["import classNames from \"classnames/dedupe\";\nimport type { ReactElement } from \"react\";\nimport { cloneElement } from \"react\";\n\nexport const adornmentWithClassName = (\n component?: ReactElement,\n validationClasses?: string,\n className?: string,\n) => {\n if (!component) return null;\n\n const typedComponent = component as ReactElement<{ className?: string }>;\n return cloneElement(typedComponent, {\n className: classNames(\n typedComponent.props.className,\n validationClasses,\n className,\n ),\n });\n};\n"],
5
+ "mappings": ";AAAA,OAAO,gBAAgB;AAEvB,SAAS,oBAAoB;AAEtB,IAAM,yBAAyB,CACpC,WACA,mBACA,cACG;AACH,MAAI,CAAC,UAAW,QAAO;AAEvB,QAAM,iBAAiB;AACvB,SAAO,aAAa,gBAAgB;AAAA,IAClC,WAAW;AAAA,MACT,eAAe,MAAM;AAAA,MACrB;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AACH;",
6
6
  "names": []
7
7
  }
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-66ARYOY7.js";
4
4
  import {
5
5
  Combobox
6
- } from "./chunk-NEFRXIFY.js";
6
+ } from "./chunk-53QMWUHB.js";
7
7
  import {
8
8
  Icon
9
9
  } from "./chunk-TKIP5Q5H.js";
@@ -93,4 +93,4 @@ AddressLookup.displayName = "AddressLookup";
93
93
  export {
94
94
  AddressLookup
95
95
  };
96
- //# sourceMappingURL=chunk-LGZWQZLS.js.map
96
+ //# sourceMappingURL=chunk-IF7FRSC2.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-YGME6T3L.js";
4
4
  import {
5
5
  Item
6
- } from "./chunk-4HI2AOBC.js";
6
+ } from "./chunk-6TSYA7CJ.js";
7
7
 
8
8
  // src/components/DropdownMenu/index.tsx
9
9
  var DropdownMenu2 = Object.assign(
@@ -17,4 +17,4 @@ DropdownMenu2.displayName = "DropdownMenu";
17
17
  export {
18
18
  DropdownMenu2 as DropdownMenu
19
19
  };
20
- //# sourceMappingURL=chunk-OEDU5ZEA.js.map
20
+ //# sourceMappingURL=chunk-KUH5AB5T.js.map
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-L2X5IF3K.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  ErrorMessage
3
3
  } from "./chunk-MZJT3USG.js";
4
- import {
5
- Stack
6
- } from "./chunk-XH3OJQMW.js";
7
4
  import {
8
5
  Label
9
6
  } from "./chunk-ZN7OWLZY.js";
7
+ import {
8
+ Stack
9
+ } from "./chunk-XH3OJQMW.js";
10
10
  import {
11
11
  useValidationClasses
12
12
  } from "./chunk-DYOFXXZD.js";
@@ -154,4 +154,4 @@ RadioGroup.displayName = "RadioGroup";
154
154
  export {
155
155
  RadioGroup
156
156
  };
157
- //# sourceMappingURL=chunk-2HUMNED2.js.map
157
+ //# sourceMappingURL=chunk-M3X3ECNH.js.map
@@ -0,0 +1,82 @@
1
+ import {
2
+ LoqateAddressLookupError
3
+ } from "./chunk-EDSRI6SV.js";
4
+
5
+ // src/components/AddressLookup/LoqateAddressLookupService.tsx
6
+ var LOQATE_BASE_URL = "https://api.addressy.com/Capture/Interactive";
7
+ var LOQATE_FIND_URL = "/Find/v1.00/json3.ws";
8
+ var LOQATE_RETRIEVE_URL = "/Retrieve/v1.2/json3.ws";
9
+ var DEFAULT_COUNTRIES = ["GB"];
10
+ var LoqateAddressLookupService = class {
11
+ /**
12
+ * Base URL for the Loqate API
13
+ */
14
+ #baseUrl;
15
+ /**
16
+ * API key for the Loqate API
17
+ */
18
+ #apiKey;
19
+ /**
20
+ * List of allowed country codes for the Loqate API
21
+ * 2 or 3 character ISO country codes
22
+ */
23
+ #countries;
24
+ /**
25
+ * Optional filters for the Loqate API
26
+ * E.g., { AdministrativeArea: "CA", PostalCode: "90210" }
27
+ */
28
+ #filters;
29
+ constructor({
30
+ baseUrl,
31
+ apiKey,
32
+ countries,
33
+ filters
34
+ }) {
35
+ this.#apiKey = apiKey;
36
+ this.#baseUrl = baseUrl || LOQATE_BASE_URL;
37
+ this.#countries = countries || DEFAULT_COUNTRIES;
38
+ this.#filters = filters;
39
+ }
40
+ fetchFromApi(url) {
41
+ return fetch(`${this.#baseUrl}${url}`).then((response) => response.json()).then((json) => {
42
+ if (json.Items?.some((item) => item.Error)) {
43
+ throw new LoqateAddressLookupError(json);
44
+ }
45
+ return json;
46
+ });
47
+ }
48
+ /**
49
+ * Builds the Filters query parameter for Loqate API requests.
50
+ * - Filter keys (e.g., "AdministrativeArea", "PostalCode") are predefined by Loqate API (no need to encode)
51
+ * - Filter values (e.g., "New York", "90210") contain user input that may have special characters (need encoding)
52
+ *
53
+ * @returns Empty string if no filters, otherwise "&Filters=key1:value1&key2:value2" (Loqate's expected format for Filters)
54
+ */
55
+ buildFiltersQuery() {
56
+ if (!this.#filters || Object.keys(this.#filters).length === 0) {
57
+ return "";
58
+ }
59
+ const encodedFilters = Object.entries(this.#filters).map(([key, value]) => `${key}:${encodeURIComponent(value)}`).join("&");
60
+ return `&Filters=${encodedFilters}`;
61
+ }
62
+ search(searchTerm) {
63
+ let url = `${LOQATE_FIND_URL}?Key=${this.#apiKey}&Text=${searchTerm}&Countries=${this.#countries?.join(",")}`;
64
+ url += this.buildFiltersQuery();
65
+ return this.fetchFromApi(url);
66
+ }
67
+ findById(id) {
68
+ let url = `${LOQATE_FIND_URL}?Key=${this.#apiKey}&Container=${id}&Countries=${this.#countries?.join(",")}`;
69
+ url += this.buildFiltersQuery();
70
+ return this.fetchFromApi(url);
71
+ }
72
+ async get(id) {
73
+ const url = `${LOQATE_RETRIEVE_URL}?Key=${this.#apiKey}&Id=${id}`;
74
+ const response = await this.fetchFromApi(url);
75
+ return response.Items[0];
76
+ }
77
+ };
78
+
79
+ export {
80
+ LoqateAddressLookupService
81
+ };
82
+ //# sourceMappingURL=chunk-NXWWQSZA.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/components/AddressLookup/LoqateAddressLookupService.tsx"],
4
4
  "sourcesContent": ["import { LoqateAddressLookupError } from \"./LoqateAddressLookupError\";\nimport type {\n LoqateAddressDetailsItem,\n LoqateAddressDetailsResponse,\n LoqateSearchResponse,\n} from \"./types\";\n\nconst LOQATE_BASE_URL = \"https://api.addressy.com/Capture/Interactive\";\nconst LOQATE_FIND_URL = \"/Find/v1.00/json3.ws\";\nconst LOQATE_RETRIEVE_URL = \"/Retrieve/v1.2/json3.ws\";\nconst DEFAULT_COUNTRIES = [\"GB\"];\n\nexport class LoqateAddressLookupService {\n /**\n * Base URL for the Loqate API\n */\n #baseUrl: string;\n\n /**\n * API key for the Loqate API\n */\n #apiKey?: string;\n\n /**\n * List of allowed country codes for the Loqate API\n * 2 or 3 character ISO country codes\n */\n #countries?: string[];\n\n /**\n * Optional filters for the Loqate API\n * E.g., { AdministrativeArea: \"CA\", PostalCode: \"90210\" }\n */\n #filters?: Record<string, string>;\n\n constructor({\n baseUrl,\n apiKey,\n countries,\n filters,\n }: {\n baseUrl?: string;\n apiKey?: string;\n countries?: string[];\n filters?: Record<string, string>;\n }) {\n this.#apiKey = apiKey;\n this.#baseUrl = baseUrl || LOQATE_BASE_URL;\n this.#countries = countries || DEFAULT_COUNTRIES;\n this.#filters = filters;\n }\n\n private fetchFromApi<TResponse = unknown>(url: string): Promise<TResponse> {\n return fetch(`${this.#baseUrl}${url}`)\n .then(response => response.json())\n .then(json => {\n if (json.Items?.some((item: any) => item.Error)) {\n throw new LoqateAddressLookupError(json);\n }\n return json;\n });\n }\n\n /**\n * Builds the Filters query parameter for Loqate API requests.\n * - Filter keys (e.g., \"AdministrativeArea\", \"PostalCode\") are predefined by Loqate API (no need to encode)\n * - Filter values (e.g., \"New York\", \"90210\") contain user input that may have special characters (need encoding)\n *\n * @returns Empty string if no filters, otherwise \"&Filters=key1:value1&key2:value2\" (Loqate's expected format for Filters)\n */\n private buildFiltersQuery(): string {\n if (!this.#filters || Object.keys(this.#filters).length === 0) {\n return \"\";\n }\n\n // Transform Record<string, string> to Loqate's \"key:value&key:value\" format\n const encodedFilters = Object.entries(this.#filters)\n .map(([key, value]) => `${key}:${encodeURIComponent(value)}`)\n .join(\"&\");\n\n return `&Filters=${encodedFilters}`;\n }\n\n search(searchTerm: string): Promise<LoqateSearchResponse> {\n let url = `${LOQATE_FIND_URL}?Key=${this.#apiKey}&Text=${searchTerm}&Countries=${this.#countries?.join(\",\")}`;\n url += this.buildFiltersQuery();\n return this.fetchFromApi<LoqateSearchResponse>(url);\n }\n\n findById(id: string): Promise<LoqateSearchResponse> {\n let url = `${LOQATE_FIND_URL}?Key=${this.#apiKey}&Container=${id}&Countries=${this.#countries?.join(\",\")}`;\n url += this.buildFiltersQuery();\n return this.fetchFromApi<LoqateSearchResponse>(url);\n }\n\n async get(id: string): Promise<LoqateAddressDetailsItem> {\n const url = `${LOQATE_RETRIEVE_URL}?Key=${this.#apiKey}&Id=${id}`;\n const response = await this.fetchFromApi<LoqateAddressDetailsResponse>(url);\n return response.Items[0];\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;AAOA,IAAM,kBAAkB;AACxB,IAAM,kBAAkB;AACxB,IAAM,sBAAsB;AAC5B,IAAM,oBAAoB,CAAC,IAAI;AAV/B;AAYO,IAAM,6BAAN,MAAiC;AAAA,EAuBtC,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAKG;AA7BH;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAaE,uBAAK,SAAU;AACf,uBAAK,UAAW,WAAW;AAC3B,uBAAK,YAAa,aAAa;AAC/B,uBAAK,UAAW;AAAA,EAClB;AAAA,EAEQ,aAAkC,KAAiC;AACzE,WAAO,MAAM,GAAG,mBAAK,SAAQ,GAAG,GAAG,EAAE,EAClC,KAAK,cAAY,SAAS,KAAK,CAAC,EAChC,KAAK,UAAQ;AACZ,UAAI,KAAK,OAAO,KAAK,CAAC,SAAc,KAAK,KAAK,GAAG;AAC/C,cAAM,IAAI,yBAAyB,IAAI;AAAA,MACzC;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASQ,oBAA4B;AAClC,QAAI,CAAC,mBAAK,aAAY,OAAO,KAAK,mBAAK,SAAQ,EAAE,WAAW,GAAG;AAC7D,aAAO;AAAA,IACT;AAGA,UAAM,iBAAiB,OAAO,QAAQ,mBAAK,SAAQ,EAChD,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,GAAG,IAAI,mBAAmB,KAAK,CAAC,EAAE,EAC3D,KAAK,GAAG;AAEX,WAAO,YAAY,cAAc;AAAA,EACnC;AAAA,EAEA,OAAO,YAAmD;AACxD,QAAI,MAAM,GAAG,eAAe,QAAQ,mBAAK,QAAO,SAAS,UAAU,cAAc,mBAAK,aAAY,KAAK,GAAG,CAAC;AAC3G,WAAO,KAAK,kBAAkB;AAC9B,WAAO,KAAK,aAAmC,GAAG;AAAA,EACpD;AAAA,EAEA,SAAS,IAA2C;AAClD,QAAI,MAAM,GAAG,eAAe,QAAQ,mBAAK,QAAO,cAAc,EAAE,cAAc,mBAAK,aAAY,KAAK,GAAG,CAAC;AACxG,WAAO,KAAK,kBAAkB;AAC9B,WAAO,KAAK,aAAmC,GAAG;AAAA,EACpD;AAAA,EAEA,MAAM,IAAI,IAA+C;AACvD,UAAM,MAAM,GAAG,mBAAmB,QAAQ,mBAAK,QAAO,OAAO,EAAE;AAC/D,UAAM,WAAW,MAAM,KAAK,aAA2C,GAAG;AAC1E,WAAO,SAAS,MAAM,CAAC;AAAA,EACzB;AACF;AApFE;AAKA;AAMA;AAMA;",
5
+ "mappings": ";;;;;AAOA,IAAM,kBAAkB;AACxB,IAAM,kBAAkB;AACxB,IAAM,sBAAsB;AAC5B,IAAM,oBAAoB,CAAC,IAAI;AAExB,IAAM,6BAAN,MAAiC;AAAA;AAAA;AAAA;AAAA,EAItC;AAAA;AAAA;AAAA;AAAA,EAKA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA;AAAA,EAEA,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAKG;AACD,SAAK,UAAU;AACf,SAAK,WAAW,WAAW;AAC3B,SAAK,aAAa,aAAa;AAC/B,SAAK,WAAW;AAAA,EAClB;AAAA,EAEQ,aAAkC,KAAiC;AACzE,WAAO,MAAM,GAAG,KAAK,QAAQ,GAAG,GAAG,EAAE,EAClC,KAAK,cAAY,SAAS,KAAK,CAAC,EAChC,KAAK,UAAQ;AACZ,UAAI,KAAK,OAAO,KAAK,CAAC,SAAc,KAAK,KAAK,GAAG;AAC/C,cAAM,IAAI,yBAAyB,IAAI;AAAA,MACzC;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASQ,oBAA4B;AAClC,QAAI,CAAC,KAAK,YAAY,OAAO,KAAK,KAAK,QAAQ,EAAE,WAAW,GAAG;AAC7D,aAAO;AAAA,IACT;AAGA,UAAM,iBAAiB,OAAO,QAAQ,KAAK,QAAQ,EAChD,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,GAAG,IAAI,mBAAmB,KAAK,CAAC,EAAE,EAC3D,KAAK,GAAG;AAEX,WAAO,YAAY,cAAc;AAAA,EACnC;AAAA,EAEA,OAAO,YAAmD;AACxD,QAAI,MAAM,GAAG,eAAe,QAAQ,KAAK,OAAO,SAAS,UAAU,cAAc,KAAK,YAAY,KAAK,GAAG,CAAC;AAC3G,WAAO,KAAK,kBAAkB;AAC9B,WAAO,KAAK,aAAmC,GAAG;AAAA,EACpD;AAAA,EAEA,SAAS,IAA2C;AAClD,QAAI,MAAM,GAAG,eAAe,QAAQ,KAAK,OAAO,cAAc,EAAE,cAAc,KAAK,YAAY,KAAK,GAAG,CAAC;AACxG,WAAO,KAAK,kBAAkB;AAC9B,WAAO,KAAK,aAAmC,GAAG;AAAA,EACpD;AAAA,EAEA,MAAM,IAAI,IAA+C;AACvD,UAAM,MAAM,GAAG,mBAAmB,QAAQ,KAAK,OAAO,OAAO,EAAE;AAC/D,UAAM,WAAW,MAAM,KAAK,aAA2C,GAAG;AAC1E,WAAO,SAAS,MAAM,CAAC;AAAA,EACzB;AACF;",
6
6
  "names": []
7
7
  }
@@ -14,13 +14,9 @@ var Breadcrumbs = ({ ref, ...props }) => {
14
14
  otherProps.className
15
15
  );
16
16
  return /* @__PURE__ */ jsx("nav", { ref, ...otherProps, ...navProps, className: classes, children: /* @__PURE__ */ jsx("ul", { children: childArray.map(
17
- (child, i) => cloneElement(
18
- child,
19
- {
20
- key: i,
21
- isCurrent: i === childArray.length - 1
22
- }
23
- )
17
+ (child, i) => cloneElement(child, {
18
+ isCurrent: i === childArray.length - 1
19
+ })
24
20
  ) }) });
25
21
  };
26
22
  Breadcrumbs.displayName = "Breadcrumbs";
@@ -28,4 +24,4 @@ Breadcrumbs.displayName = "Breadcrumbs";
28
24
  export {
29
25
  Breadcrumbs
30
26
  };
31
- //# sourceMappingURL=chunk-JFDDW3IV.js.map
27
+ //# sourceMappingURL=chunk-P7TPNRU4.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/components/Breadcrumbs/Breadcrumbs.tsx"],
4
- "sourcesContent": ["\"use client\";\n\nimport type { ReactElement, RefAttributes, ReactNode } from \"react\";\nimport { Children, cloneElement } from \"react\";\nimport classNames from \"classnames/dedupe\";\nimport \"./Breadcrumbs.css\";\n\nexport type BreadcrumbsElementType = HTMLElement;\n\nexport interface BreadcrumbsProps extends RefAttributes<BreadcrumbsElementType> {\n /** Custom class name for setting specific CSS */\n className?: string;\n children?: ReactNode;\n \"aria-label\"?: string;\n}\n\nconst Breadcrumbs = ({ ref, ...props }: BreadcrumbsProps) => {\n const { \"aria-label\": ariaLabel = \"Breadcrumbs\" } = props;\n const { navProps } = { navProps: { \"aria-label\": ariaLabel } };\n const { children, ...otherProps } = props;\n const childArray = Children.toArray(children);\n\n // Reshape class name and apply to outer element\n const classes = classNames(\n \"mobius\",\n \"mobius-breadcrumb\",\n otherProps.className,\n );\n\n return (\n <nav ref={ref} {...otherProps} {...navProps} className={classes}>\n <ul>\n {childArray.map((child, i) =>\n cloneElement(\n child as ReactElement,\n {\n key: i,\n isCurrent: i === childArray.length - 1,\n } as { key: number; isCurrent: boolean },\n ),\n )}\n </ul>\n </nav>\n );\n};\n\nBreadcrumbs.displayName = \"Breadcrumbs\";\nexport { Breadcrumbs };\n"],
5
- "mappings": ";AAGA,SAAS,UAAU,oBAAoB;AACvC,OAAO,gBAAgB;AACvB,OAAO;AA0BD;AAfN,IAAM,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,MAAwB;AAC3D,QAAM,EAAE,cAAc,YAAY,cAAc,IAAI;AACpD,QAAM,EAAE,SAAS,IAAI,EAAE,UAAU,EAAE,cAAc,UAAU,EAAE;AAC7D,QAAM,EAAE,UAAU,GAAG,WAAW,IAAI;AACpC,QAAM,aAAa,SAAS,QAAQ,QAAQ;AAG5C,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA,WAAW;AAAA,EACb;AAEA,SACE,oBAAC,SAAI,KAAW,GAAG,YAAa,GAAG,UAAU,WAAW,SACtD,8BAAC,QACE,qBAAW;AAAA,IAAI,CAAC,OAAO,MACtB;AAAA,MACE;AAAA,MACA;AAAA,QACE,KAAK;AAAA,QACL,WAAW,MAAM,WAAW,SAAS;AAAA,MACvC;AAAA,IACF;AAAA,EACF,GACF,GACF;AAEJ;AAEA,YAAY,cAAc;",
4
+ "sourcesContent": ["\"use client\";\n\nimport type { ReactElement, RefAttributes, ReactNode } from \"react\";\nimport { Children, cloneElement } from \"react\";\nimport classNames from \"classnames/dedupe\";\nimport \"./Breadcrumbs.css\";\n\nexport type BreadcrumbsElementType = HTMLElement;\n\nexport interface BreadcrumbsProps extends RefAttributes<BreadcrumbsElementType> {\n /** Custom class name for setting specific CSS */\n className?: string;\n children?: ReactNode;\n \"aria-label\"?: string;\n}\n\nconst Breadcrumbs = ({ ref, ...props }: BreadcrumbsProps) => {\n const { \"aria-label\": ariaLabel = \"Breadcrumbs\" } = props;\n const { navProps } = { navProps: { \"aria-label\": ariaLabel } };\n const { children, ...otherProps } = props;\n const childArray = Children.toArray(children);\n\n // Reshape class name and apply to outer element\n const classes = classNames(\n \"mobius\",\n \"mobius-breadcrumb\",\n otherProps.className,\n );\n\n return (\n <nav ref={ref} {...otherProps} {...navProps} className={classes}>\n <ul>\n {childArray.map((child, i) =>\n cloneElement(child as ReactElement<{ isCurrent?: boolean }>, {\n isCurrent: i === childArray.length - 1,\n }),\n )}\n </ul>\n </nav>\n );\n};\n\nBreadcrumbs.displayName = \"Breadcrumbs\";\nexport { Breadcrumbs };\n"],
5
+ "mappings": ";AAGA,SAAS,UAAU,oBAAoB;AACvC,OAAO,gBAAgB;AACvB,OAAO;AA0BD;AAfN,IAAM,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,MAAwB;AAC3D,QAAM,EAAE,cAAc,YAAY,cAAc,IAAI;AACpD,QAAM,EAAE,SAAS,IAAI,EAAE,UAAU,EAAE,cAAc,UAAU,EAAE;AAC7D,QAAM,EAAE,UAAU,GAAG,WAAW,IAAI;AACpC,QAAM,aAAa,SAAS,QAAQ,QAAQ;AAG5C,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA,WAAW;AAAA,EACb;AAEA,SACE,oBAAC,SAAI,KAAW,GAAG,YAAa,GAAG,UAAU,WAAW,SACtD,8BAAC,QACE,qBAAW;AAAA,IAAI,CAAC,OAAO,MACtB,aAAa,OAAgD;AAAA,MAC3D,WAAW,MAAM,WAAW,SAAS;AAAA,IACvC,CAAC;AAAA,EACH,GACF,GACF;AAEJ;AAEA,YAAY,cAAc;",
6
6
  "names": []
7
7
  }
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  Button
3
3
  } from "./chunk-FD3JTY5L.js";
4
- import {
5
- useAutoUpdate
6
- } from "./chunk-K3ECDAUR.js";
7
- import {
8
- useFloatingPosition
9
- } from "./chunk-26KZYRE6.js";
10
4
  import {
11
5
  useOutsidePress
12
6
  } from "./chunk-WYJP7HVL.js";
13
7
  import {
14
8
  Arrow
15
9
  } from "./chunk-CAL44W47.js";
10
+ import {
11
+ useAutoUpdate
12
+ } from "./chunk-K3ECDAUR.js";
13
+ import {
14
+ useFloatingPosition
15
+ } from "./chunk-26KZYRE6.js";
16
16
  import {
17
17
  Icon
18
18
  } from "./chunk-TKIP5Q5H.js";
@@ -155,4 +155,4 @@ var Popover = (props) => {
155
155
  export {
156
156
  Popover
157
157
  };
158
- //# sourceMappingURL=chunk-VZ3IWSK6.js.map
158
+ //# sourceMappingURL=chunk-Q5RB4O4S.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TextField
3
- } from "./chunk-IQKS662C.js";
3
+ } from "./chunk-AKCNBW55.js";
4
4
 
5
5
  // src/components/NumberField/NumberField.tsx
6
6
  import classNames from "classnames/dedupe";
@@ -94,4 +94,4 @@ NumberField.displayName = "NumberField";
94
94
  export {
95
95
  NumberField
96
96
  };
97
- //# sourceMappingURL=chunk-S4CU4XRB.js.map
97
+ //# sourceMappingURL=chunk-RBB3WHBJ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TextField
3
- } from "./chunk-IQKS662C.js";
3
+ } from "./chunk-AKCNBW55.js";
4
4
 
5
5
  // src/components/MaskedField/index.tsx
6
6
  import loadable from "@loadable/component";
@@ -38,4 +38,4 @@ MaskedField.displayName = "MaskedField";
38
38
  export {
39
39
  MaskedField
40
40
  };
41
- //# sourceMappingURL=chunk-GV36OVX7.js.map
41
+ //# sourceMappingURL=chunk-TQWUPLN6.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-WC3D5GNN.js";
4
4
  import {
5
5
  TextField
6
- } from "./chunk-IQKS662C.js";
6
+ } from "./chunk-AKCNBW55.js";
7
7
  import {
8
8
  mergeRefs
9
9
  } from "./chunk-QGGILW3D.js";
@@ -51,4 +51,4 @@ PasswordField.displayName = "PasswordField";
51
51
  export {
52
52
  PasswordField
53
53
  };
54
- //# sourceMappingURL=chunk-X4CMSAET.js.map
54
+ //# sourceMappingURL=chunk-YEZ6KR3Q.js.map
@@ -0,0 +1,19 @@
1
+ // src/components/StickyOnMobile/StickyOnMobile.tsx
2
+ import classNames from "classnames/dedupe";
3
+ import "@simplybusiness/mobius/src/components/StickyOnMobile/StickyOnMobile.css";
4
+ import { jsx } from "react/jsx-runtime";
5
+ var StickyOnMobile = ({ ref, ...props }) => {
6
+ const { elementType: Element = "div", ...otherProps } = props;
7
+ const classes = classNames(
8
+ "mobius",
9
+ "mobius-sticky-on-mobile",
10
+ otherProps.className
11
+ );
12
+ return /* @__PURE__ */ jsx(Element, { ref, ...otherProps, className: classes });
13
+ };
14
+ StickyOnMobile.displayName = "StickyOnMobile";
15
+
16
+ export {
17
+ StickyOnMobile
18
+ };
19
+ //# sourceMappingURL=chunk-YWFAKGQQ.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/StickyOnMobile/StickyOnMobile.tsx"],
4
+ "sourcesContent": ["import type {\n RefAttributes,\n ReactNode,\n ElementType,\n CSSProperties,\n HTMLAttributes,\n} from \"react\";\nimport classNames from \"classnames/dedupe\";\nimport \"./StickyOnMobile.css\";\n\nexport type StickyOnMobileElementType = HTMLElement;\n\nexport interface StickyOnMobileProps\n extends\n HTMLAttributes<StickyOnMobileElementType>,\n RefAttributes<StickyOnMobileElementType> {\n children?: ReactNode;\n /** HTML element to render. Defaults to `div`. */\n elementType?: ElementType;\n className?: string;\n style?: CSSProperties;\n}\n\nconst StickyOnMobile = ({ ref, ...props }: StickyOnMobileProps) => {\n const { elementType: Element = \"div\", ...otherProps } = props;\n\n const classes = classNames(\n \"mobius\",\n \"mobius-sticky-on-mobile\",\n otherProps.className,\n );\n\n return <Element ref={ref} {...otherProps} className={classes} />;\n};\n\nStickyOnMobile.displayName = \"StickyOnMobile\";\nexport { StickyOnMobile };\n"],
5
+ "mappings": ";AAOA,OAAO,gBAAgB;AACvB,OAAO;AAwBE;AATT,IAAM,iBAAiB,CAAC,EAAE,KAAK,GAAG,MAAM,MAA2B;AACjE,QAAM,EAAE,aAAa,UAAU,OAAO,GAAG,WAAW,IAAI;AAExD,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA,WAAW;AAAA,EACb;AAEA,SAAO,oBAAC,WAAQ,KAAW,GAAG,YAAY,WAAW,SAAS;AAChE;AAEA,eAAe,cAAc;",
6
+ "names": []
7
+ }
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  ErrorMessage
3
3
  } from "./chunk-MZJT3USG.js";
4
- import {
5
- Stack
6
- } from "./chunk-XH3OJQMW.js";
7
4
  import {
8
5
  Label
9
6
  } from "./chunk-ZN7OWLZY.js";
7
+ import {
8
+ Stack
9
+ } from "./chunk-XH3OJQMW.js";
10
10
  import {
11
11
  Icon
12
12
  } from "./chunk-TKIP5Q5H.js";
@@ -103,4 +103,4 @@ Select.displayName = "Select";
103
103
  export {
104
104
  Select
105
105
  };
106
- //# sourceMappingURL=chunk-P6YHEIFT.js.map
106
+ //# sourceMappingURL=chunk-ZLAAOGRQ.js.map