@simplybusiness/mobius 5.25.2 → 5.26.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 (777) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/index.js +4163 -17
  3. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  4. package/dist/esm/index.js +4169 -5
  5. package/dist/types/src/components/Switch/Switch.d.ts +1 -0
  6. package/package.json +8 -7
  7. package/src/components/Combobox/Combobox.test.tsx +3 -3
  8. package/src/components/Switch/Switch.css +20 -0
  9. package/src/components/Switch/Switch.test.tsx +8 -0
  10. package/src/components/Switch/Switch.tsx +10 -1
  11. package/src/hooks/useDialogPolyfill/useDialogPolyfill.ts +4 -2
  12. package/dist/cjs/components/Accordion/Accordion.js +0 -162
  13. package/dist/cjs/components/Accordion/Accordion.js.map +0 -1
  14. package/dist/cjs/components/Accordion/index.js +0 -20
  15. package/dist/cjs/components/Accordion/index.js.map +0 -1
  16. package/dist/cjs/components/AddressLookup/AddressLookup.js +0 -76
  17. package/dist/cjs/components/AddressLookup/AddressLookup.js.map +0 -1
  18. package/dist/cjs/components/AddressLookup/LoqateAddressLookupError.js +0 -32
  19. package/dist/cjs/components/AddressLookup/LoqateAddressLookupError.js.map +0 -1
  20. package/dist/cjs/components/AddressLookup/LoqateAddressLookupService.js +0 -110
  21. package/dist/cjs/components/AddressLookup/LoqateAddressLookupService.js.map +0 -1
  22. package/dist/cjs/components/AddressLookup/index.js +0 -22
  23. package/dist/cjs/components/AddressLookup/index.js.map +0 -1
  24. package/dist/cjs/components/AddressLookup/types.js +0 -6
  25. package/dist/cjs/components/AddressLookup/types.js.map +0 -1
  26. package/dist/cjs/components/AddressLookup/utils.js +0 -15
  27. package/dist/cjs/components/AddressLookup/utils.js.map +0 -1
  28. package/dist/cjs/components/Alert/Alert.js +0 -69
  29. package/dist/cjs/components/Alert/Alert.js.map +0 -1
  30. package/dist/cjs/components/Alert/index.js +0 -20
  31. package/dist/cjs/components/Alert/index.js.map +0 -1
  32. package/dist/cjs/components/Box/Box.js +0 -48
  33. package/dist/cjs/components/Box/Box.js.map +0 -1
  34. package/dist/cjs/components/Box/index.js +0 -20
  35. package/dist/cjs/components/Box/index.js.map +0 -1
  36. package/dist/cjs/components/Box/types.js +0 -6
  37. package/dist/cjs/components/Box/types.js.map +0 -1
  38. package/dist/cjs/components/Breadcrumbs/BreadcrumbItem.js +0 -54
  39. package/dist/cjs/components/Breadcrumbs/BreadcrumbItem.js.map +0 -1
  40. package/dist/cjs/components/Breadcrumbs/Breadcrumbs.js +0 -45
  41. package/dist/cjs/components/Breadcrumbs/Breadcrumbs.js.map +0 -1
  42. package/dist/cjs/components/Breadcrumbs/index.js +0 -21
  43. package/dist/cjs/components/Breadcrumbs/index.js.map +0 -1
  44. package/dist/cjs/components/Button/Button.js +0 -64
  45. package/dist/cjs/components/Button/Button.js.map +0 -1
  46. package/dist/cjs/components/Button/Loading.js +0 -36
  47. package/dist/cjs/components/Button/Loading.js.map +0 -1
  48. package/dist/cjs/components/Button/Success.js +0 -31
  49. package/dist/cjs/components/Button/Success.js.map +0 -1
  50. package/dist/cjs/components/Button/index.js +0 -20
  51. package/dist/cjs/components/Button/index.js.map +0 -1
  52. package/dist/cjs/components/Checkbox/Checkbox.js +0 -115
  53. package/dist/cjs/components/Checkbox/Checkbox.js.map +0 -1
  54. package/dist/cjs/components/Checkbox/CheckboxGroup.js +0 -119
  55. package/dist/cjs/components/Checkbox/CheckboxGroup.js.map +0 -1
  56. package/dist/cjs/components/Checkbox/index.js +0 -22
  57. package/dist/cjs/components/Checkbox/index.js.map +0 -1
  58. package/dist/cjs/components/Checkbox/types.js +0 -6
  59. package/dist/cjs/components/Checkbox/types.js.map +0 -1
  60. package/dist/cjs/components/Combobox/Combobox.js +0 -225
  61. package/dist/cjs/components/Combobox/Combobox.js.map +0 -1
  62. package/dist/cjs/components/Combobox/Listbox.js +0 -72
  63. package/dist/cjs/components/Combobox/Listbox.js.map +0 -1
  64. package/dist/cjs/components/Combobox/Option.js +0 -47
  65. package/dist/cjs/components/Combobox/Option.js.map +0 -1
  66. package/dist/cjs/components/Combobox/fixtures.js +0 -550
  67. package/dist/cjs/components/Combobox/fixtures.js.map +0 -1
  68. package/dist/cjs/components/Combobox/index.js +0 -21
  69. package/dist/cjs/components/Combobox/index.js.map +0 -1
  70. package/dist/cjs/components/Combobox/types.js +0 -6
  71. package/dist/cjs/components/Combobox/types.js.map +0 -1
  72. package/dist/cjs/components/Combobox/useComboboxHighlight.js +0 -92
  73. package/dist/cjs/components/Combobox/useComboboxHighlight.js.map +0 -1
  74. package/dist/cjs/components/Combobox/useComboboxOptions.js +0 -81
  75. package/dist/cjs/components/Combobox/useComboboxOptions.js.map +0 -1
  76. package/dist/cjs/components/Combobox/utils.js +0 -47
  77. package/dist/cjs/components/Combobox/utils.js.map +0 -1
  78. package/dist/cjs/components/Container/Container.js +0 -31
  79. package/dist/cjs/components/Container/Container.js.map +0 -1
  80. package/dist/cjs/components/Container/index.js +0 -20
  81. package/dist/cjs/components/Container/index.js.map +0 -1
  82. package/dist/cjs/components/Divider/Divider.js +0 -32
  83. package/dist/cjs/components/Divider/Divider.js.map +0 -1
  84. package/dist/cjs/components/Divider/index.js +0 -20
  85. package/dist/cjs/components/Divider/index.js.map +0 -1
  86. package/dist/cjs/components/Drawer/Content.js +0 -21
  87. package/dist/cjs/components/Drawer/Content.js.map +0 -1
  88. package/dist/cjs/components/Drawer/Drawer.js +0 -78
  89. package/dist/cjs/components/Drawer/Drawer.js.map +0 -1
  90. package/dist/cjs/components/Drawer/DrawerContext.js +0 -17
  91. package/dist/cjs/components/Drawer/DrawerContext.js.map +0 -1
  92. package/dist/cjs/components/Drawer/Header.js +0 -44
  93. package/dist/cjs/components/Drawer/Header.js.map +0 -1
  94. package/dist/cjs/components/Drawer/index.js +0 -29
  95. package/dist/cjs/components/Drawer/index.js.map +0 -1
  96. package/dist/cjs/components/Drawer/types.js +0 -6
  97. package/dist/cjs/components/Drawer/types.js.map +0 -1
  98. package/dist/cjs/components/Drawer/useDrawer.js +0 -21
  99. package/dist/cjs/components/Drawer/useDrawer.js.map +0 -1
  100. package/dist/cjs/components/DropdownMenu/DropdownMenu.js +0 -73
  101. package/dist/cjs/components/DropdownMenu/DropdownMenu.js.map +0 -1
  102. package/dist/cjs/components/DropdownMenu/Item.js +0 -44
  103. package/dist/cjs/components/DropdownMenu/Item.js.map +0 -1
  104. package/dist/cjs/components/DropdownMenu/index.js +0 -18
  105. package/dist/cjs/components/DropdownMenu/index.js.map +0 -1
  106. package/dist/cjs/components/ErrorMessage/ErrorMessage.js +0 -44
  107. package/dist/cjs/components/ErrorMessage/ErrorMessage.js.map +0 -1
  108. package/dist/cjs/components/ErrorMessage/index.js +0 -20
  109. package/dist/cjs/components/ErrorMessage/index.js.map +0 -1
  110. package/dist/cjs/components/Fieldset/Fieldset.js +0 -65
  111. package/dist/cjs/components/Fieldset/Fieldset.js.map +0 -1
  112. package/dist/cjs/components/Fieldset/index.js +0 -20
  113. package/dist/cjs/components/Fieldset/index.js.map +0 -1
  114. package/dist/cjs/components/Flex/Flex.js +0 -37
  115. package/dist/cjs/components/Flex/Flex.js.map +0 -1
  116. package/dist/cjs/components/Flex/index.js +0 -21
  117. package/dist/cjs/components/Flex/index.js.map +0 -1
  118. package/dist/cjs/components/Flex/propUtils.js +0 -56
  119. package/dist/cjs/components/Flex/propUtils.js.map +0 -1
  120. package/dist/cjs/components/Flex/types.js +0 -6
  121. package/dist/cjs/components/Flex/types.js.map +0 -1
  122. package/dist/cjs/components/Grid/Grid.js +0 -44
  123. package/dist/cjs/components/Grid/Grid.js.map +0 -1
  124. package/dist/cjs/components/Grid/Item.js +0 -76
  125. package/dist/cjs/components/Grid/Item.js.map +0 -1
  126. package/dist/cjs/components/Grid/index.js +0 -18
  127. package/dist/cjs/components/Grid/index.js.map +0 -1
  128. package/dist/cjs/components/Icon/Icon.js +0 -57
  129. package/dist/cjs/components/Icon/Icon.js.map +0 -1
  130. package/dist/cjs/components/Icon/index.js +0 -21
  131. package/dist/cjs/components/Icon/index.js.map +0 -1
  132. package/dist/cjs/components/Icon/types.js +0 -6
  133. package/dist/cjs/components/Icon/types.js.map +0 -1
  134. package/dist/cjs/components/Image/Image.js +0 -30
  135. package/dist/cjs/components/Image/Image.js.map +0 -1
  136. package/dist/cjs/components/Image/index.js +0 -20
  137. package/dist/cjs/components/Image/index.js.map +0 -1
  138. package/dist/cjs/components/Label/Label.js +0 -32
  139. package/dist/cjs/components/Label/Label.js.map +0 -1
  140. package/dist/cjs/components/Label/index.js +0 -20
  141. package/dist/cjs/components/Label/index.js.map +0 -1
  142. package/dist/cjs/components/Link/Link.js +0 -42
  143. package/dist/cjs/components/Link/Link.js.map +0 -1
  144. package/dist/cjs/components/Link/index.js +0 -20
  145. package/dist/cjs/components/Link/index.js.map +0 -1
  146. package/dist/cjs/components/LinkButton/LinkButton.js +0 -34
  147. package/dist/cjs/components/LinkButton/LinkButton.js.map +0 -1
  148. package/dist/cjs/components/LinkButton/index.js +0 -20
  149. package/dist/cjs/components/LinkButton/index.js.map +0 -1
  150. package/dist/cjs/components/List/List.js +0 -48
  151. package/dist/cjs/components/List/List.js.map +0 -1
  152. package/dist/cjs/components/List/ListItem.js +0 -53
  153. package/dist/cjs/components/List/ListItem.js.map +0 -1
  154. package/dist/cjs/components/List/index.js +0 -21
  155. package/dist/cjs/components/List/index.js.map +0 -1
  156. package/dist/cjs/components/LoadingIndicator/LoadingIndicator.js +0 -34
  157. package/dist/cjs/components/LoadingIndicator/LoadingIndicator.js.map +0 -1
  158. package/dist/cjs/components/LoadingIndicator/index.js +0 -20
  159. package/dist/cjs/components/LoadingIndicator/index.js.map +0 -1
  160. package/dist/cjs/components/Logo/Logo.js +0 -70
  161. package/dist/cjs/components/Logo/Logo.js.map +0 -1
  162. package/dist/cjs/components/Logo/index.js +0 -20
  163. package/dist/cjs/components/Logo/index.js.map +0 -1
  164. package/dist/cjs/components/Modal/Content.js +0 -21
  165. package/dist/cjs/components/Modal/Content.js.map +0 -1
  166. package/dist/cjs/components/Modal/Header.js +0 -43
  167. package/dist/cjs/components/Modal/Header.js.map +0 -1
  168. package/dist/cjs/components/Modal/Modal.js +0 -81
  169. package/dist/cjs/components/Modal/Modal.js.map +0 -1
  170. package/dist/cjs/components/Modal/ModalContext.js +0 -17
  171. package/dist/cjs/components/Modal/ModalContext.js.map +0 -1
  172. package/dist/cjs/components/Modal/index.js +0 -29
  173. package/dist/cjs/components/Modal/index.js.map +0 -1
  174. package/dist/cjs/components/Modal/types.js +0 -6
  175. package/dist/cjs/components/Modal/types.js.map +0 -1
  176. package/dist/cjs/components/Modal/useModal.js +0 -21
  177. package/dist/cjs/components/Modal/useModal.js.map +0 -1
  178. package/dist/cjs/components/NumberField/NumberField.js +0 -47
  179. package/dist/cjs/components/NumberField/NumberField.js.map +0 -1
  180. package/dist/cjs/components/NumberField/index.js +0 -20
  181. package/dist/cjs/components/NumberField/index.js.map +0 -1
  182. package/dist/cjs/components/Option/Option.js +0 -26
  183. package/dist/cjs/components/Option/Option.js.map +0 -1
  184. package/dist/cjs/components/Option/index.js +0 -20
  185. package/dist/cjs/components/Option/index.js.map +0 -1
  186. package/dist/cjs/components/PasswordField/PasswordField.js +0 -49
  187. package/dist/cjs/components/PasswordField/PasswordField.js.map +0 -1
  188. package/dist/cjs/components/PasswordField/ShowHideButton.js +0 -24
  189. package/dist/cjs/components/PasswordField/ShowHideButton.js.map +0 -1
  190. package/dist/cjs/components/PasswordField/index.js +0 -20
  191. package/dist/cjs/components/PasswordField/index.js.map +0 -1
  192. package/dist/cjs/components/Popover/Popover.js +0 -125
  193. package/dist/cjs/components/Popover/Popover.js.map +0 -1
  194. package/dist/cjs/components/Popover/index.js +0 -20
  195. package/dist/cjs/components/Popover/index.js.map +0 -1
  196. package/dist/cjs/components/Progress/Progress.js +0 -114
  197. package/dist/cjs/components/Progress/Progress.js.map +0 -1
  198. package/dist/cjs/components/Progress/index.js +0 -20
  199. package/dist/cjs/components/Progress/index.js.map +0 -1
  200. package/dist/cjs/components/Radio/Radio.js +0 -91
  201. package/dist/cjs/components/Radio/Radio.js.map +0 -1
  202. package/dist/cjs/components/Radio/RadioGroup.js +0 -113
  203. package/dist/cjs/components/Radio/RadioGroup.js.map +0 -1
  204. package/dist/cjs/components/Radio/index.js +0 -21
  205. package/dist/cjs/components/Radio/index.js.map +0 -1
  206. package/dist/cjs/components/SVG/SVG.js +0 -36
  207. package/dist/cjs/components/SVG/SVG.js.map +0 -1
  208. package/dist/cjs/components/SVG/index.js +0 -20
  209. package/dist/cjs/components/SVG/index.js.map +0 -1
  210. package/dist/cjs/components/Segment/Segment.js +0 -37
  211. package/dist/cjs/components/Segment/Segment.js.map +0 -1
  212. package/dist/cjs/components/Segment/SegmentGroup.js +0 -32
  213. package/dist/cjs/components/Segment/SegmentGroup.js.map +0 -1
  214. package/dist/cjs/components/Segment/index.js +0 -21
  215. package/dist/cjs/components/Segment/index.js.map +0 -1
  216. package/dist/cjs/components/Select/Select.js +0 -100
  217. package/dist/cjs/components/Select/Select.js.map +0 -1
  218. package/dist/cjs/components/Select/index.js +0 -20
  219. package/dist/cjs/components/Select/index.js.map +0 -1
  220. package/dist/cjs/components/Slider/Slider.js +0 -115
  221. package/dist/cjs/components/Slider/Slider.js.map +0 -1
  222. package/dist/cjs/components/Slider/helpers.js +0 -62
  223. package/dist/cjs/components/Slider/helpers.js.map +0 -1
  224. package/dist/cjs/components/Slider/index.js +0 -20
  225. package/dist/cjs/components/Slider/index.js.map +0 -1
  226. package/dist/cjs/components/Stack/Stack.js +0 -32
  227. package/dist/cjs/components/Stack/Stack.js.map +0 -1
  228. package/dist/cjs/components/Stack/index.js +0 -20
  229. package/dist/cjs/components/Stack/index.js.map +0 -1
  230. package/dist/cjs/components/Switch/Switch.js +0 -62
  231. package/dist/cjs/components/Switch/Switch.js.map +0 -1
  232. package/dist/cjs/components/Switch/index.js +0 -20
  233. package/dist/cjs/components/Switch/index.js.map +0 -1
  234. package/dist/cjs/components/Table/Body.js +0 -29
  235. package/dist/cjs/components/Table/Body.js.map +0 -1
  236. package/dist/cjs/components/Table/Cell.js +0 -29
  237. package/dist/cjs/components/Table/Cell.js.map +0 -1
  238. package/dist/cjs/components/Table/Foot.js +0 -29
  239. package/dist/cjs/components/Table/Foot.js.map +0 -1
  240. package/dist/cjs/components/Table/Head.js +0 -29
  241. package/dist/cjs/components/Table/Head.js.map +0 -1
  242. package/dist/cjs/components/Table/HeaderCell.js +0 -29
  243. package/dist/cjs/components/Table/HeaderCell.js.map +0 -1
  244. package/dist/cjs/components/Table/Row.js +0 -29
  245. package/dist/cjs/components/Table/Row.js.map +0 -1
  246. package/dist/cjs/components/Table/Table.js +0 -29
  247. package/dist/cjs/components/Table/Table.js.map +0 -1
  248. package/dist/cjs/components/Table/index.js +0 -28
  249. package/dist/cjs/components/Table/index.js.map +0 -1
  250. package/dist/cjs/components/Text/Text.js +0 -49
  251. package/dist/cjs/components/Text/Text.js.map +0 -1
  252. package/dist/cjs/components/Text/index.js +0 -20
  253. package/dist/cjs/components/Text/index.js.map +0 -1
  254. package/dist/cjs/components/TextArea/TextArea.js +0 -64
  255. package/dist/cjs/components/TextArea/TextArea.js.map +0 -1
  256. package/dist/cjs/components/TextArea/index.js +0 -20
  257. package/dist/cjs/components/TextArea/index.js.map +0 -1
  258. package/dist/cjs/components/TextAreaInput/TextAreaInput.js +0 -37
  259. package/dist/cjs/components/TextAreaInput/TextAreaInput.js.map +0 -1
  260. package/dist/cjs/components/TextAreaInput/index.js +0 -20
  261. package/dist/cjs/components/TextAreaInput/index.js.map +0 -1
  262. package/dist/cjs/components/TextField/TextField.js +0 -93
  263. package/dist/cjs/components/TextField/TextField.js.map +0 -1
  264. package/dist/cjs/components/TextField/adornmentWithClassName.js +0 -25
  265. package/dist/cjs/components/TextField/adornmentWithClassName.js.map +0 -1
  266. package/dist/cjs/components/TextField/index.js +0 -20
  267. package/dist/cjs/components/TextField/index.js.map +0 -1
  268. package/dist/cjs/components/Title/Title.js +0 -48
  269. package/dist/cjs/components/Title/Title.js.map +0 -1
  270. package/dist/cjs/components/Title/index.js +0 -20
  271. package/dist/cjs/components/Title/index.js.map +0 -1
  272. package/dist/cjs/components/Trust/Trust.js +0 -75
  273. package/dist/cjs/components/Trust/Trust.js.map +0 -1
  274. package/dist/cjs/components/Trust/TrustpilotProvider.js +0 -31
  275. package/dist/cjs/components/Trust/TrustpilotProvider.js.map +0 -1
  276. package/dist/cjs/components/Trust/constants.js +0 -74
  277. package/dist/cjs/components/Trust/constants.js.map +0 -1
  278. package/dist/cjs/components/Trust/index.js +0 -21
  279. package/dist/cjs/components/Trust/index.js.map +0 -1
  280. package/dist/cjs/components/Trust/types.js +0 -6
  281. package/dist/cjs/components/Trust/types.js.map +0 -1
  282. package/dist/cjs/components/VisuallyHidden/VisuallyHidden.js +0 -33
  283. package/dist/cjs/components/VisuallyHidden/VisuallyHidden.js.map +0 -1
  284. package/dist/cjs/components/VisuallyHidden/index.js +0 -20
  285. package/dist/cjs/components/VisuallyHidden/index.js.map +0 -1
  286. package/dist/cjs/components/index.js +0 -64
  287. package/dist/cjs/components/index.js.map +0 -1
  288. package/dist/cjs/global.d.js +0 -3
  289. package/dist/cjs/global.d.js.map +0 -1
  290. package/dist/cjs/hooks/index.js +0 -34
  291. package/dist/cjs/hooks/index.js.map +0 -1
  292. package/dist/cjs/hooks/useBodyScrollLock/index.js +0 -20
  293. package/dist/cjs/hooks/useBodyScrollLock/index.js.map +0 -1
  294. package/dist/cjs/hooks/useBodyScrollLock/useBodyScrollLock.js +0 -38
  295. package/dist/cjs/hooks/useBodyScrollLock/useBodyScrollLock.js.map +0 -1
  296. package/dist/cjs/hooks/useBreakpoint/index.js +0 -20
  297. package/dist/cjs/hooks/useBreakpoint/index.js.map +0 -1
  298. package/dist/cjs/hooks/useBreakpoint/useBreakpoint.js +0 -133
  299. package/dist/cjs/hooks/useBreakpoint/useBreakpoint.js.map +0 -1
  300. package/dist/cjs/hooks/useButton/index.js +0 -20
  301. package/dist/cjs/hooks/useButton/index.js.map +0 -1
  302. package/dist/cjs/hooks/useButton/useButton.js +0 -54
  303. package/dist/cjs/hooks/useButton/useButton.js.map +0 -1
  304. package/dist/cjs/hooks/useDebouncedValue/index.js +0 -20
  305. package/dist/cjs/hooks/useDebouncedValue/index.js.map +0 -1
  306. package/dist/cjs/hooks/useDebouncedValue/useDebouncedValue.js +0 -36
  307. package/dist/cjs/hooks/useDebouncedValue/useDebouncedValue.js.map +0 -1
  308. package/dist/cjs/hooks/useDeprecationWarning/index.js +0 -20
  309. package/dist/cjs/hooks/useDeprecationWarning/index.js.map +0 -1
  310. package/dist/cjs/hooks/useDeprecationWarning/useDeprecationWarning.js +0 -32
  311. package/dist/cjs/hooks/useDeprecationWarning/useDeprecationWarning.js.map +0 -1
  312. package/dist/cjs/hooks/useDialog/index.js +0 -20
  313. package/dist/cjs/hooks/useDialog/index.js.map +0 -1
  314. package/dist/cjs/hooks/useDialog/useDialog.js +0 -100
  315. package/dist/cjs/hooks/useDialog/useDialog.js.map +0 -1
  316. package/dist/cjs/hooks/useDialogPolyfill/index.js +0 -20
  317. package/dist/cjs/hooks/useDialogPolyfill/index.js.map +0 -1
  318. package/dist/cjs/hooks/useDialogPolyfill/useDialogPolyfill.js +0 -76
  319. package/dist/cjs/hooks/useDialogPolyfill/useDialogPolyfill.js.map +0 -1
  320. package/dist/cjs/hooks/useLabel/index.js +0 -20
  321. package/dist/cjs/hooks/useLabel/index.js.map +0 -1
  322. package/dist/cjs/hooks/useLabel/useLabel.js +0 -40
  323. package/dist/cjs/hooks/useLabel/useLabel.js.map +0 -1
  324. package/dist/cjs/hooks/useOnClickOutside/index.js +0 -20
  325. package/dist/cjs/hooks/useOnClickOutside/index.js.map +0 -1
  326. package/dist/cjs/hooks/useOnClickOutside/useOnClickOutside.js +0 -45
  327. package/dist/cjs/hooks/useOnClickOutside/useOnClickOutside.js.map +0 -1
  328. package/dist/cjs/hooks/useOnUnmount/index.js +0 -20
  329. package/dist/cjs/hooks/useOnUnmount/index.js.map +0 -1
  330. package/dist/cjs/hooks/useOnUnmount/useOnUnmount.js +0 -27
  331. package/dist/cjs/hooks/useOnUnmount/useOnUnmount.js.map +0 -1
  332. package/dist/cjs/hooks/usePrefersReducedMotion/index.js +0 -20
  333. package/dist/cjs/hooks/usePrefersReducedMotion/index.js.map +0 -1
  334. package/dist/cjs/hooks/usePrefersReducedMotion/usePrefersReducedMotion.js +0 -28
  335. package/dist/cjs/hooks/usePrefersReducedMotion/usePrefersReducedMotion.js.map +0 -1
  336. package/dist/cjs/hooks/useRenderCount/index.js +0 -20
  337. package/dist/cjs/hooks/useRenderCount/index.js.map +0 -1
  338. package/dist/cjs/hooks/useRenderCount/useRenderCount.js +0 -20
  339. package/dist/cjs/hooks/useRenderCount/useRenderCount.js.map +0 -1
  340. package/dist/cjs/hooks/useTextField/index.js +0 -21
  341. package/dist/cjs/hooks/useTextField/index.js.map +0 -1
  342. package/dist/cjs/hooks/useTextField/types.js +0 -6
  343. package/dist/cjs/hooks/useTextField/types.js.map +0 -1
  344. package/dist/cjs/hooks/useTextField/useTextField.js +0 -75
  345. package/dist/cjs/hooks/useTextField/useTextField.js.map +0 -1
  346. package/dist/cjs/hooks/useValidationClasses/index.js +0 -20
  347. package/dist/cjs/hooks/useValidationClasses/index.js.map +0 -1
  348. package/dist/cjs/hooks/useValidationClasses/useValidationClasses.js +0 -26
  349. package/dist/cjs/hooks/useValidationClasses/useValidationClasses.js.map +0 -1
  350. package/dist/cjs/hooks/useWindowEvent/index.js +0 -20
  351. package/dist/cjs/hooks/useWindowEvent/index.js.map +0 -1
  352. package/dist/cjs/hooks/useWindowEvent/useWindowEvent.js +0 -48
  353. package/dist/cjs/hooks/useWindowEvent/useWindowEvent.js.map +0 -1
  354. package/dist/cjs/index.js.map +0 -1
  355. package/dist/cjs/styles.d.js +0 -3
  356. package/dist/cjs/styles.d.js.map +0 -1
  357. package/dist/cjs/types/components.js +0 -6
  358. package/dist/cjs/types/components.js.map +0 -1
  359. package/dist/cjs/types/dom.js +0 -6
  360. package/dist/cjs/types/dom.js.map +0 -1
  361. package/dist/cjs/types/events.js +0 -6
  362. package/dist/cjs/types/events.js.map +0 -1
  363. package/dist/cjs/types/icon.js +0 -6
  364. package/dist/cjs/types/icon.js.map +0 -1
  365. package/dist/cjs/types/index.js +0 -24
  366. package/dist/cjs/types/index.js.map +0 -1
  367. package/dist/cjs/types/size.js +0 -6
  368. package/dist/cjs/types/size.js.map +0 -1
  369. package/dist/cjs/utils/changeCSS.js +0 -28
  370. package/dist/cjs/utils/changeCSS.js.map +0 -1
  371. package/dist/cjs/utils/delay.js +0 -23
  372. package/dist/cjs/utils/delay.js.map +0 -1
  373. package/dist/cjs/utils/excludeControls.js +0 -43
  374. package/dist/cjs/utils/excludeControls.js.map +0 -1
  375. package/dist/cjs/utils/filterUndefinedProps.js +0 -21
  376. package/dist/cjs/utils/filterUndefinedProps.js.map +0 -1
  377. package/dist/cjs/utils/getSpacingValue.js +0 -21
  378. package/dist/cjs/utils/getSpacingValue.js.map +0 -1
  379. package/dist/cjs/utils/index.js +0 -30
  380. package/dist/cjs/utils/index.js.map +0 -1
  381. package/dist/cjs/utils/jestHTMLDialogPolyfill.js +0 -27
  382. package/dist/cjs/utils/jestHTMLDialogPolyfill.js.map +0 -1
  383. package/dist/cjs/utils/jestMockMatchMedia.js +0 -28
  384. package/dist/cjs/utils/jestMockMatchMedia.js.map +0 -1
  385. package/dist/cjs/utils/mergeRefs.js +0 -24
  386. package/dist/cjs/utils/mergeRefs.js.map +0 -1
  387. package/dist/cjs/utils/polyfill-tests.js +0 -14
  388. package/dist/cjs/utils/polyfill-tests.js.map +0 -1
  389. package/dist/cjs/utils/sizeClasses.js +0 -26
  390. package/dist/cjs/utils/sizeClasses.js.map +0 -1
  391. package/dist/cjs/utils/sizeOptions.js +0 -22
  392. package/dist/cjs/utils/sizeOptions.js.map +0 -1
  393. package/dist/cjs/utils/spaceDelimitedList.js +0 -15
  394. package/dist/cjs/utils/spaceDelimitedList.js.map +0 -1
  395. package/dist/esm/components/Accordion/Accordion.js +0 -147
  396. package/dist/esm/components/Accordion/Accordion.js.map +0 -1
  397. package/dist/esm/components/Accordion/index.js +0 -3
  398. package/dist/esm/components/Accordion/index.js.map +0 -1
  399. package/dist/esm/components/AddressLookup/AddressLookup.js +0 -66
  400. package/dist/esm/components/AddressLookup/AddressLookup.js.map +0 -1
  401. package/dist/esm/components/AddressLookup/LoqateAddressLookupError.js +0 -22
  402. package/dist/esm/components/AddressLookup/LoqateAddressLookupError.js.map +0 -1
  403. package/dist/esm/components/AddressLookup/LoqateAddressLookupService.js +0 -100
  404. package/dist/esm/components/AddressLookup/LoqateAddressLookupService.js.map +0 -1
  405. package/dist/esm/components/AddressLookup/index.js +0 -5
  406. package/dist/esm/components/AddressLookup/index.js.map +0 -1
  407. package/dist/esm/components/AddressLookup/types.js +0 -3
  408. package/dist/esm/components/AddressLookup/types.js.map +0 -1
  409. package/dist/esm/components/AddressLookup/utils.js +0 -5
  410. package/dist/esm/components/AddressLookup/utils.js.map +0 -1
  411. package/dist/esm/components/Alert/Alert.js +0 -55
  412. package/dist/esm/components/Alert/Alert.js.map +0 -1
  413. package/dist/esm/components/Alert/index.js +0 -3
  414. package/dist/esm/components/Alert/index.js.map +0 -1
  415. package/dist/esm/components/Box/Box.js +0 -34
  416. package/dist/esm/components/Box/Box.js.map +0 -1
  417. package/dist/esm/components/Box/index.js +0 -3
  418. package/dist/esm/components/Box/index.js.map +0 -1
  419. package/dist/esm/components/Box/types.js +0 -3
  420. package/dist/esm/components/Box/types.js.map +0 -1
  421. package/dist/esm/components/Breadcrumbs/BreadcrumbItem.js +0 -40
  422. package/dist/esm/components/Breadcrumbs/BreadcrumbItem.js.map +0 -1
  423. package/dist/esm/components/Breadcrumbs/Breadcrumbs.js +0 -31
  424. package/dist/esm/components/Breadcrumbs/Breadcrumbs.js.map +0 -1
  425. package/dist/esm/components/Breadcrumbs/index.js +0 -4
  426. package/dist/esm/components/Breadcrumbs/index.js.map +0 -1
  427. package/dist/esm/components/Button/Button.js +0 -50
  428. package/dist/esm/components/Button/Button.js.map +0 -1
  429. package/dist/esm/components/Button/Loading.js +0 -27
  430. package/dist/esm/components/Button/Loading.js.map +0 -1
  431. package/dist/esm/components/Button/Success.js +0 -22
  432. package/dist/esm/components/Button/Success.js.map +0 -1
  433. package/dist/esm/components/Button/index.js +0 -3
  434. package/dist/esm/components/Button/index.js.map +0 -1
  435. package/dist/esm/components/Checkbox/Checkbox.js +0 -100
  436. package/dist/esm/components/Checkbox/Checkbox.js.map +0 -1
  437. package/dist/esm/components/Checkbox/CheckboxGroup.js +0 -104
  438. package/dist/esm/components/Checkbox/CheckboxGroup.js.map +0 -1
  439. package/dist/esm/components/Checkbox/index.js +0 -5
  440. package/dist/esm/components/Checkbox/index.js.map +0 -1
  441. package/dist/esm/components/Checkbox/types.js +0 -3
  442. package/dist/esm/components/Checkbox/types.js.map +0 -1
  443. package/dist/esm/components/Combobox/Combobox.js +0 -210
  444. package/dist/esm/components/Combobox/Combobox.js.map +0 -1
  445. package/dist/esm/components/Combobox/Listbox.js +0 -57
  446. package/dist/esm/components/Combobox/Listbox.js.map +0 -1
  447. package/dist/esm/components/Combobox/Option.js +0 -32
  448. package/dist/esm/components/Combobox/Option.js.map +0 -1
  449. package/dist/esm/components/Combobox/fixtures.js +0 -523
  450. package/dist/esm/components/Combobox/fixtures.js.map +0 -1
  451. package/dist/esm/components/Combobox/index.js +0 -4
  452. package/dist/esm/components/Combobox/index.js.map +0 -1
  453. package/dist/esm/components/Combobox/types.js +0 -3
  454. package/dist/esm/components/Combobox/types.js.map +0 -1
  455. package/dist/esm/components/Combobox/useComboboxHighlight.js +0 -82
  456. package/dist/esm/components/Combobox/useComboboxHighlight.js.map +0 -1
  457. package/dist/esm/components/Combobox/useComboboxOptions.js +0 -71
  458. package/dist/esm/components/Combobox/useComboboxOptions.js.map +0 -1
  459. package/dist/esm/components/Combobox/utils.js +0 -21
  460. package/dist/esm/components/Combobox/utils.js.map +0 -1
  461. package/dist/esm/components/Container/Container.js +0 -17
  462. package/dist/esm/components/Container/Container.js.map +0 -1
  463. package/dist/esm/components/Container/index.js +0 -3
  464. package/dist/esm/components/Container/index.js.map +0 -1
  465. package/dist/esm/components/Divider/Divider.js +0 -18
  466. package/dist/esm/components/Divider/Divider.js.map +0 -1
  467. package/dist/esm/components/Divider/index.js +0 -3
  468. package/dist/esm/components/Divider/index.js.map +0 -1
  469. package/dist/esm/components/Drawer/Content.js +0 -12
  470. package/dist/esm/components/Drawer/Content.js.map +0 -1
  471. package/dist/esm/components/Drawer/Drawer.js +0 -64
  472. package/dist/esm/components/Drawer/Drawer.js.map +0 -1
  473. package/dist/esm/components/Drawer/DrawerContext.js +0 -7
  474. package/dist/esm/components/Drawer/DrawerContext.js.map +0 -1
  475. package/dist/esm/components/Drawer/Header.js +0 -35
  476. package/dist/esm/components/Drawer/Header.js.map +0 -1
  477. package/dist/esm/components/Drawer/index.js +0 -12
  478. package/dist/esm/components/Drawer/index.js.map +0 -1
  479. package/dist/esm/components/Drawer/types.js +0 -3
  480. package/dist/esm/components/Drawer/types.js.map +0 -1
  481. package/dist/esm/components/Drawer/useDrawer.js +0 -11
  482. package/dist/esm/components/Drawer/useDrawer.js.map +0 -1
  483. package/dist/esm/components/DropdownMenu/DropdownMenu.js +0 -59
  484. package/dist/esm/components/DropdownMenu/DropdownMenu.js.map +0 -1
  485. package/dist/esm/components/DropdownMenu/Item.js +0 -30
  486. package/dist/esm/components/DropdownMenu/Item.js.map +0 -1
  487. package/dist/esm/components/DropdownMenu/index.js +0 -9
  488. package/dist/esm/components/DropdownMenu/index.js.map +0 -1
  489. package/dist/esm/components/ErrorMessage/ErrorMessage.js +0 -29
  490. package/dist/esm/components/ErrorMessage/ErrorMessage.js.map +0 -1
  491. package/dist/esm/components/ErrorMessage/index.js +0 -3
  492. package/dist/esm/components/ErrorMessage/index.js.map +0 -1
  493. package/dist/esm/components/Fieldset/Fieldset.js +0 -51
  494. package/dist/esm/components/Fieldset/Fieldset.js.map +0 -1
  495. package/dist/esm/components/Fieldset/index.js +0 -3
  496. package/dist/esm/components/Fieldset/index.js.map +0 -1
  497. package/dist/esm/components/Flex/Flex.js +0 -23
  498. package/dist/esm/components/Flex/Flex.js.map +0 -1
  499. package/dist/esm/components/Flex/index.js +0 -4
  500. package/dist/esm/components/Flex/index.js.map +0 -1
  501. package/dist/esm/components/Flex/propUtils.js +0 -38
  502. package/dist/esm/components/Flex/propUtils.js.map +0 -1
  503. package/dist/esm/components/Flex/types.js +0 -3
  504. package/dist/esm/components/Flex/types.js.map +0 -1
  505. package/dist/esm/components/Grid/Grid.js +0 -30
  506. package/dist/esm/components/Grid/Grid.js.map +0 -1
  507. package/dist/esm/components/Grid/Item.js +0 -51
  508. package/dist/esm/components/Grid/Item.js.map +0 -1
  509. package/dist/esm/components/Grid/index.js +0 -9
  510. package/dist/esm/components/Grid/index.js.map +0 -1
  511. package/dist/esm/components/Icon/Icon.js +0 -42
  512. package/dist/esm/components/Icon/Icon.js.map +0 -1
  513. package/dist/esm/components/Icon/index.js +0 -4
  514. package/dist/esm/components/Icon/index.js.map +0 -1
  515. package/dist/esm/components/Icon/types.js +0 -3
  516. package/dist/esm/components/Icon/types.js.map +0 -1
  517. package/dist/esm/components/Image/Image.js +0 -16
  518. package/dist/esm/components/Image/Image.js.map +0 -1
  519. package/dist/esm/components/Image/index.js +0 -3
  520. package/dist/esm/components/Image/index.js.map +0 -1
  521. package/dist/esm/components/Label/Label.js +0 -18
  522. package/dist/esm/components/Label/Label.js.map +0 -1
  523. package/dist/esm/components/Label/index.js +0 -3
  524. package/dist/esm/components/Label/index.js.map +0 -1
  525. package/dist/esm/components/Link/Link.js +0 -28
  526. package/dist/esm/components/Link/Link.js.map +0 -1
  527. package/dist/esm/components/Link/index.js +0 -3
  528. package/dist/esm/components/Link/index.js.map +0 -1
  529. package/dist/esm/components/LinkButton/LinkButton.js +0 -19
  530. package/dist/esm/components/LinkButton/LinkButton.js.map +0 -1
  531. package/dist/esm/components/LinkButton/index.js +0 -3
  532. package/dist/esm/components/LinkButton/index.js.map +0 -1
  533. package/dist/esm/components/List/List.js +0 -34
  534. package/dist/esm/components/List/List.js.map +0 -1
  535. package/dist/esm/components/List/ListItem.js +0 -39
  536. package/dist/esm/components/List/ListItem.js.map +0 -1
  537. package/dist/esm/components/List/index.js +0 -4
  538. package/dist/esm/components/List/index.js.map +0 -1
  539. package/dist/esm/components/LoadingIndicator/LoadingIndicator.js +0 -20
  540. package/dist/esm/components/LoadingIndicator/LoadingIndicator.js.map +0 -1
  541. package/dist/esm/components/LoadingIndicator/index.js +0 -3
  542. package/dist/esm/components/LoadingIndicator/index.js.map +0 -1
  543. package/dist/esm/components/Logo/Logo.js +0 -55
  544. package/dist/esm/components/Logo/Logo.js.map +0 -1
  545. package/dist/esm/components/Logo/index.js +0 -3
  546. package/dist/esm/components/Logo/index.js.map +0 -1
  547. package/dist/esm/components/Modal/Content.js +0 -12
  548. package/dist/esm/components/Modal/Content.js.map +0 -1
  549. package/dist/esm/components/Modal/Header.js +0 -34
  550. package/dist/esm/components/Modal/Header.js.map +0 -1
  551. package/dist/esm/components/Modal/Modal.js +0 -67
  552. package/dist/esm/components/Modal/Modal.js.map +0 -1
  553. package/dist/esm/components/Modal/ModalContext.js +0 -7
  554. package/dist/esm/components/Modal/ModalContext.js.map +0 -1
  555. package/dist/esm/components/Modal/index.js +0 -12
  556. package/dist/esm/components/Modal/index.js.map +0 -1
  557. package/dist/esm/components/Modal/types.js +0 -3
  558. package/dist/esm/components/Modal/types.js.map +0 -1
  559. package/dist/esm/components/Modal/useModal.js +0 -11
  560. package/dist/esm/components/Modal/useModal.js.map +0 -1
  561. package/dist/esm/components/NumberField/NumberField.js +0 -32
  562. package/dist/esm/components/NumberField/NumberField.js.map +0 -1
  563. package/dist/esm/components/NumberField/index.js +0 -3
  564. package/dist/esm/components/NumberField/index.js.map +0 -1
  565. package/dist/esm/components/Option/Option.js +0 -17
  566. package/dist/esm/components/Option/Option.js.map +0 -1
  567. package/dist/esm/components/Option/index.js +0 -3
  568. package/dist/esm/components/Option/index.js.map +0 -1
  569. package/dist/esm/components/PasswordField/PasswordField.js +0 -34
  570. package/dist/esm/components/PasswordField/PasswordField.js.map +0 -1
  571. package/dist/esm/components/PasswordField/ShowHideButton.js +0 -14
  572. package/dist/esm/components/PasswordField/ShowHideButton.js.map +0 -1
  573. package/dist/esm/components/PasswordField/index.js +0 -3
  574. package/dist/esm/components/PasswordField/index.js.map +0 -1
  575. package/dist/esm/components/Popover/Popover.js +0 -110
  576. package/dist/esm/components/Popover/Popover.js.map +0 -1
  577. package/dist/esm/components/Popover/index.js +0 -3
  578. package/dist/esm/components/Popover/index.js.map +0 -1
  579. package/dist/esm/components/Progress/Progress.js +0 -100
  580. package/dist/esm/components/Progress/Progress.js.map +0 -1
  581. package/dist/esm/components/Progress/index.js +0 -3
  582. package/dist/esm/components/Progress/index.js.map +0 -1
  583. package/dist/esm/components/Radio/Radio.js +0 -77
  584. package/dist/esm/components/Radio/Radio.js.map +0 -1
  585. package/dist/esm/components/Radio/RadioGroup.js +0 -99
  586. package/dist/esm/components/Radio/RadioGroup.js.map +0 -1
  587. package/dist/esm/components/Radio/index.js +0 -4
  588. package/dist/esm/components/Radio/index.js.map +0 -1
  589. package/dist/esm/components/SVG/SVG.js +0 -22
  590. package/dist/esm/components/SVG/SVG.js.map +0 -1
  591. package/dist/esm/components/SVG/index.js +0 -3
  592. package/dist/esm/components/SVG/index.js.map +0 -1
  593. package/dist/esm/components/Segment/Segment.js +0 -23
  594. package/dist/esm/components/Segment/Segment.js.map +0 -1
  595. package/dist/esm/components/Segment/SegmentGroup.js +0 -18
  596. package/dist/esm/components/Segment/SegmentGroup.js.map +0 -1
  597. package/dist/esm/components/Segment/index.js +0 -4
  598. package/dist/esm/components/Segment/index.js.map +0 -1
  599. package/dist/esm/components/Select/Select.js +0 -86
  600. package/dist/esm/components/Select/Select.js.map +0 -1
  601. package/dist/esm/components/Select/index.js +0 -3
  602. package/dist/esm/components/Select/index.js.map +0 -1
  603. package/dist/esm/components/Slider/Slider.js +0 -100
  604. package/dist/esm/components/Slider/Slider.js.map +0 -1
  605. package/dist/esm/components/Slider/helpers.js +0 -35
  606. package/dist/esm/components/Slider/helpers.js.map +0 -1
  607. package/dist/esm/components/Slider/index.js +0 -3
  608. package/dist/esm/components/Slider/index.js.map +0 -1
  609. package/dist/esm/components/Stack/Stack.js +0 -17
  610. package/dist/esm/components/Stack/Stack.js.map +0 -1
  611. package/dist/esm/components/Stack/index.js +0 -3
  612. package/dist/esm/components/Stack/index.js.map +0 -1
  613. package/dist/esm/components/Switch/Switch.js +0 -48
  614. package/dist/esm/components/Switch/Switch.js.map +0 -1
  615. package/dist/esm/components/Switch/index.js +0 -3
  616. package/dist/esm/components/Switch/index.js.map +0 -1
  617. package/dist/esm/components/Table/Body.js +0 -15
  618. package/dist/esm/components/Table/Body.js.map +0 -1
  619. package/dist/esm/components/Table/Cell.js +0 -15
  620. package/dist/esm/components/Table/Cell.js.map +0 -1
  621. package/dist/esm/components/Table/Foot.js +0 -15
  622. package/dist/esm/components/Table/Foot.js.map +0 -1
  623. package/dist/esm/components/Table/Head.js +0 -15
  624. package/dist/esm/components/Table/Head.js.map +0 -1
  625. package/dist/esm/components/Table/HeaderCell.js +0 -15
  626. package/dist/esm/components/Table/HeaderCell.js.map +0 -1
  627. package/dist/esm/components/Table/Row.js +0 -15
  628. package/dist/esm/components/Table/Row.js.map +0 -1
  629. package/dist/esm/components/Table/Table.js +0 -15
  630. package/dist/esm/components/Table/Table.js.map +0 -1
  631. package/dist/esm/components/Table/index.js +0 -19
  632. package/dist/esm/components/Table/index.js.map +0 -1
  633. package/dist/esm/components/Text/Text.js +0 -35
  634. package/dist/esm/components/Text/Text.js.map +0 -1
  635. package/dist/esm/components/Text/index.js +0 -3
  636. package/dist/esm/components/Text/index.js.map +0 -1
  637. package/dist/esm/components/TextArea/TextArea.js +0 -50
  638. package/dist/esm/components/TextArea/TextArea.js.map +0 -1
  639. package/dist/esm/components/TextArea/index.js +0 -3
  640. package/dist/esm/components/TextArea/index.js.map +0 -1
  641. package/dist/esm/components/TextAreaInput/TextAreaInput.js +0 -23
  642. package/dist/esm/components/TextAreaInput/TextAreaInput.js.map +0 -1
  643. package/dist/esm/components/TextAreaInput/index.js +0 -3
  644. package/dist/esm/components/TextAreaInput/index.js.map +0 -1
  645. package/dist/esm/components/TextField/TextField.js +0 -79
  646. package/dist/esm/components/TextField/TextField.js.map +0 -1
  647. package/dist/esm/components/TextField/adornmentWithClassName.js +0 -10
  648. package/dist/esm/components/TextField/adornmentWithClassName.js.map +0 -1
  649. package/dist/esm/components/TextField/index.js +0 -3
  650. package/dist/esm/components/TextField/index.js.map +0 -1
  651. package/dist/esm/components/Title/Title.js +0 -34
  652. package/dist/esm/components/Title/Title.js.map +0 -1
  653. package/dist/esm/components/Title/index.js +0 -3
  654. package/dist/esm/components/Title/index.js.map +0 -1
  655. package/dist/esm/components/Trust/Trust.js +0 -60
  656. package/dist/esm/components/Trust/Trust.js.map +0 -1
  657. package/dist/esm/components/Trust/TrustpilotProvider.js +0 -21
  658. package/dist/esm/components/Trust/TrustpilotProvider.js.map +0 -1
  659. package/dist/esm/components/Trust/constants.js +0 -49
  660. package/dist/esm/components/Trust/constants.js.map +0 -1
  661. package/dist/esm/components/Trust/index.js +0 -4
  662. package/dist/esm/components/Trust/index.js.map +0 -1
  663. package/dist/esm/components/Trust/types.js +0 -3
  664. package/dist/esm/components/Trust/types.js.map +0 -1
  665. package/dist/esm/components/VisuallyHidden/VisuallyHidden.js +0 -23
  666. package/dist/esm/components/VisuallyHidden/VisuallyHidden.js.map +0 -1
  667. package/dist/esm/components/VisuallyHidden/index.js +0 -3
  668. package/dist/esm/components/VisuallyHidden/index.js.map +0 -1
  669. package/dist/esm/components/index.js +0 -47
  670. package/dist/esm/components/index.js.map +0 -1
  671. package/dist/esm/global.d.js +0 -2
  672. package/dist/esm/global.d.js.map +0 -1
  673. package/dist/esm/hooks/index.js +0 -17
  674. package/dist/esm/hooks/index.js.map +0 -1
  675. package/dist/esm/hooks/useBodyScrollLock/index.js +0 -3
  676. package/dist/esm/hooks/useBodyScrollLock/index.js.map +0 -1
  677. package/dist/esm/hooks/useBodyScrollLock/useBodyScrollLock.js +0 -28
  678. package/dist/esm/hooks/useBodyScrollLock/useBodyScrollLock.js.map +0 -1
  679. package/dist/esm/hooks/useBreakpoint/index.js +0 -3
  680. package/dist/esm/hooks/useBreakpoint/index.js.map +0 -1
  681. package/dist/esm/hooks/useBreakpoint/useBreakpoint.js +0 -112
  682. package/dist/esm/hooks/useBreakpoint/useBreakpoint.js.map +0 -1
  683. package/dist/esm/hooks/useButton/index.js +0 -3
  684. package/dist/esm/hooks/useButton/index.js.map +0 -1
  685. package/dist/esm/hooks/useButton/useButton.js +0 -44
  686. package/dist/esm/hooks/useButton/useButton.js.map +0 -1
  687. package/dist/esm/hooks/useDebouncedValue/index.js +0 -3
  688. package/dist/esm/hooks/useDebouncedValue/index.js.map +0 -1
  689. package/dist/esm/hooks/useDebouncedValue/useDebouncedValue.js +0 -26
  690. package/dist/esm/hooks/useDebouncedValue/useDebouncedValue.js.map +0 -1
  691. package/dist/esm/hooks/useDeprecationWarning/index.js +0 -3
  692. package/dist/esm/hooks/useDeprecationWarning/index.js.map +0 -1
  693. package/dist/esm/hooks/useDeprecationWarning/useDeprecationWarning.js +0 -22
  694. package/dist/esm/hooks/useDeprecationWarning/useDeprecationWarning.js.map +0 -1
  695. package/dist/esm/hooks/useDialog/index.js +0 -3
  696. package/dist/esm/hooks/useDialog/index.js.map +0 -1
  697. package/dist/esm/hooks/useDialog/useDialog.js +0 -90
  698. package/dist/esm/hooks/useDialog/useDialog.js.map +0 -1
  699. package/dist/esm/hooks/useDialogPolyfill/index.js +0 -3
  700. package/dist/esm/hooks/useDialogPolyfill/index.js.map +0 -1
  701. package/dist/esm/hooks/useDialogPolyfill/useDialogPolyfill.js +0 -26
  702. package/dist/esm/hooks/useDialogPolyfill/useDialogPolyfill.js.map +0 -1
  703. package/dist/esm/hooks/useLabel/index.js +0 -3
  704. package/dist/esm/hooks/useLabel/index.js.map +0 -1
  705. package/dist/esm/hooks/useLabel/useLabel.js +0 -30
  706. package/dist/esm/hooks/useLabel/useLabel.js.map +0 -1
  707. package/dist/esm/hooks/useOnClickOutside/index.js +0 -3
  708. package/dist/esm/hooks/useOnClickOutside/index.js.map +0 -1
  709. package/dist/esm/hooks/useOnClickOutside/useOnClickOutside.js +0 -35
  710. package/dist/esm/hooks/useOnClickOutside/useOnClickOutside.js.map +0 -1
  711. package/dist/esm/hooks/useOnUnmount/index.js +0 -3
  712. package/dist/esm/hooks/useOnUnmount/index.js.map +0 -1
  713. package/dist/esm/hooks/useOnUnmount/useOnUnmount.js +0 -17
  714. package/dist/esm/hooks/useOnUnmount/useOnUnmount.js.map +0 -1
  715. package/dist/esm/hooks/usePrefersReducedMotion/index.js +0 -3
  716. package/dist/esm/hooks/usePrefersReducedMotion/index.js.map +0 -1
  717. package/dist/esm/hooks/usePrefersReducedMotion/usePrefersReducedMotion.js +0 -18
  718. package/dist/esm/hooks/usePrefersReducedMotion/usePrefersReducedMotion.js.map +0 -1
  719. package/dist/esm/hooks/useRenderCount/index.js +0 -3
  720. package/dist/esm/hooks/useRenderCount/index.js.map +0 -1
  721. package/dist/esm/hooks/useRenderCount/useRenderCount.js +0 -10
  722. package/dist/esm/hooks/useRenderCount/useRenderCount.js.map +0 -1
  723. package/dist/esm/hooks/useTextField/index.js +0 -4
  724. package/dist/esm/hooks/useTextField/index.js.map +0 -1
  725. package/dist/esm/hooks/useTextField/types.js +0 -3
  726. package/dist/esm/hooks/useTextField/types.js.map +0 -1
  727. package/dist/esm/hooks/useTextField/useTextField.js +0 -65
  728. package/dist/esm/hooks/useTextField/useTextField.js.map +0 -1
  729. package/dist/esm/hooks/useValidationClasses/index.js +0 -3
  730. package/dist/esm/hooks/useValidationClasses/index.js.map +0 -1
  731. package/dist/esm/hooks/useValidationClasses/useValidationClasses.js +0 -16
  732. package/dist/esm/hooks/useValidationClasses/useValidationClasses.js.map +0 -1
  733. package/dist/esm/hooks/useWindowEvent/index.js +0 -3
  734. package/dist/esm/hooks/useWindowEvent/index.js.map +0 -1
  735. package/dist/esm/hooks/useWindowEvent/useWindowEvent.js +0 -38
  736. package/dist/esm/hooks/useWindowEvent/useWindowEvent.js.map +0 -1
  737. package/dist/esm/index.js.map +0 -1
  738. package/dist/esm/styles.d.js +0 -2
  739. package/dist/esm/styles.d.js.map +0 -1
  740. package/dist/esm/types/components.js +0 -3
  741. package/dist/esm/types/components.js.map +0 -1
  742. package/dist/esm/types/dom.js +0 -3
  743. package/dist/esm/types/dom.js.map +0 -1
  744. package/dist/esm/types/events.js +0 -3
  745. package/dist/esm/types/events.js.map +0 -1
  746. package/dist/esm/types/icon.js +0 -3
  747. package/dist/esm/types/icon.js.map +0 -1
  748. package/dist/esm/types/index.js +0 -7
  749. package/dist/esm/types/index.js.map +0 -1
  750. package/dist/esm/types/size.js +0 -3
  751. package/dist/esm/types/size.js.map +0 -1
  752. package/dist/esm/utils/changeCSS.js +0 -18
  753. package/dist/esm/utils/changeCSS.js.map +0 -1
  754. package/dist/esm/utils/delay.js +0 -13
  755. package/dist/esm/utils/delay.js.map +0 -1
  756. package/dist/esm/utils/excludeControls.js +0 -33
  757. package/dist/esm/utils/excludeControls.js.map +0 -1
  758. package/dist/esm/utils/filterUndefinedProps.js +0 -11
  759. package/dist/esm/utils/filterUndefinedProps.js.map +0 -1
  760. package/dist/esm/utils/getSpacingValue.js +0 -11
  761. package/dist/esm/utils/getSpacingValue.js.map +0 -1
  762. package/dist/esm/utils/index.js +0 -13
  763. package/dist/esm/utils/index.js.map +0 -1
  764. package/dist/esm/utils/jestHTMLDialogPolyfill.js +0 -17
  765. package/dist/esm/utils/jestHTMLDialogPolyfill.js.map +0 -1
  766. package/dist/esm/utils/jestMockMatchMedia.js +0 -18
  767. package/dist/esm/utils/jestMockMatchMedia.js.map +0 -1
  768. package/dist/esm/utils/mergeRefs.js +0 -14
  769. package/dist/esm/utils/mergeRefs.js.map +0 -1
  770. package/dist/esm/utils/polyfill-tests.js +0 -4
  771. package/dist/esm/utils/polyfill-tests.js.map +0 -1
  772. package/dist/esm/utils/sizeClasses.js +0 -16
  773. package/dist/esm/utils/sizeClasses.js.map +0 -1
  774. package/dist/esm/utils/sizeOptions.js +0 -12
  775. package/dist/esm/utils/sizeOptions.js.map +0 -1
  776. package/dist/esm/utils/spaceDelimitedList.js +0 -5
  777. package/dist/esm/utils/spaceDelimitedList.js.map +0 -1
package/dist/cjs/index.js CHANGED
@@ -1,23 +1,4169 @@
1
- "use client";
2
1
  "use strict";
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- _export_star(require("./components"), exports);
7
- _export_star(require("./hooks"), exports);
8
- _export_star(require("./types"), exports);
9
- function _export_star(from, to) {
10
- Object.keys(from).forEach(function(k) {
11
- if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
12
- Object.defineProperty(to, k, {
13
- enumerable: true,
14
- get: function() {
15
- return from[k];
16
- }
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // index.tsx
31
+ var index_exports = {};
32
+ __export(index_exports, {
33
+ Accordion: () => Accordion,
34
+ AddressLookup: () => AddressLookup,
35
+ Alert: () => Alert,
36
+ Box: () => Box,
37
+ BreadcrumbItem: () => BreadcrumbItem,
38
+ Breadcrumbs: () => Breadcrumbs,
39
+ Button: () => Button,
40
+ Checkbox: () => Checkbox,
41
+ CheckboxGroup: () => CheckboxGroup,
42
+ Combobox: () => Combobox,
43
+ Container: () => Container,
44
+ DEFAULT_BREAKPOINTS: () => DEFAULT_BREAKPOINTS,
45
+ Divider: () => Divider,
46
+ Drawer: () => Drawer2,
47
+ DropdownMenu: () => DropdownMenu2,
48
+ ErrorMessage: () => ErrorMessage,
49
+ Fieldset: () => Fieldset,
50
+ Flex: () => Flex,
51
+ Grid: () => Grid2,
52
+ Icon: () => Icon,
53
+ Image: () => Image,
54
+ Label: () => Label,
55
+ Link: () => Link,
56
+ LinkButton: () => LinkButton,
57
+ List: () => List,
58
+ ListItem: () => ListItem,
59
+ LoadingIndicator: () => LoadingIndicator,
60
+ Logo: () => Logo,
61
+ LoqateAddressLookupService: () => LoqateAddressLookupService,
62
+ Modal: () => Modal2,
63
+ NumberField: () => NumberField,
64
+ Option: () => Option2,
65
+ PasswordField: () => PasswordField,
66
+ Popover: () => Popover,
67
+ Progress: () => Progress,
68
+ Radio: () => Radio,
69
+ RadioGroup: () => RadioGroup,
70
+ SVG: () => SVG,
71
+ Segment: () => Segment,
72
+ SegmentGroup: () => SegmentGroup,
73
+ Select: () => Select,
74
+ Slider: () => Slider,
75
+ Stack: () => Stack,
76
+ Switch: () => Switch,
77
+ Table: () => Table2,
78
+ Text: () => Text,
79
+ TextArea: () => TextArea,
80
+ TextAreaInput: () => TextAreaInput,
81
+ TextField: () => TextField,
82
+ Title: () => Title,
83
+ Trust: () => Trust,
84
+ VisuallyHidden: () => VisuallyHidden,
85
+ useBodyScrollLock: () => useBodyScrollLock,
86
+ useBreakpoint: () => useBreakpoint,
87
+ useButton: () => useButton,
88
+ useDebouncedValue: () => useDebouncedValue,
89
+ useDeprecationWarning: () => useDeprecationWarning,
90
+ useDialog: () => useDialog,
91
+ useDialogPolyfill: () => useDialogPolyfill,
92
+ useDrawer: () => useDrawer,
93
+ useLabel: () => useLabel,
94
+ useModal: () => useModal,
95
+ useOnClickOutside: () => useOnClickOutside,
96
+ useOnUnmount: () => useOnUnmount,
97
+ usePrefersReducedMotion: () => usePrefersReducedMotion,
98
+ useRenderCount: () => useRenderCount,
99
+ useTextField: () => useTextField,
100
+ useValidationClasses: () => useValidationClasses,
101
+ useWindowEvent: () => useWindowEvent
102
+ });
103
+ module.exports = __toCommonJS(index_exports);
104
+
105
+ // src/components/Accordion/Accordion.tsx
106
+ var import_icons = require("@simplybusiness/icons");
107
+ var import_dedupe3 = __toESM(require("classnames/dedupe"));
108
+ var import_react3 = require("react");
109
+
110
+ // src/hooks/usePrefersReducedMotion/usePrefersReducedMotion.tsx
111
+ var import_react = require("react");
112
+ function usePrefersReducedMotion() {
113
+ const [prefersReducedMotion, setPrefersReducedMotion] = (0, import_react.useState)(false);
114
+ (0, import_react.useEffect)(() => {
115
+ const mediaQuery = window.matchMedia("(prefers-reduced-motion: reduce)");
116
+ setPrefersReducedMotion(mediaQuery.matches);
117
+ const listener = (event) => {
118
+ setPrefersReducedMotion(event.matches);
119
+ };
120
+ mediaQuery.addEventListener("change", listener);
121
+ return () => {
122
+ mediaQuery.removeEventListener("change", listener);
123
+ };
124
+ }, []);
125
+ return prefersReducedMotion;
126
+ }
127
+
128
+ // src/components/Flex/Flex.tsx
129
+ var import_react2 = require("react");
130
+ var import_dedupe = __toESM(require("classnames/dedupe"));
131
+
132
+ // src/utils/filterUndefinedProps.ts
133
+ var filterUndefinedProps = (props) => {
134
+ const filteredProps = {};
135
+ Object.keys(props).forEach((key) => {
136
+ if (props[key] !== void 0) {
137
+ filteredProps[key] = props[key];
138
+ }
139
+ });
140
+ return filteredProps;
141
+ };
142
+
143
+ // src/utils/getSpacingValue.ts
144
+ var getSpacingValue = (padding) => {
145
+ if (typeof padding === "string") {
146
+ return `var(--size-${padding})`;
147
+ }
148
+ if (typeof padding === "number") {
149
+ return `${padding}px`;
150
+ }
151
+ return void 0;
152
+ };
153
+
154
+ // src/utils/mergeRefs.ts
155
+ function mergeRefs(refs) {
156
+ return (value) => {
157
+ refs.forEach((ref) => {
158
+ if (typeof ref === "function") {
159
+ ref(value);
160
+ } else if (ref != null) {
161
+ ref.current = value;
162
+ }
163
+ });
164
+ };
165
+ }
166
+
167
+ // src/utils/polyfill-tests.ts
168
+ var supportsDialog = () => typeof HTMLDialogElement === "function";
169
+
170
+ // src/utils/sizeClasses.ts
171
+ var sizeClasses = (size) => {
172
+ if (!size) {
173
+ return {};
174
+ }
175
+ return {
176
+ "--is-xxs": size === "xxs",
177
+ "--is-xs": size === "xs",
178
+ "--is-sm": size === "sm",
179
+ "--is-md": size === "md",
180
+ "--is-lg": size === "lg",
181
+ "--is-xl": size === "xl",
182
+ "--is-xxl": size === "xxl"
183
+ };
184
+ };
185
+
186
+ // src/utils/spaceDelimitedList.ts
187
+ function spaceDelimitedList(list) {
188
+ return list.filter(Boolean).join(" ") || void 0;
189
+ }
190
+
191
+ // src/components/Flex/propUtils.ts
192
+ var buildFlexStyles = (props) => {
193
+ const {
194
+ flexDirection,
195
+ flexWrap,
196
+ flexGrow,
197
+ flex,
198
+ justifyContent,
199
+ alignItems,
200
+ alignContent,
201
+ gap,
202
+ rowGap,
203
+ columnGap
204
+ } = props;
205
+ const styleProps = {
206
+ flexDirection,
207
+ flexWrap,
208
+ flexGrow,
209
+ flex,
210
+ justifyContent,
211
+ alignItems,
212
+ alignContent,
213
+ gap: getSpacingValue(gap),
214
+ columnGap: getSpacingValue(columnGap),
215
+ rowGap: getSpacingValue(rowGap)
216
+ };
217
+ return filterUndefinedProps(styleProps);
218
+ };
219
+ var splitProps = (props) => {
220
+ const {
221
+ flexDirection,
222
+ flexWrap,
223
+ flexGrow,
224
+ flex,
225
+ justifyContent,
226
+ alignItems,
227
+ alignContent,
228
+ gap,
229
+ rowGap,
230
+ columnGap,
231
+ ...otherProps
232
+ } = props;
233
+ return [
234
+ {
235
+ flexDirection,
236
+ flexWrap,
237
+ flexGrow,
238
+ flex,
239
+ justifyContent,
240
+ alignItems,
241
+ alignContent,
242
+ gap,
243
+ rowGap,
244
+ columnGap
245
+ },
246
+ otherProps
247
+ ];
248
+ };
249
+
250
+ // src/components/Flex/Flex.tsx
251
+ var import_jsx_runtime = require("react/jsx-runtime");
252
+ var Flex = (0, import_react2.forwardRef)(
253
+ (props, ref) => {
254
+ const {
255
+ elementType: Element = "div",
256
+ style,
257
+ className,
258
+ ...otherProps
259
+ } = props;
260
+ const classes = (0, import_dedupe.default)("mobius", "mobius-flex", className);
261
+ const [styleProps, restProps] = splitProps(otherProps);
262
+ const flexStyles = buildFlexStyles(styleProps);
263
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
264
+ Element,
265
+ {
266
+ ref,
267
+ style: {
268
+ ...flexStyles,
269
+ ...style
270
+ },
271
+ className: classes,
272
+ ...restProps
273
+ }
274
+ );
275
+ }
276
+ );
277
+ Flex.displayName = "Flex";
278
+
279
+ // src/components/Icon/Icon.tsx
280
+ var import_dedupe2 = __toESM(require("classnames/dedupe"));
281
+ var import_jsx_runtime2 = require("react/jsx-runtime");
282
+ var ICON_PREFIX = "mobius-icon";
283
+ var capitaliseFirstLetter = (str) => str.charAt(0).toUpperCase() + str.slice(1);
284
+ function Icon({
285
+ icon,
286
+ className,
287
+ size = "xs",
288
+ color,
289
+ fixedWidth,
290
+ spin,
291
+ spinReverse,
292
+ title,
293
+ ...otherProps
294
+ }) {
295
+ if (!icon) {
296
+ throw new Error("Must specify icon object");
297
+ }
298
+ const classes = (0, import_dedupe2.default)(
299
+ "mobius",
300
+ "mobius-icon",
301
+ `svg-inline--${ICON_PREFIX}`,
302
+ `--size-${size}`,
303
+ className,
304
+ {
305
+ [`${ICON_PREFIX}-fw`]: fixedWidth,
306
+ [`${ICON_PREFIX}-spin`]: spin || spinReverse,
307
+ [`${ICON_PREFIX}-spin-reverse`]: spinReverse
308
+ }
309
+ );
310
+ const { iconName, width, height, svgPathData } = icon;
311
+ const formattedIconName = iconName.split("-").join(" ");
312
+ const defaultTitle = `${capitaliseFirstLetter(formattedIconName)} icon`;
313
+ const titleText = title || defaultTitle;
314
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
315
+ "svg",
316
+ {
317
+ "aria-hidden": "true",
318
+ focusable: "false",
319
+ "data-icon": iconName,
320
+ className: classes,
321
+ role: "img",
322
+ xmlns: "http://www.w3.org/2000/svg",
323
+ viewBox: `0 0 ${width} ${height}`,
324
+ style: { color },
325
+ ...otherProps,
326
+ children: [
327
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("title", { children: titleText }),
328
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { fill: "currentColor", d: svgPathData })
329
+ ]
330
+ }
331
+ );
332
+ }
333
+
334
+ // src/components/Accordion/Accordion.tsx
335
+ var import_jsx_runtime3 = require("react/jsx-runtime");
336
+ var AccordionLink = ({
337
+ text,
338
+ elementType: LinkElement = "span",
339
+ toggle,
340
+ onClick,
341
+ headerChildren,
342
+ ariaExpanded
343
+ }) => {
344
+ const linkClasses = (0, import_dedupe3.default)("mobius-accordion__link", {
345
+ "--is-open": ariaExpanded
346
+ });
347
+ const iconClasses = (0, import_dedupe3.default)("mobius-accordion__link-icon", {
348
+ "--is-open": ariaExpanded
349
+ });
350
+ const handleOnClick = () => {
351
+ if (onClick) {
352
+ onClick();
353
+ }
354
+ toggle();
355
+ };
356
+ const handleKeyDown = (e) => {
357
+ if (e.key === " " || e.key === "Enter") {
358
+ toggle();
359
+ }
360
+ };
361
+ if (headerChildren) {
362
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
363
+ Flex,
364
+ {
365
+ justifyContent: "space-between",
366
+ alignItems: "center",
367
+ className: "mobius-accordion__header",
368
+ children: [
369
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
370
+ "div",
371
+ {
372
+ className: linkClasses,
373
+ onClick: handleOnClick,
374
+ onKeyDown: handleKeyDown,
375
+ role: "button",
376
+ tabIndex: 0,
377
+ "aria-expanded": !!ariaExpanded,
378
+ children: [
379
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(LinkElement, { className: "mobius-accordion__link-text", children: text }),
380
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Icon, { icon: import_icons.chevronDown, className: iconClasses })
381
+ ]
382
+ }
383
+ ),
384
+ headerChildren
385
+ ]
386
+ }
387
+ );
388
+ }
389
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
390
+ "div",
391
+ {
392
+ className: linkClasses,
393
+ onClick: handleOnClick,
394
+ onKeyDown: handleKeyDown,
395
+ role: "button",
396
+ tabIndex: 0,
397
+ "aria-expanded": !!ariaExpanded,
398
+ children: [
399
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(LinkElement, { className: "mobius-accordion__link-text", children: text }),
400
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Icon, { icon: import_icons.chevronDown, className: iconClasses })
401
+ ]
402
+ }
403
+ );
404
+ };
405
+ var Accordion = (0, import_react3.forwardRef)((props, ref) => {
406
+ const {
407
+ showText = "See more",
408
+ hideText = "See less",
409
+ headerPosition = "top",
410
+ startOpen = false,
411
+ linkElementType,
412
+ onOpen,
413
+ onClose,
414
+ onChange = () => {
415
+ },
416
+ headerChildren,
417
+ ...rest
418
+ } = props;
419
+ const [accordionState, setAccordionState] = (0, import_react3.useState)({
420
+ open: true,
421
+ withAnimation: false
422
+ });
423
+ const prefersReducedMotion = usePrefersReducedMotion();
424
+ const containerClasses = (0, import_dedupe3.default)(
425
+ "mobius",
426
+ "mobius-accordion",
427
+ props.className,
428
+ {
429
+ "--should-animate": accordionState.withAnimation && !prefersReducedMotion,
430
+ "--is-open": accordionState.open
431
+ }
432
+ );
433
+ const contentContainerClasses = (0, import_dedupe3.default)(
434
+ "mobius-accordion__content-container",
435
+ {
436
+ "--is-open": accordionState.open
437
+ }
438
+ );
439
+ const contentClasses = (0, import_dedupe3.default)("mobius-accordion__content", {
440
+ "--is-open": accordionState.open
441
+ });
442
+ const linkText = accordionState.open ? hideText : showText;
443
+ const handleChange = () => {
444
+ if (!accordionState.open && onOpen) {
445
+ onOpen();
446
+ }
447
+ if (accordionState.open && onClose) {
448
+ onClose();
449
+ }
450
+ if (onChange) {
451
+ onChange(!accordionState.open);
452
+ }
453
+ setAccordionState({
454
+ open: !accordionState.open,
455
+ withAnimation: true
456
+ });
457
+ };
458
+ (0, import_react3.useEffect)(() => {
459
+ setAccordionState({
460
+ open: startOpen,
461
+ withAnimation: false
462
+ });
463
+ }, [startOpen]);
464
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { ref, ...rest, className: containerClasses, children: [
465
+ headerPosition === "top" && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
466
+ AccordionLink,
467
+ {
468
+ text: linkText,
469
+ elementType: linkElementType,
470
+ toggle: handleChange,
471
+ ariaExpanded: accordionState.open,
472
+ headerChildren
473
+ }
474
+ ),
475
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
476
+ "div",
477
+ {
478
+ className: contentContainerClasses,
479
+ "aria-hidden": !accordionState.open,
480
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: contentClasses, children: props.children })
481
+ }
482
+ ),
483
+ headerPosition === "bottom" && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
484
+ AccordionLink,
485
+ {
486
+ text: linkText,
487
+ toggle: handleChange,
488
+ ariaExpanded: accordionState.open,
489
+ headerChildren
490
+ }
491
+ )
492
+ ] });
493
+ });
494
+ Accordion.displayName = "Accordion";
495
+
496
+ // src/components/AddressLookup/AddressLookup.tsx
497
+ var import_icons3 = require("@simplybusiness/icons");
498
+ var import_react26 = require("react");
499
+
500
+ // src/components/Combobox/Combobox.tsx
501
+ var import_dedupe10 = __toESM(require("classnames/dedupe"));
502
+ var import_react25 = require("react");
503
+
504
+ // src/hooks/useBodyScrollLock/useBodyScrollLock.ts
505
+ var import_react4 = require("react");
506
+ function useBodyScrollLock({
507
+ enabled = true
508
+ } = {}) {
509
+ function disableScrollLock() {
510
+ document.body.style.removeProperty("overflow");
511
+ document.body.style.removeProperty("scrollbar-gutter");
512
+ document.documentElement.style.removeProperty("scrollbar-gutter");
513
+ }
514
+ function enableScrollLock() {
515
+ document.body.style.overflow = "hidden";
516
+ document.body.style.scrollbarGutter = "stable";
517
+ document.documentElement.style.scrollbarGutter = "stable";
518
+ }
519
+ (0, import_react4.useEffect)(() => {
520
+ if (enabled) {
521
+ enableScrollLock();
522
+ } else {
523
+ disableScrollLock();
524
+ }
525
+ return () => {
526
+ disableScrollLock();
527
+ };
528
+ }, [enabled]);
529
+ }
530
+
531
+ // src/hooks/useBreakpoint/useBreakpoint.tsx
532
+ var import_lodash = __toESM(require("lodash.debounce"));
533
+ var import_react5 = require("react");
534
+ var DEFAULT_BREAKPOINTS = [
535
+ { size: "xs", value: 320 },
536
+ { size: "sm", value: 480 },
537
+ { size: "md", value: 670 },
538
+ { size: "lg", value: 960 },
539
+ { size: "xl", value: 1200 },
540
+ { size: "xxl", value: 1320 }
541
+ ];
542
+ var getBreakpoint = (breakpoints, windowWidth) => {
543
+ const closest = breakpoints.findIndex(
544
+ (breakpoint) => breakpoint.value >= windowWidth + 1
545
+ );
546
+ const smallest = breakpoints[0];
547
+ const largest = breakpoints[breakpoints.length - 1];
548
+ const match = breakpoints[closest - 1];
549
+ if (closest === 0) return smallest;
550
+ if (closest === -1) return largest;
551
+ return match;
552
+ };
553
+ var useBreakpoint = (customBreakpoints) => {
554
+ const window2 = globalThis?.window || void 0;
555
+ const isClientSide = typeof window2 !== "undefined";
556
+ const breakpoints = customBreakpoints || DEFAULT_BREAKPOINTS;
557
+ const defaultBreakpoint = breakpoints[0];
558
+ const [windowWidth, setWindowWidth] = (0, import_react5.useState)(
559
+ isClientSide ? window2.innerWidth : defaultBreakpoint.value
560
+ );
561
+ const [currentBreakpoint, setCurrentBreakpoint] = (0, import_react5.useState)(defaultBreakpoint);
562
+ const handleResize = () => {
563
+ setWindowWidth(window2.innerWidth);
564
+ };
565
+ (0, import_react5.useEffect)(() => {
566
+ if (!windowWidth || breakpoints.length === 0) {
567
+ setCurrentBreakpoint(breakpoints[0]);
568
+ return;
569
+ }
570
+ const newBreakpoint = getBreakpoint(breakpoints, windowWidth);
571
+ if (currentBreakpoint.size === newBreakpoint?.size) return;
572
+ setCurrentBreakpoint(newBreakpoint);
573
+ }, [currentBreakpoint, windowWidth, breakpoints]);
574
+ (0, import_react5.useEffect)(() => {
575
+ window2.addEventListener("resize", (0, import_lodash.default)(handleResize, 200), {
576
+ passive: true
577
+ });
578
+ return () => window2.removeEventListener("resize", handleResize);
579
+ }, [window2]);
580
+ const up = (0, import_react5.useCallback)(
581
+ (size) => {
582
+ const sizeIndex = breakpoints.findIndex((item) => item.size === size);
583
+ if (sizeIndex === -1) {
584
+ return false;
585
+ }
586
+ const currentIndex = breakpoints.findIndex(
587
+ (item) => item.size === currentBreakpoint.size
588
+ );
589
+ return currentIndex >= sizeIndex;
590
+ },
591
+ [currentBreakpoint, breakpoints]
592
+ );
593
+ const down = (0, import_react5.useCallback)(
594
+ (size) => {
595
+ const sizeIndex = breakpoints.findIndex((item) => item.size === size);
596
+ if (sizeIndex === -1) {
597
+ return true;
598
+ }
599
+ const currentIndex = breakpoints.findIndex(
600
+ (item) => item.size === currentBreakpoint.size
601
+ );
602
+ return currentIndex <= sizeIndex;
603
+ },
604
+ [currentBreakpoint, breakpoints]
605
+ );
606
+ return {
607
+ breakpoint: isClientSide ? currentBreakpoint : defaultBreakpoint,
608
+ up,
609
+ down
610
+ };
611
+ };
612
+
613
+ // src/hooks/useButton/useButton.tsx
614
+ var import_react6 = require("react");
615
+ function useButton({
616
+ elementType = "button",
617
+ type = "button",
618
+ isDisabled = false,
619
+ href,
620
+ target,
621
+ rel,
622
+ role,
623
+ name,
624
+ value,
625
+ onClick,
626
+ onPress
627
+ }) {
628
+ const realOnClick = (0, import_react6.useCallback)(
629
+ (event) => {
630
+ if (isDisabled) {
631
+ return;
632
+ }
633
+ onClick?.(event);
634
+ onPress?.(event);
635
+ },
636
+ [isDisabled, onClick, onPress]
637
+ );
638
+ function getRole() {
639
+ if (role) {
640
+ return role;
641
+ }
642
+ if (elementType === "a") {
643
+ return void 0;
644
+ }
645
+ return "button";
646
+ }
647
+ const extraProps = elementType === "button" ? { type } : {
648
+ role: getRole()
649
+ };
650
+ return {
651
+ buttonProps: {
652
+ href: elementType === "a" ? href : void 0,
653
+ target: elementType === "a" ? target : void 0,
654
+ rel: elementType === "a" ? rel : void 0,
655
+ tabIndex: isDisabled ? -1 : 0,
656
+ disabled: isDisabled || void 0,
657
+ "aria-disabled": isDisabled || void 0,
658
+ name: elementType === "input" || elementType === "button" ? name : void 0,
659
+ value: elementType === "input" || elementType === "button" ? value : void 0,
660
+ ...extraProps,
661
+ onClick: realOnClick
662
+ }
663
+ };
664
+ }
665
+
666
+ // src/hooks/useDebouncedValue/useDebouncedValue.tsx
667
+ var import_react7 = require("react");
668
+ function useDebouncedValue(value, delay = 0) {
669
+ const [debouncedValue, setDebouncedValue] = (0, import_react7.useState)(value);
670
+ (0, import_react7.useEffect)(() => {
671
+ let timeout = null;
672
+ if (delay === 0) {
673
+ setDebouncedValue(value);
674
+ } else {
675
+ timeout = setTimeout(() => {
676
+ setDebouncedValue(value);
677
+ }, delay);
678
+ }
679
+ return () => {
680
+ if (timeout) {
681
+ clearTimeout(timeout);
682
+ timeout = null;
683
+ }
684
+ };
685
+ }, [value, delay]);
686
+ return debouncedValue;
687
+ }
688
+
689
+ // src/hooks/useDeprecationWarning/useDeprecationWarning.ts
690
+ var import_react8 = require("react");
691
+ var useDeprecationWarning = (props) => {
692
+ const hasWarned = (0, import_react8.useRef)(false);
693
+ const deprecatedProps = Object.entries(props).reduce(
694
+ (acc, [key, value]) => {
695
+ if (value) {
696
+ acc.push(key);
697
+ }
698
+ return acc;
699
+ },
700
+ []
701
+ );
702
+ const noDeprecatedProps = deprecatedProps.length === 0;
703
+ if (noDeprecatedProps) {
704
+ return;
705
+ }
706
+ if (!hasWarned.current) {
707
+ deprecatedProps.forEach((prop) => {
708
+ console.warn(
709
+ `Deprecation warning: Mobius no longer supports the prop '${prop}'. Please refer to the documentation for more information.`
710
+ );
711
+ });
712
+ hasWarned.current = true;
713
+ }
714
+ };
715
+
716
+ // src/hooks/useDialog/useDialog.ts
717
+ var import_react10 = require("react");
718
+
719
+ // src/hooks/useDialogPolyfill/useDialogPolyfill.ts
720
+ var import_react9 = require("react");
721
+ var useDialogPolyfill = () => {
722
+ const [hasDialogSupport, setHasDialogSupport] = (0, import_react9.useState)(false);
723
+ const hasAlreadyLoaded = (0, import_react9.useRef)(false);
724
+ (0, import_react9.useEffect)(() => {
725
+ setHasDialogSupport(supportsDialog());
726
+ }, []);
727
+ const polyfillDialog = async (ref) => {
728
+ if (!hasAlreadyLoaded.current && !hasDialogSupport && typeof window !== "undefined" && ref.current !== null) {
729
+ const { default: dialogPolyfill } = await import("dialog-polyfill");
730
+ hasAlreadyLoaded.current = true;
731
+ try {
732
+ if (ref.current) {
733
+ dialogPolyfill.registerDialog(ref.current);
734
+ }
735
+ } catch (error3) {
736
+ console.error("Failed to load dialog-polyfill", error3);
737
+ }
738
+ }
739
+ };
740
+ return {
741
+ polyfillDialog
742
+ };
743
+ };
744
+
745
+ // src/hooks/useDialog/useDialog.ts
746
+ var TRANSITION_CLASS_NAME = "--transition";
747
+ var FALLBACK_TRANSITION_DURATION = 0;
748
+ var useDialog = (props) => {
749
+ const { ref, isOpen, transition, onOpen, onClose } = props;
750
+ const [hasDialogSupport, setHasDialogSupport] = (0, import_react10.useState)(false);
751
+ const shouldTransition = hasDialogSupport && transition.isEnabled;
752
+ const { polyfillDialog } = useDialogPolyfill();
753
+ (0, import_react10.useEffect)(() => {
754
+ setHasDialogSupport(supportsDialog());
755
+ }, []);
756
+ const TRANSITION_DURATION_IN_MS = ref.current && Number(
757
+ getComputedStyle(ref.current).getPropertyValue(transition.CSSVariable).replace("ms", "")
758
+ ) || FALLBACK_TRANSITION_DURATION;
759
+ useBodyScrollLock({ enabled: isOpen });
760
+ const open = (0, import_react10.useCallback)(() => {
761
+ ref.current?.showModal();
762
+ onOpen?.();
763
+ }, [onOpen, ref]);
764
+ const close = (0, import_react10.useCallback)(() => {
765
+ ref.current?.close();
766
+ onClose?.();
767
+ }, [onClose, ref]);
768
+ const handleClose = (0, import_react10.useCallback)(
769
+ (event) => {
770
+ if (event) {
771
+ event.preventDefault();
772
+ event.stopPropagation();
773
+ }
774
+ if (shouldTransition) {
775
+ ref.current?.classList.remove(TRANSITION_CLASS_NAME);
776
+ setTimeout(() => close(), TRANSITION_DURATION_IN_MS);
777
+ } else {
778
+ close();
779
+ }
780
+ },
781
+ [TRANSITION_DURATION_IN_MS, close, ref, shouldTransition]
782
+ );
783
+ (0, import_react10.useEffect)(() => {
784
+ async function toggleDialog() {
785
+ if (isOpen && !ref.current?.open) {
786
+ await polyfillDialog(ref);
787
+ open();
788
+ setTimeout(() => {
789
+ ref.current?.classList.add(TRANSITION_CLASS_NAME);
790
+ }, 0);
791
+ } else if (!isOpen && ref.current?.open) {
792
+ handleClose();
793
+ }
794
+ }
795
+ void toggleDialog();
796
+ }, [handleClose, isOpen, open, ref, polyfillDialog]);
797
+ return {
798
+ open,
799
+ close: handleClose
800
+ };
801
+ };
802
+
803
+ // src/hooks/useLabel/useLabel.tsx
804
+ var import_react11 = require("react");
805
+ function useLabel({
806
+ id: providedId,
807
+ label,
808
+ "aria-label": ariaLabel,
809
+ "aria-labelledby": ariaLabelledby,
810
+ labelElementType = "label"
811
+ }) {
812
+ let labelProps = {};
813
+ let fieldProps = {};
814
+ const hasWarnedAboutMissingLabels = (0, import_react11.useRef)(false);
815
+ const fallbackId = (0, import_react11.useId)();
816
+ const id = providedId || fallbackId;
817
+ const labelId = (0, import_react11.useId)();
818
+ if (label) {
819
+ ariaLabelledby = ariaLabelledby ? `${labelId} ${ariaLabelledby}` : labelId;
820
+ labelProps = {
821
+ id: labelId,
822
+ htmlFor: labelElementType === "label" ? id : void 0
823
+ };
824
+ } else if (!ariaLabelledby && !ariaLabel && !hasWarnedAboutMissingLabels.current) {
825
+ hasWarnedAboutMissingLabels.current = true;
826
+ console.warn(
827
+ "If you do not provide a visible label, you must specify an aria-label or aria-labelledby attribute for accessibility"
828
+ );
829
+ }
830
+ fieldProps = {
831
+ id,
832
+ "aria-label": ariaLabel,
833
+ "aria-labelledby": ariaLabelledby
834
+ };
835
+ return {
836
+ labelProps,
837
+ fieldProps
838
+ };
839
+ }
840
+
841
+ // src/hooks/useOnClickOutside/useOnClickOutside.tsx
842
+ var import_react12 = require("react");
843
+ var useOnClickOutside = (ref, handler) => {
844
+ (0, import_react12.useEffect)(() => {
845
+ const listener = (event) => {
846
+ if (!ref.current || ref.current.contains(event.target)) {
847
+ return;
848
+ }
849
+ event.preventDefault();
850
+ event.stopPropagation();
851
+ handler(event);
852
+ };
853
+ const handleEscapeKeyPress = (event) => {
854
+ if (event.key === "Escape") {
855
+ event.preventDefault();
856
+ event.stopPropagation();
857
+ handler(event);
858
+ }
859
+ };
860
+ document.addEventListener("mousedown", listener);
861
+ document.addEventListener("touchstart", listener);
862
+ document.addEventListener("keydown", handleEscapeKeyPress);
863
+ return () => {
864
+ document.removeEventListener("mousedown", listener);
865
+ document.removeEventListener("touchstart", listener);
866
+ document.addEventListener("keydown", handleEscapeKeyPress);
867
+ };
868
+ }, [ref, handler]);
869
+ };
870
+
871
+ // src/hooks/useOnUnmount/useOnUnmount.tsx
872
+ var import_react13 = require("react");
873
+ function useOnUnmount(callback) {
874
+ const callbackRef = (0, import_react13.useRef)(callback);
875
+ (0, import_react13.useEffect)(() => {
876
+ callbackRef.current = callback;
877
+ }, [callback]);
878
+ (0, import_react13.useEffect)(
879
+ () => () => {
880
+ callbackRef.current();
881
+ },
882
+ []
883
+ );
884
+ }
885
+
886
+ // src/hooks/useRenderCount/useRenderCount.ts
887
+ var import_react14 = require("react");
888
+ function useRenderCount() {
889
+ const count = (0, import_react14.useRef)(1);
890
+ (0, import_react14.useEffect)(() => {
891
+ count.current += 1;
892
+ });
893
+ return count.current;
894
+ }
895
+
896
+ // src/hooks/useTextField/useTextField.tsx
897
+ var import_react15 = require("react");
898
+ function useTextField(props) {
899
+ const {
900
+ isDisabled = false,
901
+ isReadOnly = false,
902
+ isRequired = false,
903
+ inputElementType = "input"
904
+ } = props;
905
+ const { labelProps, fieldProps } = useLabel(props);
906
+ const descriptionId = (0, import_react15.useId)();
907
+ const descriptionProps = { id: descriptionId };
908
+ const errorMessageId = (0, import_react15.useId)();
909
+ const errorMessageProps = { id: errorMessageId };
910
+ const ariaDescribedBy = spaceDelimitedList([
911
+ props.description && descriptionId,
912
+ props.errorMessage && errorMessageId,
913
+ props["aria-describedby"]
914
+ ]);
915
+ return {
916
+ descriptionProps,
917
+ errorMessageProps,
918
+ labelProps,
919
+ inputProps: {
920
+ defaultValue: props.defaultValue,
921
+ value: props.value,
922
+ onChange: props.onChange,
923
+ disabled: isDisabled,
924
+ readOnly: isReadOnly,
925
+ required: isRequired,
926
+ "aria-required": isRequired === true ? true : void 0,
927
+ "aria-invalid": props.isInvalid,
928
+ "aria-describedby": ariaDescribedBy,
929
+ "aria-errormessage": props["aria-errormessage"],
930
+ role: props.role,
931
+ type: inputElementType === "input" ? props.type : void 0,
932
+ pattern: inputElementType === "input" ? props.pattern : void 0,
933
+ autoComplete: props.autoComplete,
934
+ maxLength: props.maxLength,
935
+ minLength: props.minLength,
936
+ name: props.name,
937
+ placeholder: props.placeholder,
938
+ inputMode: props.inputMode,
939
+ // Clipboard events
940
+ onCopy: props.onCopy,
941
+ onCut: props.onCut,
942
+ onPaste: props.onPaste,
943
+ // Composition events
944
+ onCompositionEnd: props.onCompositionEnd,
945
+ onCompositionStart: props.onCompositionStart,
946
+ onCompositionUpdate: props.onCompositionUpdate,
947
+ // Selection events
948
+ onSelect: props.onSelect,
949
+ // Input events
950
+ onBeforeInput: props.onBeforeInput,
951
+ onInput: props.onInput,
952
+ // Focus events
953
+ onFocus: props.onFocus,
954
+ onBlur: props.onBlur,
955
+ ...fieldProps
956
+ }
957
+ };
958
+ }
959
+
960
+ // src/hooks/useValidationClasses/useValidationClasses.ts
961
+ var useValidationClasses = (props) => {
962
+ const { validationState, isInvalid } = props;
963
+ useDeprecationWarning({ validationState });
964
+ if (isInvalid || validationState === "invalid") {
965
+ return "--is-invalid";
966
+ }
967
+ if (isInvalid === false || validationState === "valid") {
968
+ return "--is-valid";
969
+ }
970
+ return "";
971
+ };
972
+
973
+ // src/hooks/useWindowEvent/useWindowEvent.tsx
974
+ var import_react16 = require("react");
975
+ function normaliseOptions(options, otherOptions = {}) {
976
+ if (typeof options === "undefined") {
977
+ return otherOptions;
978
+ }
979
+ if (typeof options === "boolean") {
980
+ return { capture: options, ...otherOptions };
981
+ }
982
+ return { ...options, ...otherOptions };
983
+ }
984
+ function useWindowEvent(type, listener, options) {
985
+ (0, import_react16.useEffect)(() => {
986
+ const controller = new AbortController();
987
+ const { signal } = controller;
988
+ const normalisedOptions = normaliseOptions(options, { signal });
989
+ window.addEventListener(type, listener, normalisedOptions);
990
+ return () => {
991
+ controller.abort();
992
+ window.removeEventListener(type, listener, normalisedOptions);
993
+ };
994
+ }, [type, listener, options]);
995
+ }
996
+
997
+ // src/components/TextField/TextField.tsx
998
+ var import_dedupe8 = __toESM(require("classnames/dedupe"));
999
+ var import_react21 = require("react");
1000
+
1001
+ // src/components/ErrorMessage/ErrorMessage.tsx
1002
+ var import_icons2 = require("@simplybusiness/icons");
1003
+ var import_dedupe5 = __toESM(require("classnames/dedupe"));
1004
+
1005
+ // src/components/Text/Text.tsx
1006
+ var import_react17 = require("react");
1007
+ var import_dedupe4 = __toESM(require("classnames/dedupe"));
1008
+ var import_jsx_runtime4 = require("react/jsx-runtime");
1009
+ var getElementType = (variant, elementType) => {
1010
+ if (variant) {
1011
+ return ["h1", "h2", "h3", "h4"].includes(variant) ? variant : "p";
1012
+ }
1013
+ return elementType || "p";
1014
+ };
1015
+ var Text = (0, import_react17.forwardRef)(
1016
+ ({ elementType: Component = "p", ...props }, ref) => {
1017
+ const { variant, className, spacing, ...otherProps } = props;
1018
+ const elementType = getElementType(variant, Component);
1019
+ const variantType = variant || elementType;
1020
+ const classes = (0, import_dedupe4.default)(
1021
+ "mobius",
1022
+ "mobius-text",
1023
+ { [`--is-${variantType}`]: variantType },
1024
+ { [`--has-line-height-${spacing}`]: spacing },
1025
+ className
1026
+ );
1027
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Component, { ref, ...otherProps, className: classes });
1028
+ }
1029
+ );
1030
+ Text.displayName = "Text";
1031
+
1032
+ // src/components/ErrorMessage/ErrorMessage.tsx
1033
+ var import_jsx_runtime5 = require("react/jsx-runtime");
1034
+ var ErrorMessage = ({
1035
+ id,
1036
+ errorMessage,
1037
+ className
1038
+ }) => {
1039
+ const classes = (0, import_dedupe5.default)("mobius", "mobius-error-message", className);
1040
+ if (!errorMessage) return null;
1041
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { id, className: classes, "data-testid": "ErrorMessage", role: "alert", children: [
1042
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Icon, { icon: import_icons2.error, className: "mobius-error-message__icon" }),
1043
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Text, { elementType: "span", className: "mobius-error-message__text", children: errorMessage })
1044
+ ] });
1045
+ };
1046
+ ErrorMessage.displayName = "ErrorMessage";
1047
+
1048
+ // src/components/Label/Label.tsx
1049
+ var import_react18 = require("react");
1050
+ var import_dedupe6 = __toESM(require("classnames/dedupe"));
1051
+ var import_jsx_runtime6 = require("react/jsx-runtime");
1052
+ var Label = (0, import_react18.forwardRef)(
1053
+ (props, ref) => {
1054
+ const { elementType: Element = "label", children, ...otherProps } = props;
1055
+ const classes = (0, import_dedupe6.default)("mobius", "mobius-label", props.className);
1056
+ otherProps.className = classes;
1057
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Element, { ref, ...otherProps, className: classes, children });
1058
+ }
1059
+ );
1060
+ Label.displayName = "Label";
1061
+
1062
+ // src/components/Stack/Stack.tsx
1063
+ var import_react19 = require("react");
1064
+ var import_dedupe7 = __toESM(require("classnames/dedupe"));
1065
+ var import_jsx_runtime7 = require("react/jsx-runtime");
1066
+ var Stack = (0, import_react19.forwardRef)((props, ref) => {
1067
+ const { elementType: Element = "div", gap, ...otherProps } = props;
1068
+ const classes = (0, import_dedupe7.default)(
1069
+ "mobius",
1070
+ "mobius-stack",
1071
+ {
1072
+ [`--gap-${gap}`]: gap
1073
+ },
1074
+ otherProps.className
1075
+ );
1076
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Element, { ref, ...otherProps, className: classes });
1077
+ });
1078
+ Stack.displayName = "Stack";
1079
+
1080
+ // src/components/TextField/adornmentWithClassName.ts
1081
+ var import_classnames = __toESM(require("classnames"));
1082
+ var import_react20 = require("react");
1083
+ var adornmentWithClassName = (component, validationClasses, className) => {
1084
+ if (!component) return null;
1085
+ return (0, import_react20.cloneElement)(component, {
1086
+ className: (0, import_classnames.default)(
1087
+ component.props.className,
1088
+ validationClasses,
1089
+ className
1090
+ )
1091
+ });
1092
+ };
1093
+
1094
+ // src/components/TextField/TextField.tsx
1095
+ var import_jsx_runtime8 = require("react/jsx-runtime");
1096
+ var TextField = (0, import_react21.forwardRef)((props, ref) => {
1097
+ const {
1098
+ isDisabled,
1099
+ type = "text",
1100
+ validationState,
1101
+ isInvalid,
1102
+ className,
1103
+ label,
1104
+ errorMessage,
1105
+ children,
1106
+ isRequired,
1107
+ prefixInside,
1108
+ prefixOutside,
1109
+ suffixInside,
1110
+ suffixOutside,
1111
+ isReadOnly,
1112
+ ...otherProps
1113
+ } = props;
1114
+ const { inputProps, labelProps, errorMessageProps } = useTextField({
1115
+ ...props,
1116
+ "aria-errormessage": errorMessage
1117
+ });
1118
+ const hidden = type === "hidden";
1119
+ const validationClasses = useValidationClasses({
1120
+ validationState,
1121
+ isInvalid
1122
+ });
1123
+ const textfieldClasses = {
1124
+ "--is-disabled": isDisabled,
1125
+ "--is-required": typeof isRequired === "boolean" && isRequired,
1126
+ "--is-optional": typeof isRequired === "boolean" && !isRequired,
1127
+ "--is-hidden": hidden,
1128
+ [className || ""]: true
1129
+ };
1130
+ const sharedClasses = (0, import_dedupe8.default)(validationClasses, textfieldClasses);
1131
+ const labelClasses = (0, import_dedupe8.default)(
1132
+ {
1133
+ "--is-disabled": isDisabled
1134
+ },
1135
+ validationClasses
1136
+ );
1137
+ const containerClasses = (0, import_dedupe8.default)(
1138
+ "mobius",
1139
+ "mobius-text-field",
1140
+ sharedClasses
1141
+ );
1142
+ const inputClasses = (0, import_dedupe8.default)(
1143
+ "mobius",
1144
+ "mobius-text-field__input",
1145
+ sharedClasses
1146
+ );
1147
+ const inputWrapperClasses = (0, import_dedupe8.default)(
1148
+ "mobius-text-field__input-wrapper",
1149
+ sharedClasses
1150
+ );
1151
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Stack, { gap: "xs", className: containerClasses, children: [
1152
+ label && !hidden && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Label, { ...labelProps, className: labelClasses, children: label }),
1153
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "mobius-text-field__inner-container", children: [
1154
+ adornmentWithClassName(
1155
+ prefixOutside,
1156
+ labelClasses,
1157
+ "mobius-text-field__prefix-outside"
1158
+ ),
1159
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: inputWrapperClasses, children: [
1160
+ adornmentWithClassName(
1161
+ prefixInside,
1162
+ labelClasses,
1163
+ "mobius-text-field__prefix-inside"
1164
+ ),
1165
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1166
+ "input",
1167
+ {
1168
+ ...otherProps,
1169
+ ...inputProps,
1170
+ ref,
1171
+ type,
1172
+ className: inputClasses
1173
+ }
1174
+ ),
1175
+ adornmentWithClassName(
1176
+ suffixInside,
1177
+ labelClasses,
1178
+ "mobius-text-field__suffix-inside"
1179
+ )
1180
+ ] }),
1181
+ adornmentWithClassName(
1182
+ suffixOutside,
1183
+ labelClasses,
1184
+ "mobius-text-field__suffix-outside"
1185
+ )
1186
+ ] }),
1187
+ children && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "mobius-text-field__children", children }),
1188
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ErrorMessage, { ...errorMessageProps, errorMessage })
1189
+ ] });
1190
+ });
1191
+ TextField.displayName = "TextField";
1192
+
1193
+ // src/components/VisuallyHidden/VisuallyHidden.tsx
1194
+ var import_jsx_runtime9 = require("react/jsx-runtime");
1195
+ function VisuallyHidden(props) {
1196
+ const {
1197
+ className,
1198
+ children,
1199
+ elementType: Component = "div",
1200
+ ...otherProps
1201
+ } = props;
1202
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1203
+ Component,
1204
+ {
1205
+ className,
1206
+ style: {
1207
+ border: 0,
1208
+ clip: "rect(0 0 0 0)",
1209
+ clipPath: "inset(50%)",
1210
+ height: "1px",
1211
+ margin: "-1px",
1212
+ overflow: "hidden",
1213
+ padding: 0,
1214
+ position: "absolute",
1215
+ width: "1px",
1216
+ whiteSpace: "nowrap"
1217
+ },
1218
+ ...otherProps,
1219
+ children
1220
+ }
1221
+ );
1222
+ }
1223
+
1224
+ // src/components/Combobox/Listbox.tsx
1225
+ var import_classnames2 = __toESM(require("classnames"));
1226
+
1227
+ // src/components/Combobox/Option.tsx
1228
+ var import_react22 = require("react");
1229
+ var import_dedupe9 = __toESM(require("classnames/dedupe"));
1230
+
1231
+ // src/components/Combobox/utils.tsx
1232
+ function isOptionGroup(options) {
1233
+ if (!options) return false;
1234
+ return typeof options[0] === "object" && "options" in options[0] && options[0].options !== void 0 && "heading" in options[0] && options[0].heading !== void 0;
1235
+ }
1236
+ var getOptionValue = (option) => typeof option === "string" ? option : option?.value;
1237
+ var getOptionLabel = (option) => typeof option === "string" ? option : option?.label;
1238
+ function filterOptions(options, inputValue) {
1239
+ if (isOptionGroup(options)) {
1240
+ return options.map((optionGroup) => ({
1241
+ ...optionGroup,
1242
+ options: optionGroup.options.filter(
1243
+ (option) => getOptionLabel(option).toLowerCase().includes(inputValue.toLowerCase())
1244
+ )
1245
+ })).filter((optionGroup) => optionGroup.options.length > 0);
1246
+ }
1247
+ return options.filter(
1248
+ (option) => getOptionLabel(option).toLowerCase().includes(inputValue.toLowerCase())
1249
+ );
1250
+ }
1251
+
1252
+ // src/components/Combobox/Option.tsx
1253
+ var import_jsx_runtime10 = require("react/jsx-runtime");
1254
+ var Option = ({
1255
+ option,
1256
+ isHighlighted,
1257
+ onOptionSelect,
1258
+ optionComponent: OptionComponent,
1259
+ id
1260
+ }) => {
1261
+ const optionRef = (0, import_react22.useRef)(null);
1262
+ (0, import_react22.useEffect)(() => {
1263
+ if (isHighlighted && optionRef.current && optionRef.current.scrollIntoView) {
1264
+ optionRef.current.scrollIntoView({ block: "nearest" });
1265
+ }
1266
+ }, [isHighlighted]);
1267
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1268
+ "li",
1269
+ {
1270
+ ref: optionRef,
1271
+ role: "option",
1272
+ id,
1273
+ "aria-selected": isHighlighted,
1274
+ onMouseDown: () => onOptionSelect(option),
1275
+ className: (0, import_dedupe9.default)("mobius-combobox__option", "has-pii", {
1276
+ "mobius-combobox__option--is-highlighted": isHighlighted
1277
+ }),
1278
+ children: OptionComponent ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(OptionComponent, { option, isHighlighted }) : getOptionLabel(option)
1279
+ },
1280
+ getOptionValue(option)
1281
+ );
1282
+ };
1283
+
1284
+ // src/components/Combobox/Listbox.tsx
1285
+ var import_jsx_runtime11 = require("react/jsx-runtime");
1286
+ var Listbox = ({
1287
+ id,
1288
+ options,
1289
+ highlightedIndex,
1290
+ highlightedGroupIndex,
1291
+ onOptionSelect,
1292
+ optionComponent
1293
+ }) => {
1294
+ const classes = (0, import_classnames2.default)("mobius-combobox__list");
1295
+ function getOptionId(option, groupIndex, index) {
1296
+ if (typeof option === "object" && "id" in option && typeof option.id === "string") {
1297
+ return option.id;
1298
+ }
1299
+ return isOptionGroup(options) ? `${id}-option-${groupIndex}-${index}` : `${id}-option-${index}`;
1300
+ }
1301
+ if (options && options.length === 0) {
1302
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { role: "listbox", id, className: classes, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "mobius-combobox__no-options", children: "No options" }) });
1303
+ }
1304
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { role: "listbox", id, className: classes, children: isOptionGroup(options) ? options.map((option, groupIndex) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
1305
+ "ul",
1306
+ {
1307
+ role: "group",
1308
+ "aria-labelledby": `${id}-group-${groupIndex}`,
1309
+ className: "mobius-combobox__group",
1310
+ children: [
1311
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1312
+ "li",
1313
+ {
1314
+ role: "presentation",
1315
+ id: `${id}-group-${groupIndex}`,
1316
+ className: "mobius-combobox__group-label",
1317
+ children: option.heading
1318
+ }
1319
+ ),
1320
+ option.options.map((groupOption, index) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1321
+ Option,
1322
+ {
1323
+ option: groupOption,
1324
+ isHighlighted: highlightedIndex === index && highlightedGroupIndex === groupIndex,
1325
+ onOptionSelect,
1326
+ optionComponent,
1327
+ id: getOptionId(groupOption, groupIndex, index)
1328
+ },
1329
+ `${id}-option-${groupIndex}-${index}`
1330
+ ))
1331
+ ]
1332
+ },
1333
+ option.heading
1334
+ )) : typeof options !== "undefined" ? options.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1335
+ Option,
1336
+ {
1337
+ option,
1338
+ isHighlighted: highlightedIndex === index,
1339
+ onOptionSelect,
1340
+ optionComponent,
1341
+ id: getOptionId(option, 0, index)
1342
+ },
1343
+ index
1344
+ )) : null });
1345
+ };
1346
+
1347
+ // src/components/Combobox/useComboboxHighlight.tsx
1348
+ var import_react23 = require("react");
1349
+ function useComboboxHighlight(options) {
1350
+ const [highlightedIndex, setHighlightedIndex] = (0, import_react23.useState)(
1351
+ options && options.length ? 0 : -1
1352
+ );
1353
+ const [highlightedGroupIndex, setHighlightedGroupIndex] = (0, import_react23.useState)(0);
1354
+ function highlightNextOption() {
1355
+ const isGroup = isOptionGroup(options);
1356
+ if (!options) {
1357
+ return;
1358
+ }
1359
+ if (isGroup) {
1360
+ const group = options[highlightedGroupIndex];
1361
+ if (highlightedIndex === group.options.length - 1) {
1362
+ if (highlightedGroupIndex === options.length - 1) {
1363
+ return;
1364
+ }
1365
+ setHighlightedIndex(0);
1366
+ setHighlightedGroupIndex(highlightedGroupIndex + 1);
1367
+ } else {
1368
+ setHighlightedIndex(highlightedIndex + 1);
1369
+ }
1370
+ } else {
1371
+ if (highlightedIndex === options.length - 1) {
1372
+ return;
1373
+ }
1374
+ setHighlightedIndex(highlightedIndex + 1);
1375
+ }
1376
+ }
1377
+ function highlightPreviousOption() {
1378
+ const isGroup = isOptionGroup(options);
1379
+ if (highlightedIndex === 0 && highlightedGroupIndex === 0) {
1380
+ return;
1381
+ }
1382
+ if (isGroup) {
1383
+ if (highlightedIndex === 0) {
1384
+ const prevGroupIndex = highlightedGroupIndex - 1;
1385
+ const prevGroup = options[prevGroupIndex];
1386
+ setHighlightedGroupIndex(prevGroupIndex);
1387
+ setHighlightedIndex(prevGroup.options.length - 1);
1388
+ } else {
1389
+ setHighlightedIndex(highlightedIndex - 1);
1390
+ }
1391
+ } else {
1392
+ setHighlightedIndex(highlightedIndex - 1);
1393
+ }
1394
+ }
1395
+ function highlightFirstOption() {
1396
+ setHighlightedIndex(0);
1397
+ setHighlightedGroupIndex(0);
1398
+ }
1399
+ function highlightLastOption() {
1400
+ const isGroup = isOptionGroup(options);
1401
+ if (!options) {
1402
+ return;
1403
+ }
1404
+ if (isGroup) {
1405
+ const lastGroupIndex = options.length - 1;
1406
+ const lastGroup = options[lastGroupIndex];
1407
+ setHighlightedGroupIndex(lastGroupIndex);
1408
+ setHighlightedIndex(lastGroup.options.length - 1);
1409
+ } else {
1410
+ setHighlightedIndex(options.length - 1);
1411
+ }
1412
+ }
1413
+ const clearHighlight = () => {
1414
+ setHighlightedIndex(
1415
+ typeof options === "undefined" || options.length ? 0 : -1
1416
+ );
1417
+ setHighlightedGroupIndex(0);
1418
+ };
1419
+ return {
1420
+ highlightedIndex,
1421
+ highlightedGroupIndex,
1422
+ highlightPreviousOption,
1423
+ highlightNextOption,
1424
+ highlightFirstOption,
1425
+ highlightLastOption,
1426
+ clearHighlight
1427
+ };
1428
+ }
1429
+
1430
+ // src/components/Combobox/useComboboxOptions.ts
1431
+ var import_react24 = require("react");
1432
+ function useComboboxOptions({
1433
+ options,
1434
+ asyncOptions,
1435
+ delay = 300,
1436
+ minSearchLength = 3,
1437
+ inputValue = "",
1438
+ skipNextDebounceRef,
1439
+ onSearched
1440
+ }) {
1441
+ const [filteredOptions, setFilteredOptions] = (0, import_react24.useState)(void 0);
1442
+ const debouncedInputValue = useDebouncedValue(
1443
+ inputValue,
1444
+ // Don't debounce synchronous options
1445
+ options ? 0 : delay
1446
+ );
1447
+ const [isLoading, setIsLoading] = (0, import_react24.useState)(false);
1448
+ const [error3, setError] = (0, import_react24.useState)(null);
1449
+ (0, import_react24.useEffect)(() => {
1450
+ const controller = new AbortController();
1451
+ const { signal } = controller;
1452
+ const fetchOptions = async () => {
1453
+ setIsLoading(true);
1454
+ setError(null);
1455
+ try {
1456
+ if (asyncOptions) {
1457
+ if (debouncedInputValue.length < minSearchLength) {
1458
+ setFilteredOptions(void 0);
1459
+ return;
1460
+ }
1461
+ const result = await asyncOptions(debouncedInputValue, { signal });
1462
+ setFilteredOptions(result);
1463
+ onSearched?.(debouncedInputValue);
1464
+ } else {
1465
+ setFilteredOptions(filterOptions(options, debouncedInputValue));
1466
+ }
1467
+ } catch (e) {
1468
+ if (e instanceof DOMException && e.name === "AbortError") {
1469
+ return;
1470
+ }
1471
+ setError(e);
1472
+ } finally {
1473
+ setIsLoading(false);
1474
+ }
1475
+ };
1476
+ if (!skipNextDebounceRef?.current) {
1477
+ void fetchOptions();
1478
+ } else {
1479
+ skipNextDebounceRef.current = false;
1480
+ }
1481
+ return () => {
1482
+ controller.abort();
1483
+ };
1484
+ }, [
1485
+ debouncedInputValue,
1486
+ options,
1487
+ asyncOptions,
1488
+ delay,
1489
+ minSearchLength,
1490
+ skipNextDebounceRef,
1491
+ onSearched
1492
+ ]);
1493
+ function updateFilteredOptions(newOptions) {
1494
+ setIsLoading(true);
1495
+ return newOptions.then(setFilteredOptions).catch(setError).finally(() => setIsLoading(false));
1496
+ }
1497
+ return {
1498
+ filteredOptions,
1499
+ updateFilteredOptions,
1500
+ isLoading,
1501
+ error: error3,
1502
+ isError: error3 != null
1503
+ };
1504
+ }
1505
+
1506
+ // src/components/Combobox/Combobox.tsx
1507
+ var import_jsx_runtime12 = require("react/jsx-runtime");
1508
+ var ComboboxInner = (0, import_react25.forwardRef)(
1509
+ (props, ref) => {
1510
+ const {
1511
+ id,
1512
+ defaultValue,
1513
+ value,
1514
+ options,
1515
+ asyncOptions,
1516
+ delay,
1517
+ minSearchLength,
1518
+ onSelected,
1519
+ className,
1520
+ placeholder,
1521
+ icon,
1522
+ onBlur,
1523
+ onFocus,
1524
+ onChange,
1525
+ onSearched,
1526
+ optionComponent,
1527
+ errorMessage,
1528
+ ...otherProps
1529
+ } = props;
1530
+ const skipNextDebounceRef = (0, import_react25.useRef)(false);
1531
+ const fallbackRef = (0, import_react25.useRef)(null);
1532
+ const [inputValue, setInputValue] = (0, import_react25.useState)(defaultValue || "");
1533
+ const [isOpen, setIsOpen] = (0, import_react25.useState)(false);
1534
+ const { filteredOptions, updateFilteredOptions, isLoading, error: error3 } = useComboboxOptions({
1535
+ options,
1536
+ asyncOptions,
1537
+ inputValue,
1538
+ delay,
1539
+ minSearchLength,
1540
+ skipNextDebounceRef
1541
+ });
1542
+ const {
1543
+ highlightedIndex,
1544
+ highlightedGroupIndex,
1545
+ highlightNextOption,
1546
+ highlightPreviousOption,
1547
+ highlightFirstOption,
1548
+ highlightLastOption,
1549
+ clearHighlight
1550
+ } = useComboboxHighlight(filteredOptions);
1551
+ const showListbox = isOpen && filteredOptions && filteredOptions.length > 0;
1552
+ const inputRef = ref || fallbackRef;
1553
+ const listboxId = (0, import_react25.useId)();
1554
+ const statusId = (0, import_react25.useId)();
1555
+ const blurTimeoutRef = (0, import_react25.useRef)(null);
1556
+ const { down } = useBreakpoint();
1557
+ const isMobile = down("md");
1558
+ const handleFocus = (e) => {
1559
+ if (!filteredOptions || filteredOptions.length === 0) return;
1560
+ if (blurTimeoutRef.current) {
1561
+ clearTimeout(blurTimeoutRef.current);
1562
+ blurTimeoutRef.current = null;
1563
+ } else {
1564
+ onFocus?.(e);
1565
+ }
1566
+ setIsOpen(true);
1567
+ };
1568
+ useOnUnmount(() => {
1569
+ if (blurTimeoutRef.current) {
1570
+ clearTimeout(blurTimeoutRef.current);
1571
+ }
1572
+ });
1573
+ const handleInputChange = (e) => {
1574
+ const newValue = e.target.value;
1575
+ setInputValue(newValue);
1576
+ setIsOpen(true);
1577
+ clearHighlight();
1578
+ onChange?.(e);
1579
+ };
1580
+ const handleOptionSelect = (option) => {
1581
+ const val = getOptionValue(option);
1582
+ if (!val) return;
1583
+ if (typeof option === "object" && "callback" in option && option.callback && typeof option.callback === "function") {
1584
+ setTimeout(() => inputRef.current.focus(), 0);
1585
+ updateFilteredOptions(option.callback());
1586
+ return;
1587
+ }
1588
+ skipNextDebounceRef.current = true;
1589
+ setIsOpen(false);
1590
+ setInputValue(val);
1591
+ onSelected?.(option);
1592
+ };
1593
+ const getFirstOption = () => {
1594
+ if (!filteredOptions) return void 0;
1595
+ if (isOptionGroup(filteredOptions)) {
1596
+ return filteredOptions[0]?.options[0];
1597
+ }
1598
+ return filteredOptions[0];
1599
+ };
1600
+ const getHighlightedOption = () => {
1601
+ if (!filteredOptions) return void 0;
1602
+ if (highlightedIndex === -1) return void 0;
1603
+ if (isOptionGroup(filteredOptions)) {
1604
+ const group = filteredOptions[highlightedGroupIndex];
1605
+ return group?.options[highlightedIndex];
1606
+ }
1607
+ return filteredOptions[highlightedIndex];
1608
+ };
1609
+ const getHighlightedOptionId = () => {
1610
+ const option = getHighlightedOption();
1611
+ if (!option) return void 0;
1612
+ if (isOptionGroup(filteredOptions)) {
1613
+ return `${listboxId}-option-${highlightedGroupIndex}-${highlightedIndex}`;
1614
+ }
1615
+ return `${listboxId}-option-${highlightedIndex}`;
1616
+ };
1617
+ const handleBlur = (e) => {
1618
+ const typedText = inputValue.trim().toLowerCase();
1619
+ const highlightedOption = getHighlightedOption();
1620
+ const label = getOptionLabel(highlightedOption);
1621
+ if (typedText === label?.toLowerCase()) {
1622
+ handleOptionSelect(highlightedOption);
1623
+ }
1624
+ blurTimeoutRef.current = setTimeout(() => {
1625
+ onBlur?.(e);
1626
+ setIsOpen(false);
1627
+ }, 150);
1628
+ };
1629
+ const handleKeyDown = (e) => {
1630
+ switch (e.key) {
1631
+ case "ArrowDown":
1632
+ e.preventDefault();
1633
+ setIsOpen(true);
1634
+ highlightNextOption();
1635
+ break;
1636
+ case "ArrowUp":
1637
+ e.preventDefault();
1638
+ setIsOpen(true);
1639
+ highlightPreviousOption();
1640
+ break;
1641
+ case "Home":
1642
+ e.preventDefault();
1643
+ setIsOpen(true);
1644
+ highlightFirstOption();
1645
+ break;
1646
+ case "End":
1647
+ e.preventDefault();
1648
+ setIsOpen(true);
1649
+ highlightLastOption();
1650
+ break;
1651
+ case "Enter":
1652
+ e.preventDefault();
1653
+ if (isOpen) {
1654
+ const selectedOption = getHighlightedOption() || getFirstOption();
1655
+ if (selectedOption) {
1656
+ handleOptionSelect(selectedOption);
1657
+ }
1658
+ }
1659
+ break;
1660
+ case "Escape":
1661
+ e.preventDefault();
1662
+ setInputValue("");
1663
+ setIsOpen(false);
1664
+ clearHighlight();
1665
+ break;
1666
+ default:
1667
+ }
1668
+ };
1669
+ (0, import_react25.useEffect)(() => {
1670
+ if (value) {
1671
+ setInputValue(value);
1672
+ }
1673
+ }, [value]);
1674
+ const classes = (0, import_dedupe10.default)(
1675
+ "mobius mobius-combobox",
1676
+ {
1677
+ "mobius-combobox--is-expanded": isOpen,
1678
+ "mobius-combobox--is-loading": isLoading,
1679
+ "mobius-combobox--is-mobile": isMobile
1680
+ },
1681
+ className
1682
+ );
1683
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { id, "data-testid": "mobius-combobox__wrapper", className: classes, children: [
1684
+ isLoading && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1685
+ VisuallyHidden,
1686
+ {
1687
+ role: "status",
1688
+ "aria-live": "polite",
1689
+ id: statusId,
1690
+ elementType: "div",
1691
+ className: "mobius-combobox__status",
1692
+ children: "Loading options"
1693
+ }
1694
+ ),
1695
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1696
+ TextField,
1697
+ {
1698
+ ...otherProps,
1699
+ className: "mobius-combobox__input",
1700
+ role: "combobox",
1701
+ value: inputValue,
1702
+ placeholder,
1703
+ onFocus: handleFocus,
1704
+ onBlur: handleBlur,
1705
+ onKeyDown: handleKeyDown,
1706
+ onChange: handleInputChange,
1707
+ autoComplete: "off",
1708
+ "aria-describedby": isLoading ? statusId : void 0,
1709
+ "aria-autocomplete": "list",
1710
+ "aria-haspopup": "listbox",
1711
+ "aria-controls": showListbox ? listboxId : void 0,
1712
+ "aria-expanded": showListbox ? true : void 0,
1713
+ "aria-activedescendant": highlightedIndex === -1 ? void 0 : getHighlightedOptionId(),
1714
+ prefixInside: icon,
1715
+ ref: inputRef,
1716
+ errorMessage: errorMessage || error3?.message || void 0
1717
+ }
1718
+ ),
1719
+ showListbox && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1720
+ Listbox,
1721
+ {
1722
+ id: listboxId,
1723
+ isLoading,
1724
+ options: filteredOptions,
1725
+ highlightedIndex,
1726
+ highlightedGroupIndex,
1727
+ onOptionSelect: handleOptionSelect,
1728
+ optionComponent
1729
+ }
1730
+ )
1731
+ ] });
1732
+ }
1733
+ );
1734
+ var Combobox = ComboboxInner;
1735
+
1736
+ // src/components/AddressLookup/utils.ts
1737
+ function isLoqateErrorResponse(response) {
1738
+ return Array.isArray(response) && response.some((item) => "Error" in item);
1739
+ }
1740
+
1741
+ // src/components/AddressLookup/AddressLookup.tsx
1742
+ var import_jsx_runtime13 = require("react/jsx-runtime");
1743
+ function optionsFromResponse({ Items }, addressLookupService) {
1744
+ if (!Items || !Array.isArray(Items)) {
1745
+ throw Error("No address found");
1746
+ }
1747
+ if (isLoqateErrorResponse(Items)) {
1748
+ throw Error(Items[0].Description);
1749
+ }
1750
+ return Items.map((item) => ({
1751
+ id: item.Id,
1752
+ label: `${item.Text}, ${item.Description}`,
1753
+ value: item.Text,
1754
+ // Add a callback to trigger secondary search
1755
+ // if the address type is not "Address"
1756
+ callback: item.Type === "Address" ? void 0 : async () => {
1757
+ const result = await addressLookupService.findById(item.Id);
1758
+ return optionsFromResponse(result, addressLookupService);
1759
+ }
1760
+ }));
1761
+ }
1762
+ var AddressLookup = (0, import_react26.forwardRef)(
1763
+ ({
1764
+ addressLookupService,
1765
+ onAddressSelected,
1766
+ onError,
1767
+ errorMessage,
1768
+ ...otherProps
1769
+ }, ref) => {
1770
+ const [error3, _setError] = (0, import_react26.useState)(null);
1771
+ const setError = (0, import_react26.useCallback)(
1772
+ (newError) => {
1773
+ if (newError != null) onError?.(newError);
1774
+ _setError(newError);
1775
+ },
1776
+ [onError]
1777
+ );
1778
+ const asyncOptions = (0, import_react26.useCallback)(
1779
+ async (searchTerm) => {
1780
+ try {
1781
+ const response = await addressLookupService.search(searchTerm);
1782
+ setError(null);
1783
+ return optionsFromResponse(response, addressLookupService);
1784
+ } catch (e) {
1785
+ setError(e);
1786
+ return [];
1787
+ }
1788
+ },
1789
+ [addressLookupService, setError]
1790
+ );
1791
+ const handleSelected = (selected) => {
1792
+ setError(null);
1793
+ return addressLookupService.get(selected.id).then(onAddressSelected).catch(setError);
1794
+ };
1795
+ const realErrorMessage = error3 && "An error occurred" || errorMessage;
1796
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1797
+ Combobox,
1798
+ {
1799
+ ...otherProps,
1800
+ ref,
1801
+ onSelected: handleSelected,
1802
+ asyncOptions,
1803
+ errorMessage: realErrorMessage,
1804
+ icon: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { icon: import_icons3.search })
1805
+ }
1806
+ );
1807
+ }
1808
+ );
1809
+ AddressLookup.displayName = "AddressLookup";
1810
+
1811
+ // src/components/AddressLookup/LoqateAddressLookupError.tsx
1812
+ var LoqateAddressLookupError = class extends Error {
1813
+ constructor(response) {
1814
+ super(response.Description);
1815
+ this.name = "LoqateAddressLookupError";
1816
+ this.response = response;
1817
+ }
1818
+ };
1819
+
1820
+ // src/components/AddressLookup/LoqateAddressLookupService.tsx
1821
+ var LOQATE_BASE_URL = "https://api.addressy.com/Capture/Interactive";
1822
+ var LOQATE_FIND_URL = "/Find/v1.00/json3.ws";
1823
+ var LOQATE_RETRIEVE_URL = "/Retrieve/v1.2/json3.ws";
1824
+ var DEFAULT_COUNTRIES = ["GB"];
1825
+ var LoqateAddressLookupService = class {
1826
+ /**
1827
+ * Base URL for the Loqate API
1828
+ */
1829
+ #baseUrl;
1830
+ /**
1831
+ * API key for the Loqate API
1832
+ */
1833
+ #apiKey;
1834
+ /**
1835
+ * List of allowed country codes for the Loqate API
1836
+ * 2 or 3 character ISO country codes
1837
+ */
1838
+ #countries;
1839
+ constructor({
1840
+ baseUrl,
1841
+ apiKey,
1842
+ countries
1843
+ }) {
1844
+ this.#apiKey = apiKey;
1845
+ this.#baseUrl = baseUrl || LOQATE_BASE_URL;
1846
+ this.#countries = countries || DEFAULT_COUNTRIES;
1847
+ }
1848
+ fetchFromApi(url) {
1849
+ return fetch(`${this.#baseUrl}${url}`).then((response) => response.json()).then((json) => {
1850
+ if (json.Items?.some((item) => item.Error)) {
1851
+ throw new LoqateAddressLookupError(json);
1852
+ }
1853
+ return json;
1854
+ });
1855
+ }
1856
+ search(searchTerm) {
1857
+ const url = `${LOQATE_FIND_URL}?Key=${this.#apiKey}&Text=${searchTerm}&Countries=${this.#countries?.join(",")}`;
1858
+ return this.fetchFromApi(url);
1859
+ }
1860
+ findById(id) {
1861
+ const url = `${LOQATE_FIND_URL}?Key=${this.#apiKey}&Container=${id}&Countries=${this.#countries?.join(",")}`;
1862
+ return this.fetchFromApi(url);
1863
+ }
1864
+ async get(id) {
1865
+ const url = `${LOQATE_RETRIEVE_URL}?Key=${this.#apiKey}&Id=${id}`;
1866
+ const response = await this.fetchFromApi(url);
1867
+ return response.Items[0];
1868
+ }
1869
+ };
1870
+
1871
+ // src/components/Alert/Alert.tsx
1872
+ var import_icons4 = require("@simplybusiness/icons");
1873
+ var import_dedupe11 = __toESM(require("classnames/dedupe"));
1874
+ var import_react27 = require("react");
1875
+ var import_jsx_runtime14 = require("react/jsx-runtime");
1876
+ var Alert = (0, import_react27.forwardRef)(
1877
+ (props, ref) => {
1878
+ const {
1879
+ elementType: Element = "div",
1880
+ variant = "info",
1881
+ show = true,
1882
+ header,
1883
+ children,
1884
+ ...otherProps
1885
+ } = props;
1886
+ if (!show) return null;
1887
+ const classes = (0, import_dedupe11.default)(
1888
+ "mobius",
1889
+ "mobius-alert",
1890
+ {
1891
+ "--info": variant === "info",
1892
+ "--success": variant === "success",
1893
+ "--warning": variant === "warning",
1894
+ "--error": variant === "error",
1895
+ "--has-header": header
1896
+ },
1897
+ otherProps.className
1898
+ );
1899
+ const icon = {
1900
+ info: import_icons4.circleInfo,
1901
+ success: import_icons4.circleTick,
1902
+ warning: import_icons4.warning,
1903
+ error: import_icons4.error
1904
+ };
1905
+ const headerClasses = (0, import_dedupe11.default)("mobius", "mobius-alert__header");
1906
+ const iconClasses = (0, import_dedupe11.default)("mobius", "mobius-alert__icon");
1907
+ const contentClasses = (0, import_dedupe11.default)("mobius", "mobius-alert__content");
1908
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Element, { ref, role: "alert", ...otherProps, className: classes, children: [
1909
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: iconClasses, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Icon, { icon: icon[variant] }) }),
1910
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { children: [
1911
+ header && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: headerClasses, children: header }),
1912
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: contentClasses, children })
1913
+ ] })
1914
+ ] });
1915
+ }
1916
+ );
1917
+ Alert.displayName = "Alert";
1918
+
1919
+ // src/components/Box/Box.tsx
1920
+ var import_react28 = require("react");
1921
+ var import_dedupe12 = __toESM(require("classnames/dedupe"));
1922
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1923
+ var Box = (0, import_react28.forwardRef)(
1924
+ (props, ref) => {
1925
+ const {
1926
+ elementType: Element = "div",
1927
+ padding,
1928
+ paddingX,
1929
+ paddingInline,
1930
+ paddingInlineStart,
1931
+ paddingInlineEnd,
1932
+ paddingY,
1933
+ paddingBlock,
1934
+ paddingBlockStart,
1935
+ paddingBlockEnd,
1936
+ paddingTop,
1937
+ paddingRight,
1938
+ paddingBottom,
1939
+ paddingLeft,
1940
+ minWidth,
1941
+ minHeight,
1942
+ maxWidth,
1943
+ maxHeight,
1944
+ width,
1945
+ height,
1946
+ style,
1947
+ ...otherProps
1948
+ } = props;
1949
+ const classes = (0, import_dedupe12.default)("mobius", "mobius-box", otherProps.className);
1950
+ const styleProps = filterUndefinedProps({
1951
+ padding: getSpacingValue(padding),
1952
+ paddingInline: getSpacingValue(paddingInline || paddingX),
1953
+ paddingBlock: getSpacingValue(paddingBlock || paddingY),
1954
+ paddingTop: getSpacingValue(paddingTop || paddingBlockStart),
1955
+ paddingRight: getSpacingValue(paddingRight || paddingInlineEnd),
1956
+ paddingBottom: getSpacingValue(paddingBottom || paddingBlockEnd),
1957
+ paddingLeft: getSpacingValue(paddingLeft || paddingInlineStart),
1958
+ minWidth,
1959
+ minHeight,
1960
+ maxWidth,
1961
+ maxHeight,
1962
+ width,
1963
+ height,
1964
+ ...style
1965
+ });
1966
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1967
+ Element,
1968
+ {
1969
+ ref,
1970
+ style: styleProps,
1971
+ ...otherProps,
1972
+ className: classes
1973
+ }
1974
+ );
1975
+ }
1976
+ );
1977
+ Box.displayName = "Box";
1978
+
1979
+ // src/components/Breadcrumbs/Breadcrumbs.tsx
1980
+ var import_react29 = require("react");
1981
+ var import_dedupe13 = __toESM(require("classnames/dedupe"));
1982
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1983
+ var Breadcrumbs = (0, import_react29.forwardRef)((props, ref) => {
1984
+ const { "aria-label": ariaLabel = "Breadcrumbs" } = props;
1985
+ const { navProps } = { navProps: { "aria-label": ariaLabel } };
1986
+ const { children, ...otherProps } = props;
1987
+ const childArray = import_react29.Children.toArray(children);
1988
+ const classes = (0, import_dedupe13.default)(
1989
+ "mobius",
1990
+ "mobius-breadcrumb",
1991
+ otherProps.className
1992
+ );
1993
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("nav", { ref, ...otherProps, ...navProps, className: classes, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("ul", { children: childArray.map(
1994
+ (child, i) => (0, import_react29.cloneElement)(child, {
1995
+ isCurrent: i === childArray.length - 1
1996
+ })
1997
+ ) }) });
1998
+ });
1999
+ Breadcrumbs.displayName = "Breadcrumbs";
2000
+
2001
+ // src/components/Breadcrumbs/BreadcrumbItem.tsx
2002
+ var import_react30 = require("react");
2003
+ var import_dedupe14 = __toESM(require("classnames/dedupe"));
2004
+ var import_jsx_runtime17 = require("react/jsx-runtime");
2005
+ var BreadcrumbItem = (0, import_react30.forwardRef)((props, ref) => {
2006
+ const {
2007
+ isDisabled = false,
2008
+ isCurrent = false,
2009
+ "aria-current": ariaCurrent = "page",
2010
+ children,
2011
+ separator = /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Box, { className: "mobius-breadcrumb__separator", "aria-hidden": "true", children: ">" }),
2012
+ ...otherProps
2013
+ } = props;
2014
+ const { itemProps } = {
2015
+ itemProps: {
2016
+ "aria-current": isCurrent ? ariaCurrent : void 0,
2017
+ "aria-disabled": isDisabled || isCurrent,
2018
+ ...otherProps
2019
+ }
2020
+ };
2021
+ const classes = (0, import_dedupe14.default)(
2022
+ "mobius",
2023
+ "mobius-breadcrumb__item",
2024
+ props.className
2025
+ );
2026
+ const child = typeof children === "string" ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { ...itemProps, children }) : import_react30.Children.only(children);
2027
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("li", { className: classes, children: [
2028
+ (0, import_react30.cloneElement)(child, { ...child.props, ...itemProps, ref }),
2029
+ !props.isCurrent && separator
2030
+ ] });
2031
+ });
2032
+ BreadcrumbItem.displayName = "BreadcrumbItem";
2033
+
2034
+ // src/components/Button/Button.tsx
2035
+ var import_react31 = require("react");
2036
+ var import_dedupe15 = __toESM(require("classnames/dedupe"));
2037
+
2038
+ // src/components/Button/Loading.tsx
2039
+ var import_icons5 = require("@simplybusiness/icons");
2040
+ var import_jsx_runtime18 = require("react/jsx-runtime");
2041
+ var Loading = (props) => {
2042
+ const { children } = props;
2043
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [
2044
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "mobius-button__icon-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Icon, { icon: import_icons5.loading, spin: true, size: "md" }) }),
2045
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(VisuallyHidden, { className: "mobius-button__loading-text", children: "Loading" }),
2046
+ children
2047
+ ] });
2048
+ };
2049
+
2050
+ // src/components/Button/Success.tsx
2051
+ var import_icons6 = require("@simplybusiness/icons");
2052
+ var import_jsx_runtime19 = require("react/jsx-runtime");
2053
+ var Success = () => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
2054
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "mobius-button__icon-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Icon, { icon: import_icons6.tick, size: "md" }) }),
2055
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(VisuallyHidden, { className: "mobius-button__success-text", children: "Success" })
2056
+ ] });
2057
+
2058
+ // src/components/Button/Button.tsx
2059
+ var import_jsx_runtime20 = (
2060
+ // @ts-expect-error - ref type is not correct
2061
+ require("react/jsx-runtime")
2062
+ );
2063
+ var Button = (0, import_react31.forwardRef)((props, ref) => {
2064
+ const {
2065
+ children,
2066
+ elementType: Component = "button",
2067
+ isDisabled,
2068
+ isLoading,
2069
+ isSuccess,
2070
+ variant = "primary",
2071
+ size = "md",
2072
+ onPress,
2073
+ onClick,
2074
+ ...otherProps
2075
+ } = props;
2076
+ const { buttonProps } = useButton(props);
2077
+ useDeprecationWarning({
2078
+ "variant 'inverse'": variant === "inverse",
2079
+ "variant 'inverse-ghost'": variant === "inverse-ghost"
2080
+ });
2081
+ const getVariant = (type) => {
2082
+ if (type === "inverse") {
2083
+ return "basic";
2084
+ }
2085
+ if (type === "inverse-ghost") {
2086
+ return "secondary";
2087
+ }
2088
+ return variant;
2089
+ };
2090
+ const buttonVariant = getVariant(variant);
2091
+ const classes = (0, import_dedupe15.default)(
2092
+ "mobius",
2093
+ "mobius-button",
2094
+ `--variant-${buttonVariant}`,
2095
+ `--size-${size}`,
2096
+ {
2097
+ "--is-disabled": isDisabled,
2098
+ "--is-loading": isLoading,
2099
+ "--is-success": isSuccess && !isLoading
2100
+ },
2101
+ otherProps.className
2102
+ );
2103
+ otherProps.className = classes;
2104
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(Component, { ref, ...buttonProps, ...otherProps, children: [
2105
+ isLoading ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Loading, { children }) : children,
2106
+ isSuccess && !isLoading && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Success, {})
2107
+ ] });
2108
+ });
2109
+ Button.displayName = "Button";
2110
+
2111
+ // src/components/Checkbox/Checkbox.tsx
2112
+ var import_react32 = require("react");
2113
+ var import_dedupe16 = __toESM(require("classnames/dedupe"));
2114
+ var import_icons7 = require("@simplybusiness/icons");
2115
+ var import_jsx_runtime21 = require("react/jsx-runtime");
2116
+ var Checkbox = (0, import_react32.forwardRef)((props, ref) => {
2117
+ const {
2118
+ id,
2119
+ label,
2120
+ isDisabled,
2121
+ isRequired,
2122
+ validationState,
2123
+ isInvalid,
2124
+ onChange,
2125
+ className,
2126
+ errorMessage,
2127
+ selected,
2128
+ defaultSelected = false,
2129
+ isReadOnly,
2130
+ isLastItem,
2131
+ name,
2132
+ value,
2133
+ ["aria-describedby"]: ariaDescribedBy,
2134
+ ...rest
2135
+ } = props;
2136
+ const [checked, setChecked] = (0, import_react32.useState)(defaultSelected);
2137
+ const fallbackRef = (0, import_react32.useRef)(null);
2138
+ const refObj = ref || fallbackRef;
2139
+ const inputId = (0, import_react32.useId)();
2140
+ const isControlled = typeof selected === "boolean";
2141
+ (0, import_react32.useEffect)(() => {
2142
+ if (isControlled) {
2143
+ setChecked(selected);
2144
+ }
2145
+ }, [selected, isControlled]);
2146
+ const validationClasses = useValidationClasses({
2147
+ validationState,
2148
+ isInvalid
2149
+ });
2150
+ const sharedClasses = (0, import_dedupe16.default)(
2151
+ {
2152
+ "--is-disabled": isDisabled,
2153
+ "--is-selected": checked,
2154
+ "--is-required": typeof isRequired === "boolean" && isRequired,
2155
+ "--is-optional": typeof isRequired === "boolean" && !isRequired
2156
+ },
2157
+ validationClasses
2158
+ );
2159
+ const wrapperClasses = (0, import_dedupe16.default)(
2160
+ "mobius",
2161
+ "mobius-checkbox",
2162
+ sharedClasses,
2163
+ className
2164
+ );
2165
+ const labelClasses = (0, import_dedupe16.default)("mobius-checkbox__label", sharedClasses);
2166
+ const inputClasses = (0, import_dedupe16.default)("mobius-checkbox__input", sharedClasses);
2167
+ const iconClasses = (0, import_dedupe16.default)("mobius-checkbox__icon", sharedClasses);
2168
+ const errorMessageId = (0, import_react32.useId)();
2169
+ const shouldErrorMessageShow = errorMessage ? errorMessageId : void 0;
2170
+ const describedBy = spaceDelimitedList([
2171
+ shouldErrorMessageShow,
2172
+ ariaDescribedBy
2173
+ ]);
2174
+ const labelId = (0, import_react32.useId)();
2175
+ const handleChange = (event) => {
2176
+ setChecked(!checked);
2177
+ if (onChange) {
2178
+ onChange(event, isLastItem);
2179
+ }
2180
+ };
2181
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(Stack, { gap: "xs", className: wrapperClasses, children: [
2182
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("label", { className: labelClasses, children: [
2183
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2184
+ "input",
2185
+ {
2186
+ "aria-describedby": describedBy,
2187
+ "aria-errormessage": shouldErrorMessageShow,
2188
+ "aria-invalid": isInvalid,
2189
+ "aria-labelledby": labelId,
2190
+ readOnly: isReadOnly,
2191
+ disabled: isDisabled,
2192
+ ref: refObj,
2193
+ className: inputClasses,
2194
+ onChange: handleChange,
2195
+ type: "checkbox",
2196
+ checked,
2197
+ required: isRequired,
2198
+ id: id || inputId,
2199
+ name,
2200
+ value,
2201
+ ...rest
2202
+ }
2203
+ ),
2204
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2205
+ Icon,
2206
+ {
2207
+ icon: checked ? import_icons7.squareTick : import_icons7.square,
2208
+ size: "md",
2209
+ className: iconClasses
2210
+ }
2211
+ ),
2212
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { id: labelId, className: "mobius-checkbox__visible-label", children: label })
2213
+ ] }),
2214
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ErrorMessage, { id: errorMessageId, errorMessage })
2215
+ ] });
2216
+ });
2217
+ Checkbox.displayName = "Checkbox";
2218
+
2219
+ // src/components/Checkbox/CheckboxGroup.tsx
2220
+ var import_dedupe17 = __toESM(require("classnames/dedupe"));
2221
+ var import_react33 = require("react");
2222
+ var import_jsx_runtime22 = require("react/jsx-runtime");
2223
+ var CheckboxGroup = (0, import_react33.forwardRef)((props, ref) => {
2224
+ const {
2225
+ label,
2226
+ isDisabled = false,
2227
+ isRequired,
2228
+ validationState,
2229
+ isInvalid,
2230
+ orientation = "vertical",
2231
+ onChange,
2232
+ className,
2233
+ errorMessage,
2234
+ children,
2235
+ defaultValue = [],
2236
+ isReadOnly,
2237
+ itemsPerRow,
2238
+ lastItemDisables = false,
2239
+ ...rest
2240
+ } = props;
2241
+ const [selected, setSelected] = (0, import_react33.useState)(defaultValue);
2242
+ const checkboxGroupClasses = (0, import_dedupe17.default)(
2243
+ "mobius",
2244
+ "mobius-checkbox-group",
2245
+ className,
2246
+ {
2247
+ "--is-horizontal": orientation === "horizontal",
2248
+ "--is-vertical": orientation === "vertical",
2249
+ "--is-required": typeof isRequired === "boolean" && isRequired,
2250
+ "--is-optional": typeof isRequired === "boolean" && !isRequired
2251
+ }
2252
+ );
2253
+ const validationClasses = useValidationClasses({
2254
+ validationState,
2255
+ isInvalid
2256
+ });
2257
+ const labelClasses = (0, import_dedupe17.default)(
2258
+ {
2259
+ "--is-disabled": isDisabled
2260
+ },
2261
+ validationClasses
2262
+ );
2263
+ const errorMessageId = (0, import_react33.useId)();
2264
+ const shouldErrorMessageShow = errorMessage ? errorMessageId : void 0;
2265
+ const describedBy = spaceDelimitedList([
2266
+ shouldErrorMessageShow,
2267
+ props["aria-describedby"]
2268
+ ]);
2269
+ const labelId = (0, import_react33.useId)();
2270
+ const handleChange = (event, isLastItem = false) => {
2271
+ const {
2272
+ target: { value, checked }
2273
+ } = event;
2274
+ let newValue = [...selected];
2275
+ if (!checked) {
2276
+ newValue = selected.filter((item) => item !== value);
2277
+ }
2278
+ if (checked) {
2279
+ newValue = [...selected, value];
2280
+ }
2281
+ if (checked && lastItemDisables && isLastItem) {
2282
+ newValue = [value];
2283
+ }
2284
+ setSelected(newValue);
2285
+ onChange?.(newValue);
2286
+ };
2287
+ const childrenArray = import_react33.Children.toArray(children);
2288
+ const lastCheckbox = childrenArray.filter(
2289
+ (child) => (0, import_react33.isValidElement)(child) && child.type === Checkbox
2290
+ ).pop();
2291
+ const lastCheckboxIsChecked = lastCheckbox && selected.includes(lastCheckbox.props.value);
2292
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
2293
+ "div",
2294
+ {
2295
+ ...rest,
2296
+ "aria-labelledby": props["aria-labelledby"] || labelId,
2297
+ ref,
2298
+ className: checkboxGroupClasses,
2299
+ role: "group",
2300
+ style: {
2301
+ "--checkbox-items-per-row": itemsPerRow || import_react33.Children.count(children)
2302
+ },
2303
+ children: [
2304
+ label && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Label, { elementType: "span", id: labelId, className: labelClasses, children: label }),
2305
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "mobius-checkbox-group__wrapper", children: childrenArray.map((child) => {
2306
+ if ((0, import_react33.isValidElement)(child)) {
2307
+ const isLastItem = child === lastCheckbox;
2308
+ const isChildDisabled = isDisabled || lastItemDisables && lastCheckboxIsChecked && !isLastItem;
2309
+ return (0, import_react33.cloneElement)(child, {
2310
+ isDisabled: isChildDisabled,
2311
+ isRequired,
2312
+ isReadOnly,
2313
+ isInvalid,
2314
+ isLastItem,
2315
+ selected: selected.includes(child.props.value),
2316
+ onChange: handleChange,
2317
+ "aria-describedby": describedBy
17
2318
  });
2319
+ }
2320
+ return child;
2321
+ }) }),
2322
+ errorMessage && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ErrorMessage, { id: errorMessageId, errorMessage })
2323
+ ]
2324
+ }
2325
+ );
2326
+ });
2327
+ CheckboxGroup.displayName = "CheckboxGroup";
2328
+
2329
+ // src/components/Container/Container.tsx
2330
+ var import_react34 = require("react");
2331
+ var import_dedupe18 = __toESM(require("classnames/dedupe"));
2332
+ var import_jsx_runtime23 = require("react/jsx-runtime");
2333
+ var Container = (0, import_react34.forwardRef)((props, ref) => {
2334
+ const { elementType: Element = "div", size = "md", ...otherProps } = props;
2335
+ const classes = (0, import_dedupe18.default)(
2336
+ "mobius",
2337
+ "mobius-container",
2338
+ sizeClasses(size),
2339
+ otherProps.className
2340
+ );
2341
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Element, { ref, ...otherProps, className: classes });
2342
+ });
2343
+ Container.displayName = "Container";
2344
+
2345
+ // src/components/Divider/Divider.tsx
2346
+ var import_dedupe19 = __toESM(require("classnames/dedupe"));
2347
+ var import_jsx_runtime24 = require("react/jsx-runtime");
2348
+ var Divider = ({
2349
+ "aria-orientation": ariaOrientation = "horizontal",
2350
+ className,
2351
+ ...rest
2352
+ }) => {
2353
+ const classes = (0, import_dedupe19.default)("mobius", "mobius-divider", className);
2354
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2355
+ "div",
2356
+ {
2357
+ className: classes,
2358
+ role: "separator",
2359
+ "aria-orientation": ariaOrientation,
2360
+ ...rest,
2361
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "mobius-divider__inner" })
2362
+ }
2363
+ );
2364
+ };
2365
+ Divider.displayName = "Divider";
2366
+
2367
+ // src/components/Drawer/Content.tsx
2368
+ var import_react35 = require("react");
2369
+ var import_jsx_runtime25 = require("react/jsx-runtime");
2370
+ var Content = (0, import_react35.forwardRef)(
2371
+ ({ children, ...otherProps }, ref) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { ref, ...otherProps, className: "mobius-drawer__content", children })
2372
+ );
2373
+ Content.displayName = "Content";
2374
+
2375
+ // src/components/Drawer/Drawer.tsx
2376
+ var import_dedupe20 = __toESM(require("classnames/dedupe"));
2377
+ var import_react37 = require("react");
2378
+
2379
+ // src/components/Drawer/DrawerContext.tsx
2380
+ var import_react36 = require("react");
2381
+ var DrawerContext = (0, import_react36.createContext)({
2382
+ onClose: () => {
2383
+ },
2384
+ closeLabel: void 0
2385
+ });
2386
+
2387
+ // src/components/Drawer/Drawer.tsx
2388
+ var import_jsx_runtime26 = require("react/jsx-runtime");
2389
+ var TRANSITION_CSS_VARIABLE = "--drawer-transition-duration";
2390
+ var Drawer = (0, import_react37.forwardRef)((props, ref) => {
2391
+ const {
2392
+ isOpen,
2393
+ className,
2394
+ closeLabel,
2395
+ direction,
2396
+ announce = "Drawer opened on screen",
2397
+ onOpen,
2398
+ onClose,
2399
+ children
2400
+ } = props;
2401
+ const dialogRef = (0, import_react37.useRef)(null);
2402
+ const [shouldTransition, setShouldTransition] = (0, import_react37.useState)(false);
2403
+ const { close } = useDialog({
2404
+ ref: dialogRef,
2405
+ isOpen,
2406
+ onOpen,
2407
+ onClose,
2408
+ transition: {
2409
+ isEnabled: true,
2410
+ CSSVariable: TRANSITION_CSS_VARIABLE
2411
+ }
2412
+ });
2413
+ const hiddenId = `screen-reader-announce-${(0, import_react37.useId)()}`;
2414
+ const dialogClasses = (0, import_dedupe20.default)(
2415
+ "mobius",
2416
+ "mobius-drawer",
2417
+ `--${direction}`,
2418
+ className,
2419
+ {
2420
+ "--should-transition": shouldTransition
2421
+ }
2422
+ );
2423
+ (0, import_react37.useEffect)(() => {
2424
+ setShouldTransition(supportsDialog());
2425
+ }, []);
2426
+ const contextValue = (0, import_react37.useMemo)(
2427
+ () => ({
2428
+ onClose: close,
2429
+ closeLabel
2430
+ }),
2431
+ [close, closeLabel]
2432
+ );
2433
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2434
+ "dialog",
2435
+ {
2436
+ id: (0, import_react37.useId)(),
2437
+ ref: mergeRefs([dialogRef, ref]),
2438
+ onCancel: close,
2439
+ className: dialogClasses,
2440
+ "aria-describedby": hiddenId,
2441
+ children: [
2442
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { id: hiddenId, children: announce }) }),
2443
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(DrawerContext.Provider, { value: contextValue, children })
2444
+ ]
2445
+ }
2446
+ );
2447
+ });
2448
+ Drawer.displayName = "Drawer";
2449
+
2450
+ // src/components/Drawer/useDrawer.ts
2451
+ var import_react38 = require("react");
2452
+ var useDrawer = () => {
2453
+ const { onClose, closeLabel } = (0, import_react38.useContext)(DrawerContext);
2454
+ return { onClose, closeLabel };
2455
+ };
2456
+
2457
+ // src/components/Drawer/Header.tsx
2458
+ var import_react39 = require("react");
2459
+ var import_icons8 = require("@simplybusiness/icons");
2460
+ var import_jsx_runtime27 = require("react/jsx-runtime");
2461
+ var Header = (0, import_react39.forwardRef)(
2462
+ ({ children, ...otherProps }, ref) => {
2463
+ const { onClose, closeLabel } = useDrawer();
2464
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("header", { ref, ...otherProps, className: "mobius-drawer__header", children: [
2465
+ children,
2466
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
2467
+ Button,
2468
+ {
2469
+ "aria-label": "Close",
2470
+ variant: "basic",
2471
+ onPress: onClose,
2472
+ className: "mobius-drawer__close",
2473
+ size: "sm",
2474
+ children: [
2475
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Icon, { icon: import_icons8.cross }),
2476
+ " ",
2477
+ closeLabel
2478
+ ]
18
2479
  }
2480
+ )
2481
+ ] });
2482
+ }
2483
+ );
2484
+ Header.displayName = "Header";
2485
+
2486
+ // src/components/Drawer/index.tsx
2487
+ var Drawer2 = Object.assign(Drawer, {
2488
+ Header,
2489
+ Content
2490
+ });
2491
+ Drawer2.displayName = "Drawer";
2492
+
2493
+ // src/components/DropdownMenu/DropdownMenu.tsx
2494
+ var import_react40 = require("react");
2495
+ var import_react_accessible_dropdown_menu_hook = __toESM(require("react-accessible-dropdown-menu-hook"));
2496
+ var import_dedupe21 = __toESM(require("classnames/dedupe"));
2497
+ var import_jsx_runtime28 = require("react/jsx-runtime");
2498
+ var DropdownMenu = (0, import_react40.forwardRef)((props, ref) => {
2499
+ const {
2500
+ elementType: Element = "nav",
2501
+ trigger,
2502
+ label = "Menu",
2503
+ children,
2504
+ ...otherProps
2505
+ } = props;
2506
+ const [activeId, setActiveId] = (0, import_react40.useState)(null);
2507
+ const numberOfItems = import_react40.Children.count(children);
2508
+ const {
2509
+ buttonProps,
2510
+ itemProps,
2511
+ isOpen: open,
2512
+ setIsOpen
2513
+ } = (0, import_react_accessible_dropdown_menu_hook.default)(numberOfItems);
2514
+ const classes = (0, import_dedupe21.default)(
2515
+ "mobius",
2516
+ "mobius-dropdown-menu",
2517
+ otherProps.className
2518
+ );
2519
+ const triggerClasses = (0, import_dedupe21.default)("mobius", "mobius-dropdown-menu__trigger");
2520
+ const listClasses = (0, import_dedupe21.default)("mobius", "mobius-dropdown-menu__list", {
2521
+ "--is-open": open
2522
+ });
2523
+ const handleChildClick = ({ onClick }, index) => {
2524
+ setActiveId(index);
2525
+ setIsOpen(false);
2526
+ if (onClick) {
2527
+ onClick();
2528
+ }
2529
+ };
2530
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Element, { ref, ...otherProps, className: classes, children: [
2531
+ trigger ? (0, import_react40.cloneElement)(trigger, {
2532
+ className: triggerClasses,
2533
+ open,
2534
+ label,
2535
+ ...buttonProps
2536
+ }) : /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Button, { className: triggerClasses, ...buttonProps, children: label }),
2537
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("ul", { className: listClasses, role: "menu", children: import_react40.Children.map(children, (child, index) => {
2538
+ if ((0, import_react40.isValidElement)(child)) {
2539
+ return (0, import_react40.cloneElement)(child, {
2540
+ onClick: () => handleChildClick(child.props, index),
2541
+ active: index === activeId,
2542
+ ...itemProps[index]
2543
+ });
2544
+ }
2545
+ return child;
2546
+ }) })
2547
+ ] });
2548
+ });
2549
+ DropdownMenu.displayName = "DropdownMenu";
2550
+
2551
+ // src/components/DropdownMenu/Item.tsx
2552
+ var import_react41 = require("react");
2553
+ var import_dedupe22 = __toESM(require("classnames/dedupe"));
2554
+ var import_jsx_runtime29 = require("react/jsx-runtime");
2555
+ var Item = (0, import_react41.forwardRef)(
2556
+ (props, ref) => {
2557
+ const {
2558
+ elementType: Element = "li",
2559
+ active,
2560
+ onClick,
2561
+ children,
2562
+ ...otherProps
2563
+ } = props;
2564
+ const classes = (0, import_dedupe22.default)(
2565
+ "mobius",
2566
+ "mobius-dropdown-menu__item",
2567
+ { "--is-active": active },
2568
+ otherProps.className
2569
+ );
2570
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Element, { ref, onClick, ...otherProps, children: import_react41.Children.map(children, (child) => {
2571
+ if ((0, import_react41.isValidElement)(child)) {
2572
+ const childClasses = (0, import_dedupe22.default)(child.props.className, classes);
2573
+ return (0, import_react41.cloneElement)(child, {
2574
+ className: childClasses
2575
+ });
2576
+ }
2577
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: classes, children: child });
2578
+ }) });
2579
+ }
2580
+ );
2581
+ Item.displayName = "DropdownMenu.Item";
2582
+
2583
+ // src/components/DropdownMenu/index.tsx
2584
+ var DropdownMenu2 = Object.assign(
2585
+ DropdownMenu,
2586
+ {
2587
+ Item
2588
+ }
2589
+ );
2590
+ DropdownMenu2.displayName = "DropdownMenu";
2591
+
2592
+ // src/components/Fieldset/Fieldset.tsx
2593
+ var import_dedupe23 = __toESM(require("classnames/dedupe"));
2594
+ var import_react42 = require("react");
2595
+ var import_jsx_runtime30 = require("react/jsx-runtime");
2596
+ var useFieldset = (props) => {
2597
+ const { legend } = props;
2598
+ let legendProps = {};
2599
+ let containerProps = {
2600
+ role: "group"
2601
+ };
2602
+ const legendId = (0, import_react42.useId)();
2603
+ if (legend) {
2604
+ legendProps = {
2605
+ ...legendProps,
2606
+ id: legendId
2607
+ };
2608
+ containerProps = {
2609
+ ...containerProps,
2610
+ "aria-labelledby": legendId
2611
+ };
2612
+ }
2613
+ return {
2614
+ legendProps,
2615
+ containerProps
2616
+ };
2617
+ };
2618
+ var Fieldset = (0, import_react42.forwardRef)((props, _ref) => {
2619
+ const {
2620
+ children,
2621
+ legend,
2622
+ legendComponent = /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("legend", {}),
2623
+ ...otherProps
2624
+ } = props;
2625
+ const { legendProps, containerProps } = useFieldset(props);
2626
+ const classes = (0, import_dedupe23.default)("mobius", "mobius-fieldset", props.className);
2627
+ legendProps.className = "mobius-fieldset__legend";
2628
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Flex, { ...containerProps, ...otherProps, className: classes, children: [
2629
+ legend && (0, import_react42.cloneElement)(legendComponent, { ...legendProps }, [legend]),
2630
+ children
2631
+ ] });
2632
+ });
2633
+ Fieldset.displayName = "Fieldset";
2634
+
2635
+ // src/components/Grid/Grid.tsx
2636
+ var import_react43 = require("react");
2637
+ var import_dedupe24 = __toESM(require("classnames/dedupe"));
2638
+ var import_jsx_runtime31 = require("react/jsx-runtime");
2639
+ var Grid = (0, import_react43.forwardRef)(
2640
+ (props, _ref) => {
2641
+ const {
2642
+ columns = 12,
2643
+ gap,
2644
+ columnGap,
2645
+ rowGap,
2646
+ alignContent,
2647
+ alignItems,
2648
+ justifyContent,
2649
+ justifyItems,
2650
+ className,
2651
+ style,
2652
+ ...rest
2653
+ } = props;
2654
+ const classes = (0, import_dedupe24.default)("mobius", "mobius-grid", className);
2655
+ const styles = filterUndefinedProps({
2656
+ boxSizing: "border-box",
2657
+ display: "grid",
2658
+ gridTemplateColumns: `repeat(${columns}, 1fr)`,
2659
+ gap: getSpacingValue(gap),
2660
+ columnGap: getSpacingValue(columnGap),
2661
+ rowGap: getSpacingValue(rowGap),
2662
+ alignContent,
2663
+ alignItems,
2664
+ justifyContent,
2665
+ justifyItems,
2666
+ ...style
19
2667
  });
20
- return from;
2668
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { style: styles, className: classes, ...rest });
2669
+ }
2670
+ );
2671
+ Grid.displayName = "Grid";
2672
+
2673
+ // src/components/Grid/Item.tsx
2674
+ var import_react44 = require("react");
2675
+ var import_dedupe25 = __toESM(require("classnames/dedupe"));
2676
+ var import_jsx_runtime32 = require("react/jsx-runtime");
2677
+ var getBreakpointMap = (config) => Object.entries(config).reduce((prev, [key, value]) => {
2678
+ const previous = Object.values(prev);
2679
+ const lastDefined = previous[previous.length - 1];
2680
+ return { ...prev, [key]: value || lastDefined };
2681
+ }, {});
2682
+ var DEFAULT_SPAN = 12;
2683
+ var GridItem = (0, import_react44.forwardRef)((props, _ref) => {
2684
+ const {
2685
+ breakpoint: { size: breakpointSize }
2686
+ } = useBreakpoint();
2687
+ const {
2688
+ span,
2689
+ xs = Array.isArray(span) ? DEFAULT_SPAN : span,
2690
+ sm,
2691
+ md,
2692
+ lg,
2693
+ xl,
2694
+ xxl,
2695
+ alignSelf,
2696
+ justifySelf,
2697
+ className,
2698
+ ...rest
2699
+ } = props;
2700
+ const breakpointMap = getBreakpointMap({
2701
+ xs,
2702
+ sm,
2703
+ md,
2704
+ lg,
2705
+ xl,
2706
+ xxl
2707
+ });
2708
+ const [responsiveSpan, setResponsiveSpan] = (0, import_react44.useState)();
2709
+ const classes = (0, import_dedupe25.default)("mobius-grid__item", className);
2710
+ (0, import_react44.useEffect)(() => {
2711
+ setResponsiveSpan(breakpointMap[breakpointSize]);
2712
+ }, [breakpointSize, breakpointMap]);
2713
+ const styles = {
2714
+ gridColumn: responsiveSpan ? `span ${responsiveSpan}` : void 0,
2715
+ alignSelf,
2716
+ justifySelf
2717
+ };
2718
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { style: { ...styles }, className: classes, ...rest });
2719
+ });
2720
+ GridItem.displayName = "GridItem";
2721
+
2722
+ // src/components/Grid/index.tsx
2723
+ var Grid2 = Object.assign(Grid, {
2724
+ Item: GridItem
2725
+ });
2726
+ Grid2.displayName = "Grid";
2727
+
2728
+ // src/components/Image/Image.tsx
2729
+ var import_react45 = require("react");
2730
+ var import_dedupe26 = __toESM(require("classnames/dedupe"));
2731
+ var import_jsx_runtime33 = require("react/jsx-runtime");
2732
+ var Image = (0, import_react45.forwardRef)(
2733
+ ({ alt, elementType: Component = "img", ...otherProps }, ref) => {
2734
+ const classes = (0, import_dedupe26.default)("mobius", "mobius-image", otherProps.className);
2735
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Component, { alt, ref, ...otherProps, className: classes });
2736
+ }
2737
+ );
2738
+ Image.displayName = "Image";
2739
+
2740
+ // src/components/Link/Link.tsx
2741
+ var import_react46 = require("react");
2742
+ var import_dedupe27 = __toESM(require("classnames/dedupe"));
2743
+ var import_jsx_runtime34 = require("react/jsx-runtime");
2744
+ var Link = (0, import_react46.forwardRef)(
2745
+ (props, ref) => {
2746
+ const {
2747
+ isDisabled = false,
2748
+ elementType: Component = "a",
2749
+ style,
2750
+ className,
2751
+ ...otherProps
2752
+ } = props;
2753
+ const disabledStyles = {
2754
+ pointerEvents: "none"
2755
+ };
2756
+ const styles = { ...style, ...isDisabled && disabledStyles };
2757
+ const classes = (0, import_dedupe27.default)("mobius", "mobius-link", className, {
2758
+ "--is-disabled": isDisabled
2759
+ });
2760
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2761
+ Component,
2762
+ {
2763
+ ref,
2764
+ style: styles,
2765
+ className: classes,
2766
+ "aria-disabled": isDisabled,
2767
+ ...otherProps,
2768
+ children: props.children
2769
+ }
2770
+ );
2771
+ }
2772
+ );
2773
+ Link.displayName = "Link";
2774
+
2775
+ // src/components/LinkButton/LinkButton.tsx
2776
+ var import_dedupe28 = __toESM(require("classnames/dedupe"));
2777
+ var import_jsx_runtime35 = (
2778
+ // @ts-expect-error Button only allows elementType of string, not React component
2779
+ require("react/jsx-runtime")
2780
+ );
2781
+ function LinkButton({
2782
+ href,
2783
+ children,
2784
+ className,
2785
+ elementType = "a",
2786
+ ...rest
2787
+ }) {
2788
+ if (!href) {
2789
+ throw new Error("LinkButton requires a href prop");
2790
+ }
2791
+ const classes = (0, import_dedupe28.default)("mobius", "mobius-link-button", className);
2792
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Button, { elementType, href, className: classes, ...rest, children });
21
2793
  }
22
2794
 
23
- //# sourceMappingURL=index.js.map
2795
+ // src/components/List/List.tsx
2796
+ var import_react47 = require("react");
2797
+ var import_dedupe29 = __toESM(require("classnames/dedupe"));
2798
+ var import_jsx_runtime36 = require("react/jsx-runtime");
2799
+ var List = (0, import_react47.forwardRef)(
2800
+ (props, ref) => {
2801
+ const Component = props.isOrdered ? "ol" : "ul";
2802
+ const { children, icon, ...otherProps } = props;
2803
+ const { isOrdered, liststyletype, isReversed, ...restProps } = otherProps;
2804
+ const mappedProps = {
2805
+ ...restProps,
2806
+ reversed: isReversed
2807
+ };
2808
+ const classes = (0, import_dedupe29.default)(
2809
+ "mobius",
2810
+ "mobius-list",
2811
+ {
2812
+ "--has-icon": icon,
2813
+ [`--is-${liststyletype}`]: liststyletype
2814
+ },
2815
+ otherProps.className
2816
+ );
2817
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Component, { ref, ...mappedProps, className: classes, children: import_react47.Children.map(children, (child) => {
2818
+ if ((0, import_react47.isValidElement)(child)) {
2819
+ return (0, import_react47.cloneElement)(child, {
2820
+ parentIcon: icon
2821
+ });
2822
+ }
2823
+ return child;
2824
+ }) });
2825
+ }
2826
+ );
2827
+ List.displayName = "List";
2828
+
2829
+ // src/components/List/ListItem.tsx
2830
+ var import_react48 = require("react");
2831
+ var import_dedupe30 = __toESM(require("classnames/dedupe"));
2832
+ var import_jsx_runtime37 = require("react/jsx-runtime");
2833
+ var ListItem = (0, import_react48.forwardRef)((props, ref) => {
2834
+ const { parentIcon, icon, children, ...otherProps } = props;
2835
+ const iconContent = icon || parentIcon;
2836
+ const classes = (0, import_dedupe30.default)(
2837
+ "mobius",
2838
+ "mobius-list__item",
2839
+ {
2840
+ "--has-icon": iconContent
2841
+ },
2842
+ props.className
2843
+ );
2844
+ const contentClasses = (0, import_dedupe30.default)("mobius", "mobius-list__item-content");
2845
+ const iconClasses = (0, import_dedupe30.default)("mobius", "mobius-list__icon");
2846
+ if (iconContent) {
2847
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("li", { ref, ...otherProps, className: classes, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("span", { className: contentClasses, children: [
2848
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: iconClasses, children: iconContent }),
2849
+ children
2850
+ ] }) });
2851
+ }
2852
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("li", { ref, ...otherProps, className: classes, children });
2853
+ });
2854
+ ListItem.displayName = "ListItem";
2855
+
2856
+ // src/components/LoadingIndicator/LoadingIndicator.tsx
2857
+ var import_react49 = require("react");
2858
+ var import_dedupe31 = __toESM(require("classnames/dedupe"));
2859
+ var import_icons9 = require("@simplybusiness/icons");
2860
+ var import_jsx_runtime38 = require("react/jsx-runtime");
2861
+ var LoadingIndicator = (0, import_react49.forwardRef)((props, ref) => {
2862
+ const { icon = import_icons9.loading, ...otherProps } = props;
2863
+ const classes = (0, import_dedupe31.default)(
2864
+ "mobius",
2865
+ "mobius-loading-indicator",
2866
+ otherProps.className
2867
+ );
2868
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Icon, { icon, spin: true, ref, ...otherProps, className: classes });
2869
+ });
2870
+ LoadingIndicator.displayName = "LoadingIndicator";
2871
+
2872
+ // src/components/Logo/Logo.tsx
2873
+ var import_react50 = require("react");
2874
+ var import_dedupe32 = __toESM(require("classnames/dedupe"));
2875
+ var import_jsx_runtime39 = require("react/jsx-runtime");
2876
+ var Logo = (0, import_react50.forwardRef)((props, ref) => {
2877
+ const { className, width, height, ...otherProps } = props;
2878
+ const classes = (0, import_dedupe32.default)("mobius", "mobius-logo", className);
2879
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
2880
+ "svg",
2881
+ {
2882
+ width,
2883
+ height,
2884
+ ref,
2885
+ className: classes,
2886
+ viewBox: "0 0 144 37",
2887
+ ...otherProps,
2888
+ children: [
2889
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
2890
+ "linearGradient",
2891
+ {
2892
+ id: "logo-gradient",
2893
+ x1: "83.508%",
2894
+ x2: "11.891%",
2895
+ y1: "76.042%",
2896
+ y2: "26.973%",
2897
+ children: [
2898
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("stop", { stopColor: "#4632D8", offset: "0%" }),
2899
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("stop", { stopColor: "#9084E8", offset: "100%" })
2900
+ ]
2901
+ }
2902
+ ) }),
2903
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("g", { children: [
2904
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2905
+ "path",
2906
+ {
2907
+ fill: "#0E0A2B",
2908
+ d: "M68.788 11.307c0-2.486-2.027-3.345-3.833-4.1-1.332-.562-2.471-1.036-2.471-2.072 0-.873.77-1.42 1.968-1.42 1.051 0 1.806.444 2.294.725.193.103.474.222.755.133.192-.06.34-.207.459-.444l.34-.621c.266-.474.163-.888-.281-1.2-.533-.384-1.88-1.05-3.537-1.05-2.738 0-4.647 1.643-4.647 4.01 0 2.413 2.012 3.301 3.788 4.07 1.347.593 2.516 1.096 2.516 2.161 0 .873-.754 1.45-1.924 1.45-1.287 0-2.22-.65-2.678-.961l-.03-.015c-.533-.296-.903-.237-1.228.192l-.415.607c-.444.607-.148.992.134 1.228.828.637 2.427 1.392 4.203 1.392 2.708 0 4.587-1.673 4.587-4.085zm4.44 2.975V6.186c0-.577-.31-.888-.873-.888h-.843c-.563 0-.874.311-.874.888v8.096c0 .577.296.888.874.888h.843c.563 0 .873-.311.873-.888zM71.482 4.203h.755c.518 0 .814-.281.814-.8v-.517c0-.518-.296-.814-.814-.814h-.755c-.518 0-.8.281-.8.814v.518c.016.518.297.8.8.8zM92.645 24.48h.755c.518 0 .814-.282.814-.8v-.518c0-.518-.296-.814-.814-.814h-.755c-.518 0-.799.282-.799.814v.518c0 .518.281.8.8.8zm-6.26-19.42c-1.539 0-2.397.962-2.945 1.895-.444-1.243-1.435-1.895-2.871-1.895-1.362 0-2.146.888-2.723 1.806v-.68c0-.578-.311-.889-.873-.889h-.74c-.563 0-.873.311-.873.888v8.096c0 .577.295.888.873.888h.843c.577 0 .873-.311.873-.888V10.73c0-2.25.888-3.271 2.058-3.271 1.006 0 1.198.71 1.198 1.85v4.987c0 .578.311.888.888.888h.844c.577 0 .873-.31.873-.888v-3.551c0-2.25.873-3.271 2.013-3.271 1.036 0 1.243.74 1.243 1.85v4.987c0 .577.31.888.888.888h.814c.577 0 .888-.31.888-.888V8.835c0-2.5-1.095-3.774-3.27-3.774zm10.804 10.33c2.679 0 4.558-2.13 4.558-5.164 0-3.094-1.776-5.166-4.425-5.166-1.761 0-2.708 1.036-3.049 1.51v-.533c0-.459-.34-.755-.873-.755h-.607c-.562 0-.888.326-.888.888v11.9c0 .576.311.887.888.887h.814c.578 0 .888-.31.888-.888v-3.404c0-.207-.014-.4-.014-.532.325.429 1.184 1.258 2.708 1.258zm-2.768-5.105c0-1.362.622-2.975 2.368-2.975 1.377 0 2.309 1.184 2.309 2.945 0 1.746-.947 2.916-2.338 2.916-1.54 0-2.339-1.45-2.339-2.886zm12.965 4.07v-.652c0-.444-.252-.725-.681-.784-.34-.03-.68-.192-.68-1.066v-9.47c0-.563-.326-.888-.874-.888h-.843c-.563 0-.874.31-.874.888v9.679c0 1.258.34 2.16 1.021 2.678.637.489 1.466.533 2.013.533.607 0 .918-.325.918-.917zm9.457-9.073h-.962c-.518 0-.844.237-.977.726l-1.717 4.972c-.089.311-.192.71-.251.977-.074-.281-.193-.71-.296-1.021l-1.835-4.943c-.163-.489-.489-.71-.977-.71h-1.036c-.415 0-.622.162-.71.295-.09.134-.163.385.014.755l3.685 8.57-.34.813c-.252.592-.77 1.229-1.45 1.229-.267 0-.474-.09-.652-.163h-.014c-.43-.104-.755.074-.962.488l-.163.415c-.119.251-.148.517-.06.725.075.192.237.34.474.429.326.118.814.296 1.391.296 1.628 0 2.975-.977 3.597-2.605l3.996-10.226c.103-.296.088-.563-.045-.755-.163-.163-.4-.267-.71-.267zM67.634 28.297c.977-.592 1.54-1.658 1.54-2.886 0-2.176-1.688-3.567-4.293-3.567h-4.04c-.562 0-.873.311-.873.888v11.899c0 .577.296.888.873.888h4.1c1.346 0 2.5-.34 3.33-.962.932-.71 1.42-1.761 1.42-3.049.03-1.524-.784-2.767-2.057-3.211zm-5.017-.962v-3.212h2.25c1.02 0 1.628.592 1.628 1.584 0 .991-.607 1.643-1.57 1.643h-2.308v-.015zm4.396 4.01c0 1.155-.71 1.865-1.865 1.865h-2.53v-3.714h2.53c1.14.014 1.865.74 1.865 1.85zm12.638-5.712h-.814c-.577 0-.888.31-.888.888v3.655c0 2.176-1.361 3.182-2.634 3.182-1.006 0-1.406-.547-1.406-1.88v-4.942c0-.578-.31-.888-.888-.888h-.814c-.562 0-.888.325-.888.888v5.431c0 2.516 1.17 3.774 3.463 3.774a3.937 3.937 0 003.286-1.761v.651c0 .577.296.888.873.888h.74c.577 0 .888-.31.888-.888v-8.095c-.03-.578-.355-.903-.918-.903zm6.956 3.937c-.917-.311-1.702-.592-1.702-1.184 0-.74.77-.859 1.229-.859.784 0 1.406.281 1.805.474.548.237.947.118 1.184-.34l.193-.341c.251-.518.133-.947-.326-1.184-.326-.178-1.288-.71-2.753-.71-2.279 0-3.803 1.213-3.803 3.004 0 2.042 1.731 2.65 3.137 3.138.903.325 1.687.592 1.687 1.169 0 .547-.488.902-1.258.902-.917 0-1.613-.37-2.057-.621l-.059-.03c-.533-.28-.903-.207-1.213.222l-.222.34c-.178.252-.237.504-.178.726.044.207.192.37.4.488a5.774 5.774 0 003.285 1.007c2.235 0 3.789-1.273 3.789-3.079-.03-2.042-1.761-2.649-3.138-3.122zm6.897-3.937h-.844c-.562 0-.873.31-.873.888v8.095c0 .577.296.888.873.888h.844c.577 0 .873-.31.873-.888v-8.095c0-.563-.31-.888-.873-.888zm9.324-.237c-1.924 0-2.93 1.154-3.36 1.806v-.681c0-.577-.31-.888-.873-.888h-.74c-.563 0-.873.31-.873.888v8.095c0 .577.296.888.873.888h.843c.578 0 .874-.31.874-.888v-3.744c0-1.79 1.14-3.078 2.708-3.078 1.021 0 1.436.547 1.436 1.88v4.942c0 .577.31.888.887.888h.814c.578 0 .888-.31.888-.888v-5.431c0-2.516-1.169-3.789-3.477-3.789zm10.448 0c-2.96 0-5.032 2.131-5.032 5.165 0 2.99 2.235 5.165 5.313 5.165 1.48 0 2.635-.533 3.345-.977.444-.266.562-.695.296-1.198l-.222-.385c-.266-.459-.651-.563-1.184-.31h-.015a3.885 3.885 0 01-2.042.606c-1.54 0-2.634-.962-2.812-2.472h5.816a.935.935 0 00.933-.917c.014-2.827-1.717-4.677-4.396-4.677zm-.044 2.013c1.065 0 1.79.77 1.864 1.968h-4.1c.253-1.213 1.096-1.968 2.236-1.968zm10.152 2.16c-.917-.31-1.702-.591-1.702-1.183 0-.74.77-.859 1.229-.859.784 0 1.406.281 1.805.474.548.237.947.118 1.184-.34l.192-.341c.252-.518.134-.947-.325-1.184-.326-.178-1.288-.71-2.753-.71-2.279 0-3.803 1.213-3.803 3.004 0 2.042 1.731 2.65 3.137 3.138.903.325 1.687.592 1.687 1.169 0 .547-.488.902-1.258.902-.917 0-1.613-.37-2.057-.621l-.059-.03c-.533-.28-.903-.207-1.214.222l-.222.34c-.177.252-.236.504-.177.726.044.207.192.37.4.488a5.774 5.774 0 003.285 1.007c2.235 0 3.789-1.273 3.789-3.079-.015-2.042-1.747-2.649-3.138-3.122zm8.791 0c-.917-.31-1.702-.591-1.702-1.183 0-.74.77-.859 1.229-.859.784 0 1.406.281 1.805.474.548.237.947.118 1.184-.34l.192-.341c.252-.518.134-.947-.325-1.184-.326-.178-1.288-.71-2.753-.71-2.279 0-3.803 1.213-3.803 3.004 0 2.042 1.731 2.65 3.137 3.138.903.325 1.687.592 1.687 1.169 0 .547-.488.902-1.258.902-.917 0-1.613-.37-2.057-.621l-.059-.03c-.533-.28-.903-.207-1.214.222l-.222.34c-.177.252-.236.504-.177.726.044.207.192.37.4.488a5.774 5.774 0 003.285 1.007c2.235 0 3.789-1.273 3.789-3.079-.015-2.042-1.747-2.649-3.138-3.122z"
2909
+ }
2910
+ ),
2911
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2912
+ "path",
2913
+ {
2914
+ fill: "url(#logo-gradient)",
2915
+ d: "M22.747 22.288c.607 1.214.918 2.59.918 4.144 0 1.45-.267 2.827-.8 4.1a10.018 10.018 0 01-2.279 3.36c-.991.961-2.235 1.73-3.744 2.278-1.51.563-3.167.829-4.988.829-2.264 0-4.35-.385-6.29-1.14-1.938-.77-3.492-1.598-4.676-2.5-.31-.252-.548-.504-.696-.77a1.332 1.332 0 01-.177-.71.718.718 0 010-.252c.03-.37.207-.785.547-1.199l1.14-1.598c.4-.548.829-.844 1.288-.918a.896.896 0 01.222-.03c.4 0 .873.163 1.39.474 2.487 1.776 4.914 2.679 7.252 2.679 1.643 0 2.96-.385 3.922-1.14.962-.755 1.45-1.746 1.45-2.96 0-.725-.192-1.39-.562-1.983a5.347 5.347 0 00-1.539-1.569 18.207 18.207 0 00-2.235-1.287 56.102 56.102 0 00-2.649-1.214c-.917-.4-1.835-.814-2.752-1.258a19.282 19.282 0 01-2.62-1.539 14.014 14.014 0 01-2.22-1.924c-.666-.695-1.169-1.539-1.554-2.545-.37-.992-.562-2.087-.562-3.271 0-2.042.533-3.863 1.598-5.446 1.066-1.584 2.516-2.797 4.336-3.641C8.303.414 10.345 0 12.624 0c1.91 0 3.685.281 5.358.844 1.657.562 2.96 1.198 3.892 1.88.68.473 1.006 1.035 1.006 1.671 0 .385-.118.785-.37 1.2l-.917 1.657c-.385.74-.903 1.11-1.554 1.11-.4 0-.83-.133-1.318-.4a42.421 42.421 0 00-1.687-.947c-.473-.237-1.14-.488-1.998-.71a9.458 9.458 0 00-2.56-.356c-1.672 0-3.004.37-3.981 1.11-.992.74-1.48 1.717-1.48 2.946 0 .902.31 1.701.932 2.412.622.695 1.421 1.302 2.398 1.79.977.489 2.057.977 3.256 1.466a54.048 54.048 0 013.552 1.628 20.795 20.795 0 013.24 2.042c.948.755 1.732 1.732 2.354 2.945zm31.257 2.945c0 3.197-1.155 6.083-3.256 8.14-2.265 2.205-5.506 3.36-9.368 3.36H30.71c-2.443 0-4.278-1.836-4.278-4.278V4.53c0-1.2.43-2.28 1.214-3.064C28.43.681 29.51.252 30.709.252h9.013c3.419 0 6.32 1.095 8.377 3.182 1.909 1.923 2.945 4.558 2.945 7.429 0 2.294-.622 4.203-1.91 5.816 1.377.77 2.487 1.776 3.286 2.99 1.066 1.583 1.584 3.448 1.584 5.564zm-12.106-7.68c.044-.03 4.913-3.02 4.913-6.675 0-1.761-.607-3.345-1.717-4.455-1.568-1.584-3.788-1.924-5.372-1.924H30.68v28h10.7c2.738 0 4.958-.754 6.408-2.16 1.273-1.243 1.983-3.049 1.983-5.106 0-1.272-.296-2.353-.858-3.196v-.03c-1.362-2.353-6.838-3.774-6.897-3.789l-.844-.222.726-.444z"
2916
+ }
2917
+ ),
2918
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2919
+ "path",
2920
+ {
2921
+ fill: "#0E0A2B",
2922
+ d: "M138.199 25.455c0-.4.074-.784.222-1.14.148-.354.355-.665.606-.932.267-.266.563-.473.903-.621.34-.148.725-.222 1.11-.222.4 0 .784.074 1.125.222.355.148.666.355.917.621.267.267.474.578.622.933.148.355.222.74.222 1.14 0 .399-.074.784-.222 1.139a2.86 2.86 0 01-.622.932 3.087 3.087 0 01-.917.637 2.646 2.646 0 01-1.125.236c-.4 0-.77-.074-1.11-.236a2.777 2.777 0 01-.903-.637 2.821 2.821 0 01-.606-.932 2.898 2.898 0 01-.222-1.14zm.71 0c0 .326.06.622.163.903.103.281.266.518.459.725a2.051 2.051 0 001.524.666c.31 0 .592-.059.858-.177a2.175 2.175 0 001.155-1.214c.118-.281.162-.577.162-.903 0-.325-.059-.621-.162-.902a2.422 2.422 0 00-.46-.726 2.112 2.112 0 00-.695-.488 2.073 2.073 0 00-.858-.178c-.31 0-.592.06-.844.178a2.051 2.051 0 00-.68.488 2.45 2.45 0 00-.46.726 2.636 2.636 0 00-.162.902zm1.154-1.14c0-.221.119-.34.34-.34h.889c.296 0 .532.09.695.252.178.163.267.4.267.68a.623.623 0 01-.06.297.557.557 0 01-.133.222.512.512 0 01-.163.148c-.059.044-.118.059-.162.074v.014l.03.03c.014.015.014.03.029.06l.044.088.34.666c.06.118.075.207.045.281-.03.074-.104.104-.207.104h-.104c-.192 0-.31-.089-.385-.252l-.384-.829h-.4v.74c0 .222-.104.34-.31.34h-.06c-.207 0-.31-.118-.31-.34v-2.234zm1.051 1.037c.133 0 .252-.045.31-.119.075-.074.104-.192.104-.325s-.03-.252-.103-.326a.413.413 0 00-.296-.118h-.385v.873h.37v.015z"
2923
+ }
2924
+ )
2925
+ ] })
2926
+ ]
2927
+ }
2928
+ );
2929
+ });
2930
+ Logo.displayName = "Logo";
2931
+
2932
+ // src/components/Modal/Content.tsx
2933
+ var import_react51 = require("react");
2934
+ var import_jsx_runtime40 = require("react/jsx-runtime");
2935
+ var Content2 = (0, import_react51.forwardRef)(
2936
+ ({ children, ...otherProps }, ref) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { ref, ...otherProps, className: "mobius-modal__content", children })
2937
+ );
2938
+ Content2.displayName = "Content";
2939
+
2940
+ // src/components/Modal/Header.tsx
2941
+ var import_react54 = require("react");
2942
+ var import_icons10 = require("@simplybusiness/icons");
2943
+
2944
+ // src/components/Modal/useModal.ts
2945
+ var import_react53 = require("react");
2946
+
2947
+ // src/components/Modal/ModalContext.tsx
2948
+ var import_react52 = require("react");
2949
+ var ModalContext = (0, import_react52.createContext)({
2950
+ onClose: () => {
2951
+ },
2952
+ closeLabel: void 0
2953
+ });
2954
+
2955
+ // src/components/Modal/useModal.ts
2956
+ var useModal = () => {
2957
+ const { onClose, closeLabel } = (0, import_react53.useContext)(ModalContext);
2958
+ return { onClose, closeLabel };
2959
+ };
2960
+
2961
+ // src/components/Modal/Header.tsx
2962
+ var import_jsx_runtime41 = require("react/jsx-runtime");
2963
+ var Header2 = (0, import_react54.forwardRef)(
2964
+ ({ children, ...otherProps }, ref) => {
2965
+ const { onClose, closeLabel } = useModal();
2966
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("header", { ref, ...otherProps, className: "mobius-modal__header", children: [
2967
+ children,
2968
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
2969
+ Button,
2970
+ {
2971
+ "aria-label": "Close",
2972
+ variant: "basic",
2973
+ onPress: onClose,
2974
+ className: "mobius-modal__close",
2975
+ children: [
2976
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Icon, { icon: import_icons10.cross }),
2977
+ " ",
2978
+ closeLabel
2979
+ ]
2980
+ }
2981
+ )
2982
+ ] });
2983
+ }
2984
+ );
2985
+ Header2.displayName = "Header";
2986
+
2987
+ // src/components/Modal/Modal.tsx
2988
+ var import_dedupe33 = __toESM(require("classnames/dedupe"));
2989
+ var import_react55 = require("react");
2990
+ var import_jsx_runtime42 = require("react/jsx-runtime");
2991
+ var TRANSITION_CSS_VARIABLE2 = "--modal-transition-duration";
2992
+ var Modal = (0, import_react55.forwardRef)((props, ref) => {
2993
+ const {
2994
+ isOpen,
2995
+ onClose,
2996
+ onOpen,
2997
+ children,
2998
+ className,
2999
+ closeLabel,
3000
+ isFullScreen,
3001
+ animation,
3002
+ // Deprecated props below
3003
+ size,
3004
+ appElement,
3005
+ preventCloseOnEsc,
3006
+ shouldFocusAfterRender,
3007
+ parentSelector,
3008
+ ...rest
3009
+ } = props;
3010
+ const [shouldTransition, setShouldTransition] = (0, import_react55.useState)(false);
3011
+ useDeprecationWarning({
3012
+ size,
3013
+ appElement,
3014
+ preventCloseOnEsc,
3015
+ shouldFocusAfterRender,
3016
+ parentSelector
3017
+ });
3018
+ (0, import_react55.useEffect)(() => {
3019
+ setShouldTransition(supportsDialog());
3020
+ }, []);
3021
+ const dialogRef = (0, import_react55.useRef)(null);
3022
+ const { close } = useDialog({
3023
+ ref: dialogRef,
3024
+ isOpen,
3025
+ onOpen,
3026
+ onClose,
3027
+ transition: {
3028
+ isEnabled: !!animation,
3029
+ CSSVariable: TRANSITION_CSS_VARIABLE2
3030
+ }
3031
+ });
3032
+ const modalClasses = (0, import_dedupe33.default)(
3033
+ "mobius",
3034
+ "mobius-modal",
3035
+ {
3036
+ "--no-dialog-support": !shouldTransition,
3037
+ // This class is used to correctly position modal in x/y middle on iOS <= 15.2
3038
+ "--should-transition": shouldTransition && animation,
3039
+ "--slide-up": animation === "slideUp",
3040
+ "--fade": animation === "fade",
3041
+ "--is-fullscreen": isFullScreen
3042
+ },
3043
+ className
3044
+ );
3045
+ const contextValue = (0, import_react55.useMemo)(
3046
+ () => ({
3047
+ onClose: close,
3048
+ closeLabel
3049
+ }),
3050
+ [close, closeLabel]
3051
+ );
3052
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
3053
+ "dialog",
3054
+ {
3055
+ ref: mergeRefs([dialogRef, ref]),
3056
+ onCancel: close,
3057
+ className: modalClasses,
3058
+ ...rest,
3059
+ children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(ModalContext.Provider, { value: contextValue, children })
3060
+ }
3061
+ );
3062
+ });
3063
+ Modal.displayName = "Modal";
3064
+
3065
+ // src/components/Modal/index.tsx
3066
+ var Modal2 = Object.assign(Modal, {
3067
+ Header: Header2,
3068
+ Content: Content2
3069
+ });
3070
+ Modal2.displayName = "Modal";
3071
+
3072
+ // src/components/NumberField/NumberField.tsx
3073
+ var import_dedupe34 = __toESM(require("classnames/dedupe"));
3074
+ var import_react56 = require("react");
3075
+ var import_jsx_runtime43 = require("react/jsx-runtime");
3076
+ var NumberField = (0, import_react56.forwardRef)((props, ref) => {
3077
+ const { minValue, maxValue, step, defaultValue, className, ...otherProps } = props;
3078
+ const containerClasses = (0, import_dedupe34.default)("mobius-number-field", className);
3079
+ const handleBeforeInput = (event) => {
3080
+ const { data } = event.nativeEvent;
3081
+ if (step != null && Number.isInteger(step) && data === ".") {
3082
+ event.preventDefault();
3083
+ }
3084
+ if (minValue != null && minValue >= 0 && data === "-") {
3085
+ event.preventDefault();
3086
+ }
3087
+ };
3088
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
3089
+ TextField,
3090
+ {
3091
+ ...otherProps,
3092
+ className: containerClasses,
3093
+ onBeforeInput: handleBeforeInput,
3094
+ type: "number",
3095
+ min: minValue ?? void 0,
3096
+ max: maxValue ?? void 0,
3097
+ step,
3098
+ ref,
3099
+ defaultValue: defaultValue != null ? defaultValue.toString() : defaultValue
3100
+ }
3101
+ );
3102
+ });
3103
+ NumberField.displayName = "NumberField";
3104
+
3105
+ // src/components/Option/Option.tsx
3106
+ var import_react57 = require("react");
3107
+ var import_jsx_runtime44 = require("react/jsx-runtime");
3108
+ var Option2 = (0, import_react57.forwardRef)((props, ref) => {
3109
+ const { isDisabled, ...rest } = props;
3110
+ const mappedProps = {
3111
+ ...rest,
3112
+ disabled: isDisabled
3113
+ };
3114
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("option", { ...mappedProps, ref });
3115
+ });
3116
+ Option2.displayName = "Option";
3117
+
3118
+ // src/components/PasswordField/PasswordField.tsx
3119
+ var import_dedupe35 = __toESM(require("classnames/dedupe"));
3120
+ var import_react58 = require("react");
3121
+
3122
+ // src/components/PasswordField/ShowHideButton.tsx
3123
+ var import_jsx_runtime45 = require("react/jsx-runtime");
3124
+ var ShowHideButton = ({
3125
+ show = false,
3126
+ onClick
3127
+ }) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
3128
+ "button",
3129
+ {
3130
+ className: "mobius-password-field__show-button",
3131
+ type: "button",
3132
+ onClick: (e) => {
3133
+ e.preventDefault();
3134
+ onClick();
3135
+ },
3136
+ "aria-label": `${show ? "Hide" : "Show"} password`,
3137
+ "data-testid": "show-hide-button",
3138
+ children: show ? "hide" : "show"
3139
+ }
3140
+ );
3141
+
3142
+ // src/components/PasswordField/PasswordField.tsx
3143
+ var import_jsx_runtime46 = require("react/jsx-runtime");
3144
+ var PasswordField = (0, import_react58.forwardRef)(
3145
+ ({ className, ...props }, ref) => {
3146
+ const [show, setShow] = (0, import_react58.useState)(false);
3147
+ const type = show ? "text" : "password";
3148
+ const classes = (0, import_dedupe35.default)("mobius-password-field", className);
3149
+ const localRef = (0, import_react58.useRef)(null);
3150
+ const handleShowHideButtonClick = () => {
3151
+ setShow((oldShow) => !oldShow);
3152
+ localRef.current?.focus();
3153
+ };
3154
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
3155
+ TextField,
3156
+ {
3157
+ ref: mergeRefs([localRef, ref]),
3158
+ className: classes,
3159
+ ...props,
3160
+ type,
3161
+ suffixInside: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ShowHideButton, { onClick: handleShowHideButtonClick, show })
3162
+ }
3163
+ );
3164
+ }
3165
+ );
3166
+ PasswordField.displayName = "PasswordField";
3167
+
3168
+ // src/components/Popover/Popover.tsx
3169
+ var import_react59 = require("@floating-ui/react");
3170
+ var import_icons11 = require("@simplybusiness/icons");
3171
+ var import_classnames3 = __toESM(require("classnames"));
3172
+ var import_react60 = require("react");
3173
+ var import_jsx_runtime47 = require("react/jsx-runtime");
3174
+ var OFFSET_FROM_CONTENT_DEFAULT = 10;
3175
+ var Popover = (props) => {
3176
+ const { trigger, children, onOpen, onClose, className } = props;
3177
+ const arrowRef = (0, import_react60.useRef)(null);
3178
+ const [isOpen, setIsOpen] = (0, import_react60.useState)(false);
3179
+ const { refs, floatingStyles, context } = (0, import_react59.useFloating)({
3180
+ open: isOpen,
3181
+ onOpenChange: setIsOpen,
3182
+ whileElementsMounted: import_react59.autoUpdate,
3183
+ middleware: [
3184
+ (0, import_react59.arrow)({
3185
+ element: arrowRef
3186
+ }),
3187
+ (0, import_react59.offset)(OFFSET_FROM_CONTENT_DEFAULT),
3188
+ (0, import_react59.shift)(),
3189
+ (0, import_react59.flip)()
3190
+ ]
3191
+ });
3192
+ const dismiss = (0, import_react59.useDismiss)(context, {
3193
+ bubbles: true,
3194
+ outsidePress: (event) => {
3195
+ const toggle = refs.reference.current;
3196
+ const isToggleClick = !toggle?.contains(event.target);
3197
+ if (isToggleClick) {
3198
+ onClose?.();
3199
+ }
3200
+ return true;
3201
+ }
3202
+ });
3203
+ const { getReferenceProps, getFloatingProps } = (0, import_react59.useInteractions)([dismiss]);
3204
+ const containerClasses = (0, import_classnames3.default)(
3205
+ "mobius",
3206
+ "mobius-popover__container",
3207
+ className
3208
+ );
3209
+ const toggleVisibility = () => {
3210
+ if (isOpen) {
3211
+ setIsOpen(false);
3212
+ onClose?.();
3213
+ return;
3214
+ }
3215
+ setIsOpen(true);
3216
+ onOpen?.();
3217
+ };
3218
+ const triggerComponent = (0, import_react60.cloneElement)(trigger, {
3219
+ ref: refs.setReference,
3220
+ className: (0, import_classnames3.default)(trigger.props.className, "mobius-popover__toggle"),
3221
+ onClick: toggleVisibility,
3222
+ ...getReferenceProps()
3223
+ });
3224
+ useWindowEvent("keydown", (e) => {
3225
+ if (e.key === "Escape") {
3226
+ onClose?.();
3227
+ e.preventDefault();
3228
+ e.stopPropagation();
3229
+ }
3230
+ });
3231
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_jsx_runtime47.Fragment, { children: [
3232
+ triggerComponent,
3233
+ isOpen && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
3234
+ "div",
3235
+ {
3236
+ className: containerClasses,
3237
+ ref: refs.setFloating,
3238
+ style: floatingStyles,
3239
+ ...getFloatingProps(),
3240
+ children: [
3241
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "mobius-popover", children: [
3242
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("header", { className: "mobius-popover__header", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
3243
+ Button,
3244
+ {
3245
+ type: "button",
3246
+ className: "mobius-popover__close-button",
3247
+ onClick: toggleVisibility,
3248
+ "aria-label": "Close",
3249
+ variant: "ghost",
3250
+ children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
3251
+ Icon,
3252
+ {
3253
+ icon: import_icons11.cross,
3254
+ size: "md",
3255
+ className: "mobius-popover__close-icon"
3256
+ }
3257
+ )
3258
+ }
3259
+ ) }),
3260
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "mobius-popover__body", children })
3261
+ ] }),
3262
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
3263
+ import_react59.FloatingArrow,
3264
+ {
3265
+ ref: arrowRef,
3266
+ context,
3267
+ width: 20,
3268
+ className: "mobius-popover__arrow-icon"
3269
+ }
3270
+ )
3271
+ ]
3272
+ }
3273
+ )
3274
+ ] });
3275
+ };
3276
+
3277
+ // src/components/Progress/Progress.tsx
3278
+ var import_dedupe36 = __toESM(require("classnames/dedupe"));
3279
+ var import_react61 = require("react");
3280
+ var import_jsx_runtime48 = require("react/jsx-runtime");
3281
+ function warnAboutInvalidValues(value, minValue, maxValue) {
3282
+ if (minValue > maxValue) {
3283
+ console.warn("minValue is greater than maxValue");
3284
+ }
3285
+ if (value < minValue) {
3286
+ console.warn("Progress value is less than minValue");
3287
+ }
3288
+ if (value > maxValue) {
3289
+ console.warn("Progress value is greater than maxValue");
3290
+ }
3291
+ }
3292
+ var sanitizedValue = (value, defaultValue) => {
3293
+ const numberValue = parseFloat(value);
3294
+ return Number.isNaN(numberValue) ? defaultValue : numberValue;
3295
+ };
3296
+ var getLabelComponent = (label, progressLabelId, showLabel) => {
3297
+ if (showLabel) {
3298
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
3299
+ Label,
3300
+ {
3301
+ id: progressLabelId,
3302
+ className: "mobius-progress__label",
3303
+ elementType: "span",
3304
+ children: label
3305
+ }
3306
+ );
3307
+ }
3308
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
3309
+ Label,
3310
+ {
3311
+ id: progressLabelId,
3312
+ className: "mobius-progress__label",
3313
+ elementType: "span",
3314
+ children: label
3315
+ }
3316
+ ) });
3317
+ };
3318
+ var DEFAULT_VALUE = 0;
3319
+ var DEFAULT_MIN_VALUE = 0;
3320
+ var DEFAULT_MAX_VALUE = 100;
3321
+ var Progress = (0, import_react61.forwardRef)((props, ref) => {
3322
+ const progressId = (0, import_react61.useId)();
3323
+ const progressLabelId = (0, import_react61.useId)();
3324
+ const {
3325
+ id,
3326
+ label,
3327
+ showLabel = true,
3328
+ showValueLabel = !!label,
3329
+ valueFormatter,
3330
+ variant = "primary",
3331
+ className
3332
+ } = props;
3333
+ let { value, minValue, maxValue } = props;
3334
+ value = sanitizedValue(value, DEFAULT_VALUE);
3335
+ minValue = sanitizedValue(minValue, DEFAULT_MIN_VALUE);
3336
+ maxValue = sanitizedValue(maxValue, DEFAULT_MAX_VALUE);
3337
+ if (value === void 0 || minValue === void 0 || maxValue === void 0) {
3338
+ return null;
3339
+ }
3340
+ warnAboutInvalidValues(value, minValue, maxValue);
3341
+ const clamp = (num, min, max) => Math.min(Math.max(num, min), max);
3342
+ const percentage = clamp(
3343
+ Math.round((value - minValue) / (maxValue - minValue) * 100),
3344
+ 0,
3345
+ 100
3346
+ );
3347
+ const barWidth = `${percentage}%`;
3348
+ const classes = (0, import_dedupe36.default)("mobius", "mobius-progress", className, {
3349
+ "--is-primary": variant === "primary",
3350
+ "--is-secondary": variant === "secondary"
3351
+ });
3352
+ const progressBarProps = {};
3353
+ progressBarProps["aria-valuemin"] = minValue.toString();
3354
+ progressBarProps["aria-valuemax"] = maxValue.toString();
3355
+ progressBarProps["aria-valuenow"] = value.toString();
3356
+ progressBarProps["aria-valuetext"] = valueFormatter instanceof Function ? valueFormatter(value, minValue, maxValue) : barWidth;
3357
+ const labelComponent = getLabelComponent(label, progressLabelId, showLabel);
3358
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(
3359
+ "div",
3360
+ {
3361
+ id: id || progressId,
3362
+ ...progressBarProps,
3363
+ ref,
3364
+ className: classes,
3365
+ role: "progressbar",
3366
+ "aria-labelledby": progressLabelId,
3367
+ children: [
3368
+ labelComponent,
3369
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "mobius-progress__track", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "mobius-progress__bar", style: { width: barWidth } }) }),
3370
+ showValueLabel && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Label, { "data-testid": "value-label", elementType: "span", children: progressBarProps["aria-valuetext"] })
3371
+ ]
3372
+ }
3373
+ );
3374
+ });
3375
+ Progress.displayName = "Progress";
3376
+
3377
+ // src/components/Radio/Radio.tsx
3378
+ var import_dedupe37 = __toESM(require("classnames/dedupe"));
3379
+ var import_react62 = require("react");
3380
+ var import_jsx_runtime49 = require("react/jsx-runtime");
3381
+ var Radio = (0, import_react62.forwardRef)(
3382
+ (props, ref) => {
3383
+ const {
3384
+ children,
3385
+ value,
3386
+ label,
3387
+ className,
3388
+ isDisabled,
3389
+ errorMessage,
3390
+ onChange,
3391
+ defaultChecked,
3392
+ groupDisabled,
3393
+ name,
3394
+ selected,
3395
+ setSelected,
3396
+ isRequired,
3397
+ ...otherProps
3398
+ } = props;
3399
+ const realDisabled = groupDisabled || isDisabled;
3400
+ const isMultiline = label && children;
3401
+ const isDefaultSelected = selected === value || defaultChecked;
3402
+ const radioClasses = {
3403
+ "--is-disabled": realDisabled,
3404
+ "--is-selected": selected === value,
3405
+ "--is-multiline": !!isMultiline,
3406
+ "--is-required": isRequired
3407
+ };
3408
+ const containerClasses = (0, import_dedupe37.default)(
3409
+ "mobius-radio__label",
3410
+ radioClasses,
3411
+ className
3412
+ );
3413
+ const inputClasses = (0, import_dedupe37.default)("mobius-radio__input", radioClasses);
3414
+ const handleClick = (event) => {
3415
+ if (onChange) {
3416
+ onChange(event);
3417
+ }
3418
+ if (setSelected) {
3419
+ setSelected(event.currentTarget.value);
3420
+ }
3421
+ };
3422
+ const {
3423
+ // @ts-expect-error - TS doesn't like the orientation prop
3424
+ orientation,
3425
+ "aria-describedby": _ariaDescribedBy,
3426
+ ...rest
3427
+ } = otherProps;
3428
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_jsx_runtime49.Fragment, { children: [
3429
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Label, { className: containerClasses, children: [
3430
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
3431
+ "input",
3432
+ {
3433
+ "aria-describedby": otherProps["aria-describedby"],
3434
+ disabled: realDisabled,
3435
+ ref,
3436
+ className: inputClasses,
3437
+ onClick: handleClick,
3438
+ value,
3439
+ tabIndex: 0,
3440
+ type: "radio",
3441
+ defaultChecked: isDefaultSelected,
3442
+ name,
3443
+ required: isRequired,
3444
+ ...rest
3445
+ }
3446
+ ),
3447
+ isMultiline ? /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "mobius-radio__content--multiline", children: [
3448
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "mobius-radio__content-first-line", children: label }),
3449
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "mobius-radio__extra-content", children })
3450
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "mobius-radio__content", children: label || children })
3451
+ ] }),
3452
+ errorMessage && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(ErrorMessage, { errorMessage })
3453
+ ] });
3454
+ }
3455
+ );
3456
+ Radio.displayName = "Radio";
3457
+
3458
+ // src/components/Radio/RadioGroup.tsx
3459
+ var import_react63 = require("react");
3460
+ var import_dedupe38 = __toESM(require("classnames/dedupe"));
3461
+ var import_jsx_runtime50 = require("react/jsx-runtime");
3462
+ var getDefaultVal = (children, defaultValue) => {
3463
+ if (Array.isArray(children) && defaultValue) {
3464
+ const option = children?.find((item) => item.props.value === defaultValue);
3465
+ if (!option) return "";
3466
+ return option.props.value;
3467
+ }
3468
+ return "";
3469
+ };
3470
+ var RadioGroup = (0, import_react63.forwardRef)((props, ref) => {
3471
+ const {
3472
+ label,
3473
+ isDisabled = false,
3474
+ isRequired,
3475
+ validationState,
3476
+ isInvalid,
3477
+ orientation = "vertical",
3478
+ className,
3479
+ errorMessage,
3480
+ children,
3481
+ defaultValue,
3482
+ isReadOnly,
3483
+ name,
3484
+ onChange,
3485
+ ...rest
3486
+ } = props;
3487
+ const defaultSelected = getDefaultVal(children, defaultValue);
3488
+ const [selected, setSelected] = (0, import_react63.useState)(defaultSelected);
3489
+ const validationClasses = useValidationClasses({
3490
+ validationState,
3491
+ isInvalid
3492
+ });
3493
+ const radioClasses = {
3494
+ "--is-disabled": isDisabled,
3495
+ "--is-required": typeof isRequired === "boolean" && isRequired,
3496
+ "--is-optional": typeof isRequired === "boolean" && !isRequired,
3497
+ [`--is-${orientation}`]: true,
3498
+ [className || ""]: true
3499
+ };
3500
+ const radioGroupClasses = (0, import_dedupe38.default)(
3501
+ "mobius",
3502
+ "mobius-radio-group",
3503
+ radioClasses,
3504
+ validationClasses
3505
+ );
3506
+ const radioWrapperClasses = (0, import_dedupe38.default)("mobius-radio__wrapper", {
3507
+ [`--is-${orientation}`]: true
3508
+ });
3509
+ const labelClasses = (0, import_dedupe38.default)(radioClasses, validationClasses);
3510
+ const errorMessageId = (0, import_react63.useId)();
3511
+ const defaultNameAttrId = (0, import_react63.useId)();
3512
+ const nameAttribute = name || defaultNameAttrId;
3513
+ const shouldErrorMessageShow = errorMessage ? errorMessageId : void 0;
3514
+ const describedBy = spaceDelimitedList([
3515
+ shouldErrorMessageShow,
3516
+ props["aria-describedby"]
3517
+ ]);
3518
+ const labelId = (0, import_react63.useId)();
3519
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
3520
+ "div",
3521
+ {
3522
+ ...rest,
3523
+ "aria-describedby": describedBy,
3524
+ "aria-disabled": isDisabled,
3525
+ "aria-errormessage": shouldErrorMessageShow,
3526
+ "aria-invalid": isInvalid,
3527
+ "aria-label": props["aria-label"],
3528
+ "aria-labelledby": props["aria-labelledby"] || labelId,
3529
+ "aria-orientation": orientation,
3530
+ "aria-readonly": isReadOnly,
3531
+ "aria-required": isRequired,
3532
+ ref,
3533
+ className: radioGroupClasses,
3534
+ role: "radiogroup",
3535
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(Stack, { gap: "xs", children: [
3536
+ label && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Label, { htmlFor: name, id: labelId, className: labelClasses, children: label }),
3537
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: radioWrapperClasses, children: import_react63.Children.map(children, (child) => {
3538
+ if ((0, import_react63.isValidElement)(child)) {
3539
+ return (0, import_react63.cloneElement)(child, {
3540
+ orientation,
3541
+ groupDisabled: isDisabled,
3542
+ name: nameAttribute,
3543
+ selected,
3544
+ setSelected,
3545
+ isRequired,
3546
+ "aria-describedby": describedBy,
3547
+ onChange
3548
+ });
3549
+ }
3550
+ return child;
3551
+ }) }),
3552
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ErrorMessage, { id: errorMessageId, errorMessage })
3553
+ ] })
3554
+ }
3555
+ );
3556
+ });
3557
+ RadioGroup.displayName = "RadioGroup";
3558
+
3559
+ // src/components/Segment/SegmentGroup.tsx
3560
+ var import_dedupe39 = __toESM(require("classnames/dedupe"));
3561
+ var import_jsx_runtime51 = require("react/jsx-runtime");
3562
+ var SegmentGroup = (props) => {
3563
+ const { children, horizontal, gap, className, ...rest } = props;
3564
+ const gapClass = gap ? `gap-${gap}` : "";
3565
+ const classes = (0, import_dedupe39.default)(
3566
+ "mobius",
3567
+ "mobius-segment-group",
3568
+ className,
3569
+ { "--is-horizontal": horizontal },
3570
+ gapClass
3571
+ );
3572
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: classes, ...rest, children });
3573
+ };
3574
+ SegmentGroup.displayName = "SegmentGroup";
3575
+
3576
+ // src/components/Segment/Segment.tsx
3577
+ var import_dedupe40 = __toESM(require("classnames/dedupe"));
3578
+ var import_jsx_runtime52 = require("react/jsx-runtime");
3579
+ var Segment = (props) => {
3580
+ const { heading, children, colour, inverted, className, ...rest } = props;
3581
+ const classes = (0, import_dedupe40.default)(
3582
+ "mobius",
3583
+ "mobius-segment",
3584
+ colour,
3585
+ { inverted },
3586
+ className
3587
+ );
3588
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: classes, ...rest, children: [
3589
+ heading && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { className: "mobius-segment__heading", children: heading }),
3590
+ children
3591
+ ] });
3592
+ };
3593
+ Segment.displayName = "Segment";
3594
+
3595
+ // src/components/Select/Select.tsx
3596
+ var import_dedupe41 = __toESM(require("classnames/dedupe"));
3597
+ var import_react64 = require("react");
3598
+ var import_icons12 = require("@simplybusiness/icons");
3599
+ var import_jsx_runtime53 = require("react/jsx-runtime");
3600
+ var Select = (0, import_react64.forwardRef)((props, ref) => {
3601
+ const {
3602
+ label,
3603
+ onChange,
3604
+ validationState,
3605
+ isInvalid,
3606
+ errorMessage,
3607
+ isDisabled = false,
3608
+ isRequired,
3609
+ ...otherProps
3610
+ } = props;
3611
+ const { labelProps, fieldProps } = useLabel({
3612
+ label,
3613
+ ...otherProps
3614
+ });
3615
+ const validationClasses = useValidationClasses({
3616
+ validationState,
3617
+ isInvalid
3618
+ });
3619
+ const stateClasses = {
3620
+ "--is-disabled": isDisabled,
3621
+ "--is-required": typeof isRequired === "boolean" && isRequired,
3622
+ "--is-optional": typeof isRequired === "boolean" && !isRequired
3623
+ };
3624
+ const sharedClasses = (0, import_dedupe41.default)(validationClasses, stateClasses);
3625
+ const wrapperClasses = (0, import_dedupe41.default)(
3626
+ "mobius-select__wrapper",
3627
+ sharedClasses,
3628
+ otherProps.className
3629
+ );
3630
+ const selectClasses = (0, import_dedupe41.default)(
3631
+ "mobius-select",
3632
+ sharedClasses,
3633
+ otherProps.className
3634
+ );
3635
+ const labelClasses = (0, import_dedupe41.default)(
3636
+ "mobius-label",
3637
+ sharedClasses,
3638
+ otherProps.className
3639
+ );
3640
+ const iconClasses = (0, import_dedupe41.default)("mobius-select__icon", sharedClasses);
3641
+ const errorMessageId = (0, import_react64.useId)();
3642
+ const shouldErrorMessageShow = errorMessage ? errorMessageId : void 0;
3643
+ const describedBy = spaceDelimitedList([
3644
+ shouldErrorMessageShow,
3645
+ props["aria-describedby"]
3646
+ ]);
3647
+ const handleChange = (e) => {
3648
+ if (onChange) {
3649
+ onChange(e);
3650
+ }
3651
+ };
3652
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(Stack, { className: "mobius mobius-select__outer", gap: "xs", children: [
3653
+ label && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Label, { ...labelProps, className: labelClasses, children: label }),
3654
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: wrapperClasses, children: [
3655
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
3656
+ "select",
3657
+ {
3658
+ ...otherProps,
3659
+ ...fieldProps,
3660
+ ref,
3661
+ multiple: false,
3662
+ className: selectClasses,
3663
+ disabled: isDisabled,
3664
+ "aria-invalid": !!errorMessage,
3665
+ "aria-describedby": describedBy,
3666
+ "aria-required": isRequired,
3667
+ onChange: handleChange
3668
+ }
3669
+ ),
3670
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: iconClasses, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Icon, { icon: import_icons12.chevronDown }) })
3671
+ ] }),
3672
+ errorMessage && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(ErrorMessage, { id: errorMessageId, errorMessage })
3673
+ ] });
3674
+ });
3675
+ Select.displayName = "Select";
3676
+
3677
+ // src/components/Slider/Slider.tsx
3678
+ var import_dedupe42 = __toESM(require("classnames/dedupe"));
3679
+ var import_react66 = require("react");
3680
+
3681
+ // src/components/Slider/helpers.ts
3682
+ var import_react65 = require("react");
3683
+ function numberFormatter(value, formatOptions, locale = navigator.languages?.[0] || "en-GB") {
3684
+ if (!formatOptions) {
3685
+ return value?.toString() || "";
3686
+ }
3687
+ return new Intl.NumberFormat(locale, formatOptions).format(+(value || 0));
3688
+ }
3689
+
3690
+ // src/components/Slider/Slider.tsx
3691
+ var import_jsx_runtime54 = require("react/jsx-runtime");
3692
+ var Slider = (props) => {
3693
+ const {
3694
+ id,
3695
+ className,
3696
+ label,
3697
+ "aria-label": ariaLabel,
3698
+ "aria-labelledby": ariaLabelledBy,
3699
+ minValue,
3700
+ maxValue,
3701
+ step = 1,
3702
+ defaultValue = 0,
3703
+ value,
3704
+ onChange,
3705
+ onChangeEnd,
3706
+ variant = "primary",
3707
+ minLabel,
3708
+ maxLabel,
3709
+ formatOptions,
3710
+ isDisabled = false
3711
+ } = props;
3712
+ const trackRef = (0, import_react66.useRef)(null);
3713
+ const [currentValue, setCurrentValue] = (0, import_react66.useState)(
3714
+ value || defaultValue || 0
3715
+ );
3716
+ const [isDragging, setIsDraggging] = (0, import_react66.useState)(false);
3717
+ const { labelProps, fieldProps } = useLabel({
3718
+ id,
3719
+ label,
3720
+ "aria-label": ariaLabel,
3721
+ "aria-labelledby": ariaLabelledBy
3722
+ });
3723
+ const formattedValue = numberFormatter(currentValue, formatOptions);
3724
+ const classes = (0, import_dedupe42.default)("mobius", "mobius-slider", className, {
3725
+ "--is-disabled": isDisabled,
3726
+ "--is-primary": variant === "primary",
3727
+ "--is-secondary": variant === "secondary",
3728
+ "--is-dragging": isDragging
3729
+ });
3730
+ const handleChange = (e) => {
3731
+ const val = +e.target.value;
3732
+ setCurrentValue(val);
3733
+ if (onChange) {
3734
+ onChange(val);
3735
+ }
3736
+ };
3737
+ const handleChangeStart = () => {
3738
+ setIsDraggging(true);
3739
+ };
3740
+ const handleChangeEnd = () => {
3741
+ setIsDraggging(false);
3742
+ if (onChangeEnd) {
3743
+ onChangeEnd(currentValue);
3744
+ }
3745
+ };
3746
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: classes, children: [
3747
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "mobius-slider__label-wrapper", children: [
3748
+ label && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Label, { ...labelProps, children: label }),
3749
+ label && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("output", { style: { flex: "1 0 auto", textAlign: "end" }, children: formattedValue })
3750
+ ] }),
3751
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { ref: trackRef, className: "mobius-slider__track-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
3752
+ "input",
3753
+ {
3754
+ className: "mobius-slider__track",
3755
+ type: "range",
3756
+ min: minValue,
3757
+ max: maxValue,
3758
+ value: currentValue,
3759
+ step,
3760
+ onChange: handleChange,
3761
+ autoComplete: "off",
3762
+ disabled: isDisabled,
3763
+ onMouseDown: handleChangeStart,
3764
+ onMouseUp: handleChangeEnd,
3765
+ onKeyDown: handleChangeStart,
3766
+ onKeyUp: handleChangeEnd,
3767
+ ...fieldProps
3768
+ }
3769
+ ) }),
3770
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "mobius-slider__labels", children: [
3771
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mobius-slider__min-label", "data-testid": "min-label", children: minLabel }),
3772
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mobius-slider__max-label", "data-testid": "max-label", children: maxLabel })
3773
+ ] })
3774
+ ] });
3775
+ };
3776
+
3777
+ // src/components/SVG/SVG.tsx
3778
+ var import_react67 = require("react");
3779
+ var import_dedupe43 = __toESM(require("classnames/dedupe"));
3780
+ var import_jsx_runtime55 = require("react/jsx-runtime");
3781
+ var SVG = (0, import_react67.forwardRef)(
3782
+ (props, ref) => {
3783
+ const { children, className, ...otherProps } = props;
3784
+ const classes = (0, import_dedupe43.default)("mobius", "mobius-svg", className);
3785
+ const svgNode = import_react67.Children.only(children);
3786
+ const { children: svgChildren, viewBox, xmlns } = svgNode.props;
3787
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
3788
+ "svg",
3789
+ {
3790
+ viewBox,
3791
+ xmlns,
3792
+ ref,
3793
+ ...otherProps,
3794
+ className: classes,
3795
+ children: svgChildren
3796
+ }
3797
+ );
3798
+ }
3799
+ );
3800
+ SVG.displayName = "SVG";
3801
+
3802
+ // src/components/Switch/Switch.tsx
3803
+ var import_react68 = require("react");
3804
+ var import_dedupe44 = __toESM(require("classnames/dedupe"));
3805
+ var import_jsx_runtime56 = require("react/jsx-runtime");
3806
+ var Switch = (0, import_react68.forwardRef)((props, ref) => {
3807
+ const {
3808
+ checked = false,
3809
+ className,
3810
+ onChange,
3811
+ isDisabled = false,
3812
+ ...otherProps
3813
+ } = props;
3814
+ const [enabled, setEnabled] = (0, import_react68.useState)(checked);
3815
+ (0, import_react68.useEffect)(() => {
3816
+ setEnabled(checked);
3817
+ }, [checked]);
3818
+ const classes = (0, import_dedupe44.default)(
3819
+ "mobius",
3820
+ "mobius-switch",
3821
+ {
3822
+ "mobius-switch--checked": enabled,
3823
+ "mobius-switch--disabled": isDisabled
3824
+ },
3825
+ className
3826
+ );
3827
+ const handleChange = (event) => {
3828
+ setEnabled(!enabled);
3829
+ if (onChange) {
3830
+ onChange(event);
3831
+ }
3832
+ };
3833
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("label", { ref, className: classes, children: [
3834
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { children: enabled ? "On" : "Off" }) }),
3835
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
3836
+ "input",
3837
+ {
3838
+ type: "checkbox",
3839
+ role: "switch",
3840
+ checked: enabled,
3841
+ onChange: handleChange,
3842
+ disabled: isDisabled,
3843
+ ...otherProps
3844
+ }
3845
+ ),
3846
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "mobius-switch__slider" })
3847
+ ] });
3848
+ });
3849
+ Switch.displayName = "Switch";
3850
+
3851
+ // src/components/Table/Table.tsx
3852
+ var import_react69 = require("react");
3853
+ var import_dedupe45 = __toESM(require("classnames/dedupe"));
3854
+ var import_jsx_runtime57 = require("react/jsx-runtime");
3855
+ var Table = (0, import_react69.forwardRef)(
3856
+ (props, ref) => {
3857
+ const classes = (0, import_dedupe45.default)("mobius", "mobius-table", props.className);
3858
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("table", { ref, ...props, className: classes });
3859
+ }
3860
+ );
3861
+ Table.displayName = "Table";
3862
+
3863
+ // src/components/Table/Head.tsx
3864
+ var import_react70 = require("react");
3865
+ var import_dedupe46 = __toESM(require("classnames/dedupe"));
3866
+ var import_jsx_runtime58 = require("react/jsx-runtime");
3867
+ var Head = (0, import_react70.forwardRef)((props, ref) => {
3868
+ const classes = (0, import_dedupe46.default)("mobius", "mobius-table__head", props.className);
3869
+ return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("thead", { ref, ...props, className: classes });
3870
+ });
3871
+ Head.displayName = "Table.Head";
3872
+
3873
+ // src/components/Table/Body.tsx
3874
+ var import_react71 = require("react");
3875
+ var import_dedupe47 = __toESM(require("classnames/dedupe"));
3876
+ var import_jsx_runtime59 = require("react/jsx-runtime");
3877
+ var Body = (0, import_react71.forwardRef)((props, ref) => {
3878
+ const classes = (0, import_dedupe47.default)("mobius", "mobius-table__body", props.className);
3879
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("tbody", { ref, ...props, className: classes });
3880
+ });
3881
+ Body.displayName = "Table.Body";
3882
+
3883
+ // src/components/Table/Foot.tsx
3884
+ var import_react72 = require("react");
3885
+ var import_dedupe48 = __toESM(require("classnames/dedupe"));
3886
+ var import_jsx_runtime60 = require("react/jsx-runtime");
3887
+ var Foot = (0, import_react72.forwardRef)((props, ref) => {
3888
+ const classes = (0, import_dedupe48.default)("mobius", "mobius-table__foot", props.className);
3889
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("tfoot", { ref, ...props, className: classes });
3890
+ });
3891
+ Foot.displayName = "Table.Foot";
3892
+
3893
+ // src/components/Table/Row.tsx
3894
+ var import_react73 = require("react");
3895
+ var import_dedupe49 = __toESM(require("classnames/dedupe"));
3896
+ var import_jsx_runtime61 = require("react/jsx-runtime");
3897
+ var Row = (0, import_react73.forwardRef)(
3898
+ (props, ref) => {
3899
+ const classes = (0, import_dedupe49.default)("mobius", "mobius-table__row", props.className);
3900
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("tr", { ref, ...props, className: classes });
3901
+ }
3902
+ );
3903
+ Row.displayName = "Table.Row";
3904
+
3905
+ // src/components/Table/HeaderCell.tsx
3906
+ var import_react74 = require("react");
3907
+ var import_dedupe50 = __toESM(require("classnames/dedupe"));
3908
+ var import_jsx_runtime62 = require("react/jsx-runtime");
3909
+ var HeaderCell = (0, import_react74.forwardRef)((props, ref) => {
3910
+ const classes = (0, import_dedupe50.default)(
3911
+ "mobius",
3912
+ "mobius-table__head-cell",
3913
+ props.className
3914
+ );
3915
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("th", { ...props, ref, className: classes });
3916
+ });
3917
+ HeaderCell.displayName = "Table.HeaderCell";
3918
+
3919
+ // src/components/Table/Cell.tsx
3920
+ var import_react75 = require("react");
3921
+ var import_dedupe51 = __toESM(require("classnames/dedupe"));
3922
+ var import_jsx_runtime63 = require("react/jsx-runtime");
3923
+ var Cell = (0, import_react75.forwardRef)(
3924
+ (props, ref) => {
3925
+ const classes = (0, import_dedupe51.default)(
3926
+ "mobius",
3927
+ "mobius-table__body-cell",
3928
+ props.className
3929
+ );
3930
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("td", { ref, ...props, className: classes });
3931
+ }
3932
+ );
3933
+ Cell.displayName = "Table.Cell";
3934
+
3935
+ // src/components/Table/index.tsx
3936
+ var Table2 = Object.assign(Table, {
3937
+ Head,
3938
+ Body,
3939
+ Foot,
3940
+ Row,
3941
+ HeaderCell,
3942
+ Cell
3943
+ });
3944
+ Table2.displayName = "Table";
3945
+
3946
+ // src/components/TextArea/TextArea.tsx
3947
+ var import_dedupe53 = __toESM(require("classnames/dedupe"));
3948
+ var import_react77 = require("react");
3949
+
3950
+ // src/components/TextAreaInput/TextAreaInput.tsx
3951
+ var import_dedupe52 = __toESM(require("classnames/dedupe"));
3952
+ var import_react76 = require("react");
3953
+ var import_jsx_runtime64 = require("react/jsx-runtime");
3954
+ var TextAreaInput = (0, import_react76.forwardRef)((props, ref) => {
3955
+ const { isSelected, isDisabled, isReadOnly, isRequired, ...otherProps } = props;
3956
+ const classes = (0, import_dedupe52.default)(
3957
+ "mobius",
3958
+ "mobius-text-area__input",
3959
+ {
3960
+ "--is-disabled": isDisabled,
3961
+ "--is-selected": isSelected,
3962
+ "--is-required": isRequired
3963
+ },
3964
+ otherProps.className
3965
+ );
3966
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
3967
+ "textarea",
3968
+ {
3969
+ ref,
3970
+ ...otherProps,
3971
+ required: isRequired,
3972
+ readOnly: isReadOnly,
3973
+ className: classes
3974
+ }
3975
+ );
3976
+ });
3977
+ TextAreaInput.displayName = "TextAreaInput";
3978
+
3979
+ // src/components/TextArea/TextArea.tsx
3980
+ var import_jsx_runtime65 = require("react/jsx-runtime");
3981
+ var TextArea = (0, import_react77.forwardRef)((props, ref) => {
3982
+ const {
3983
+ isDisabled,
3984
+ className,
3985
+ errorMessage,
3986
+ label,
3987
+ validationState,
3988
+ isInvalid,
3989
+ ...otherProps
3990
+ } = props;
3991
+ const { inputProps, labelProps, errorMessageProps } = useTextField(props);
3992
+ const classes = (0, import_dedupe53.default)("mobius", "mobius-text-area", className);
3993
+ const validationClasses = useValidationClasses({
3994
+ validationState,
3995
+ isInvalid
3996
+ });
3997
+ const inputClasses = (0, import_dedupe53.default)(
3998
+ "mobius-text-area__input",
3999
+ validationClasses
4000
+ );
4001
+ const labelClasses = (0, import_dedupe53.default)(
4002
+ {
4003
+ "--is-disabled": isDisabled
4004
+ },
4005
+ validationClasses
4006
+ );
4007
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(Stack, { className: classes, gap: "xs", children: [
4008
+ label && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Label, { ...labelProps, className: labelClasses, children: props.label }),
4009
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
4010
+ TextAreaInput,
4011
+ {
4012
+ ...otherProps,
4013
+ ...inputProps,
4014
+ ref,
4015
+ className: inputClasses,
4016
+ isDisabled,
4017
+ "aria-invalid": errorMessage != null
4018
+ }
4019
+ ),
4020
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(ErrorMessage, { ...errorMessageProps, errorMessage })
4021
+ ] });
4022
+ });
4023
+ TextArea.displayName = "TextArea";
4024
+
4025
+ // src/components/Title/Title.tsx
4026
+ var import_react78 = require("react");
4027
+ var import_dedupe54 = __toESM(require("classnames/dedupe"));
4028
+ var import_jsx_runtime66 = require("react/jsx-runtime");
4029
+ var Title = (0, import_react78.forwardRef)(
4030
+ (props, ref) => {
4031
+ const {
4032
+ elementType: Element = "div",
4033
+ title,
4034
+ description,
4035
+ ...otherProps
4036
+ } = props;
4037
+ const classes = (0, import_dedupe54.default)("mobius", "mobius-title", otherProps.className);
4038
+ const headerClasses = (0, import_dedupe54.default)("mobius", "mobius-title__header");
4039
+ const contentClasses = (0, import_dedupe54.default)("mobius", "mobius-title__description");
4040
+ const containerClasses = (0, import_dedupe54.default)("mobius", "mobius-title__container");
4041
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Element, { ref, ...otherProps, className: classes, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(Flex, { flexDirection: "column", className: containerClasses, children: [
4042
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("p", { className: headerClasses, children: title }),
4043
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("p", { className: contentClasses, children: description })
4044
+ ] }) });
4045
+ }
4046
+ );
4047
+ Title.displayName = "Title";
4048
+
4049
+ // src/components/Trust/Trust.tsx
4050
+ var import_dedupe55 = __toESM(require("classnames/dedupe"));
4051
+ var import_react79 = require("react");
4052
+
4053
+ // src/components/Trust/constants.ts
4054
+ var REQUIRED_TRUSTPILOT_CLASS_NAME = "trustpilot-widget";
4055
+ var SIMPLYBUSINESS_UNIT_ID = "5ca35a3da72b330001954cef";
4056
+ var TRUSTPILOT_LINKS = {
4057
+ "en-US": "https://www.trustpilot.com/review/simplybusiness.com",
4058
+ "en-GB": "https://www.trustpilot.com/review/simplybusiness.co.uk"
4059
+ };
4060
+ var TRUSTPILOT_TEMPLATE_IDS = {
4061
+ "micro-combo": "5419b6ffb0d04a076446a9af",
4062
+ mini: "53aa8807dec7e10d38f59f32",
4063
+ carousel: "53aa8912dec7e10d38f59f36",
4064
+ horizontal: "5406e65db0d04a09e042d5fc"
4065
+ };
4066
+ var TRUSTPILOT_WIDGET = {
4067
+ // Keys based on actual widget names
4068
+ // https://support.trustpilot.com/hc/en-us/articles/360019826379-TrustBox-widget-overview
4069
+ "micro-combo": {
4070
+ templateId: TRUSTPILOT_TEMPLATE_IDS["micro-combo"],
4071
+ className: "--is-variant-micro-combo",
4072
+ styles: {
4073
+ height: "25px"
4074
+ }
4075
+ },
4076
+ mini: {
4077
+ templateId: TRUSTPILOT_TEMPLATE_IDS["mini"],
4078
+ className: "--is-variant-mini",
4079
+ styles: {
4080
+ width: "300px",
4081
+ height: "150px"
4082
+ }
4083
+ },
4084
+ carousel: {
4085
+ templateId: TRUSTPILOT_TEMPLATE_IDS["carousel"],
4086
+ className: "--is-variant-carousel",
4087
+ styles: {
4088
+ height: "150px"
4089
+ }
4090
+ },
4091
+ horizontal: {
4092
+ templateId: TRUSTPILOT_TEMPLATE_IDS["horizontal"],
4093
+ className: "--is-variant-horizontal",
4094
+ styles: {
4095
+ height: "28px"
4096
+ }
4097
+ }
4098
+ };
4099
+
4100
+ // src/components/Trust/Trust.tsx
4101
+ var import_jsx_runtime67 = require("react/jsx-runtime");
4102
+ var Trust = (0, import_react79.forwardRef)((props, ref) => {
4103
+ const {
4104
+ elementType: Element = "div",
4105
+ variant,
4106
+ theme,
4107
+ locale,
4108
+ height,
4109
+ width,
4110
+ stars,
4111
+ className
4112
+ } = props;
4113
+ const [isMounted, setIsMounted] = (0, import_react79.useState)(false);
4114
+ const trustRef = (0, import_react79.useRef)(null);
4115
+ const {
4116
+ templateId,
4117
+ className: variantClassName,
4118
+ styles
4119
+ } = TRUSTPILOT_WIDGET[variant];
4120
+ const link = TRUSTPILOT_LINKS[locale];
4121
+ const dataProps = {
4122
+ "data-businessunit-id": SIMPLYBUSINESS_UNIT_ID,
4123
+ "data-locale": locale,
4124
+ "data-template-id": templateId,
4125
+ "data-theme": theme,
4126
+ "data-style-width": width || "100%",
4127
+ "data-style-height": height,
4128
+ "data-stars": stars
4129
+ };
4130
+ const classes = (0, import_dedupe55.default)(
4131
+ "mobius",
4132
+ "mobius-trust",
4133
+ REQUIRED_TRUSTPILOT_CLASS_NAME,
4134
+ {
4135
+ [`--is-${theme}`]: theme,
4136
+ [variantClassName]: variant
4137
+ },
4138
+ className
4139
+ );
4140
+ (0, import_react79.useEffect)(() => {
4141
+ const hasTrustpilotLoaded = trustRef.current && window?.Trustpilot && window?.Trustpilot.loadFromElement;
4142
+ if (isMounted && hasTrustpilotLoaded) {
4143
+ window.Trustpilot.loadFromElement(trustRef.current, true);
4144
+ }
4145
+ }, [isMounted]);
4146
+ (0, import_react79.useEffect)(() => {
4147
+ setIsMounted(true);
4148
+ }, []);
4149
+ if (!isMounted) return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { style: styles });
4150
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
4151
+ Element,
4152
+ {
4153
+ ref: mergeRefs([trustRef, ref]),
4154
+ className: classes,
4155
+ style: styles,
4156
+ ...dataProps,
4157
+ children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
4158
+ "a",
4159
+ {
4160
+ href: link,
4161
+ target: "_blank",
4162
+ rel: "noopener noreferrer",
4163
+ className: "mobius-trust__link",
4164
+ children: "Trustpilot"
4165
+ }
4166
+ )
4167
+ }
4168
+ );
4169
+ });