@heymantle/litho 0.0.3 → 0.0.4

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 (353) hide show
  1. package/dist/cjs/components/ActionList.js +50 -16
  2. package/dist/cjs/components/AnnouncementBar.js +10 -3
  3. package/dist/cjs/components/AppProvider.js +10 -1
  4. package/dist/cjs/components/Autocomplete.js +33 -11
  5. package/dist/cjs/components/Badge.js +2 -1
  6. package/dist/cjs/components/Banner.js +35 -31
  7. package/dist/cjs/components/Box.js +5 -3
  8. package/dist/cjs/components/Button.js +34 -12
  9. package/dist/cjs/components/Card.js +5 -45
  10. package/dist/cjs/components/Checkbox.js +16 -6
  11. package/dist/cjs/components/ChoiceList.js +7 -4
  12. package/dist/cjs/components/ColorField.js +8 -3
  13. package/dist/cjs/components/DatePicker.js +13 -8
  14. package/dist/cjs/components/DropZone.js +33 -18
  15. package/dist/cjs/components/EmptyState.js +15 -7
  16. package/dist/cjs/components/Filters.js +32 -20
  17. package/dist/cjs/components/FooterHelp.js +7 -2
  18. package/dist/cjs/components/Form.js +18 -3
  19. package/dist/cjs/components/Frame.js +40 -15
  20. package/dist/cjs/components/FrameSaveBar.js +21 -12
  21. package/dist/cjs/components/Layout.js +3 -3
  22. package/dist/cjs/components/LayoutSection.js +2 -2
  23. package/dist/cjs/components/Link.js +6 -2
  24. package/dist/cjs/components/List.js +1 -0
  25. package/dist/cjs/components/Listbox.js +9 -4
  26. package/dist/cjs/components/Modal.js +26 -17
  27. package/dist/cjs/components/Navigation.js +30 -20
  28. package/dist/cjs/components/Page.js +8 -3
  29. package/dist/cjs/components/Pagination.js +11 -4
  30. package/dist/cjs/components/Pane.js +118 -35
  31. package/dist/cjs/components/Popover.js +59 -6
  32. package/dist/cjs/components/RangeSlider.js +11 -4
  33. package/dist/cjs/components/ResourceList.js +9 -3
  34. package/dist/cjs/components/Select.js +2 -0
  35. package/dist/cjs/components/Table.js +32 -19
  36. package/dist/cjs/components/Text.js +8 -5
  37. package/dist/cjs/components/TextField.js +23 -13
  38. package/dist/cjs/components/Thumbnail.js +7 -2
  39. package/dist/cjs/components/TimePicker.js +7 -2
  40. package/dist/cjs/components/Tip.js +10 -4
  41. package/dist/cjs/components/Tooltip.js +16 -8
  42. package/dist/cjs/components/TopBar.js +17 -9
  43. package/dist/cjs/dev/verify-publish.js +37 -4
  44. package/dist/cjs/postcss.config.js +21 -0
  45. package/dist/cjs/stories/ActionList.stories.js +365 -0
  46. package/dist/cjs/stories/AnnouncementBar.stories.js +244 -0
  47. package/dist/cjs/stories/Autocomplete.stories.js +871 -0
  48. package/dist/cjs/stories/Badge.stories.js +183 -0
  49. package/dist/cjs/stories/Banner.stories.js +201 -0
  50. package/dist/cjs/stories/Box.stories.js +599 -0
  51. package/dist/cjs/stories/Button.stories.js +325 -0
  52. package/dist/cjs/stories/ButtonGroup.stories.js +404 -0
  53. package/dist/cjs/stories/Card.stories.js +278 -0
  54. package/dist/cjs/stories/Checkbox.stories.js +266 -0
  55. package/dist/cjs/stories/ChoiceList.stories.js +884 -0
  56. package/dist/cjs/stories/Collapsible.stories.js +905 -0
  57. package/dist/cjs/stories/ColorField.stories.js +883 -0
  58. package/dist/cjs/stories/ContextualSaveBar.stories.js +970 -0
  59. package/dist/cjs/stories/DatePicker.stories.js +584 -0
  60. package/dist/cjs/stories/Divider.stories.js +759 -0
  61. package/dist/cjs/stories/DropZone.stories.js +1205 -0
  62. package/dist/cjs/stories/EmptyState.stories.js +296 -0
  63. package/dist/cjs/stories/Filters.stories.js +1353 -0
  64. package/dist/cjs/stories/FooterHelp.stories.js +869 -0
  65. package/dist/cjs/stories/Form.stories.js +940 -0
  66. package/dist/cjs/stories/Grid.stories.js +1199 -0
  67. package/dist/cjs/stories/HorizontalStack.stories.js +1064 -0
  68. package/dist/cjs/stories/Icon.stories.js +596 -0
  69. package/dist/cjs/stories/Image.stories.js +883 -0
  70. package/dist/cjs/stories/InlineError.stories.js +710 -0
  71. package/dist/cjs/stories/Label.stories.js +665 -0
  72. package/dist/cjs/stories/Layout.stories.js +685 -0
  73. package/dist/cjs/stories/LayoutSection.stories.js +1267 -0
  74. package/dist/cjs/stories/Link.stories.js +423 -0
  75. package/dist/cjs/stories/List.stories.js +1031 -0
  76. package/dist/cjs/stories/Listbox.stories.js +820 -0
  77. package/dist/cjs/stories/Loading.stories.js +900 -0
  78. package/dist/cjs/stories/Modal.stories.js +363 -0
  79. package/dist/cjs/stories/Navigation.stories.js +605 -0
  80. package/dist/cjs/stories/Page.stories.js +318 -0
  81. package/dist/cjs/stories/Pagination.stories.js +438 -0
  82. package/dist/cjs/stories/Pane.stories.js +1535 -0
  83. package/dist/cjs/stories/Popover.stories.js +637 -0
  84. package/dist/cjs/stories/PopoverManager.stories.js +1225 -0
  85. package/dist/cjs/stories/ProgressBar.stories.js +506 -0
  86. package/dist/cjs/stories/RadioButton.stories.js +642 -0
  87. package/dist/cjs/stories/RadioButtonCard.stories.js +816 -0
  88. package/dist/cjs/stories/RangeSlider.stories.js +892 -0
  89. package/dist/cjs/stories/ResourceList.stories.js +1067 -0
  90. package/dist/cjs/stories/Select.stories.js +413 -0
  91. package/dist/cjs/stories/SkeletonText.stories.js +776 -0
  92. package/dist/cjs/stories/Spinner.stories.js +396 -0
  93. package/dist/cjs/stories/Table.stories.js +628 -0
  94. package/dist/cjs/stories/Tabs.stories.js +723 -0
  95. package/dist/cjs/stories/Tag.stories.js +620 -0
  96. package/dist/cjs/stories/Text.stories.js +262 -0
  97. package/dist/cjs/stories/TextField.stories.js +377 -0
  98. package/dist/cjs/stories/Thumbnail.stories.js +859 -0
  99. package/dist/cjs/stories/TimePicker.stories.js +966 -0
  100. package/dist/cjs/stories/Tip.stories.js +753 -0
  101. package/dist/cjs/stories/Tooltip.stories.js +357 -0
  102. package/dist/cjs/stories/TopBar.stories.js +155 -0
  103. package/dist/cjs/stories/VerticalStack.stories.js +1287 -0
  104. package/dist/cjs/tailwind.config.js +17 -0
  105. package/dist/cjs/utilities/transformers.js +66 -0
  106. package/dist/cjs/vite.config.js +35 -0
  107. package/dist/esm/components/ActionList.js +41 -12
  108. package/dist/esm/components/AnnouncementBar.js +3 -1
  109. package/dist/esm/components/AppProvider.js +10 -1
  110. package/dist/esm/components/Autocomplete.js +21 -4
  111. package/dist/esm/components/Badge.js +2 -2
  112. package/dist/esm/components/Banner.js +20 -21
  113. package/dist/esm/components/Box.js +5 -4
  114. package/dist/esm/components/Button.js +24 -7
  115. package/dist/esm/components/Card.js +5 -4
  116. package/dist/esm/components/Checkbox.js +6 -1
  117. package/dist/esm/components/ChoiceList.js +7 -4
  118. package/dist/esm/components/ColorField.js +1 -1
  119. package/dist/esm/components/DatePicker.js +6 -1
  120. package/dist/esm/components/DropZone.js +14 -4
  121. package/dist/esm/components/EmptyState.js +4 -1
  122. package/dist/esm/components/Filters.js +10 -3
  123. package/dist/esm/components/FooterHelp.js +1 -1
  124. package/dist/esm/components/Form.js +18 -3
  125. package/dist/esm/components/Frame.js +18 -6
  126. package/dist/esm/components/FrameSaveBar.js +10 -6
  127. package/dist/esm/components/InlineError.js +1 -1
  128. package/dist/esm/components/Layout.js +4 -4
  129. package/dist/esm/components/LayoutSection.js +2 -2
  130. package/dist/esm/components/Link.js +6 -2
  131. package/dist/esm/components/List.js +1 -0
  132. package/dist/esm/components/Listbox.js +4 -4
  133. package/dist/esm/components/Modal.js +8 -4
  134. package/dist/esm/components/Navigation.js +16 -11
  135. package/dist/esm/components/Page.js +9 -4
  136. package/dist/esm/components/Pagination.js +3 -1
  137. package/dist/esm/components/Pane.js +114 -36
  138. package/dist/esm/components/Popover.js +18 -6
  139. package/dist/esm/components/RangeSlider.js +3 -1
  140. package/dist/esm/components/ResourceList.js +2 -1
  141. package/dist/esm/components/Select.js +2 -0
  142. package/dist/esm/components/Table.js +16 -3
  143. package/dist/esm/components/Text.js +8 -6
  144. package/dist/esm/components/TextField.js +6 -1
  145. package/dist/esm/components/Thumbnail.js +1 -1
  146. package/dist/esm/components/TimePicker.js +1 -1
  147. package/dist/esm/components/Tip.js +3 -2
  148. package/dist/esm/components/Tooltip.js +4 -1
  149. package/dist/esm/components/TopBar.js +7 -4
  150. package/dist/esm/dev/verify-publish.js +37 -4
  151. package/dist/esm/postcss.config.js +6 -0
  152. package/dist/esm/stories/ActionList.stories.js +327 -0
  153. package/dist/esm/stories/AnnouncementBar.stories.js +212 -0
  154. package/dist/esm/stories/Autocomplete.stories.js +833 -0
  155. package/dist/esm/stories/Badge.stories.js +138 -0
  156. package/dist/esm/stories/Banner.stories.js +159 -0
  157. package/dist/esm/stories/Box.stories.js +558 -0
  158. package/dist/esm/stories/Button.stories.js +277 -0
  159. package/dist/esm/stories/ButtonGroup.stories.js +357 -0
  160. package/dist/esm/stories/Card.stories.js +240 -0
  161. package/dist/esm/stories/Checkbox.stories.js +219 -0
  162. package/dist/esm/stories/ChoiceList.stories.js +834 -0
  163. package/dist/esm/stories/Collapsible.stories.js +867 -0
  164. package/dist/esm/stories/ColorField.stories.js +842 -0
  165. package/dist/esm/stories/ContextualSaveBar.stories.js +938 -0
  166. package/dist/esm/stories/DatePicker.stories.js +537 -0
  167. package/dist/esm/stories/Divider.stories.js +715 -0
  168. package/dist/esm/stories/DropZone.stories.js +1161 -0
  169. package/dist/esm/stories/EmptyState.stories.js +246 -0
  170. package/dist/esm/stories/Filters.stories.js +1315 -0
  171. package/dist/esm/stories/FooterHelp.stories.js +813 -0
  172. package/dist/esm/stories/Form.stories.js +905 -0
  173. package/dist/esm/stories/Grid.stories.js +1152 -0
  174. package/dist/esm/stories/HorizontalStack.stories.js +1011 -0
  175. package/dist/esm/stories/Icon.stories.js +555 -0
  176. package/dist/esm/stories/Image.stories.js +836 -0
  177. package/dist/esm/stories/InlineError.stories.js +666 -0
  178. package/dist/esm/stories/Label.stories.js +612 -0
  179. package/dist/esm/stories/Layout.stories.js +647 -0
  180. package/dist/esm/stories/LayoutSection.stories.js +1226 -0
  181. package/dist/esm/stories/Link.stories.js +379 -0
  182. package/dist/esm/stories/List.stories.js +975 -0
  183. package/dist/esm/stories/Listbox.stories.js +776 -0
  184. package/dist/esm/stories/Loading.stories.js +850 -0
  185. package/dist/esm/stories/Modal.stories.js +322 -0
  186. package/dist/esm/stories/Navigation.stories.js +567 -0
  187. package/dist/esm/stories/Page.stories.js +276 -0
  188. package/dist/esm/stories/Pagination.stories.js +394 -0
  189. package/dist/esm/stories/Pane.stories.js +1497 -0
  190. package/dist/esm/stories/Popover.stories.js +605 -0
  191. package/dist/esm/stories/PopoverManager.stories.js +1193 -0
  192. package/dist/esm/stories/ProgressBar.stories.js +465 -0
  193. package/dist/esm/stories/RadioButton.stories.js +598 -0
  194. package/dist/esm/stories/RadioButtonCard.stories.js +772 -0
  195. package/dist/esm/stories/RangeSlider.stories.js +845 -0
  196. package/dist/esm/stories/ResourceList.stories.js +1029 -0
  197. package/dist/esm/stories/Select.stories.js +363 -0
  198. package/dist/esm/stories/SkeletonText.stories.js +717 -0
  199. package/dist/esm/stories/Spinner.stories.js +355 -0
  200. package/dist/esm/stories/Table.stories.js +584 -0
  201. package/dist/esm/stories/Tabs.stories.js +685 -0
  202. package/dist/esm/stories/Tag.stories.js +573 -0
  203. package/dist/esm/stories/Text.stories.js +217 -0
  204. package/dist/esm/stories/TextField.stories.js +332 -0
  205. package/dist/esm/stories/Thumbnail.stories.js +806 -0
  206. package/dist/esm/stories/TimePicker.stories.js +910 -0
  207. package/dist/esm/stories/Tip.stories.js +706 -0
  208. package/dist/esm/stories/Tooltip.stories.js +313 -0
  209. package/dist/esm/stories/TopBar.stories.js +114 -0
  210. package/dist/esm/stories/VerticalStack.stories.js +1240 -0
  211. package/dist/esm/tailwind.config.js +7 -0
  212. package/dist/esm/utilities/transformers.js +47 -0
  213. package/dist/esm/vite.config.js +20 -0
  214. package/dist/types/components/ActionList.d.ts +122 -0
  215. package/dist/types/components/ActionList.d.ts.map +1 -0
  216. package/dist/types/components/AnnouncementBar.d.ts +21 -0
  217. package/dist/types/components/AnnouncementBar.d.ts.map +1 -0
  218. package/dist/types/components/AppProvider.d.ts +61 -0
  219. package/dist/types/components/AppProvider.d.ts.map +1 -0
  220. package/dist/types/components/Autocomplete.d.ts +130 -0
  221. package/dist/types/components/Autocomplete.d.ts.map +1 -0
  222. package/dist/types/components/Badge.d.ts +21 -0
  223. package/dist/types/components/Badge.d.ts.map +1 -0
  224. package/dist/types/components/Banner.d.ts +78 -0
  225. package/dist/types/components/Banner.d.ts.map +1 -0
  226. package/dist/types/components/Box.d.ts +70 -0
  227. package/dist/types/components/Box.d.ts.map +1 -0
  228. package/dist/types/components/Button.d.ts +123 -0
  229. package/dist/types/components/Button.d.ts.map +1 -0
  230. package/dist/types/components/ButtonGroup.d.ts +26 -0
  231. package/dist/types/components/ButtonGroup.d.ts.map +1 -0
  232. package/dist/types/components/Card.d.ts +139 -0
  233. package/dist/types/components/Card.d.ts.map +1 -0
  234. package/dist/types/components/Checkbox.d.ts +56 -0
  235. package/dist/types/components/Checkbox.d.ts.map +1 -0
  236. package/dist/types/components/ChoiceList.d.ts +69 -0
  237. package/dist/types/components/ChoiceList.d.ts.map +1 -0
  238. package/dist/types/components/Collapsible.d.ts +17 -0
  239. package/dist/types/components/Collapsible.d.ts.map +1 -0
  240. package/dist/types/components/ColorField.d.ts +36 -0
  241. package/dist/types/components/ColorField.d.ts.map +1 -0
  242. package/dist/types/components/ContextualSaveBar.d.ts +22 -0
  243. package/dist/types/components/ContextualSaveBar.d.ts.map +1 -0
  244. package/dist/types/components/DatePicker.d.ts +66 -0
  245. package/dist/types/components/DatePicker.d.ts.map +1 -0
  246. package/dist/types/components/Divider.d.ts +21 -0
  247. package/dist/types/components/Divider.d.ts.map +1 -0
  248. package/dist/types/components/DropZone.d.ts +108 -0
  249. package/dist/types/components/DropZone.d.ts.map +1 -0
  250. package/dist/types/components/EmptyState.d.ts +52 -0
  251. package/dist/types/components/EmptyState.d.ts.map +1 -0
  252. package/dist/types/components/Filters.d.ts +166 -0
  253. package/dist/types/components/Filters.d.ts.map +1 -0
  254. package/dist/types/components/FooterHelp.d.ts +21 -0
  255. package/dist/types/components/FooterHelp.d.ts.map +1 -0
  256. package/dist/types/components/Form.d.ts +39 -0
  257. package/dist/types/components/Form.d.ts.map +1 -0
  258. package/dist/types/components/Frame.d.ts +51 -0
  259. package/dist/types/components/Frame.d.ts.map +1 -0
  260. package/dist/types/components/FrameSaveBar.d.ts +8 -0
  261. package/dist/types/components/FrameSaveBar.d.ts.map +1 -0
  262. package/dist/types/components/Grid.d.ts +39 -0
  263. package/dist/types/components/Grid.d.ts.map +1 -0
  264. package/dist/types/components/HorizontalStack.d.ts +36 -0
  265. package/dist/types/components/HorizontalStack.d.ts.map +1 -0
  266. package/dist/types/components/Icon.d.ts +43 -0
  267. package/dist/types/components/Icon.d.ts.map +1 -0
  268. package/dist/types/components/Image.d.ts +45 -0
  269. package/dist/types/components/Image.d.ts.map +1 -0
  270. package/dist/types/components/InlineError.d.ts +22 -0
  271. package/dist/types/components/InlineError.d.ts.map +1 -0
  272. package/dist/types/components/Label.d.ts +28 -0
  273. package/dist/types/components/Label.d.ts.map +1 -0
  274. package/dist/types/components/Layout.d.ts +44 -0
  275. package/dist/types/components/Layout.d.ts.map +1 -0
  276. package/dist/types/components/LayoutSection.d.ts +24 -0
  277. package/dist/types/components/LayoutSection.d.ts.map +1 -0
  278. package/dist/types/components/Link.d.ts +38 -0
  279. package/dist/types/components/Link.d.ts.map +1 -0
  280. package/dist/types/components/List.d.ts +33 -0
  281. package/dist/types/components/List.d.ts.map +1 -0
  282. package/dist/types/components/Listbox.d.ts +34 -0
  283. package/dist/types/components/Listbox.d.ts.map +1 -0
  284. package/dist/types/components/Loading.d.ts +13 -0
  285. package/dist/types/components/Loading.d.ts.map +1 -0
  286. package/dist/types/components/Modal.d.ts +75 -0
  287. package/dist/types/components/Modal.d.ts.map +1 -0
  288. package/dist/types/components/Navigation.d.ts +105 -0
  289. package/dist/types/components/Navigation.d.ts.map +1 -0
  290. package/dist/types/components/Page.d.ts +59 -0
  291. package/dist/types/components/Page.d.ts.map +1 -0
  292. package/dist/types/components/Pagination.d.ts +39 -0
  293. package/dist/types/components/Pagination.d.ts.map +1 -0
  294. package/dist/types/components/Pane.d.ts +11 -0
  295. package/dist/types/components/Pane.d.ts.map +1 -0
  296. package/dist/types/components/Popover.d.ts +56 -0
  297. package/dist/types/components/Popover.d.ts.map +1 -0
  298. package/dist/types/components/PopoverManager.d.ts +3 -0
  299. package/dist/types/components/PopoverManager.d.ts.map +1 -0
  300. package/dist/types/components/ProgressBar.d.ts +24 -0
  301. package/dist/types/components/ProgressBar.d.ts.map +1 -0
  302. package/dist/types/components/RadioButton.d.ts +39 -0
  303. package/dist/types/components/RadioButton.d.ts.map +1 -0
  304. package/dist/types/components/RadioButtonCard.d.ts +41 -0
  305. package/dist/types/components/RadioButtonCard.d.ts.map +1 -0
  306. package/dist/types/components/RangeSlider.d.ts +44 -0
  307. package/dist/types/components/RangeSlider.d.ts.map +1 -0
  308. package/dist/types/components/ResourceList.d.ts +54 -0
  309. package/dist/types/components/ResourceList.d.ts.map +1 -0
  310. package/dist/types/components/Select.d.ts +48 -0
  311. package/dist/types/components/Select.d.ts.map +1 -0
  312. package/dist/types/components/SkeletonText.d.ts +28 -0
  313. package/dist/types/components/SkeletonText.d.ts.map +1 -0
  314. package/dist/types/components/Spinner.d.ts +18 -0
  315. package/dist/types/components/Spinner.d.ts.map +1 -0
  316. package/dist/types/components/Table.d.ts +197 -0
  317. package/dist/types/components/Table.d.ts.map +1 -0
  318. package/dist/types/components/Tabs.d.ts +41 -0
  319. package/dist/types/components/Tabs.d.ts.map +1 -0
  320. package/dist/types/components/Tag.d.ts +26 -0
  321. package/dist/types/components/Tag.d.ts.map +1 -0
  322. package/dist/types/components/Text.d.ts +32 -0
  323. package/dist/types/components/Text.d.ts.map +1 -0
  324. package/dist/types/components/TextField.d.ts +109 -0
  325. package/dist/types/components/TextField.d.ts.map +1 -0
  326. package/dist/types/components/Thumbnail.d.ts +18 -0
  327. package/dist/types/components/Thumbnail.d.ts.map +1 -0
  328. package/dist/types/components/TimePicker.d.ts +3 -0
  329. package/dist/types/components/TimePicker.d.ts.map +1 -0
  330. package/dist/types/components/Tip.d.ts +23 -0
  331. package/dist/types/components/Tip.d.ts.map +1 -0
  332. package/dist/types/components/Tooltip.d.ts +84 -0
  333. package/dist/types/components/Tooltip.d.ts.map +1 -0
  334. package/dist/types/components/TopBar.d.ts +43 -0
  335. package/dist/types/components/TopBar.d.ts.map +1 -0
  336. package/dist/types/components/VerticalStack.d.ts +27 -0
  337. package/dist/types/components/VerticalStack.d.ts.map +1 -0
  338. package/dist/types/index.d.ts +62 -0
  339. package/dist/types/index.d.ts.map +1 -0
  340. package/dist/types/styles/Table.d.ts +1570 -0
  341. package/dist/types/styles/Table.d.ts.map +1 -0
  342. package/dist/types/utilities/dates.d.ts +46 -0
  343. package/dist/types/utilities/dates.d.ts.map +1 -0
  344. package/dist/types/utilities/transformers.d.ts +4 -0
  345. package/dist/types/utilities/transformers.d.ts.map +1 -0
  346. package/dist/types/utilities/useIndexResourceState.d.ts +21 -0
  347. package/dist/types/utilities/useIndexResourceState.d.ts.map +1 -0
  348. package/dist/types/utilities/useMounted.d.ts +2 -0
  349. package/dist/types/utilities/useMounted.d.ts.map +1 -0
  350. package/dist/types/utilities/useTableScrollState.d.ts +29 -0
  351. package/dist/types/utilities/useTableScrollState.d.ts.map +1 -0
  352. package/index.css +6 -0
  353. package/package.json +37 -6
@@ -0,0 +1,905 @@
1
+ function _array_like_to_array(arr, len) {
2
+ if (len == null || len > arr.length) len = arr.length;
3
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
+ return arr2;
5
+ }
6
+ function _array_with_holes(arr) {
7
+ if (Array.isArray(arr)) return arr;
8
+ }
9
+ function _define_property(obj, key, value) {
10
+ if (key in obj) {
11
+ Object.defineProperty(obj, key, {
12
+ value: value,
13
+ enumerable: true,
14
+ configurable: true,
15
+ writable: true
16
+ });
17
+ } else {
18
+ obj[key] = value;
19
+ }
20
+ return obj;
21
+ }
22
+ function _iterable_to_array_limit(arr, i) {
23
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
24
+ if (_i == null) return;
25
+ var _arr = [];
26
+ var _n = true;
27
+ var _d = false;
28
+ var _s, _e;
29
+ try {
30
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
31
+ _arr.push(_s.value);
32
+ if (i && _arr.length === i) break;
33
+ }
34
+ } catch (err) {
35
+ _d = true;
36
+ _e = err;
37
+ } finally{
38
+ try {
39
+ if (!_n && _i["return"] != null) _i["return"]();
40
+ } finally{
41
+ if (_d) throw _e;
42
+ }
43
+ }
44
+ return _arr;
45
+ }
46
+ function _non_iterable_rest() {
47
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
48
+ }
49
+ function _object_spread(target) {
50
+ for(var i = 1; i < arguments.length; i++){
51
+ var source = arguments[i] != null ? arguments[i] : {};
52
+ var ownKeys = Object.keys(source);
53
+ if (typeof Object.getOwnPropertySymbols === "function") {
54
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
55
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
56
+ }));
57
+ }
58
+ ownKeys.forEach(function(key) {
59
+ _define_property(target, key, source[key]);
60
+ });
61
+ }
62
+ return target;
63
+ }
64
+ function ownKeys(object, enumerableOnly) {
65
+ var keys = Object.keys(object);
66
+ if (Object.getOwnPropertySymbols) {
67
+ var symbols = Object.getOwnPropertySymbols(object);
68
+ if (enumerableOnly) {
69
+ symbols = symbols.filter(function(sym) {
70
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
71
+ });
72
+ }
73
+ keys.push.apply(keys, symbols);
74
+ }
75
+ return keys;
76
+ }
77
+ function _object_spread_props(target, source) {
78
+ source = source != null ? source : {};
79
+ if (Object.getOwnPropertyDescriptors) {
80
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
81
+ } else {
82
+ ownKeys(Object(source)).forEach(function(key) {
83
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
84
+ });
85
+ }
86
+ return target;
87
+ }
88
+ function _sliced_to_array(arr, i) {
89
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
90
+ }
91
+ function _unsupported_iterable_to_array(o, minLen) {
92
+ if (!o) return;
93
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
94
+ var n = Object.prototype.toString.call(o).slice(8, -1);
95
+ if (n === "Object" && o.constructor) n = o.constructor.name;
96
+ if (n === "Map" || n === "Set") return Array.from(n);
97
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
98
+ }
99
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
100
+ import { useState } from "react";
101
+ import Form from "../components/Form.js";
102
+ import TextField from "../components/TextField.js";
103
+ import Button from "../components/Button.js";
104
+ import Card from "../components/Card.js";
105
+ import Text from "../components/Text.js";
106
+ import Checkbox from "../components/Checkbox.js";
107
+ import Select from "../components/Select.js";
108
+ import RadioButton from "../components/RadioButton.js";
109
+ import Box from "../components/Box.js";
110
+ import VerticalStack from "../components/VerticalStack.js";
111
+ import HorizontalStack from "../components/HorizontalStack.js";
112
+ import { transformStorySource } from "../utilities/transformers.js";
113
+ export default {
114
+ title: 'Litho/Form',
115
+ component: Form,
116
+ parameters: {
117
+ layout: 'padded',
118
+ docs: {
119
+ description: {
120
+ component: "A Form component that provides semantic structure and behavior for collecting user input. Forms handle submission, validation, and provide accessible markup for form controls."
121
+ }
122
+ }
123
+ },
124
+ args: {
125
+ onSubmit: function(event) {
126
+ event.preventDefault();
127
+ console.log('Form submitted');
128
+ }
129
+ },
130
+ tags: [
131
+ 'autodocs'
132
+ ],
133
+ argTypes: {
134
+ onSubmit: {
135
+ action: 'submitted',
136
+ description: 'Callback when form is submitted'
137
+ },
138
+ acceptCharset: {
139
+ control: 'text',
140
+ description: 'Character encodings that the server accepts'
141
+ },
142
+ action: {
143
+ control: 'text',
144
+ description: 'URL to submit form data to'
145
+ },
146
+ autoComplete: {
147
+ control: 'select',
148
+ options: [
149
+ 'on',
150
+ 'off'
151
+ ],
152
+ description: 'Whether form should have autocomplete enabled'
153
+ },
154
+ encType: {
155
+ control: 'select',
156
+ options: [
157
+ 'application/x-www-form-urlencoded',
158
+ 'multipart/form-data',
159
+ 'text/plain'
160
+ ],
161
+ description: 'Encoding type for form data'
162
+ },
163
+ method: {
164
+ control: 'select',
165
+ options: [
166
+ 'get',
167
+ 'post'
168
+ ],
169
+ description: 'HTTP method for form submission'
170
+ },
171
+ name: {
172
+ control: 'text',
173
+ description: 'Name of the form'
174
+ },
175
+ noValidate: {
176
+ control: 'boolean',
177
+ description: 'Whether to disable browser validation'
178
+ },
179
+ target: {
180
+ control: 'select',
181
+ options: [
182
+ '_self',
183
+ '_blank',
184
+ '_parent',
185
+ '_top'
186
+ ],
187
+ description: 'Where to display form response'
188
+ }
189
+ }
190
+ };
191
+ export var Default = {
192
+ render: function(args) {
193
+ return /*#__PURE__*/ _jsx(Form, _object_spread_props(_object_spread({}, args), {
194
+ children: /*#__PURE__*/ _jsxs(VerticalStack, {
195
+ gap: "4",
196
+ children: [
197
+ /*#__PURE__*/ _jsx(TextField, {
198
+ label: "Name",
199
+ placeholder: "Enter your name"
200
+ }),
201
+ /*#__PURE__*/ _jsx(TextField, {
202
+ label: "Email",
203
+ type: "email",
204
+ placeholder: "Enter your email"
205
+ }),
206
+ /*#__PURE__*/ _jsx(Button, {
207
+ primary: true,
208
+ submit: true,
209
+ children: "Submit"
210
+ })
211
+ ]
212
+ })
213
+ }));
214
+ },
215
+ parameters: {
216
+ docs: {
217
+ source: {
218
+ transform: transformStorySource
219
+ }
220
+ }
221
+ }
222
+ };
223
+ export var LoginForm = {
224
+ render: function() {
225
+ var _useState = _sliced_to_array(useState(''), 2), email = _useState[0], setEmail = _useState[1];
226
+ var _useState1 = _sliced_to_array(useState(''), 2), password = _useState1[0], setPassword = _useState1[1];
227
+ var _useState2 = _sliced_to_array(useState(false), 2), rememberMe = _useState2[0], setRememberMe = _useState2[1];
228
+ var handleSubmit = function(event) {
229
+ event.preventDefault();
230
+ console.log('Login submitted:', {
231
+ email: email,
232
+ password: password,
233
+ rememberMe: rememberMe
234
+ });
235
+ };
236
+ return /*#__PURE__*/ _jsx(Card, {
237
+ title: "Sign In",
238
+ padded: true,
239
+ children: /*#__PURE__*/ _jsx(Form, {
240
+ onSubmit: handleSubmit,
241
+ children: /*#__PURE__*/ _jsxs(VerticalStack, {
242
+ gap: "6",
243
+ children: [
244
+ /*#__PURE__*/ _jsx(TextField, {
245
+ label: "Email",
246
+ type: "email",
247
+ value: email,
248
+ onChange: setEmail,
249
+ placeholder: "Enter your email",
250
+ autoComplete: "email",
251
+ required: true
252
+ }),
253
+ /*#__PURE__*/ _jsx(TextField, {
254
+ label: "Password",
255
+ type: "password",
256
+ value: password,
257
+ onChange: setPassword,
258
+ placeholder: "Enter your password",
259
+ autoComplete: "current-password",
260
+ required: true
261
+ }),
262
+ /*#__PURE__*/ _jsx(Checkbox, {
263
+ label: "Remember me",
264
+ checked: rememberMe,
265
+ onChange: setRememberMe
266
+ }),
267
+ /*#__PURE__*/ _jsxs(HorizontalStack, {
268
+ gap: "2",
269
+ children: [
270
+ /*#__PURE__*/ _jsx(Button, {
271
+ primary: true,
272
+ submit: true,
273
+ children: "Sign In"
274
+ }),
275
+ /*#__PURE__*/ _jsx(Button, {
276
+ children: "Forgot Password?"
277
+ })
278
+ ]
279
+ })
280
+ ]
281
+ })
282
+ })
283
+ });
284
+ },
285
+ parameters: {
286
+ docs: {
287
+ description: {
288
+ story: 'A complete login form with email, password, and remember me option.'
289
+ },
290
+ source: {
291
+ transform: transformStorySource
292
+ }
293
+ }
294
+ }
295
+ };
296
+ export var ContactForm = {
297
+ render: function() {
298
+ var _useState = _sliced_to_array(useState({
299
+ name: '',
300
+ email: '',
301
+ subject: '',
302
+ message: '',
303
+ priority: 'medium',
304
+ subscribe: false
305
+ }), 2), formData = _useState[0], setFormData = _useState[1];
306
+ var handleSubmit = function(event) {
307
+ event.preventDefault();
308
+ console.log('Contact form submitted:', formData);
309
+ };
310
+ var updateField = function(field, value) {
311
+ setFormData(function(prev) {
312
+ return _object_spread_props(_object_spread({}, prev), _define_property({}, field, value));
313
+ });
314
+ };
315
+ return /*#__PURE__*/ _jsx(Card, {
316
+ title: "Contact Us",
317
+ padded: true,
318
+ children: /*#__PURE__*/ _jsx(Form, {
319
+ onSubmit: handleSubmit,
320
+ children: /*#__PURE__*/ _jsxs(VerticalStack, {
321
+ gap: "6",
322
+ children: [
323
+ /*#__PURE__*/ _jsxs(HorizontalStack, {
324
+ gap: "4",
325
+ children: [
326
+ /*#__PURE__*/ _jsx(TextField, {
327
+ label: "Name",
328
+ value: formData.name,
329
+ onChange: function(value) {
330
+ return updateField('name', value);
331
+ },
332
+ placeholder: "Your full name",
333
+ required: true
334
+ }),
335
+ /*#__PURE__*/ _jsx(TextField, {
336
+ label: "Email",
337
+ type: "email",
338
+ value: formData.email,
339
+ onChange: function(value) {
340
+ return updateField('email', value);
341
+ },
342
+ placeholder: "your@email.com",
343
+ required: true
344
+ })
345
+ ]
346
+ }),
347
+ /*#__PURE__*/ _jsx(Select, {
348
+ label: "Subject",
349
+ options: [
350
+ {
351
+ label: 'General Inquiry',
352
+ value: 'general'
353
+ },
354
+ {
355
+ label: 'Technical Support',
356
+ value: 'support'
357
+ },
358
+ {
359
+ label: 'Sales Question',
360
+ value: 'sales'
361
+ },
362
+ {
363
+ label: 'Feature Request',
364
+ value: 'feature'
365
+ },
366
+ {
367
+ label: 'Bug Report',
368
+ value: 'bug'
369
+ }
370
+ ],
371
+ value: formData.subject,
372
+ onChange: function(value) {
373
+ return updateField('subject', value);
374
+ },
375
+ placeholder: "Select a subject"
376
+ }),
377
+ /*#__PURE__*/ _jsxs(VerticalStack, {
378
+ gap: "3",
379
+ children: [
380
+ /*#__PURE__*/ _jsx(Text, {
381
+ variant: "headingSm",
382
+ children: "Priority"
383
+ }),
384
+ /*#__PURE__*/ _jsxs(HorizontalStack, {
385
+ gap: "6",
386
+ children: [
387
+ /*#__PURE__*/ _jsx(RadioButton, {
388
+ label: "Low",
389
+ name: "priority",
390
+ value: "low",
391
+ checked: formData.priority === 'low',
392
+ onChange: function(checked) {
393
+ return checked && updateField('priority', 'low');
394
+ }
395
+ }),
396
+ /*#__PURE__*/ _jsx(RadioButton, {
397
+ label: "Medium",
398
+ name: "priority",
399
+ value: "medium",
400
+ checked: formData.priority === 'medium',
401
+ onChange: function(checked) {
402
+ return checked && updateField('priority', 'medium');
403
+ }
404
+ }),
405
+ /*#__PURE__*/ _jsx(RadioButton, {
406
+ label: "High",
407
+ name: "priority",
408
+ value: "high",
409
+ checked: formData.priority === 'high',
410
+ onChange: function(checked) {
411
+ return checked && updateField('priority', 'high');
412
+ }
413
+ })
414
+ ]
415
+ })
416
+ ]
417
+ }),
418
+ /*#__PURE__*/ _jsx(TextField, {
419
+ label: "Message",
420
+ multiline: 4,
421
+ value: formData.message,
422
+ onChange: function(value) {
423
+ return updateField('message', value);
424
+ },
425
+ placeholder: "Tell us how we can help...",
426
+ required: true
427
+ }),
428
+ /*#__PURE__*/ _jsx(Checkbox, {
429
+ label: "Subscribe to our newsletter",
430
+ checked: formData.subscribe,
431
+ onChange: function(checked) {
432
+ return updateField('subscribe', checked);
433
+ }
434
+ }),
435
+ /*#__PURE__*/ _jsxs(HorizontalStack, {
436
+ gap: "2",
437
+ children: [
438
+ /*#__PURE__*/ _jsx(Button, {
439
+ primary: true,
440
+ submit: true,
441
+ children: "Send Message"
442
+ }),
443
+ /*#__PURE__*/ _jsx(Button, {
444
+ onClick: function() {
445
+ return setFormData({
446
+ name: '',
447
+ email: '',
448
+ subject: '',
449
+ message: '',
450
+ priority: 'medium',
451
+ subscribe: false
452
+ });
453
+ },
454
+ children: "Clear Form"
455
+ })
456
+ ]
457
+ })
458
+ ]
459
+ })
460
+ })
461
+ });
462
+ },
463
+ parameters: {
464
+ docs: {
465
+ description: {
466
+ story: 'A comprehensive contact form with various input types and validation.'
467
+ },
468
+ source: {
469
+ transform: transformStorySource
470
+ }
471
+ }
472
+ }
473
+ };
474
+ export var ValidationExample = {
475
+ render: function() {
476
+ var _useState = _sliced_to_array(useState({
477
+ username: '',
478
+ email: '',
479
+ password: '',
480
+ confirmPassword: ''
481
+ }), 2), formData = _useState[0], setFormData = _useState[1];
482
+ var _useState1 = _sliced_to_array(useState({}), 2), errors = _useState1[0], setErrors = _useState1[1];
483
+ var validateForm = function() {
484
+ var newErrors = {};
485
+ if (!formData.username) {
486
+ newErrors.username = 'Username is required';
487
+ } else if (formData.username.length < 3) {
488
+ newErrors.username = 'Username must be at least 3 characters';
489
+ }
490
+ if (!formData.email) {
491
+ newErrors.email = 'Email is required';
492
+ } else if (!/\S+@\S+\.\S+/.test(formData.email)) {
493
+ newErrors.email = 'Please enter a valid email';
494
+ }
495
+ if (!formData.password) {
496
+ newErrors.password = 'Password is required';
497
+ } else if (formData.password.length < 6) {
498
+ newErrors.password = 'Password must be at least 6 characters';
499
+ }
500
+ if (formData.password !== formData.confirmPassword) {
501
+ newErrors.confirmPassword = 'Passwords do not match';
502
+ }
503
+ return newErrors;
504
+ };
505
+ var handleSubmit = function(event) {
506
+ event.preventDefault();
507
+ var validationErrors = validateForm();
508
+ setErrors(validationErrors);
509
+ if (Object.keys(validationErrors).length === 0) {
510
+ console.log('Registration successful:', formData);
511
+ }
512
+ };
513
+ var updateField = function(field, value) {
514
+ setFormData(function(prev) {
515
+ return _object_spread_props(_object_spread({}, prev), _define_property({}, field, value));
516
+ });
517
+ if (errors[field]) {
518
+ setErrors(function(prev) {
519
+ return _object_spread_props(_object_spread({}, prev), _define_property({}, field, ''));
520
+ });
521
+ }
522
+ };
523
+ return /*#__PURE__*/ _jsx(Card, {
524
+ title: "Create Account",
525
+ padded: true,
526
+ children: /*#__PURE__*/ _jsx(Form, {
527
+ onSubmit: handleSubmit,
528
+ noValidate: true,
529
+ children: /*#__PURE__*/ _jsxs(VerticalStack, {
530
+ gap: "6",
531
+ children: [
532
+ /*#__PURE__*/ _jsx(TextField, {
533
+ label: "Username",
534
+ value: formData.username,
535
+ onChange: function(value) {
536
+ return updateField('username', value);
537
+ },
538
+ error: errors.username,
539
+ placeholder: "Choose a username",
540
+ autoComplete: "username"
541
+ }),
542
+ /*#__PURE__*/ _jsx(TextField, {
543
+ label: "Email",
544
+ type: "email",
545
+ value: formData.email,
546
+ onChange: function(value) {
547
+ return updateField('email', value);
548
+ },
549
+ error: errors.email,
550
+ placeholder: "Enter your email",
551
+ autoComplete: "email"
552
+ }),
553
+ /*#__PURE__*/ _jsx(TextField, {
554
+ label: "Password",
555
+ type: "password",
556
+ value: formData.password,
557
+ onChange: function(value) {
558
+ return updateField('password', value);
559
+ },
560
+ error: errors.password,
561
+ placeholder: "Create a password",
562
+ autoComplete: "new-password",
563
+ helpText: "Must be at least 6 characters"
564
+ }),
565
+ /*#__PURE__*/ _jsx(TextField, {
566
+ label: "Confirm Password",
567
+ type: "password",
568
+ value: formData.confirmPassword,
569
+ onChange: function(value) {
570
+ return updateField('confirmPassword', value);
571
+ },
572
+ error: errors.confirmPassword,
573
+ placeholder: "Confirm your password",
574
+ autoComplete: "new-password"
575
+ }),
576
+ /*#__PURE__*/ _jsx(Button, {
577
+ primary: true,
578
+ submit: true,
579
+ children: "Create Account"
580
+ })
581
+ ]
582
+ })
583
+ })
584
+ });
585
+ },
586
+ parameters: {
587
+ docs: {
588
+ description: {
589
+ story: 'Form with client-side validation and error handling.'
590
+ },
591
+ source: {
592
+ transform: transformStorySource
593
+ }
594
+ }
595
+ }
596
+ };
597
+ export var MultiStepForm = {
598
+ render: function() {
599
+ var _useState = _sliced_to_array(useState(0), 2), currentStep = _useState[0], setCurrentStep = _useState[1];
600
+ var _useState1 = _sliced_to_array(useState({
601
+ // Step 1: Personal Info
602
+ firstName: '',
603
+ lastName: '',
604
+ email: '',
605
+ phone: '',
606
+ // Step 2: Address
607
+ address: '',
608
+ city: '',
609
+ state: '',
610
+ zipCode: '',
611
+ // Step 3: Preferences
612
+ notifications: 'email',
613
+ newsletter: false
614
+ }), 2), formData = _useState1[0], setFormData = _useState1[1];
615
+ var steps = [
616
+ 'Personal Info',
617
+ 'Address',
618
+ 'Preferences'
619
+ ];
620
+ var handleNext = function() {
621
+ if (currentStep < steps.length - 1) {
622
+ setCurrentStep(currentStep + 1);
623
+ }
624
+ };
625
+ var handlePrevious = function() {
626
+ if (currentStep > 0) {
627
+ setCurrentStep(currentStep - 1);
628
+ }
629
+ };
630
+ var handleSubmit = function(event) {
631
+ event.preventDefault();
632
+ console.log('Multi-step form completed:', formData);
633
+ };
634
+ var updateField = function(field, value) {
635
+ setFormData(function(prev) {
636
+ return _object_spread_props(_object_spread({}, prev), _define_property({}, field, value));
637
+ });
638
+ };
639
+ var renderStep = function() {
640
+ switch(currentStep){
641
+ case 0:
642
+ return /*#__PURE__*/ _jsxs("div", {
643
+ style: {
644
+ display: 'flex',
645
+ flexDirection: 'column',
646
+ gap: '1rem'
647
+ },
648
+ children: [
649
+ /*#__PURE__*/ _jsxs("div", {
650
+ style: {
651
+ display: 'grid',
652
+ gridTemplateColumns: '1fr 1fr',
653
+ gap: '1rem'
654
+ },
655
+ children: [
656
+ /*#__PURE__*/ _jsx(TextField, {
657
+ label: "First Name",
658
+ value: formData.firstName,
659
+ onChange: function(value) {
660
+ return updateField('firstName', value);
661
+ },
662
+ placeholder: "Your first name"
663
+ }),
664
+ /*#__PURE__*/ _jsx(TextField, {
665
+ label: "Last Name",
666
+ value: formData.lastName,
667
+ onChange: function(value) {
668
+ return updateField('lastName', value);
669
+ },
670
+ placeholder: "Your last name"
671
+ })
672
+ ]
673
+ }),
674
+ /*#__PURE__*/ _jsx(TextField, {
675
+ label: "Email",
676
+ type: "email",
677
+ value: formData.email,
678
+ onChange: function(value) {
679
+ return updateField('email', value);
680
+ },
681
+ placeholder: "your@email.com"
682
+ }),
683
+ /*#__PURE__*/ _jsx(TextField, {
684
+ label: "Phone",
685
+ type: "tel",
686
+ value: formData.phone,
687
+ onChange: function(value) {
688
+ return updateField('phone', value);
689
+ },
690
+ placeholder: "(555) 123-4567"
691
+ })
692
+ ]
693
+ });
694
+ case 1:
695
+ return /*#__PURE__*/ _jsxs("div", {
696
+ style: {
697
+ display: 'flex',
698
+ flexDirection: 'column',
699
+ gap: '1rem'
700
+ },
701
+ children: [
702
+ /*#__PURE__*/ _jsx(TextField, {
703
+ label: "Street Address",
704
+ value: formData.address,
705
+ onChange: function(value) {
706
+ return updateField('address', value);
707
+ },
708
+ placeholder: "123 Main Street"
709
+ }),
710
+ /*#__PURE__*/ _jsxs("div", {
711
+ style: {
712
+ display: 'grid',
713
+ gridTemplateColumns: '1fr 1fr 1fr',
714
+ gap: '1rem'
715
+ },
716
+ children: [
717
+ /*#__PURE__*/ _jsx(TextField, {
718
+ label: "City",
719
+ value: formData.city,
720
+ onChange: function(value) {
721
+ return updateField('city', value);
722
+ },
723
+ placeholder: "City"
724
+ }),
725
+ /*#__PURE__*/ _jsx(TextField, {
726
+ label: "State",
727
+ value: formData.state,
728
+ onChange: function(value) {
729
+ return updateField('state', value);
730
+ },
731
+ placeholder: "State"
732
+ }),
733
+ /*#__PURE__*/ _jsx(TextField, {
734
+ label: "ZIP Code",
735
+ value: formData.zipCode,
736
+ onChange: function(value) {
737
+ return updateField('zipCode', value);
738
+ },
739
+ placeholder: "12345"
740
+ })
741
+ ]
742
+ })
743
+ ]
744
+ });
745
+ case 2:
746
+ return /*#__PURE__*/ _jsxs("div", {
747
+ style: {
748
+ display: 'flex',
749
+ flexDirection: 'column',
750
+ gap: '1.5rem'
751
+ },
752
+ children: [
753
+ /*#__PURE__*/ _jsxs("div", {
754
+ children: [
755
+ /*#__PURE__*/ _jsx(Text, {
756
+ variant: "headingSm",
757
+ style: {
758
+ marginBottom: '1rem'
759
+ },
760
+ children: "Notification Preferences"
761
+ }),
762
+ /*#__PURE__*/ _jsxs("div", {
763
+ style: {
764
+ display: 'flex',
765
+ flexDirection: 'column',
766
+ gap: '0.75rem'
767
+ },
768
+ children: [
769
+ /*#__PURE__*/ _jsx(RadioButton, {
770
+ label: "Email notifications",
771
+ name: "notifications",
772
+ value: "email",
773
+ checked: formData.notifications === 'email',
774
+ onChange: function(checked) {
775
+ return checked && updateField('notifications', 'email');
776
+ }
777
+ }),
778
+ /*#__PURE__*/ _jsx(RadioButton, {
779
+ label: "SMS notifications",
780
+ name: "notifications",
781
+ value: "sms",
782
+ checked: formData.notifications === 'sms',
783
+ onChange: function(checked) {
784
+ return checked && updateField('notifications', 'sms');
785
+ }
786
+ }),
787
+ /*#__PURE__*/ _jsx(RadioButton, {
788
+ label: "No notifications",
789
+ name: "notifications",
790
+ value: "none",
791
+ checked: formData.notifications === 'none',
792
+ onChange: function(checked) {
793
+ return checked && updateField('notifications', 'none');
794
+ }
795
+ })
796
+ ]
797
+ })
798
+ ]
799
+ }),
800
+ /*#__PURE__*/ _jsx(Checkbox, {
801
+ label: "Subscribe to newsletter",
802
+ checked: formData.newsletter,
803
+ onChange: function(checked) {
804
+ return updateField('newsletter', checked);
805
+ }
806
+ })
807
+ ]
808
+ });
809
+ default:
810
+ return null;
811
+ }
812
+ };
813
+ return /*#__PURE__*/ _jsxs(Card, {
814
+ title: "Registration Form",
815
+ padded: true,
816
+ children: [
817
+ /*#__PURE__*/ _jsxs("div", {
818
+ style: {
819
+ marginBottom: '2rem'
820
+ },
821
+ children: [
822
+ /*#__PURE__*/ _jsx("div", {
823
+ style: {
824
+ display: 'flex',
825
+ justifyContent: 'space-between',
826
+ marginBottom: '0.5rem'
827
+ },
828
+ children: steps.map(function(step, index) {
829
+ return /*#__PURE__*/ _jsxs(Text, {
830
+ variant: "headingSm",
831
+ style: {
832
+ color: index <= currentStep ? '#2196f3' : '#999',
833
+ fontWeight: index === currentStep ? 'bold' : 'normal'
834
+ },
835
+ children: [
836
+ index + 1,
837
+ ". ",
838
+ step
839
+ ]
840
+ }, step);
841
+ })
842
+ }),
843
+ /*#__PURE__*/ _jsx("div", {
844
+ style: {
845
+ height: '4px',
846
+ backgroundColor: '#e1e1e1',
847
+ borderRadius: '2px',
848
+ overflow: 'hidden'
849
+ },
850
+ children: /*#__PURE__*/ _jsx("div", {
851
+ style: {
852
+ height: '100%',
853
+ backgroundColor: '#2196f3',
854
+ width: "".concat((currentStep + 1) / steps.length * 100, "%"),
855
+ transition: 'width 0.3s ease'
856
+ }
857
+ })
858
+ })
859
+ ]
860
+ }),
861
+ /*#__PURE__*/ _jsxs(Form, {
862
+ onSubmit: handleSubmit,
863
+ children: [
864
+ renderStep(),
865
+ /*#__PURE__*/ _jsxs("div", {
866
+ style: {
867
+ display: 'flex',
868
+ justifyContent: 'space-between',
869
+ marginTop: '2rem',
870
+ paddingTop: '1rem',
871
+ borderTop: '1px solid #e1e1e1'
872
+ },
873
+ children: [
874
+ /*#__PURE__*/ _jsx(Button, {
875
+ disabled: currentStep === 0,
876
+ onClick: handlePrevious,
877
+ children: "Previous"
878
+ }),
879
+ currentStep === steps.length - 1 ? /*#__PURE__*/ _jsx(Button, {
880
+ primary: true,
881
+ submit: true,
882
+ children: "Complete Registration"
883
+ }) : /*#__PURE__*/ _jsx(Button, {
884
+ primary: true,
885
+ onClick: handleNext,
886
+ children: "Next"
887
+ })
888
+ ]
889
+ })
890
+ ]
891
+ })
892
+ ]
893
+ });
894
+ },
895
+ parameters: {
896
+ docs: {
897
+ description: {
898
+ story: 'Multi-step form with progress indicator and navigation between steps.'
899
+ },
900
+ source: {
901
+ transform: transformStorySource
902
+ }
903
+ }
904
+ }
905
+ };