@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,834 @@
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 ChoiceList from "../components/ChoiceList.js";
102
+ import Text from "../components/Text.js";
103
+ import Card from "../components/Card.js";
104
+ import Button from "../components/Button.js";
105
+ import { transformStorySource } from "../utilities/transformers.js";
106
+ import VerticalStack from "../components/VerticalStack.js";
107
+ import HorizontalStack from "../components/HorizontalStack.js";
108
+ import Badge from "../components/Badge.js";
109
+ export default {
110
+ title: "Litho/ChoiceList",
111
+ component: ChoiceList,
112
+ parameters: {
113
+ layout: "padded",
114
+ docs: {
115
+ description: {
116
+ component: "A ChoiceList component that allows users to select one or multiple options from a list of choices. ChoiceLists support both single and multiple selection modes with customizable styling."
117
+ }
118
+ }
119
+ },
120
+ args: {
121
+ title: "Choose an option",
122
+ choices: [
123
+ {
124
+ label: "Option 1",
125
+ value: "option1"
126
+ },
127
+ {
128
+ label: "Option 2",
129
+ value: "option2"
130
+ },
131
+ {
132
+ label: "Option 3",
133
+ value: "option3"
134
+ }
135
+ ],
136
+ selected: []
137
+ },
138
+ tags: [
139
+ "autodocs"
140
+ ],
141
+ argTypes: {
142
+ title: {
143
+ control: "text",
144
+ description: "Title for the choice list"
145
+ },
146
+ titleHidden: {
147
+ control: "boolean",
148
+ description: "Whether to hide the title visually"
149
+ },
150
+ choices: {
151
+ control: "object",
152
+ description: "Array of choice objects with label, value, and optional properties",
153
+ table: {
154
+ type: {
155
+ summary: "Array<ChoiceListItem>",
156
+ detail: "{\n value: string;\n label: string;\n disabled?: boolean;\n helpText?: string;\n tooltip?: React.ReactNode;\n renderChildren?: () => React.ReactNode;\n}"
157
+ }
158
+ }
159
+ },
160
+ selected: {
161
+ control: "object",
162
+ description: "Array of currently selected values"
163
+ },
164
+ allowMultiple: {
165
+ control: "boolean",
166
+ description: "Whether multiple selections are allowed (uses checkboxes) or single selection (uses radio buttons)"
167
+ },
168
+ disabled: {
169
+ control: "boolean",
170
+ description: "Whether the entire choice list is disabled"
171
+ },
172
+ error: {
173
+ control: "text",
174
+ description: "Error message to display for validation"
175
+ },
176
+ name: {
177
+ control: "text",
178
+ description: "Name attribute for the choice inputs (used for grouping radio buttons)"
179
+ },
180
+ tooltip: {
181
+ control: "object",
182
+ description: "Tooltip content for the choice list title"
183
+ },
184
+ onChange: {
185
+ action: "selectionChanged",
186
+ description: "Callback when selection changes, receives updated array of selected values"
187
+ }
188
+ }
189
+ };
190
+ export var Default = {
191
+ render: function(args) {
192
+ var _useState = _sliced_to_array(useState(args.selected), 2), selected = _useState[0], setSelected = _useState[1];
193
+ return /*#__PURE__*/ _jsx(Card, {
194
+ padded: true,
195
+ children: /*#__PURE__*/ _jsx(ChoiceList, _object_spread_props(_object_spread({}, args), {
196
+ selected: selected,
197
+ onChange: function(newSelected) {
198
+ var _args_onChange;
199
+ setSelected(newSelected);
200
+ (_args_onChange = args.onChange) === null || _args_onChange === void 0 ? void 0 : _args_onChange.call(args, newSelected);
201
+ }
202
+ }))
203
+ });
204
+ },
205
+ parameters: {
206
+ docs: {
207
+ description: {
208
+ story: "Default choice list with single selection mode."
209
+ },
210
+ source: {
211
+ transform: transformStorySource
212
+ }
213
+ }
214
+ }
215
+ };
216
+ export var SingleSelection = {
217
+ args: {
218
+ title: "Select your plan",
219
+ allowMultiple: false,
220
+ choices: [
221
+ {
222
+ label: "Basic Plan - $9/month",
223
+ value: "basic"
224
+ },
225
+ {
226
+ label: "Pro Plan - $29/month",
227
+ value: "pro"
228
+ },
229
+ {
230
+ label: "Enterprise Plan - $99/month",
231
+ value: "enterprise"
232
+ }
233
+ ],
234
+ selected: [
235
+ "basic"
236
+ ]
237
+ },
238
+ render: function(args) {
239
+ var _useState = _sliced_to_array(useState(args.selected), 2), selected = _useState[0], setSelected = _useState[1];
240
+ return /*#__PURE__*/ _jsx(Card, {
241
+ padded: true,
242
+ children: /*#__PURE__*/ _jsx(ChoiceList, _object_spread_props(_object_spread({}, args), {
243
+ selected: selected,
244
+ onChange: setSelected
245
+ }))
246
+ });
247
+ },
248
+ parameters: {
249
+ docs: {
250
+ description: {
251
+ story: "Choice lists can be restricted to single selection mode."
252
+ },
253
+ source: {
254
+ transform: transformStorySource
255
+ }
256
+ }
257
+ }
258
+ };
259
+ export var MultipleSelection = {
260
+ args: {
261
+ title: "Select features",
262
+ allowMultiple: true,
263
+ choices: [
264
+ {
265
+ label: "Email notifications",
266
+ value: "email"
267
+ },
268
+ {
269
+ label: "SMS notifications",
270
+ value: "sms"
271
+ },
272
+ {
273
+ label: "Push notifications",
274
+ value: "push"
275
+ },
276
+ {
277
+ label: "Weekly digest",
278
+ value: "digest"
279
+ }
280
+ ],
281
+ selected: [
282
+ "email",
283
+ "push"
284
+ ]
285
+ },
286
+ render: function(args) {
287
+ var _useState = _sliced_to_array(useState(args.selected), 2), selected = _useState[0], setSelected = _useState[1];
288
+ return /*#__PURE__*/ _jsx(Card, {
289
+ padded: true,
290
+ children: /*#__PURE__*/ _jsx(ChoiceList, _object_spread_props(_object_spread({}, args), {
291
+ selected: selected,
292
+ onChange: setSelected
293
+ }))
294
+ });
295
+ },
296
+ parameters: {
297
+ docs: {
298
+ description: {
299
+ story: "Choice lists can allow multiple selections with checkboxes."
300
+ },
301
+ source: {
302
+ transform: transformStorySource
303
+ }
304
+ }
305
+ }
306
+ };
307
+ export var WithHelpText = {
308
+ render: function() {
309
+ var _useState = _sliced_to_array(useState([
310
+ "standard"
311
+ ]), 2), selected = _useState[0], setSelected = _useState[1];
312
+ var choices = [
313
+ {
314
+ label: "Standard Shipping",
315
+ value: "standard",
316
+ helpText: "5-7 business days • Free"
317
+ },
318
+ {
319
+ label: "Express Shipping",
320
+ value: "express",
321
+ helpText: "2-3 business days • $9.99"
322
+ },
323
+ {
324
+ label: "Overnight Shipping",
325
+ value: "overnight",
326
+ helpText: "Next business day • $24.99"
327
+ }
328
+ ];
329
+ return /*#__PURE__*/ _jsx(Card, {
330
+ padded: true,
331
+ children: /*#__PURE__*/ _jsx(ChoiceList, {
332
+ title: "Shipping method",
333
+ choices: choices,
334
+ selected: selected,
335
+ onChange: setSelected,
336
+ allowMultiple: false
337
+ })
338
+ });
339
+ },
340
+ parameters: {
341
+ docs: {
342
+ description: {
343
+ story: "Choice options can include help text for additional context."
344
+ },
345
+ source: {
346
+ transform: transformStorySource
347
+ }
348
+ }
349
+ }
350
+ };
351
+ export var WithError = {
352
+ args: {
353
+ title: "Required selection",
354
+ error: "Please select at least one option",
355
+ choices: [
356
+ {
357
+ label: "Option A",
358
+ value: "a"
359
+ },
360
+ {
361
+ label: "Option B",
362
+ value: "b"
363
+ },
364
+ {
365
+ label: "Option C",
366
+ value: "c"
367
+ }
368
+ ],
369
+ selected: []
370
+ },
371
+ render: function(args) {
372
+ var _useState = _sliced_to_array(useState(args.selected), 2), selected = _useState[0], setSelected = _useState[1];
373
+ return /*#__PURE__*/ _jsx(Card, {
374
+ padded: true,
375
+ children: /*#__PURE__*/ _jsx(ChoiceList, _object_spread_props(_object_spread({}, args), {
376
+ selected: selected,
377
+ onChange: setSelected
378
+ }))
379
+ });
380
+ },
381
+ parameters: {
382
+ docs: {
383
+ description: {
384
+ story: "Choice lists can display error states for validation."
385
+ },
386
+ source: {
387
+ transform: transformStorySource
388
+ }
389
+ }
390
+ }
391
+ };
392
+ export var Disabled = {
393
+ args: {
394
+ title: "Disabled choice list",
395
+ disabled: true,
396
+ choices: [
397
+ {
398
+ label: "Option 1",
399
+ value: "option1"
400
+ },
401
+ {
402
+ label: "Option 2",
403
+ value: "option2"
404
+ },
405
+ {
406
+ label: "Option 3",
407
+ value: "option3"
408
+ }
409
+ ],
410
+ selected: [
411
+ "option1"
412
+ ]
413
+ },
414
+ render: function(args) {
415
+ var _useState = _sliced_to_array(useState(args.selected), 2), selected = _useState[0], setSelected = _useState[1];
416
+ return /*#__PURE__*/ _jsx(Card, {
417
+ padded: true,
418
+ children: /*#__PURE__*/ _jsx(ChoiceList, _object_spread_props(_object_spread({}, args), {
419
+ selected: selected,
420
+ onChange: setSelected
421
+ }))
422
+ });
423
+ },
424
+ parameters: {
425
+ docs: {
426
+ description: {
427
+ story: "Choice lists can be disabled to prevent interaction."
428
+ },
429
+ source: {
430
+ transform: transformStorySource
431
+ }
432
+ }
433
+ }
434
+ };
435
+ export var ProductCategories = {
436
+ render: function() {
437
+ var _useState = _sliced_to_array(useState([
438
+ "electronics",
439
+ "books"
440
+ ]), 2), selectedCategories = _useState[0], setSelectedCategories = _useState[1];
441
+ var categories = [
442
+ {
443
+ label: "Electronics",
444
+ value: "electronics"
445
+ },
446
+ {
447
+ label: "Books",
448
+ value: "books"
449
+ },
450
+ {
451
+ label: "Clothing",
452
+ value: "clothing"
453
+ },
454
+ {
455
+ label: "Home & Garden",
456
+ value: "home-garden"
457
+ },
458
+ {
459
+ label: "Sports & Outdoors",
460
+ value: "sports"
461
+ },
462
+ {
463
+ label: "Toys & Games",
464
+ value: "toys"
465
+ },
466
+ {
467
+ label: "Health & Beauty",
468
+ value: "health"
469
+ },
470
+ {
471
+ label: "Automotive",
472
+ value: "automotive"
473
+ }
474
+ ];
475
+ return /*#__PURE__*/ _jsxs(Card, {
476
+ title: "Product Filter",
477
+ padded: true,
478
+ children: [
479
+ /*#__PURE__*/ _jsx(ChoiceList, {
480
+ title: "Categories",
481
+ choices: categories,
482
+ selected: selectedCategories,
483
+ onChange: setSelectedCategories,
484
+ allowMultiple: true
485
+ }),
486
+ /*#__PURE__*/ _jsxs(VerticalStack, {
487
+ gap: "1",
488
+ children: [
489
+ /*#__PURE__*/ _jsx(Text, {
490
+ variant: "headingSm",
491
+ children: "Selected: "
492
+ }),
493
+ /*#__PURE__*/ _jsx(HorizontalStack, {
494
+ gap: "1",
495
+ children: selectedCategories.map(function(category) {
496
+ return /*#__PURE__*/ _jsx(Badge, {
497
+ children: category
498
+ }, category);
499
+ })
500
+ })
501
+ ]
502
+ })
503
+ ]
504
+ });
505
+ },
506
+ parameters: {
507
+ docs: {
508
+ description: {
509
+ story: "Real-world example of using choice lists for product category filtering."
510
+ },
511
+ source: {
512
+ transform: transformStorySource
513
+ }
514
+ }
515
+ }
516
+ };
517
+ export var SubscriptionPlan = {
518
+ render: function() {
519
+ var _useState = _sliced_to_array(useState([
520
+ "pro"
521
+ ]), 2), selectedPlan = _useState[0], setSelectedPlan = _useState[1];
522
+ var plans = [
523
+ {
524
+ label: "Starter",
525
+ value: "starter",
526
+ helpText: "Perfect for individuals • $0/month • 5 projects • 1GB storage"
527
+ },
528
+ {
529
+ label: "Professional",
530
+ value: "pro",
531
+ helpText: "For small teams • $29/month • Unlimited projects • 100GB storage"
532
+ },
533
+ {
534
+ label: "Enterprise",
535
+ value: "enterprise",
536
+ helpText: "For large organizations • $99/month • Advanced features • 1TB storage"
537
+ }
538
+ ];
539
+ return /*#__PURE__*/ _jsxs(Card, {
540
+ title: "Choose Your Plan",
541
+ children: [
542
+ /*#__PURE__*/ _jsx(Card.Section, {
543
+ children: /*#__PURE__*/ _jsx(ChoiceList, {
544
+ title: "Subscription plans",
545
+ choices: plans,
546
+ selected: selectedPlan,
547
+ onChange: setSelectedPlan,
548
+ allowMultiple: false
549
+ })
550
+ }),
551
+ /*#__PURE__*/ _jsx(Card.Section, {
552
+ subdued: true,
553
+ children: /*#__PURE__*/ _jsxs(VerticalStack, {
554
+ gap: "2",
555
+ children: [
556
+ /*#__PURE__*/ _jsx(Text, {
557
+ variant: "headingSm",
558
+ children: "Plan Summary"
559
+ }),
560
+ /*#__PURE__*/ _jsx(Text, {
561
+ children: selectedPlan.length > 0 ? "You've selected the ".concat(selectedPlan[0], " plan.") : "No plan selected."
562
+ }),
563
+ /*#__PURE__*/ _jsx(Button, {
564
+ primary: true,
565
+ children: "Continue to Payment"
566
+ })
567
+ ]
568
+ })
569
+ })
570
+ ]
571
+ });
572
+ },
573
+ parameters: {
574
+ docs: {
575
+ description: {
576
+ story: "Subscription plan selection with detailed plan information."
577
+ },
578
+ source: {
579
+ transform: transformStorySource
580
+ }
581
+ }
582
+ }
583
+ };
584
+ export var SurveyForm = {
585
+ render: function() {
586
+ var _useState = _sliced_to_array(useState([]), 2), satisfaction = _useState[0], setSatisfaction = _useState[1];
587
+ var _useState1 = _sliced_to_array(useState([]), 2), features = _useState1[0], setFeatures = _useState1[1];
588
+ var _useState2 = _sliced_to_array(useState([]), 2), improvements = _useState2[0], setImprovements = _useState2[1];
589
+ return /*#__PURE__*/ _jsxs(Card, {
590
+ title: "Product Feedback Survey",
591
+ children: [
592
+ /*#__PURE__*/ _jsx(Card.Section, {
593
+ children: /*#__PURE__*/ _jsxs(VerticalStack, {
594
+ gap: "2",
595
+ children: [
596
+ /*#__PURE__*/ _jsx(ChoiceList, {
597
+ title: "How satisfied are you with our product?",
598
+ choices: [
599
+ {
600
+ label: "Very satisfied",
601
+ value: "very-satisfied"
602
+ },
603
+ {
604
+ label: "Satisfied",
605
+ value: "satisfied"
606
+ },
607
+ {
608
+ label: "Neutral",
609
+ value: "neutral"
610
+ },
611
+ {
612
+ label: "Dissatisfied",
613
+ value: "dissatisfied"
614
+ },
615
+ {
616
+ label: "Very dissatisfied",
617
+ value: "very-dissatisfied"
618
+ }
619
+ ],
620
+ selected: satisfaction,
621
+ onChange: setSatisfaction,
622
+ allowMultiple: false
623
+ }),
624
+ /*#__PURE__*/ _jsx(ChoiceList, {
625
+ title: "Which features do you use most? (Select all that apply)",
626
+ choices: [
627
+ {
628
+ label: "Dashboard analytics",
629
+ value: "analytics"
630
+ },
631
+ {
632
+ label: "Team collaboration",
633
+ value: "collaboration"
634
+ },
635
+ {
636
+ label: "File sharing",
637
+ value: "file-sharing"
638
+ },
639
+ {
640
+ label: "Project templates",
641
+ value: "templates"
642
+ },
643
+ {
644
+ label: "Mobile app",
645
+ value: "mobile"
646
+ },
647
+ {
648
+ label: "API integrations",
649
+ value: "api"
650
+ }
651
+ ],
652
+ selected: features,
653
+ onChange: setFeatures,
654
+ allowMultiple: true
655
+ }),
656
+ /*#__PURE__*/ _jsx(ChoiceList, {
657
+ title: "What areas need improvement? (Select all that apply)",
658
+ choices: [
659
+ {
660
+ label: "User interface design",
661
+ value: "ui-design"
662
+ },
663
+ {
664
+ label: "Performance speed",
665
+ value: "performance"
666
+ },
667
+ {
668
+ label: "Documentation",
669
+ value: "documentation"
670
+ },
671
+ {
672
+ label: "Customer support",
673
+ value: "support"
674
+ },
675
+ {
676
+ label: "Pricing",
677
+ value: "pricing"
678
+ },
679
+ {
680
+ label: "Feature completeness",
681
+ value: "features"
682
+ }
683
+ ],
684
+ selected: improvements,
685
+ onChange: setImprovements,
686
+ allowMultiple: true
687
+ })
688
+ ]
689
+ })
690
+ }),
691
+ /*#__PURE__*/ _jsx(Card.Section, {
692
+ subdued: true,
693
+ children: /*#__PURE__*/ _jsxs(HorizontalStack, {
694
+ gap: "1",
695
+ children: [
696
+ /*#__PURE__*/ _jsx(Button, {
697
+ primary: true,
698
+ children: "Submit Survey"
699
+ }),
700
+ /*#__PURE__*/ _jsx(Button, {
701
+ children: "Save as Draft"
702
+ })
703
+ ]
704
+ })
705
+ })
706
+ ]
707
+ });
708
+ },
709
+ parameters: {
710
+ docs: {
711
+ description: {
712
+ story: "Complex survey form using multiple choice lists with different selection modes."
713
+ },
714
+ source: {
715
+ transform: transformStorySource
716
+ }
717
+ }
718
+ }
719
+ };
720
+ export var FormValidation = {
721
+ render: function() {
722
+ var _useState = _sliced_to_array(useState([]), 2), preferences = _useState[0], setPreferences = _useState[1];
723
+ var _useState1 = _sliced_to_array(useState([]), 2), communication = _useState1[0], setCommunication = _useState1[1];
724
+ var _useState2 = _sliced_to_array(useState({}), 2), errors = _useState2[0], setErrors = _useState2[1];
725
+ var handleSubmit = function() {
726
+ var newErrors = {};
727
+ if (preferences.length === 0) {
728
+ newErrors.preferences = "Please select at least one preference";
729
+ }
730
+ if (communication.length === 0) {
731
+ newErrors.communication = "Please select a communication method";
732
+ }
733
+ setErrors(newErrors);
734
+ if (Object.keys(newErrors).length === 0) {
735
+ console.log("Form submitted successfully");
736
+ }
737
+ };
738
+ return /*#__PURE__*/ _jsxs(Card, {
739
+ title: "User Preferences",
740
+ children: [
741
+ /*#__PURE__*/ _jsxs(Card.Section, {
742
+ children: [
743
+ /*#__PURE__*/ _jsx(ChoiceList, {
744
+ title: "Marketing preferences",
745
+ choices: [
746
+ {
747
+ label: "Product updates",
748
+ value: "product-updates"
749
+ },
750
+ {
751
+ label: "Special offers",
752
+ value: "offers"
753
+ },
754
+ {
755
+ label: "Newsletter",
756
+ value: "newsletter"
757
+ },
758
+ {
759
+ label: "Event invitations",
760
+ value: "events"
761
+ }
762
+ ],
763
+ selected: preferences,
764
+ onChange: function(selected) {
765
+ setPreferences(selected);
766
+ if (errors.preferences && selected.length > 0) {
767
+ setErrors(function(prev) {
768
+ return _object_spread_props(_object_spread({}, prev), {
769
+ preferences: ""
770
+ });
771
+ });
772
+ }
773
+ },
774
+ allowMultiple: true,
775
+ error: errors.preferences
776
+ }),
777
+ /*#__PURE__*/ _jsx(ChoiceList, {
778
+ title: "Preferred communication method",
779
+ choices: [
780
+ {
781
+ label: "Email",
782
+ value: "email"
783
+ },
784
+ {
785
+ label: "SMS",
786
+ value: "sms"
787
+ },
788
+ {
789
+ label: "Phone call",
790
+ value: "phone"
791
+ },
792
+ {
793
+ label: "Mail",
794
+ value: "mail"
795
+ }
796
+ ],
797
+ selected: communication,
798
+ onChange: function(selected) {
799
+ setCommunication(selected);
800
+ if (errors.communication && selected.length > 0) {
801
+ setErrors(function(prev) {
802
+ return _object_spread_props(_object_spread({}, prev), {
803
+ communication: ""
804
+ });
805
+ });
806
+ }
807
+ },
808
+ allowMultiple: false,
809
+ error: errors.communication
810
+ })
811
+ ]
812
+ }),
813
+ /*#__PURE__*/ _jsx(Card.Section, {
814
+ subdued: true,
815
+ children: /*#__PURE__*/ _jsx(Button, {
816
+ primary: true,
817
+ onClick: handleSubmit,
818
+ children: "Save Preferences"
819
+ })
820
+ })
821
+ ]
822
+ });
823
+ },
824
+ parameters: {
825
+ docs: {
826
+ description: {
827
+ story: "Form validation example with error handling for required choice lists."
828
+ },
829
+ source: {
830
+ transform: transformStorySource
831
+ }
832
+ }
833
+ }
834
+ };