@simplybusiness/mobius 3.7.1 → 3.9.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 (441) hide show
  1. package/CHANGELOG.md +21 -1
  2. package/dist/cjs/components/Accordion/Accordion.stories.d.ts +12 -0
  3. package/dist/cjs/components/Accordion/Accordion.stories.js +48 -0
  4. package/dist/cjs/components/Accordion/Accordion.stories.js.map +1 -0
  5. package/dist/cjs/components/Alert/Alert.stories.d.ts +17 -0
  6. package/dist/cjs/components/Alert/Alert.stories.js +35 -0
  7. package/dist/cjs/components/Alert/Alert.stories.js.map +1 -0
  8. package/dist/cjs/components/Box/Box.stories.d.ts +17 -0
  9. package/dist/cjs/components/Box/Box.stories.js +23 -0
  10. package/dist/cjs/components/Box/Box.stories.js.map +1 -0
  11. package/dist/cjs/components/Breadcrumbs/Breadcrumbs.stories.d.ts +10 -0
  12. package/dist/cjs/components/Breadcrumbs/Breadcrumbs.stories.js +20 -0
  13. package/dist/cjs/components/Breadcrumbs/Breadcrumbs.stories.js.map +1 -0
  14. package/dist/cjs/components/Button/Button.stories.d.ts +67 -0
  15. package/dist/cjs/components/Button/Button.stories.js +201 -0
  16. package/dist/cjs/components/Button/Button.stories.js.map +1 -0
  17. package/dist/cjs/components/Checkbox/Checkbox.stories.d.ts +32 -0
  18. package/dist/cjs/components/Checkbox/Checkbox.stories.js +101 -0
  19. package/dist/cjs/components/Checkbox/Checkbox.stories.js.map +1 -0
  20. package/dist/cjs/components/Checkbox/CheckboxGroup.stories.d.ts +25 -0
  21. package/dist/cjs/components/Checkbox/CheckboxGroup.stories.js +74 -0
  22. package/dist/cjs/components/Checkbox/CheckboxGroup.stories.js.map +1 -0
  23. package/dist/cjs/components/Checkbox/types.d.ts +1 -1
  24. package/dist/cjs/components/Chopin/Actions/Actions.stories.d.ts +13 -0
  25. package/dist/cjs/components/Chopin/Actions/Actions.stories.js +59 -0
  26. package/dist/cjs/components/Chopin/Actions/Actions.stories.js.map +1 -0
  27. package/dist/cjs/components/Chopin/Footer/Footer.stories.d.ts +13 -0
  28. package/dist/cjs/components/Chopin/Footer/Footer.stories.js +169 -0
  29. package/dist/cjs/components/Chopin/Footer/Footer.stories.js.map +1 -0
  30. package/dist/cjs/components/Chopin/Header/Header.stories.d.ts +22 -0
  31. package/dist/cjs/components/Chopin/Header/Header.stories.js +41 -0
  32. package/dist/cjs/components/Chopin/Header/Header.stories.js.map +1 -0
  33. package/dist/cjs/components/Chopin/PercentageTotalsQuestion/PercentageTotalsQuestion.stories.d.ts +22 -0
  34. package/dist/cjs/components/Chopin/PercentageTotalsQuestion/PercentageTotalsQuestion.stories.js +46 -0
  35. package/dist/cjs/components/Chopin/PercentageTotalsQuestion/PercentageTotalsQuestion.stories.js.map +1 -0
  36. package/dist/cjs/components/Chopin/Question/Question.stories.d.ts +66 -0
  37. package/dist/cjs/components/Chopin/Question/Question.stories.js +139 -0
  38. package/dist/cjs/components/Chopin/Question/Question.stories.js.map +1 -0
  39. package/dist/cjs/components/Chopin/QuestionGroup/QuestionGroup.stories.d.ts +21 -0
  40. package/dist/cjs/components/Chopin/QuestionGroup/QuestionGroup.stories.js +43 -0
  41. package/dist/cjs/components/Chopin/QuestionGroup/QuestionGroup.stories.js.map +1 -0
  42. package/dist/cjs/components/Chopin/Section/Section.stories.d.ts +9 -0
  43. package/dist/cjs/components/Chopin/Section/Section.stories.js +19 -0
  44. package/dist/cjs/components/Chopin/Section/Section.stories.js.map +1 -0
  45. package/dist/cjs/components/Chopin/Steps/Steps.stories.d.ts +9 -0
  46. package/dist/cjs/components/Chopin/Steps/Steps.stories.js +15 -0
  47. package/dist/cjs/components/Chopin/Steps/Steps.stories.js.map +1 -0
  48. package/dist/cjs/components/Chopin/Testimonial/Testimonial.stories.d.ts +9 -0
  49. package/dist/cjs/components/Chopin/Testimonial/Testimonial.stories.js +18 -0
  50. package/dist/cjs/components/Chopin/Testimonial/Testimonial.stories.js.map +1 -0
  51. package/dist/cjs/components/Chopin/TradeSelector/TradeSelector.stories.d.ts +16 -0
  52. package/dist/cjs/components/Chopin/TradeSelector/TradeSelector.stories.js +55 -0
  53. package/dist/cjs/components/Chopin/TradeSelector/TradeSelector.stories.js.map +1 -0
  54. package/dist/cjs/components/Chopin/TradeSelector/TradeSelector.test.js +3 -0
  55. package/dist/cjs/components/Chopin/TradeSelector/TradeSelector.test.js.map +1 -1
  56. package/dist/cjs/components/Container/Container.stories.d.ts +9 -0
  57. package/dist/cjs/components/Container/Container.stories.js +15 -0
  58. package/dist/cjs/components/Container/Container.stories.js.map +1 -0
  59. package/dist/cjs/components/DataTable/DataTable.stories.d.ts +15 -0
  60. package/dist/cjs/components/DataTable/DataTable.stories.js +200 -0
  61. package/dist/cjs/components/DataTable/DataTable.stories.js.map +1 -0
  62. package/dist/cjs/components/DatePicker/DatePicker.stories.d.ts +16 -0
  63. package/dist/cjs/components/DatePicker/DatePicker.stories.js +28 -0
  64. package/dist/cjs/components/DatePicker/DatePicker.stories.js.map +1 -0
  65. package/dist/cjs/components/Divider/Divider.stories.d.ts +13 -0
  66. package/dist/cjs/components/Divider/Divider.stories.js +15 -0
  67. package/dist/cjs/components/Divider/Divider.stories.js.map +1 -0
  68. package/dist/cjs/components/DropdownMenu/DropdownMenu.stories.d.ts +21 -0
  69. package/dist/cjs/components/DropdownMenu/DropdownMenu.stories.js +64 -0
  70. package/dist/cjs/components/DropdownMenu/DropdownMenu.stories.js.map +1 -0
  71. package/dist/cjs/components/ErrorMessage/ErrorMessage.stories.d.ts +14 -0
  72. package/dist/cjs/components/ErrorMessage/ErrorMessage.stories.js +24 -0
  73. package/dist/cjs/components/ErrorMessage/ErrorMessage.stories.js.map +1 -0
  74. package/dist/cjs/components/Fieldset/Fieldset.stories.d.ts +10 -0
  75. package/dist/cjs/components/Fieldset/Fieldset.stories.js +25 -0
  76. package/dist/cjs/components/Fieldset/Fieldset.stories.js.map +1 -0
  77. package/dist/cjs/components/Flex/Flex.stories.d.ts +82 -0
  78. package/dist/cjs/components/Flex/Flex.stories.js +151 -0
  79. package/dist/cjs/components/Flex/Flex.stories.js.map +1 -0
  80. package/dist/cjs/components/Grid/Grid.d.ts +2 -0
  81. package/dist/cjs/components/Grid/Grid.js +10 -4
  82. package/dist/cjs/components/Grid/Grid.js.map +1 -1
  83. package/dist/cjs/components/Grid/Grid.stories.d.ts +86 -0
  84. package/dist/cjs/components/Grid/Grid.stories.js +230 -0
  85. package/dist/cjs/components/Grid/Grid.stories.js.map +1 -0
  86. package/dist/cjs/components/Grid/Item.d.ts +2 -0
  87. package/dist/cjs/components/Grid/Item.js +7 -2
  88. package/dist/cjs/components/Grid/Item.js.map +1 -1
  89. package/dist/cjs/components/Icon/Icon.stories.d.ts +24 -0
  90. package/dist/cjs/components/Icon/Icon.stories.js +46 -0
  91. package/dist/cjs/components/Icon/Icon.stories.js.map +1 -0
  92. package/dist/cjs/components/Icon/types.d.ts +2 -0
  93. package/dist/cjs/components/Image/Image.stories.d.ts +9 -0
  94. package/dist/cjs/components/Image/Image.stories.js +20 -0
  95. package/dist/cjs/components/Image/Image.stories.js.map +1 -0
  96. package/dist/cjs/components/Label/Label.stories.d.ts +9 -0
  97. package/dist/cjs/components/Label/Label.stories.js +18 -0
  98. package/dist/cjs/components/Label/Label.stories.js.map +1 -0
  99. package/dist/cjs/components/Link/Link.stories.d.ts +38 -0
  100. package/dist/cjs/components/Link/Link.stories.js +44 -0
  101. package/dist/cjs/components/Link/Link.stories.js.map +1 -0
  102. package/dist/cjs/components/LinkButton/LinkButton.stories.d.ts +48 -0
  103. package/dist/cjs/components/LinkButton/LinkButton.stories.js +45 -0
  104. package/dist/cjs/components/LinkButton/LinkButton.stories.js.map +1 -0
  105. package/dist/cjs/components/List/List.stories.d.ts +33 -0
  106. package/dist/cjs/components/List/List.stories.js +80 -0
  107. package/dist/cjs/components/List/List.stories.js.map +1 -0
  108. package/dist/cjs/components/LoadingIndicator/LoadingIndicator.d.ts +2 -0
  109. package/dist/cjs/components/LoadingIndicator/LoadingIndicator.js.map +1 -1
  110. package/dist/cjs/components/LoadingIndicator/LoadingIndicator.stories.d.ts +31 -0
  111. package/dist/cjs/components/LoadingIndicator/LoadingIndicator.stories.js +53 -0
  112. package/dist/cjs/components/LoadingIndicator/LoadingIndicator.stories.js.map +1 -0
  113. package/dist/cjs/components/MaskedField/MaskedField.stories.d.ts +16 -0
  114. package/dist/cjs/components/MaskedField/MaskedField.stories.js +25 -0
  115. package/dist/cjs/components/MaskedField/MaskedField.stories.js.map +1 -0
  116. package/dist/cjs/components/Modal/Modal.js +2 -0
  117. package/dist/cjs/components/Modal/Modal.js.map +1 -1
  118. package/dist/cjs/components/Modal/Modal.stories.d.ts +44 -0
  119. package/dist/cjs/components/Modal/Modal.stories.js +82 -0
  120. package/dist/cjs/components/Modal/Modal.stories.js.map +1 -0
  121. package/dist/cjs/components/NumberField/NumberField.stories.d.ts +50 -0
  122. package/dist/cjs/components/NumberField/NumberField.stories.js +106 -0
  123. package/dist/cjs/components/NumberField/NumberField.stories.js.map +1 -0
  124. package/dist/cjs/components/PasswordField/PasswordField.stories.d.ts +28 -0
  125. package/dist/cjs/components/PasswordField/PasswordField.stories.js +34 -0
  126. package/dist/cjs/components/PasswordField/PasswordField.stories.js.map +1 -0
  127. package/dist/cjs/components/Progress/Progress.stories.d.ts +56 -0
  128. package/dist/cjs/components/Progress/Progress.stories.js +92 -0
  129. package/dist/cjs/components/Progress/Progress.stories.js.map +1 -0
  130. package/dist/cjs/components/Radio/Radio.stories.d.ts +39 -0
  131. package/dist/cjs/components/Radio/Radio.stories.js +121 -0
  132. package/dist/cjs/components/Radio/Radio.stories.js.map +1 -0
  133. package/dist/cjs/components/Radio/RadioButton.stories.d.ts +23 -0
  134. package/dist/cjs/components/Radio/RadioButton.stories.js +91 -0
  135. package/dist/cjs/components/Radio/RadioButton.stories.js.map +1 -0
  136. package/dist/cjs/components/SVG/SVG.stories.d.ts +9 -0
  137. package/dist/cjs/components/SVG/SVG.stories.js +22 -0
  138. package/dist/cjs/components/SVG/SVG.stories.js.map +1 -0
  139. package/dist/cjs/components/SVG/SVG.test.js.map +1 -1
  140. package/dist/cjs/components/Segment/Segment.stories.d.ts +32 -0
  141. package/dist/cjs/components/Segment/Segment.stories.js +78 -0
  142. package/dist/cjs/components/Segment/Segment.stories.js.map +1 -0
  143. package/dist/cjs/components/Select/Select.stories.d.ts +31 -0
  144. package/dist/cjs/components/Select/Select.stories.js +82 -0
  145. package/dist/cjs/components/Select/Select.stories.js.map +1 -0
  146. package/dist/cjs/components/Slider/Slider.d.ts +2 -2
  147. package/dist/cjs/components/Slider/Slider.js.map +1 -1
  148. package/dist/cjs/components/Slider/Slider.stories.d.ts +12 -0
  149. package/dist/cjs/components/Slider/Slider.stories.js +66 -0
  150. package/dist/cjs/components/Slider/Slider.stories.js.map +1 -0
  151. package/dist/cjs/components/Table/Table.stories.d.ts +10 -0
  152. package/dist/cjs/components/Table/Table.stories.js +18 -0
  153. package/dist/cjs/components/Table/Table.stories.js.map +1 -0
  154. package/dist/cjs/components/Text/Text.stories.d.ts +10 -0
  155. package/dist/cjs/components/Text/Text.stories.js +29 -0
  156. package/dist/cjs/components/Text/Text.stories.js.map +1 -0
  157. package/dist/cjs/components/TextArea/TextArea.stories.d.ts +26 -0
  158. package/dist/cjs/components/TextArea/TextArea.stories.js +83 -0
  159. package/dist/cjs/components/TextArea/TextArea.stories.js.map +1 -0
  160. package/dist/cjs/components/TextField/TextField.stories.d.ts +36 -0
  161. package/dist/cjs/components/TextField/TextField.stories.js +103 -0
  162. package/dist/cjs/components/TextField/TextField.stories.js.map +1 -0
  163. package/dist/cjs/components/Title/Title.stories.d.ts +9 -0
  164. package/dist/cjs/components/Title/Title.stories.js +19 -0
  165. package/dist/cjs/components/Title/Title.stories.js.map +1 -0
  166. package/dist/cjs/components/VisuallyHidden/VisuallyHidden.stories.d.ts +9 -0
  167. package/dist/cjs/components/VisuallyHidden/VisuallyHidden.stories.js +15 -0
  168. package/dist/cjs/components/VisuallyHidden/VisuallyHidden.stories.js.map +1 -0
  169. package/dist/cjs/hooks/index.d.ts +1 -0
  170. package/dist/cjs/hooks/index.js +1 -0
  171. package/dist/cjs/hooks/index.js.map +1 -1
  172. package/dist/cjs/hooks/useBodyScrollLock/index.d.ts +1 -0
  173. package/dist/cjs/hooks/useBodyScrollLock/index.js +18 -0
  174. package/dist/cjs/hooks/useBodyScrollLock/index.js.map +1 -0
  175. package/dist/cjs/hooks/useBodyScrollLock/useBodyScrollLock.d.ts +3 -0
  176. package/dist/cjs/hooks/useBodyScrollLock/useBodyScrollLock.js +25 -0
  177. package/dist/cjs/hooks/useBodyScrollLock/useBodyScrollLock.js.map +1 -0
  178. package/dist/cjs/hooks/useBodyScrollLock/useBodyScrollLock.test.d.ts +1 -0
  179. package/dist/cjs/hooks/useBodyScrollLock/useBodyScrollLock.test.js +31 -0
  180. package/dist/cjs/hooks/useBodyScrollLock/useBodyScrollLock.test.js.map +1 -0
  181. package/dist/cjs/hooks/useBreakpoint/useBreakpoint.stories.d.ts +11 -0
  182. package/dist/cjs/hooks/useBreakpoint/useBreakpoint.stories.js +43 -0
  183. package/dist/cjs/hooks/useBreakpoint/useBreakpoint.stories.js.map +1 -0
  184. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  185. package/dist/esm/components/Accordion/Accordion.stories.js +45 -0
  186. package/dist/esm/components/Accordion/Accordion.stories.js.map +1 -0
  187. package/dist/esm/components/Alert/Alert.stories.js +32 -0
  188. package/dist/esm/components/Alert/Alert.stories.js.map +1 -0
  189. package/dist/esm/components/Box/Box.stories.js +20 -0
  190. package/dist/esm/components/Box/Box.stories.js.map +1 -0
  191. package/dist/esm/components/Breadcrumbs/Breadcrumbs.stories.js +17 -0
  192. package/dist/esm/components/Breadcrumbs/Breadcrumbs.stories.js.map +1 -0
  193. package/dist/esm/components/Button/Button.stories.js +198 -0
  194. package/dist/esm/components/Button/Button.stories.js.map +1 -0
  195. package/dist/esm/components/Checkbox/Checkbox.stories.js +98 -0
  196. package/dist/esm/components/Checkbox/Checkbox.stories.js.map +1 -0
  197. package/dist/esm/components/Checkbox/CheckboxGroup.stories.js +71 -0
  198. package/dist/esm/components/Checkbox/CheckboxGroup.stories.js.map +1 -0
  199. package/dist/esm/components/Chopin/Actions/Actions.stories.js +56 -0
  200. package/dist/esm/components/Chopin/Actions/Actions.stories.js.map +1 -0
  201. package/dist/esm/components/Chopin/Footer/Footer.stories.js +166 -0
  202. package/dist/esm/components/Chopin/Footer/Footer.stories.js.map +1 -0
  203. package/dist/esm/components/Chopin/Header/Header.stories.js +38 -0
  204. package/dist/esm/components/Chopin/Header/Header.stories.js.map +1 -0
  205. package/dist/esm/components/Chopin/PercentageTotalsQuestion/PercentageTotalsQuestion.stories.js +43 -0
  206. package/dist/esm/components/Chopin/PercentageTotalsQuestion/PercentageTotalsQuestion.stories.js.map +1 -0
  207. package/dist/esm/components/Chopin/Question/Question.stories.js +136 -0
  208. package/dist/esm/components/Chopin/Question/Question.stories.js.map +1 -0
  209. package/dist/esm/components/Chopin/QuestionGroup/QuestionGroup.stories.js +40 -0
  210. package/dist/esm/components/Chopin/QuestionGroup/QuestionGroup.stories.js.map +1 -0
  211. package/dist/esm/components/Chopin/Section/Section.stories.js +16 -0
  212. package/dist/esm/components/Chopin/Section/Section.stories.js.map +1 -0
  213. package/dist/esm/components/Chopin/Steps/Steps.stories.js +12 -0
  214. package/dist/esm/components/Chopin/Steps/Steps.stories.js.map +1 -0
  215. package/dist/esm/components/Chopin/Testimonial/Testimonial.stories.js +15 -0
  216. package/dist/esm/components/Chopin/Testimonial/Testimonial.stories.js.map +1 -0
  217. package/dist/esm/components/Chopin/TradeSelector/TradeSelector.stories.js +52 -0
  218. package/dist/esm/components/Chopin/TradeSelector/TradeSelector.stories.js.map +1 -0
  219. package/dist/esm/components/Chopin/TradeSelector/TradeSelector.test.js +3 -0
  220. package/dist/esm/components/Chopin/TradeSelector/TradeSelector.test.js.map +1 -1
  221. package/dist/esm/components/Container/Container.stories.js +12 -0
  222. package/dist/esm/components/Container/Container.stories.js.map +1 -0
  223. package/dist/esm/components/DataTable/DataTable.stories.js +174 -0
  224. package/dist/esm/components/DataTable/DataTable.stories.js.map +1 -0
  225. package/dist/esm/components/DatePicker/DatePicker.stories.js +25 -0
  226. package/dist/esm/components/DatePicker/DatePicker.stories.js.map +1 -0
  227. package/dist/esm/components/Divider/Divider.stories.js +12 -0
  228. package/dist/esm/components/Divider/Divider.stories.js.map +1 -0
  229. package/dist/esm/components/DropdownMenu/DropdownMenu.stories.js +58 -0
  230. package/dist/esm/components/DropdownMenu/DropdownMenu.stories.js.map +1 -0
  231. package/dist/esm/components/ErrorMessage/ErrorMessage.stories.js +21 -0
  232. package/dist/esm/components/ErrorMessage/ErrorMessage.stories.js.map +1 -0
  233. package/dist/esm/components/Fieldset/Fieldset.stories.js +22 -0
  234. package/dist/esm/components/Fieldset/Fieldset.stories.js.map +1 -0
  235. package/dist/esm/components/Flex/Flex.stories.js +148 -0
  236. package/dist/esm/components/Flex/Flex.stories.js.map +1 -0
  237. package/dist/esm/components/Grid/Grid.js +8 -5
  238. package/dist/esm/components/Grid/Grid.js.map +1 -1
  239. package/dist/esm/components/Grid/Grid.stories.js +227 -0
  240. package/dist/esm/components/Grid/Grid.stories.js.map +1 -0
  241. package/dist/esm/components/Grid/Item.js +5 -3
  242. package/dist/esm/components/Grid/Item.js.map +1 -1
  243. package/dist/esm/components/Icon/Icon.stories.js +43 -0
  244. package/dist/esm/components/Icon/Icon.stories.js.map +1 -0
  245. package/dist/esm/components/Image/Image.stories.js +17 -0
  246. package/dist/esm/components/Image/Image.stories.js.map +1 -0
  247. package/dist/esm/components/Label/Label.stories.js +15 -0
  248. package/dist/esm/components/Label/Label.stories.js.map +1 -0
  249. package/dist/esm/components/Link/Link.stories.js +41 -0
  250. package/dist/esm/components/Link/Link.stories.js.map +1 -0
  251. package/dist/esm/components/LinkButton/LinkButton.stories.js +42 -0
  252. package/dist/esm/components/LinkButton/LinkButton.stories.js.map +1 -0
  253. package/dist/esm/components/List/List.stories.js +77 -0
  254. package/dist/esm/components/List/List.stories.js.map +1 -0
  255. package/dist/esm/components/LoadingIndicator/LoadingIndicator.js.map +1 -1
  256. package/dist/esm/components/LoadingIndicator/LoadingIndicator.stories.js +50 -0
  257. package/dist/esm/components/LoadingIndicator/LoadingIndicator.stories.js.map +1 -0
  258. package/dist/esm/components/MaskedField/MaskedField.stories.js +22 -0
  259. package/dist/esm/components/MaskedField/MaskedField.stories.js.map +1 -0
  260. package/dist/esm/components/Modal/Modal.js +2 -0
  261. package/dist/esm/components/Modal/Modal.js.map +1 -1
  262. package/dist/esm/components/Modal/Modal.stories.js +79 -0
  263. package/dist/esm/components/Modal/Modal.stories.js.map +1 -0
  264. package/dist/esm/components/NumberField/NumberField.stories.js +103 -0
  265. package/dist/esm/components/NumberField/NumberField.stories.js.map +1 -0
  266. package/dist/esm/components/PasswordField/PasswordField.stories.js +31 -0
  267. package/dist/esm/components/PasswordField/PasswordField.stories.js.map +1 -0
  268. package/dist/esm/components/Progress/Progress.stories.js +89 -0
  269. package/dist/esm/components/Progress/Progress.stories.js.map +1 -0
  270. package/dist/esm/components/Radio/Radio.stories.js +118 -0
  271. package/dist/esm/components/Radio/Radio.stories.js.map +1 -0
  272. package/dist/esm/components/Radio/RadioButton.stories.js +88 -0
  273. package/dist/esm/components/Radio/RadioButton.stories.js.map +1 -0
  274. package/dist/esm/components/SVG/SVG.stories.js +19 -0
  275. package/dist/esm/components/SVG/SVG.stories.js.map +1 -0
  276. package/dist/esm/components/SVG/SVG.test.js.map +1 -1
  277. package/dist/esm/components/Segment/Segment.stories.js +75 -0
  278. package/dist/esm/components/Segment/Segment.stories.js.map +1 -0
  279. package/dist/esm/components/Select/Select.stories.js +79 -0
  280. package/dist/esm/components/Select/Select.stories.js.map +1 -0
  281. package/dist/esm/components/Slider/Slider.js.map +1 -1
  282. package/dist/esm/components/Slider/Slider.stories.js +63 -0
  283. package/dist/esm/components/Slider/Slider.stories.js.map +1 -0
  284. package/dist/esm/components/Table/Table.stories.js +15 -0
  285. package/dist/esm/components/Table/Table.stories.js.map +1 -0
  286. package/dist/esm/components/Text/Text.stories.js +26 -0
  287. package/dist/esm/components/Text/Text.stories.js.map +1 -0
  288. package/dist/esm/components/TextArea/TextArea.stories.js +80 -0
  289. package/dist/esm/components/TextArea/TextArea.stories.js.map +1 -0
  290. package/dist/esm/components/TextField/TextField.stories.js +100 -0
  291. package/dist/esm/components/TextField/TextField.stories.js.map +1 -0
  292. package/dist/esm/components/Title/Title.stories.js +16 -0
  293. package/dist/esm/components/Title/Title.stories.js.map +1 -0
  294. package/dist/esm/components/VisuallyHidden/VisuallyHidden.stories.js +12 -0
  295. package/dist/esm/components/VisuallyHidden/VisuallyHidden.stories.js.map +1 -0
  296. package/dist/esm/hooks/index.js +1 -0
  297. package/dist/esm/hooks/index.js.map +1 -1
  298. package/dist/esm/hooks/useBodyScrollLock/index.js +2 -0
  299. package/dist/esm/hooks/useBodyScrollLock/index.js.map +1 -0
  300. package/dist/esm/hooks/useBodyScrollLock/useBodyScrollLock.js +21 -0
  301. package/dist/esm/hooks/useBodyScrollLock/useBodyScrollLock.js.map +1 -0
  302. package/dist/esm/hooks/useBodyScrollLock/useBodyScrollLock.test.js +29 -0
  303. package/dist/esm/hooks/useBodyScrollLock/useBodyScrollLock.test.js.map +1 -0
  304. package/dist/esm/hooks/useBreakpoint/useBreakpoint.stories.js +40 -0
  305. package/dist/esm/hooks/useBreakpoint/useBreakpoint.stories.js.map +1 -0
  306. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  307. package/dist/mobius.d.ts +15 -2
  308. package/package.json +2 -2
  309. package/src/components/Accordion/{Accordion.story.mdx → Accordion.mdx} +15 -96
  310. package/src/components/Accordion/Accordion.stories.tsx +87 -0
  311. package/src/components/Alert/{Alert.story.mdx → Alert.mdx} +5 -35
  312. package/src/components/Alert/Alert.stories.tsx +47 -0
  313. package/src/components/Box/{Box.story.mdx → Box.mdx} +5 -21
  314. package/src/components/Box/Box.stories.tsx +26 -0
  315. package/src/components/Breadcrumbs/{Breadcrumbs.story.mdx → Breadcrumbs.mdx} +15 -48
  316. package/src/components/Breadcrumbs/Breadcrumbs.stories.tsx +52 -0
  317. package/src/components/Button/Button.mdx +227 -0
  318. package/src/components/Button/Button.stories.tsx +225 -0
  319. package/src/components/Button/Button.story.styles.css +3 -0
  320. package/src/components/Checkbox/Checkbox.mdx +122 -0
  321. package/src/components/Checkbox/Checkbox.stories.tsx +122 -0
  322. package/src/components/Checkbox/{CheckboxGroup.story.mdx → CheckboxGroup.mdx} +12 -114
  323. package/src/components/Checkbox/CheckboxGroup.stories.tsx +109 -0
  324. package/src/components/Checkbox/types.ts +1 -1
  325. package/src/components/Chopin/Actions/{Actions.story.mdx → Actions.mdx} +17 -88
  326. package/src/components/Chopin/Actions/Actions.stories.tsx +81 -0
  327. package/src/components/Chopin/Footer/Footer.mdx +163 -0
  328. package/src/components/Chopin/Footer/Footer.stories.tsx +217 -0
  329. package/src/components/Chopin/Header/{Header.story.mdx → Header.mdx} +7 -47
  330. package/src/components/Chopin/Header/Header.stories.tsx +50 -0
  331. package/src/components/Chopin/PercentageTotalsQuestion/{PercentageTotalsQuestion.story.mdx → PercentageTotalsQuestion.mdx} +4 -36
  332. package/src/components/Chopin/PercentageTotalsQuestion/PercentageTotalsQuestion.stories.tsx +63 -0
  333. package/src/components/Chopin/Question/{Question.story.mdx → Question.mdx} +29 -227
  334. package/src/components/Chopin/Question/Question.stories.tsx +211 -0
  335. package/src/components/Chopin/QuestionGroup/QuestionGroup.mdx +149 -0
  336. package/src/components/Chopin/QuestionGroup/QuestionGroup.stories.tsx +187 -0
  337. package/src/components/Chopin/Section/{Section.story.mdx → Section.mdx} +6 -24
  338. package/src/components/Chopin/Section/Section.stories.tsx +30 -0
  339. package/src/components/Chopin/Steps/{Steps.story.mdx → Steps.mdx} +6 -20
  340. package/src/components/Chopin/Steps/Steps.stories.tsx +22 -0
  341. package/src/components/Chopin/Testimonial/{Testimonial.story.mdx → Testimonial.mdx} +4 -14
  342. package/src/components/Chopin/Testimonial/Testimonial.stories.tsx +23 -0
  343. package/src/components/Chopin/TradeSelector/{TradeSelector.story.mdx → TradeSelector.mdx} +14 -52
  344. package/src/components/Chopin/TradeSelector/TradeSelector.stories.tsx +67 -0
  345. package/src/components/Chopin/TradeSelector/TradeSelector.test.tsx +3 -0
  346. package/src/components/Container/{Container.story.mdx → Container.mdx} +4 -16
  347. package/src/components/Container/Container.stories.tsx +20 -0
  348. package/src/components/DataTable/{DataTable.story.mdx → DataTable.mdx} +10 -203
  349. package/src/components/DataTable/DataTable.stories.tsx +228 -0
  350. package/src/components/DatePicker/{DatePicker.story.mdx → DatePicker.mdx} +9 -29
  351. package/src/components/DatePicker/DatePicker.stories.tsx +32 -0
  352. package/src/components/Divider/{Divider.story.mdx → Divider.mdx} +4 -9
  353. package/src/components/Divider/Divider.stories.tsx +13 -0
  354. package/src/components/DropdownMenu/{DropdownMenu.story.mdx → DropdownMenu.mdx} +5 -39
  355. package/src/components/DropdownMenu/DropdownMenu.stories.tsx +84 -0
  356. package/src/components/DropdownMenu/DropdownMenu.story.styles.css +12 -0
  357. package/src/components/ErrorMessage/ErrorMessage.mdx +39 -0
  358. package/src/components/ErrorMessage/ErrorMessage.stories.tsx +24 -0
  359. package/src/components/Fieldset/{Fieldset.story.mdx → Fieldset.mdx} +5 -28
  360. package/src/components/Fieldset/Fieldset.stories.tsx +40 -0
  361. package/src/components/Flex/{Flex.story.mdx → Flex.mdx} +13 -150
  362. package/src/components/Flex/Flex.stories.tsx +182 -0
  363. package/src/components/Grid/{Grid.story.mdx → Grid.mdx} +78 -360
  364. package/src/components/Grid/Grid.stories.tsx +375 -0
  365. package/src/components/Grid/Grid.story.styles.css +4 -0
  366. package/src/components/Grid/Grid.tsx +16 -4
  367. package/src/components/Grid/Item.tsx +14 -2
  368. package/src/components/Icon/Icon.mdx +75 -0
  369. package/src/components/Icon/Icon.stories.tsx +50 -0
  370. package/src/components/Icon/types.ts +2 -0
  371. package/src/components/Image/{Image.story.mdx → Image.mdx} +4 -9
  372. package/src/components/Image/Image.stories.tsx +20 -0
  373. package/src/components/Label/{Label.story.mdx → Label.mdx} +4 -9
  374. package/src/components/Label/Label.stories.tsx +16 -0
  375. package/src/components/Link/{Link.story.mdx → Link.mdx} +8 -52
  376. package/src/components/Link/Link.stories.tsx +50 -0
  377. package/src/components/LinkButton/LinkButton.mdx +45 -0
  378. package/src/components/LinkButton/LinkButton.stories.tsx +61 -0
  379. package/src/components/List/{List.story.mdx → List.mdx} +18 -113
  380. package/src/components/List/List.stories.tsx +135 -0
  381. package/src/components/LoadingIndicator/LoadingIndicator.mdx +59 -0
  382. package/src/components/LoadingIndicator/LoadingIndicator.stories.tsx +59 -0
  383. package/src/components/LoadingIndicator/LoadingIndicator.tsx +2 -0
  384. package/src/components/MaskedField/{MaskedField.story.mdx → MaskedField.mdx} +11 -12
  385. package/src/components/MaskedField/MaskedField.stories.tsx +26 -0
  386. package/src/components/Modal/{Modal.story.mdx → Modal.mdx} +20 -84
  387. package/src/components/Modal/Modal.stories.tsx +181 -0
  388. package/src/components/Modal/Modal.tsx +2 -0
  389. package/src/components/NumberField/NumberField.mdx +104 -0
  390. package/src/components/NumberField/NumberField.stories.tsx +114 -0
  391. package/src/components/PasswordField/{PasswordField.story.mdx → PasswordField.mdx} +10 -49
  392. package/src/components/PasswordField/PasswordField.stories.tsx +36 -0
  393. package/src/components/Progress/Progress.mdx +83 -0
  394. package/src/components/Progress/Progress.stories.tsx +105 -0
  395. package/src/components/Radio/Radio.mdx +202 -0
  396. package/src/components/Radio/Radio.stories.tsx +202 -0
  397. package/src/components/Radio/{RadioButton.story.mdx → RadioButton.mdx} +15 -156
  398. package/src/components/Radio/RadioButton.stories.tsx +153 -0
  399. package/src/components/SVG/{SVG.story.mdx → SVG.mdx} +5 -10
  400. package/src/components/SVG/SVG.stories.tsx +29 -0
  401. package/src/components/SVG/SVG.test.tsx +3 -14
  402. package/src/components/Segment/{Segment.story.mdx → Segment.mdx} +79 -107
  403. package/src/components/Segment/Segment.stories.tsx +129 -0
  404. package/src/components/Select/{Select.story.mdx → Select.mdx} +25 -186
  405. package/src/components/Select/Select.stories.tsx +163 -0
  406. package/src/components/Slider/Slider.mdx +55 -0
  407. package/src/components/Slider/Slider.stories.tsx +82 -0
  408. package/src/components/Slider/Slider.tsx +5 -2
  409. package/src/components/Table/Table.mdx +74 -0
  410. package/src/components/Table/Table.stories.tsx +149 -0
  411. package/src/components/Text/{Text.story.mdx → Text.mdx} +20 -16
  412. package/src/components/Text/Text.stories.tsx +28 -0
  413. package/src/components/TextArea/TextArea.mdx +82 -0
  414. package/src/components/TextArea/TextArea.stories.tsx +89 -0
  415. package/src/components/TextField/TextField.mdx +122 -0
  416. package/src/components/TextField/TextField.stories.tsx +111 -0
  417. package/src/components/Title/{Title.story.mdx → Title.mdx} +4 -12
  418. package/src/components/Title/Title.stories.tsx +17 -0
  419. package/src/components/VisuallyHidden/{VisuallyHidden.story.mdx → VisuallyHidden.mdx} +4 -13
  420. package/src/components/VisuallyHidden/VisuallyHidden.stories.tsx +17 -0
  421. package/src/hooks/index.tsx +1 -0
  422. package/src/hooks/useBodyScrollLock/index.ts +1 -0
  423. package/src/hooks/useBodyScrollLock/useBodyScrollLock.test.ts +34 -0
  424. package/src/hooks/useBodyScrollLock/useBodyScrollLock.ts +25 -0
  425. package/src/hooks/useBreakpoint/{useBreakpoint.story.mdx → useBreakpoint.mdx} +6 -47
  426. package/src/hooks/useBreakpoint/useBreakpoint.stories.tsx +61 -0
  427. package/src/components/Button/Button.story.mdx +0 -401
  428. package/src/components/Checkbox/Checkbox.story.mdx +0 -233
  429. package/src/components/Chopin/Footer/Footer.story.mdx +0 -368
  430. package/src/components/Chopin/QuestionGroup/QuestionGroup.story.mdx +0 -309
  431. package/src/components/ErrorMessage/ErrorMessage.story.mdx +0 -57
  432. package/src/components/Icon/Icon.story.mdx +0 -175
  433. package/src/components/LinkButton/LinkButton.story.mdx +0 -96
  434. package/src/components/LoadingIndicator/LoadingIndicator.story.mdx +0 -96
  435. package/src/components/NumberField/NumberField.story.mdx +0 -193
  436. package/src/components/Progress/Progress.story.mdx +0 -172
  437. package/src/components/Radio/Radio.story.mdx +0 -402
  438. package/src/components/Slider/Slider.story.mdx +0 -130
  439. package/src/components/Table/Table.story.mdx +0 -213
  440. package/src/components/TextArea/TextArea.story.mdx +0 -172
  441. package/src/components/TextField/TextField.story.mdx +0 -232
@@ -7,6 +7,8 @@ import { Icon } from "../Icon";
7
7
  export interface LoadingIndicatorProps extends RefAttributes<SVGSVGElement> {
8
8
  className?: string;
9
9
  icon?: IconName;
10
+ fontSize?: string;
11
+ color?: string;
10
12
  }
11
13
 
12
14
  export type LoadingIndicatorRef = Ref<SVGSVGElement>;
@@ -1,7 +1,8 @@
1
- import { Meta, ArgsTable, Canvas, Story } from "@storybook/addon-docs";
1
+ import { Meta, ArgsTable, Canvas, Story } from "@storybook/blocks";
2
2
  import { MaskedField, MaskedFieldProps } from "./MaskedField";
3
+ import * as MaskedFieldStories from "./MaskedField.stories";
3
4
 
4
- <Meta title="Components/MaskedField" component={MaskedField} />
5
+ <Meta of={MaskedFieldStories} />
5
6
 
6
7
  # MaskedField
7
8
 
@@ -22,9 +23,7 @@ import { MaskedField } from "@simplybusiness/mobius";
22
23
  ## Normal
23
24
 
24
25
  <Canvas>
25
- <Story name="Normal" args={{ label: "MaskedField", pattern: "ssn" }}>
26
- {args => <MaskedField {...args} />}
27
- </Story>
26
+ <Story of={MaskedFieldStories.Normal} />
28
27
  </Canvas>
29
28
 
30
29
  ## Props
@@ -45,13 +44,13 @@ The following HTML is rendered for a MaskedField:
45
44
 
46
45
  Class names are augmented with the following flags if true:
47
46
 
48
- - --is-focused
49
- - --is-disabled
50
- - --is-hovered
51
- - --is-selected
52
- - --is-valid
53
- - --is-invalid
54
- - --is-optional
47
+ - \--is-focused
48
+ - \--is-disabled
49
+ - \--is-hovered
50
+ - \--is-selected
51
+ - \--is-valid
52
+ - \--is-invalid
53
+ - \--is-optional
55
54
 
56
55
  ---
57
56
 
@@ -0,0 +1,26 @@
1
+ import type { Meta } from "@storybook/react";
2
+ import { MaskedField, MaskedFieldProps } from "./MaskedField";
3
+ import { excludeControls } from "../../utils/excludeControls";
4
+
5
+ export default {
6
+ title: "Components/MaskedField",
7
+ component: MaskedField,
8
+ argTypes: {
9
+ type: {
10
+ control: { type: "radio" },
11
+ options: ["text", "number"],
12
+ },
13
+ ...excludeControls("className"),
14
+ },
15
+ };
16
+
17
+ export const Normal: Meta<typeof MaskedField> = {
18
+ render: (args: MaskedFieldProps) => <MaskedField {...args} />,
19
+ args: {
20
+ label: "MaskedField",
21
+ pattern: "ssn",
22
+ isRequired: false,
23
+ type: "",
24
+ errorMessage: "",
25
+ },
26
+ };
@@ -1,28 +1,12 @@
1
1
  import { useState } from "react";
2
- import { Meta, ArgsTable, Story } from "@storybook/addon-docs";
2
+ import { Meta, ArgsTable, Story } from "@storybook/blocks";
3
3
  import { Box } from "../Box";
4
4
  import { Button } from "../Button";
5
5
  import { Modal } from ".";
6
6
  import { excludeControls } from "../../utils/excludeControls";
7
+ import * as ModalStories from "./Modal.stories";
7
8
 
8
- <Meta
9
- title="Components/Modal"
10
- component={Modal}
11
- argTypes={{
12
- animation: { control: "radio", options: ["", "slideUp", "fade"] },
13
- size: {
14
- control: "radio",
15
- options: ["md", "fullscreen"],
16
- },
17
- ...excludeControls(
18
- "className",
19
- "onClose",
20
- "appElement",
21
- "parentSelector",
22
- "isOpen",
23
- ),
24
- }}
25
- />
9
+ <Meta of={ModalStories} />
26
10
 
27
11
  # Modal
28
12
 
@@ -278,13 +262,13 @@ const WithAnimationDemo = () => {
278
262
 
279
263
  ### Step 1: Create embeddable `<iframe>`
280
264
 
281
- 1. Create `example` directory with `index.html` file in it:
265
+ 1. Create `example` directory with `index.html` file in it:
282
266
 
283
267
  ```
284
268
  mkdir example && cd example && touch index.html
285
269
  ```
286
270
 
287
- 2. Edit your `index.html` file as follows:
271
+ 2. Edit your `index.html` file as follows:
288
272
 
289
273
  ```html
290
274
  <html>
@@ -300,7 +284,7 @@ mkdir example && cd example && touch index.html
300
284
  </html>
301
285
  ```
302
286
 
303
- 3. Start a simple HTTP server from within the `example` directory:
287
+ 3. Start a simple HTTP server from within the `example` directory:
304
288
 
305
289
  ```
306
290
  npx serve .
@@ -351,67 +335,19 @@ export const ExampleContent = ({ onClose }) => {
351
335
 
352
336
  ### Normal
353
337
 
354
- <Story
355
- name="Normal"
356
- args={{
357
- isOpen: false,
358
- shouldFocusAfterRender: true,
359
- animation: "",
360
- preventCloseOnEsc: false,
361
- closeLabel: "Close",
362
- size: "md",
363
- }}
364
- >
365
- {args => <Demo {...args} />}
366
- </Story>
338
+ <Story of={ModalStories.Normal} />
367
339
 
368
340
  ### Full Screen
369
341
 
370
- <Story
371
- name="Full Screen"
372
- args={{
373
- isOpen: false,
374
- shouldFocusAfterRender: true,
375
- animation: "",
376
- preventCloseOnEsc: false,
377
- closeLabel: "Close",
378
- size: "fullscreen",
379
- }}
380
- >
381
- {args => <FullScreenDemo {...args} />}
382
- </Story>
342
+ <Story of={ModalStories.FullScreen} />
383
343
 
384
344
  ### With Custom Size
385
345
 
386
- <Story
387
- name="With Custom Size"
388
- args={{
389
- isOpen: false,
390
- shouldFocusAfterRender: true,
391
- animation: "",
392
- preventCloseOnEsc: false,
393
- closeLabel: "Close",
394
- size: "sm",
395
- }}
396
- >
397
- {args => <WithCustomSizeDemo {...args} />}
398
- </Story>
346
+ <Story of={ModalStories.WithCustomSize} />
399
347
 
400
348
  ### With Animation
401
349
 
402
- <Story
403
- name="With Animation"
404
- args={{
405
- isOpen: false,
406
- animation: "slideUp",
407
- shouldFocusAfterRender: true,
408
- preventCloseOnEsc: false,
409
- closeLabel: "Close",
410
- size: "md",
411
- }}
412
- >
413
- {args => <WithAnimationDemo {...args} />}
414
- </Story>
350
+ <Story of={ModalStories.WithAnimation} />
415
351
 
416
352
  ## Props
417
353
 
@@ -442,16 +378,16 @@ The following HTML is rendered for a simple Modal:
442
378
 
443
379
  Class names are augmented with the following flags if true (affected classes shown above):
444
380
 
445
- - --slide-up
446
- - --fade
447
- - --has-reduced-motion
448
- - --is-fullscreen
449
- - --is-xs
450
- - --is-sm
451
- - --is-md
452
- - --is-lg
453
- - --is-xl
454
- - --is-xxl
381
+ - \--slide-up
382
+ - \--fade
383
+ - \--has-reduced-motion
384
+ - \--is-fullscreen
385
+ - \--is-xs
386
+ - \--is-sm
387
+ - \--is-md
388
+ - \--is-lg
389
+ - \--is-xl
390
+ - \--is-xxl
455
391
 
456
392
  ---
457
393
 
@@ -0,0 +1,181 @@
1
+ import type { Meta } from "@storybook/react";
2
+ import { useState } from "react";
3
+ import { Button } from "../Button";
4
+ import { Modal, ModalProps } from ".";
5
+ import { excludeControls } from "../../utils/excludeControls";
6
+
7
+ const Demo = (props: ModalProps) => {
8
+ const [open, setOpen] = useState(false);
9
+ return (
10
+ <>
11
+ <Button onClick={() => setOpen(true)}>Show Modal</Button>
12
+ <Modal {...props} isOpen={open} onClose={() => setOpen(false)}>
13
+ <Modal.Header>The Latin Modal</Modal.Header>
14
+ <Modal.Content>
15
+ Aliquam fringilla quam vel purus rhoncus interdum in quis sapien. Sed
16
+ at eros et lectus mollis posuere. Morbi augue augue, venenatis vel
17
+ consectetur sed, vulputate et lorem. Integer venenatis nibh molestie
18
+ commodo lobortis. Phasellus sit amet dignissim nisi. Vivamus nisi
19
+ augue, scelerisque commodo libero vitae, vulputate interdum ex.
20
+ Integer non risus sollicitudin, cursus ipsum vitae, rhoncus nulla.
21
+ </Modal.Content>
22
+ </Modal>
23
+ </>
24
+ );
25
+ };
26
+
27
+ const FullScreenDemo = (props: ModalProps) => {
28
+ const [open, setOpen] = useState(false);
29
+ return (
30
+ <>
31
+ <Button onClick={() => setOpen(true)} variant="secondary">
32
+ Show Fullscreen Modal 🚀
33
+ </Button>
34
+ <Modal
35
+ {...props}
36
+ size="fullscreen"
37
+ isOpen={open}
38
+ onClose={() => setOpen(false)}
39
+ preventCloseOnEsc
40
+ >
41
+ <Modal.Header>The Full Screen Modal</Modal.Header>
42
+ <Modal.Content>
43
+ Aliquam fringilla quam vel purus rhoncus interdum in quis sapien. Sed
44
+ at eros et lectus mollis posuere. Morbi augue augue, venenatis vel
45
+ consectetur sed, vulputate et lorem. Integer venenatis nibh molestie
46
+ commodo lobortis. Phasellus sit amet dignissim nisi. Vivamus nisi
47
+ augue, scelerisque commodo libero vitae, vulputate interdum ex.
48
+ Integer non risus sollicitudin, cursus ipsum vitae, rhoncus nulla.
49
+ </Modal.Content>
50
+ </Modal>
51
+ </>
52
+ );
53
+ };
54
+
55
+ const WithCustomSizeDemo = (props: ModalProps) => {
56
+ const [open, setOpen] = useState(false);
57
+ return (
58
+ <>
59
+ <Button onClick={() => setOpen(true)} variant="secondary">
60
+ Show Custom Size Modal 🔸
61
+ </Button>
62
+ <Modal
63
+ {...props}
64
+ size="sm"
65
+ isOpen={open}
66
+ onClose={() => setOpen(false)}
67
+ preventCloseOnEsc
68
+ >
69
+ <Modal.Header>The Custom Size Modal</Modal.Header>
70
+ <Modal.Content>
71
+ Aliquam fringilla quam vel purus rhoncus interdum in quis sapien. Sed
72
+ at eros et lectus mollis posuere. Morbi augue augue, venenatis vel
73
+ consectetur sed, vulputate et lorem. Integer venenatis nibh molestie
74
+ commodo lobortis. Phasellus sit amet dignissim nisi. Vivamus nisi
75
+ augue, scelerisque commodo libero vitae, vulputate interdum ex.
76
+ Integer non risus sollicitudin, cursus ipsum vitae, rhoncus nulla.
77
+ </Modal.Content>
78
+ </Modal>
79
+ </>
80
+ );
81
+ };
82
+
83
+ type WithAnimationDemoProps = {
84
+ animation?: "slideUp" | "fade";
85
+ };
86
+
87
+ const WithAnimationDemo = ({
88
+ animation,
89
+ }: ModalProps & WithAnimationDemoProps) => {
90
+ const [open, setOpen] = useState(false);
91
+ return (
92
+ <>
93
+ <Button onClick={() => setOpen(true)}>
94
+ Show Modal With Animation 🧙‍♂️
95
+ </Button>
96
+ <Modal isOpen={open} onClose={() => setOpen(false)} animation={animation}>
97
+ <Modal.Header>The Latin Modal</Modal.Header>
98
+ <Modal.Content>
99
+ Aliquam fringilla quam vel purus rhoncus interdum in quis sapien. Sed
100
+ at eros et lectus mollis posuere. Morbi augue augue, venenatis vel
101
+ consectetur sed, vulputate et lorem. Integer venenatis nibh molestie
102
+ commodo lobortis. Phasellus sit amet dignissim nisi. Vivamus nisi
103
+ augue, scelerisque commodo libero vitae, vulputate interdum ex.
104
+ Integer non risus sollicitudin, cursus ipsum vitae, rhoncus nulla.
105
+ </Modal.Content>
106
+ </Modal>
107
+ </>
108
+ );
109
+ };
110
+
111
+ export default {
112
+ title: "Components/Modal",
113
+ component: Modal,
114
+ argTypes: {
115
+ animation: {
116
+ options: ["slideUp", "fade", "neither"],
117
+ control: { type: "radio" },
118
+ mapping: {
119
+ slideUp: "slideUp",
120
+ fade: "fade",
121
+ neither: undefined,
122
+ },
123
+ },
124
+ size: {
125
+ control: { type: "radio" },
126
+ options: ["md", "fullscreen"],
127
+ },
128
+ ...excludeControls(
129
+ "className",
130
+ "onClose",
131
+ "appElement",
132
+ "parentSelector",
133
+ "isOpen",
134
+ ),
135
+ },
136
+ };
137
+
138
+ export const Normal: Meta<typeof Demo> = {
139
+ render: (args: ModalProps) => <Demo {...args} />,
140
+ args: {
141
+ isOpen: false,
142
+ shouldFocusAfterRender: true,
143
+ preventCloseOnEsc: false,
144
+ closeLabel: "Close",
145
+ size: "md",
146
+ },
147
+ };
148
+
149
+ export const FullScreen: Meta<typeof FullScreenDemo> = {
150
+ render: (args: ModalProps) => <FullScreenDemo {...args} />,
151
+ args: {
152
+ isOpen: false,
153
+ shouldFocusAfterRender: true,
154
+ preventCloseOnEsc: false,
155
+ closeLabel: "Close",
156
+ size: "fullscreen",
157
+ },
158
+ };
159
+
160
+ export const WithCustomSize: Meta<typeof WithCustomSizeDemo> = {
161
+ render: (args: ModalProps) => <WithCustomSizeDemo {...args} />,
162
+ args: {
163
+ isOpen: false,
164
+ shouldFocusAfterRender: true,
165
+ preventCloseOnEsc: false,
166
+ closeLabel: "Close",
167
+ size: "sm",
168
+ },
169
+ };
170
+
171
+ export const WithAnimation: Meta<typeof WithAnimationDemo> = {
172
+ render: (args: ModalProps) => <WithAnimationDemo {...args} />,
173
+ args: {
174
+ isOpen: false,
175
+ animation: "slideUp",
176
+ shouldFocusAfterRender: true,
177
+ preventCloseOnEsc: false,
178
+ closeLabel: "Close",
179
+ size: "md",
180
+ },
181
+ };
@@ -11,6 +11,7 @@ import ReactModal from "react-modal";
11
11
  import clsx from "clsx";
12
12
  import { SizeType } from "../../types/size";
13
13
  import { sizeClasses } from "../../utils/sizeClasses";
14
+ import { useBodyScrollLock } from "../../hooks/useBodyScrollLock";
14
15
 
15
16
  export type ModalSizeType = SizeType | "fullscreen";
16
17
  export interface ModalProps {
@@ -46,6 +47,7 @@ const Modal = ({
46
47
  "(prefers-reduced-motion: no-preference)",
47
48
  );
48
49
  const shouldAnimate = noPreference.matches && !!animation;
50
+ useBodyScrollLock({ enabled: isOpen });
49
51
 
50
52
  const modalClasses = clsx(
51
53
  "mobius",
@@ -0,0 +1,104 @@
1
+ import { Meta, ArgsTable, Canvas, Story } from "@storybook/blocks";
2
+ import { NumberField, NumberFieldProps } from "./NumberField";
3
+ import { excludeControls } from "../../utils/excludeControls";
4
+ import * as NumberFieldStories from "./NumberField.stories";
5
+
6
+ <Meta of={NumberFieldStories} />
7
+
8
+ # NumberField
9
+
10
+ The `NumberField` component is used for creating a numeric input field. It can be customised by providing any of the valid
11
+ [Intl.NumberFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options)
12
+ options as the `formatOptions` prop.
13
+
14
+ ## Install
15
+
16
+ ```bash
17
+ yarn add @simplybusiness/mobius
18
+ ```
19
+
20
+ ## Usage
21
+
22
+ ```js
23
+ import { NumberField } from "@simplybusiness/mobius";
24
+ ```
25
+
26
+ ## Normal
27
+
28
+ <Canvas>
29
+ <Story of={NumberFieldStories.Normal} />
30
+ </Canvas>
31
+
32
+ ## Formatted
33
+
34
+ <Canvas>
35
+ <Story of={NumberFieldStories.Formatted} />
36
+ </Canvas>
37
+
38
+ ## Limited range
39
+
40
+ <Canvas>
41
+ <Story of={NumberFieldStories.LimitedRange} />
42
+ </Canvas>
43
+
44
+ ## Valid
45
+
46
+ <Canvas>
47
+ <Story of={NumberFieldStories.Valid} />
48
+ </Canvas>
49
+
50
+ ## Valid
51
+
52
+ <Canvas>
53
+ <Story of={NumberFieldStories.Invalid} />
54
+ </Canvas>
55
+
56
+ ## Disabled
57
+
58
+ <Canvas>
59
+ <Story of={NumberFieldStories.Disabled} />
60
+ </Canvas>
61
+
62
+ ## Props
63
+
64
+ <ArgsTable of={NumberField} />
65
+
66
+ ## Component HTML Structure and Class names
67
+
68
+ The following HTML is rendered for a NumberField:
69
+
70
+ ```html
71
+ <div class="mobius/NumberField">
72
+ <label class="mobius mobius/Label mobius/NumberFieldLabel">Label</label>
73
+ <div class="mobius/NumberFieldInputGroup">
74
+ <input class="mobius/NumberFieldInput" />
75
+ <button class="mobius/NumberFieldButton mobius/NumberFieldButtonPlus">
76
+ +
77
+ </button>
78
+ <button
79
+ type="button"
80
+ class="mobius/NumberFieldButton mobius/NumberFieldButtonMinus"
81
+ tabindex="-1"
82
+ aria-label="Decrease Number field"
83
+ aria-controls="react-aria7586995458-316"
84
+ >
85
+ -
86
+ </button>
87
+ </div>
88
+ <div class="mobius/ErrorMessage">Error message</div>
89
+ </div>
90
+ ```
91
+
92
+ Class names are augmented with the following flags if true:
93
+
94
+ - \--is-disabled
95
+ - \--is-hovered
96
+ - \--is-focused
97
+ - \--is-valid
98
+ - \--is-invalid
99
+ - \--is-required
100
+ - \--is-optional
101
+
102
+ ---
103
+
104
+ [See on Github](https://github.com/simplybusiness/mobius/tree/master/packages/mobius/src/components/NumberField) | [Give feedback](https://simplybusiness.atlassian.net/CreateIssue.jspa?issuetype=10103&pid=10609) | [Get support](https://simplybusiness.slack.com/archives/C016CC0NDNE)
@@ -0,0 +1,114 @@
1
+ import type { Meta } from "@storybook/react";
2
+ import { NumberField, NumberFieldProps } from "./NumberField";
3
+ import { excludeControls } from "../../utils/excludeControls";
4
+
5
+ export default {
6
+ title: "Forms/NumberField",
7
+ component: NumberField,
8
+ argTypes: {
9
+ validationState: {
10
+ options: ["valid", "invalid", "neither"],
11
+ control: { type: "radio" },
12
+ mapping: {
13
+ valid: "valid",
14
+ invalid: "invalid",
15
+ neither: "",
16
+ },
17
+ },
18
+ minValue: {
19
+ control: {
20
+ control: { type: "range" },
21
+ min: 0,
22
+ max: 10,
23
+ step: 1,
24
+ },
25
+ },
26
+ maxValue: {
27
+ control: {
28
+ control: { type: "range" },
29
+ min: 0,
30
+ max: 10,
31
+ step: 1,
32
+ },
33
+ },
34
+ ...excludeControls("className", "value", "aria-describedby"),
35
+ },
36
+ args: {
37
+ minValue: 0,
38
+ maxValue: 100,
39
+ },
40
+ };
41
+
42
+ export const Normal: Meta<typeof NumberField> = {
43
+ render: (args: NumberFieldProps) => <NumberField {...args} />,
44
+ args: {
45
+ label: "Number field",
46
+ defaultValue: 0,
47
+ errorMessage: "",
48
+ step: 1,
49
+ isRequired: false,
50
+ },
51
+ };
52
+
53
+ export const Formatted: Meta<typeof NumberField> = {
54
+ render: (args: NumberFieldProps) => <NumberField {...args} />,
55
+ args: {
56
+ label: "Number field",
57
+ defaultValue: 0,
58
+ formatOptions: {
59
+ style: "percent",
60
+ },
61
+ errorMessage: "",
62
+ step: 1,
63
+ isRequired: false,
64
+ },
65
+ };
66
+
67
+ export const LimitedRange: Meta<typeof NumberField> = {
68
+ render: (args: NumberFieldProps) => <NumberField {...args} />,
69
+ args: {
70
+ label: "Number field",
71
+ minValue: -10,
72
+ maxValue: 10,
73
+ defaultValue: 0,
74
+ errorMessage: "",
75
+ step: 1,
76
+ isRequired: false,
77
+ },
78
+ };
79
+
80
+ export const Valid: Meta<typeof NumberField> = {
81
+ render: (args: NumberFieldProps) => <NumberField {...args} />,
82
+ args: {
83
+ label: "Number field",
84
+ validationState: "valid",
85
+ defaultValue: 0,
86
+ errorMessage: "",
87
+ step: 1,
88
+ isRequired: false,
89
+ },
90
+ };
91
+
92
+ export const Invalid: Meta<typeof NumberField> = {
93
+ render: (args: NumberFieldProps) => <NumberField {...args} />,
94
+ args: {
95
+ label: "Number field",
96
+ validationState: "invalid",
97
+ errorMessage: "Error message",
98
+ defaultValue: 0,
99
+ step: 1,
100
+ isRequired: false,
101
+ },
102
+ };
103
+
104
+ export const Disabled: Meta<typeof NumberField> = {
105
+ render: (args: NumberFieldProps) => <NumberField {...args} />,
106
+ args: {
107
+ label: "Number field",
108
+ isDisabled: true,
109
+ defaultValue: 0,
110
+ errorMessage: "",
111
+ step: 1,
112
+ isRequired: false,
113
+ },
114
+ };