@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,938 @@
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 asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
10
+ try {
11
+ var info = gen[key](arg);
12
+ var value = info.value;
13
+ } catch (error) {
14
+ reject(error);
15
+ return;
16
+ }
17
+ if (info.done) {
18
+ resolve(value);
19
+ } else {
20
+ Promise.resolve(value).then(_next, _throw);
21
+ }
22
+ }
23
+ function _async_to_generator(fn) {
24
+ return function() {
25
+ var self = this, args = arguments;
26
+ return new Promise(function(resolve, reject) {
27
+ var gen = fn.apply(self, args);
28
+ function _next(value) {
29
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
30
+ }
31
+ function _throw(err) {
32
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
33
+ }
34
+ _next(undefined);
35
+ });
36
+ };
37
+ }
38
+ function _define_property(obj, key, value) {
39
+ if (key in obj) {
40
+ Object.defineProperty(obj, key, {
41
+ value: value,
42
+ enumerable: true,
43
+ configurable: true,
44
+ writable: true
45
+ });
46
+ } else {
47
+ obj[key] = value;
48
+ }
49
+ return obj;
50
+ }
51
+ function _iterable_to_array_limit(arr, i) {
52
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
53
+ if (_i == null) return;
54
+ var _arr = [];
55
+ var _n = true;
56
+ var _d = false;
57
+ var _s, _e;
58
+ try {
59
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
60
+ _arr.push(_s.value);
61
+ if (i && _arr.length === i) break;
62
+ }
63
+ } catch (err) {
64
+ _d = true;
65
+ _e = err;
66
+ } finally{
67
+ try {
68
+ if (!_n && _i["return"] != null) _i["return"]();
69
+ } finally{
70
+ if (_d) throw _e;
71
+ }
72
+ }
73
+ return _arr;
74
+ }
75
+ function _non_iterable_rest() {
76
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
77
+ }
78
+ function _object_spread(target) {
79
+ for(var i = 1; i < arguments.length; i++){
80
+ var source = arguments[i] != null ? arguments[i] : {};
81
+ var ownKeys = Object.keys(source);
82
+ if (typeof Object.getOwnPropertySymbols === "function") {
83
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
84
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
85
+ }));
86
+ }
87
+ ownKeys.forEach(function(key) {
88
+ _define_property(target, key, source[key]);
89
+ });
90
+ }
91
+ return target;
92
+ }
93
+ function ownKeys(object, enumerableOnly) {
94
+ var keys = Object.keys(object);
95
+ if (Object.getOwnPropertySymbols) {
96
+ var symbols = Object.getOwnPropertySymbols(object);
97
+ if (enumerableOnly) {
98
+ symbols = symbols.filter(function(sym) {
99
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
100
+ });
101
+ }
102
+ keys.push.apply(keys, symbols);
103
+ }
104
+ return keys;
105
+ }
106
+ function _object_spread_props(target, source) {
107
+ source = source != null ? source : {};
108
+ if (Object.getOwnPropertyDescriptors) {
109
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
110
+ } else {
111
+ ownKeys(Object(source)).forEach(function(key) {
112
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
113
+ });
114
+ }
115
+ return target;
116
+ }
117
+ function _sliced_to_array(arr, i) {
118
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
119
+ }
120
+ function _unsupported_iterable_to_array(o, minLen) {
121
+ if (!o) return;
122
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
123
+ var n = Object.prototype.toString.call(o).slice(8, -1);
124
+ if (n === "Object" && o.constructor) n = o.constructor.name;
125
+ if (n === "Map" || n === "Set") return Array.from(n);
126
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
127
+ }
128
+ function _ts_generator(thisArg, body) {
129
+ var f, y, t, _ = {
130
+ label: 0,
131
+ sent: function() {
132
+ if (t[0] & 1) throw t[1];
133
+ return t[1];
134
+ },
135
+ trys: [],
136
+ ops: []
137
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
138
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
139
+ return this;
140
+ }), g;
141
+ function verb(n) {
142
+ return function(v) {
143
+ return step([
144
+ n,
145
+ v
146
+ ]);
147
+ };
148
+ }
149
+ function step(op) {
150
+ if (f) throw new TypeError("Generator is already executing.");
151
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
152
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
153
+ if (y = 0, t) op = [
154
+ op[0] & 2,
155
+ t.value
156
+ ];
157
+ switch(op[0]){
158
+ case 0:
159
+ case 1:
160
+ t = op;
161
+ break;
162
+ case 4:
163
+ _.label++;
164
+ return {
165
+ value: op[1],
166
+ done: false
167
+ };
168
+ case 5:
169
+ _.label++;
170
+ y = op[1];
171
+ op = [
172
+ 0
173
+ ];
174
+ continue;
175
+ case 7:
176
+ op = _.ops.pop();
177
+ _.trys.pop();
178
+ continue;
179
+ default:
180
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
181
+ _ = 0;
182
+ continue;
183
+ }
184
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
185
+ _.label = op[1];
186
+ break;
187
+ }
188
+ if (op[0] === 6 && _.label < t[1]) {
189
+ _.label = t[1];
190
+ t = op;
191
+ break;
192
+ }
193
+ if (t && _.label < t[2]) {
194
+ _.label = t[2];
195
+ _.ops.push(op);
196
+ break;
197
+ }
198
+ if (t[2]) _.ops.pop();
199
+ _.trys.pop();
200
+ continue;
201
+ }
202
+ op = body.call(thisArg, _);
203
+ } catch (e) {
204
+ op = [
205
+ 6,
206
+ e
207
+ ];
208
+ y = 0;
209
+ } finally{
210
+ f = t = 0;
211
+ }
212
+ if (op[0] & 5) throw op[1];
213
+ return {
214
+ value: op[0] ? op[1] : void 0,
215
+ done: true
216
+ };
217
+ }
218
+ }
219
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
220
+ import { useState } from "react";
221
+ import ContextualSaveBar from "../components/ContextualSaveBar.js";
222
+ import Text from "../components/Text.js";
223
+ import Card from "../components/Card.js";
224
+ import Button from "../components/Button.js";
225
+ import TextField from "../components/TextField.js";
226
+ import Page from "../components/Page.js";
227
+ import Frame from "../components/Frame.js";
228
+ import AppProvider from "../components/AppProvider.js";
229
+ import VerticalStack from "../components/VerticalStack.js";
230
+ import HorizontalStack from "../components/HorizontalStack.js";
231
+ import Box from "../components/Box.js";
232
+ import { transformStorySource } from "../utilities/transformers.js";
233
+ export default {
234
+ title: "Litho/ContextualSaveBar",
235
+ component: ContextualSaveBar,
236
+ parameters: {
237
+ layout: "fullscreen",
238
+ docs: {
239
+ description: {
240
+ component: "A ContextualSaveBar component that manages a global save bar state. It doesn't render anything itself but controls the visibility and configuration of a contextual save bar through the FormContext. This component is typically used in forms to provide save/discard actions when there are unsaved changes."
241
+ }
242
+ }
243
+ },
244
+ tags: [
245
+ "autodocs"
246
+ ],
247
+ decorators: [
248
+ function(Story) {
249
+ return /*#__PURE__*/ _jsx(AppProvider, {
250
+ darkModeAvailable: true,
251
+ darkModeStorageKey: "storybook-dark-mode",
252
+ children: /*#__PURE__*/ _jsx(Frame, {
253
+ children: /*#__PURE__*/ _jsx(Box, {
254
+ padding: "4",
255
+ children: /*#__PURE__*/ _jsx(Story, {})
256
+ })
257
+ })
258
+ });
259
+ }
260
+ ],
261
+ argTypes: {
262
+ saveAction: {
263
+ control: "object",
264
+ description: "Action configuration for the save button"
265
+ },
266
+ discardAction: {
267
+ control: "object",
268
+ description: "Action configuration for the discard button"
269
+ },
270
+ message: {
271
+ control: "text",
272
+ description: "Message to display in the contextual save bar"
273
+ }
274
+ }
275
+ };
276
+ export var Default = {
277
+ render: function() {
278
+ var _useState = _sliced_to_array(useState(false), 2), showSaveBar = _useState[0], setShowSaveBar = _useState[1];
279
+ var _useState1 = _sliced_to_array(useState({
280
+ title: "Product Title",
281
+ description: "Product description"
282
+ }), 2), formData = _useState1[0], setFormData = _useState1[1];
283
+ var _useState2 = _sliced_to_array(useState({
284
+ title: "Product Title",
285
+ description: "Product description"
286
+ }), 2), originalData = _useState2[0], setOriginalData = _useState2[1];
287
+ var _useState3 = _sliced_to_array(useState(false), 2), saving = _useState3[0], setSaving = _useState3[1];
288
+ var hasChanges = JSON.stringify(formData) !== JSON.stringify(originalData);
289
+ var handleSave = function() {
290
+ return _async_to_generator(function() {
291
+ return _ts_generator(this, function(_state) {
292
+ switch(_state.label){
293
+ case 0:
294
+ setSaving(true);
295
+ // Simulate API call
296
+ return [
297
+ 4,
298
+ new Promise(function(resolve) {
299
+ return setTimeout(resolve, 1500);
300
+ })
301
+ ];
302
+ case 1:
303
+ _state.sent();
304
+ setOriginalData(_object_spread({}, formData));
305
+ setSaving(false);
306
+ setShowSaveBar(false);
307
+ return [
308
+ 2
309
+ ];
310
+ }
311
+ });
312
+ })();
313
+ };
314
+ var handleDiscard = function() {
315
+ setFormData(_object_spread({}, originalData));
316
+ setShowSaveBar(false);
317
+ };
318
+ var handleFieldChange = function(field, value) {
319
+ setFormData(function(prev) {
320
+ return _object_spread_props(_object_spread({}, prev), _define_property({}, field, value));
321
+ });
322
+ if (!showSaveBar && !hasChanges) {
323
+ setShowSaveBar(true);
324
+ }
325
+ };
326
+ return /*#__PURE__*/ _jsxs(Page, {
327
+ title: "Product Management",
328
+ children: [
329
+ showSaveBar && hasChanges && /*#__PURE__*/ _jsx(ContextualSaveBar, {
330
+ message: "You have unsaved changes",
331
+ saveAction: {
332
+ accessibilityLabel: "Save changes",
333
+ content: "Save changes",
334
+ onAction: handleSave,
335
+ loading: saving,
336
+ disabled: saving
337
+ },
338
+ discardAction: {
339
+ onAction: handleDiscard,
340
+ disabled: saving
341
+ }
342
+ }),
343
+ /*#__PURE__*/ _jsx(Card, {
344
+ title: "Product Information",
345
+ padded: true,
346
+ children: /*#__PURE__*/ _jsxs(VerticalStack, {
347
+ gap: "6",
348
+ children: [
349
+ /*#__PURE__*/ _jsx(TextField, {
350
+ label: "Product Title",
351
+ value: formData.title,
352
+ onChange: function(value) {
353
+ return handleFieldChange("title", value);
354
+ }
355
+ }),
356
+ /*#__PURE__*/ _jsx(TextField, {
357
+ label: "Description",
358
+ value: formData.description,
359
+ onChange: function(value) {
360
+ return handleFieldChange("description", value);
361
+ },
362
+ multiline: 3
363
+ }),
364
+ /*#__PURE__*/ _jsxs(Box, {
365
+ padding: "4",
366
+ background: "subdued",
367
+ borderRadius: "default",
368
+ children: [
369
+ /*#__PURE__*/ _jsx(Text, {
370
+ variant: "headingSm",
371
+ children: "Instructions"
372
+ }),
373
+ /*#__PURE__*/ _jsx(Box, {
374
+ paddingBlockStart: "2",
375
+ children: /*#__PURE__*/ _jsx(Text, {
376
+ variant: "bodySm",
377
+ children: "Make changes to the fields above to see the contextual save bar appear. The save bar will show when there are unsaved changes and hide when changes are saved or discarded."
378
+ })
379
+ })
380
+ ]
381
+ })
382
+ ]
383
+ })
384
+ })
385
+ ]
386
+ });
387
+ },
388
+ parameters: {
389
+ docs: {
390
+ source: {
391
+ transform: transformStorySource
392
+ },
393
+ description: {
394
+ story: "Basic contextual save bar that appears when form data changes."
395
+ }
396
+ }
397
+ }
398
+ };
399
+ export var CustomMessages = {
400
+ render: function() {
401
+ var _useState = _sliced_to_array(useState(null), 2), activeForm = _useState[0], setActiveForm = _useState[1];
402
+ var _useState1 = _sliced_to_array(useState({
403
+ name: "John Doe",
404
+ email: "john@example.com"
405
+ }), 2), profileData = _useState1[0], setProfileData = _useState1[1];
406
+ var _useState2 = _sliced_to_array(useState({
407
+ notifications: true,
408
+ theme: "light"
409
+ }), 2), settingsData = _useState2[0], setSettingsData = _useState2[1];
410
+ var scenarios = [
411
+ {
412
+ key: "profile",
413
+ title: "Profile Form",
414
+ message: "Your profile changes haven't been saved",
415
+ data: profileData,
416
+ setData: setProfileData,
417
+ fields: [
418
+ {
419
+ key: "name",
420
+ label: "Full Name",
421
+ type: "text"
422
+ },
423
+ {
424
+ key: "email",
425
+ label: "Email Address",
426
+ type: "email"
427
+ }
428
+ ]
429
+ },
430
+ {
431
+ key: "settings",
432
+ title: "Settings Form",
433
+ message: "Settings modifications are pending",
434
+ data: settingsData,
435
+ setData: setSettingsData,
436
+ fields: [
437
+ {
438
+ key: "notifications",
439
+ label: "Enable Notifications",
440
+ type: "checkbox"
441
+ },
442
+ {
443
+ key: "theme",
444
+ label: "Theme",
445
+ type: "select",
446
+ options: [
447
+ "light",
448
+ "dark"
449
+ ]
450
+ }
451
+ ]
452
+ }
453
+ ];
454
+ var handleSave = function(formKey) {
455
+ return _async_to_generator(function() {
456
+ return _ts_generator(this, function(_state) {
457
+ switch(_state.label){
458
+ case 0:
459
+ return [
460
+ 4,
461
+ new Promise(function(resolve) {
462
+ return setTimeout(resolve, 1000);
463
+ })
464
+ ];
465
+ case 1:
466
+ _state.sent();
467
+ setActiveForm(null);
468
+ return [
469
+ 2
470
+ ];
471
+ }
472
+ });
473
+ })();
474
+ };
475
+ var handleDiscard = function(formKey) {
476
+ setActiveForm(null);
477
+ // Reset to original values in real implementation
478
+ };
479
+ var activateForm = function(formKey) {
480
+ setActiveForm(formKey);
481
+ };
482
+ var activeScenario = scenarios.find(function(s) {
483
+ return s.key === activeForm;
484
+ });
485
+ return /*#__PURE__*/ _jsxs(Page, {
486
+ title: "Multiple Forms Demo",
487
+ children: [
488
+ activeScenario && /*#__PURE__*/ _jsx(ContextualSaveBar, {
489
+ message: activeScenario.message,
490
+ saveAction: {
491
+ onAction: function() {
492
+ return handleSave(activeForm);
493
+ },
494
+ accessibilityLabel: "Save changes",
495
+ content: "Save changes"
496
+ },
497
+ discardAction: {
498
+ onAction: function() {
499
+ return handleDiscard(activeForm);
500
+ },
501
+ accessibilityLabel: "Discard changes",
502
+ content: "Discard changes"
503
+ }
504
+ }),
505
+ /*#__PURE__*/ _jsx(VerticalStack, {
506
+ gap: "8",
507
+ children: scenarios.map(function(scenario) {
508
+ return /*#__PURE__*/ _jsxs(Card, {
509
+ title: scenario.title,
510
+ padded: true,
511
+ children: [
512
+ /*#__PURE__*/ _jsx(VerticalStack, {
513
+ gap: "4",
514
+ children: scenario.fields.map(function(field) {
515
+ return /*#__PURE__*/ _jsx(Box, {
516
+ children: field.type === "checkbox" ? /*#__PURE__*/ _jsxs(HorizontalStack, {
517
+ gap: "2",
518
+ blockAlign: "center",
519
+ as: "label",
520
+ children: [
521
+ /*#__PURE__*/ _jsx("input", {
522
+ type: "checkbox",
523
+ checked: scenario.data[field.key],
524
+ onChange: function(e) {
525
+ scenario.setData(function(prev) {
526
+ return _object_spread_props(_object_spread({}, prev), _define_property({}, field.key, e.target.checked));
527
+ });
528
+ activateForm(scenario.key);
529
+ }
530
+ }),
531
+ /*#__PURE__*/ _jsx(Text, {
532
+ children: field.label
533
+ })
534
+ ]
535
+ }) : field.type === "select" ? /*#__PURE__*/ _jsxs(Box, {
536
+ children: [
537
+ /*#__PURE__*/ _jsx(Box, {
538
+ paddingBlockEnd: "2",
539
+ children: /*#__PURE__*/ _jsx(Text, {
540
+ variant: "bodySm",
541
+ children: field.label
542
+ })
543
+ }),
544
+ /*#__PURE__*/ _jsx("select", {
545
+ value: scenario.data[field.key],
546
+ onChange: function(e) {
547
+ scenario.setData(function(prev) {
548
+ return _object_spread_props(_object_spread({}, prev), _define_property({}, field.key, e.target.value));
549
+ });
550
+ activateForm(scenario.key);
551
+ },
552
+ style: {
553
+ padding: "0.5rem",
554
+ borderRadius: "4px",
555
+ border: "1px solid #ccc"
556
+ },
557
+ children: field.options.map(function(option) {
558
+ return /*#__PURE__*/ _jsx("option", {
559
+ value: option,
560
+ children: option.charAt(0).toUpperCase() + option.slice(1)
561
+ }, option);
562
+ })
563
+ })
564
+ ]
565
+ }) : /*#__PURE__*/ _jsx(TextField, {
566
+ label: field.label,
567
+ type: field.type,
568
+ value: scenario.data[field.key],
569
+ onChange: function(value) {
570
+ scenario.setData(function(prev) {
571
+ return _object_spread_props(_object_spread({}, prev), _define_property({}, field.key, value));
572
+ });
573
+ activateForm(scenario.key);
574
+ }
575
+ })
576
+ }, field.key);
577
+ })
578
+ }),
579
+ /*#__PURE__*/ _jsx(Box, {
580
+ paddingBlockStart: "4",
581
+ children: /*#__PURE__*/ _jsxs(Text, {
582
+ variant: "bodySm",
583
+ tone: "subdued",
584
+ children: [
585
+ 'Make changes to see: "',
586
+ scenario.message,
587
+ '"'
588
+ ]
589
+ })
590
+ })
591
+ ]
592
+ }, scenario.key);
593
+ })
594
+ })
595
+ ]
596
+ });
597
+ },
598
+ parameters: {
599
+ docs: {
600
+ source: {
601
+ transform: transformStorySource
602
+ },
603
+ description: {
604
+ story: "Different contextual save bars with custom messages for various forms."
605
+ }
606
+ }
607
+ }
608
+ };
609
+ export var LoadingStates = {
610
+ render: function() {
611
+ var _useState = _sliced_to_array(useState({
612
+ content: "Some content here"
613
+ }), 2), formData = _useState[0], setFormData = _useState[1];
614
+ var _useState1 = _sliced_to_array(useState(false), 2), saving = _useState1[0], setSaving = _useState1[1];
615
+ var _useState2 = _sliced_to_array(useState(false), 2), discarding = _useState2[0], setDiscarding = _useState2[1];
616
+ var _useState3 = _sliced_to_array(useState(false), 2), showSaveBar = _useState3[0], setShowSaveBar = _useState3[1];
617
+ var handleSave = function() {
618
+ return _async_to_generator(function() {
619
+ return _ts_generator(this, function(_state) {
620
+ switch(_state.label){
621
+ case 0:
622
+ setSaving(true);
623
+ return [
624
+ 4,
625
+ new Promise(function(resolve) {
626
+ return setTimeout(resolve, 2000);
627
+ })
628
+ ];
629
+ case 1:
630
+ _state.sent();
631
+ setSaving(false);
632
+ setShowSaveBar(false);
633
+ return [
634
+ 2
635
+ ];
636
+ }
637
+ });
638
+ })();
639
+ };
640
+ var handleDiscard = function() {
641
+ return _async_to_generator(function() {
642
+ return _ts_generator(this, function(_state) {
643
+ switch(_state.label){
644
+ case 0:
645
+ setDiscarding(true);
646
+ return [
647
+ 4,
648
+ new Promise(function(resolve) {
649
+ return setTimeout(resolve, 1000);
650
+ })
651
+ ];
652
+ case 1:
653
+ _state.sent();
654
+ setDiscarding(false);
655
+ setFormData({
656
+ content: "Some content here"
657
+ });
658
+ setShowSaveBar(false);
659
+ return [
660
+ 2
661
+ ];
662
+ }
663
+ });
664
+ })();
665
+ };
666
+ return /*#__PURE__*/ _jsxs(Page, {
667
+ title: "Loading States Demo",
668
+ children: [
669
+ showSaveBar && /*#__PURE__*/ _jsx(ContextualSaveBar, {
670
+ message: saving ? "Saving changes..." : discarding ? "Discarding changes..." : "Unsaved changes",
671
+ saveAction: {
672
+ onAction: handleSave,
673
+ loading: saving,
674
+ disabled: saving || discarding,
675
+ accessibilityLabel: saving ? "Saving in progress" : "Save changes",
676
+ content: saving ? "Saving..." : "Save changes"
677
+ },
678
+ discardAction: {
679
+ onAction: handleDiscard,
680
+ loading: discarding,
681
+ disabled: saving || discarding,
682
+ accessibilityLabel: discarding ? "Discarding in progress" : "Discard changes",
683
+ content: discarding ? "Discarding..." : "Discard changes"
684
+ }
685
+ }),
686
+ /*#__PURE__*/ _jsxs(Card, {
687
+ title: "Document Editor",
688
+ padded: true,
689
+ children: [
690
+ /*#__PURE__*/ _jsx(TextField, {
691
+ label: "Content",
692
+ value: formData.content,
693
+ onChange: function(value) {
694
+ setFormData({
695
+ content: value
696
+ });
697
+ setShowSaveBar(true);
698
+ },
699
+ multiline: 5
700
+ }),
701
+ /*#__PURE__*/ _jsxs(Box, {
702
+ paddingBlockStart: "8",
703
+ padding: "4",
704
+ background: "subdued",
705
+ borderRadius: "default",
706
+ children: [
707
+ /*#__PURE__*/ _jsx(Text, {
708
+ variant: "headingSm",
709
+ children: "Demo Controls"
710
+ }),
711
+ /*#__PURE__*/ _jsx(Box, {
712
+ paddingBlockStart: "2",
713
+ children: /*#__PURE__*/ _jsxs(HorizontalStack, {
714
+ gap: "4",
715
+ children: [
716
+ /*#__PURE__*/ _jsx(Button, {
717
+ onClick: function() {
718
+ return setShowSaveBar(true);
719
+ },
720
+ disabled: showSaveBar,
721
+ size: "slim",
722
+ children: "Show Save Bar"
723
+ }),
724
+ /*#__PURE__*/ _jsx(Button, {
725
+ onClick: function() {
726
+ return setShowSaveBar(false);
727
+ },
728
+ disabled: !showSaveBar,
729
+ size: "slim",
730
+ children: "Hide Save Bar"
731
+ })
732
+ ]
733
+ })
734
+ }),
735
+ /*#__PURE__*/ _jsx(Box, {
736
+ paddingBlockStart: "4",
737
+ children: /*#__PURE__*/ _jsxs(Text, {
738
+ variant: "bodySm",
739
+ children: [
740
+ "Status:",
741
+ " ",
742
+ saving ? "Saving..." : discarding ? "Discarding..." : showSaveBar ? "Changes pending" : "No changes"
743
+ ]
744
+ })
745
+ })
746
+ ]
747
+ })
748
+ ]
749
+ })
750
+ ]
751
+ });
752
+ },
753
+ parameters: {
754
+ docs: {
755
+ source: {
756
+ transform: transformStorySource
757
+ },
758
+ description: {
759
+ story: "Contextual save bar with loading states for save and discard actions."
760
+ }
761
+ }
762
+ }
763
+ };
764
+ export var DisabledActions = {
765
+ render: function() {
766
+ var _useState = _sliced_to_array(useState({
767
+ title: "",
768
+ content: "",
769
+ category: ""
770
+ }), 2), formData = _useState[0], setFormData = _useState[1];
771
+ var _useState1 = _sliced_to_array(useState(false), 2), showSaveBar = _useState1[0], setShowSaveBar = _useState1[1];
772
+ var isFormValid = formData.title.trim() && formData.content.trim() && formData.category;
773
+ var handleSave = function() {
774
+ if (isFormValid) {
775
+ alert("Form saved successfully!");
776
+ setShowSaveBar(false);
777
+ }
778
+ };
779
+ var handleDiscard = function() {
780
+ setFormData({
781
+ title: "",
782
+ content: "",
783
+ category: ""
784
+ });
785
+ setShowSaveBar(false);
786
+ };
787
+ var handleFieldChange = function(field, value) {
788
+ setFormData(function(prev) {
789
+ return _object_spread_props(_object_spread({}, prev), _define_property({}, field, value));
790
+ });
791
+ setShowSaveBar(true);
792
+ };
793
+ return /*#__PURE__*/ _jsxs(Page, {
794
+ title: "Form Validation Demo",
795
+ children: [
796
+ showSaveBar && /*#__PURE__*/ _jsx(ContextualSaveBar, {
797
+ message: isFormValid ? "Ready to save changes" : "Please complete all required fields before saving",
798
+ saveAction: {
799
+ onAction: handleSave,
800
+ disabled: !isFormValid,
801
+ accessibilityLabel: isFormValid ? "Save form" : "Cannot save - form incomplete",
802
+ content: isFormValid ? "Save form" : "Cannot save - form incomplete"
803
+ },
804
+ discardAction: {
805
+ onAction: handleDiscard,
806
+ accessibilityLabel: "Discard all changes",
807
+ content: "Discard all changes"
808
+ }
809
+ }),
810
+ /*#__PURE__*/ _jsx(Card, {
811
+ title: "Article Creation",
812
+ padded: true,
813
+ children: /*#__PURE__*/ _jsxs(VerticalStack, {
814
+ gap: "6",
815
+ children: [
816
+ /*#__PURE__*/ _jsx(TextField, {
817
+ label: "Title *",
818
+ value: formData.title,
819
+ onChange: function(value) {
820
+ return handleFieldChange("title", value);
821
+ },
822
+ error: showSaveBar && !formData.title.trim(),
823
+ placeholder: "Enter article title"
824
+ }),
825
+ /*#__PURE__*/ _jsxs(Box, {
826
+ children: [
827
+ /*#__PURE__*/ _jsx(Box, {
828
+ paddingBlockEnd: "2",
829
+ children: /*#__PURE__*/ _jsx(Text, {
830
+ variant: "bodySm",
831
+ children: "Category *"
832
+ })
833
+ }),
834
+ /*#__PURE__*/ _jsxs("select", {
835
+ value: formData.category,
836
+ onChange: function(e) {
837
+ return handleFieldChange("category", e.target.value);
838
+ },
839
+ style: {
840
+ width: "100%",
841
+ padding: "0.75rem",
842
+ borderRadius: "4px",
843
+ border: showSaveBar && !formData.category ? "1px solid #e74c3c" : "1px solid #ccc"
844
+ },
845
+ children: [
846
+ /*#__PURE__*/ _jsx("option", {
847
+ value: "",
848
+ children: "Select a category"
849
+ }),
850
+ /*#__PURE__*/ _jsx("option", {
851
+ value: "technology",
852
+ children: "Technology"
853
+ }),
854
+ /*#__PURE__*/ _jsx("option", {
855
+ value: "business",
856
+ children: "Business"
857
+ }),
858
+ /*#__PURE__*/ _jsx("option", {
859
+ value: "lifestyle",
860
+ children: "Lifestyle"
861
+ })
862
+ ]
863
+ })
864
+ ]
865
+ }),
866
+ /*#__PURE__*/ _jsx(TextField, {
867
+ label: "Content *",
868
+ value: formData.content,
869
+ onChange: function(value) {
870
+ return handleFieldChange("content", value);
871
+ },
872
+ error: showSaveBar && !formData.content.trim(),
873
+ multiline: 4,
874
+ placeholder: "Write your article content here..."
875
+ }),
876
+ /*#__PURE__*/ _jsxs(Box, {
877
+ padding: "4",
878
+ background: "subdued",
879
+ borderRadius: "default",
880
+ children: [
881
+ /*#__PURE__*/ _jsx(Text, {
882
+ variant: "headingSm",
883
+ children: "Validation Status"
884
+ }),
885
+ /*#__PURE__*/ _jsxs(Box, {
886
+ paddingBlockStart: "2",
887
+ children: [
888
+ /*#__PURE__*/ _jsxs(Text, {
889
+ variant: "bodySm",
890
+ style: {
891
+ color: formData.title.trim() ? "#27ae60" : "#e74c3c"
892
+ },
893
+ children: [
894
+ "Title: ",
895
+ formData.title.trim() ? "✓ Valid" : "✗ Required"
896
+ ]
897
+ }),
898
+ /*#__PURE__*/ _jsxs(Text, {
899
+ variant: "bodySm",
900
+ style: {
901
+ color: formData.category ? "#27ae60" : "#e74c3c"
902
+ },
903
+ children: [
904
+ "Category: ",
905
+ formData.category ? "✓ Selected" : "✗ Required"
906
+ ]
907
+ }),
908
+ /*#__PURE__*/ _jsxs(Text, {
909
+ variant: "bodySm",
910
+ style: {
911
+ color: formData.content.trim() ? "#27ae60" : "#e74c3c"
912
+ },
913
+ children: [
914
+ "Content: ",
915
+ formData.content.trim() ? "✓ Valid" : "✗ Required"
916
+ ]
917
+ })
918
+ ]
919
+ })
920
+ ]
921
+ })
922
+ ]
923
+ })
924
+ })
925
+ ]
926
+ });
927
+ },
928
+ parameters: {
929
+ docs: {
930
+ source: {
931
+ transform: transformStorySource
932
+ },
933
+ description: {
934
+ story: "Contextual save bar with disabled save action based on form validation."
935
+ }
936
+ }
937
+ }
938
+ };