@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,1315 @@
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 _array_without_holes(arr) {
10
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
11
+ }
12
+ function _define_property(obj, key, value) {
13
+ if (key in obj) {
14
+ Object.defineProperty(obj, key, {
15
+ value: value,
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true
19
+ });
20
+ } else {
21
+ obj[key] = value;
22
+ }
23
+ return obj;
24
+ }
25
+ function _iterable_to_array(iter) {
26
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
27
+ }
28
+ function _iterable_to_array_limit(arr, i) {
29
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
30
+ if (_i == null) return;
31
+ var _arr = [];
32
+ var _n = true;
33
+ var _d = false;
34
+ var _s, _e;
35
+ try {
36
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
37
+ _arr.push(_s.value);
38
+ if (i && _arr.length === i) break;
39
+ }
40
+ } catch (err) {
41
+ _d = true;
42
+ _e = err;
43
+ } finally{
44
+ try {
45
+ if (!_n && _i["return"] != null) _i["return"]();
46
+ } finally{
47
+ if (_d) throw _e;
48
+ }
49
+ }
50
+ return _arr;
51
+ }
52
+ function _non_iterable_rest() {
53
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
54
+ }
55
+ function _non_iterable_spread() {
56
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
57
+ }
58
+ function _object_spread(target) {
59
+ for(var i = 1; i < arguments.length; i++){
60
+ var source = arguments[i] != null ? arguments[i] : {};
61
+ var ownKeys = Object.keys(source);
62
+ if (typeof Object.getOwnPropertySymbols === "function") {
63
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
64
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
65
+ }));
66
+ }
67
+ ownKeys.forEach(function(key) {
68
+ _define_property(target, key, source[key]);
69
+ });
70
+ }
71
+ return target;
72
+ }
73
+ function ownKeys(object, enumerableOnly) {
74
+ var keys = Object.keys(object);
75
+ if (Object.getOwnPropertySymbols) {
76
+ var symbols = Object.getOwnPropertySymbols(object);
77
+ if (enumerableOnly) {
78
+ symbols = symbols.filter(function(sym) {
79
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
80
+ });
81
+ }
82
+ keys.push.apply(keys, symbols);
83
+ }
84
+ return keys;
85
+ }
86
+ function _object_spread_props(target, source) {
87
+ source = source != null ? source : {};
88
+ if (Object.getOwnPropertyDescriptors) {
89
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
90
+ } else {
91
+ ownKeys(Object(source)).forEach(function(key) {
92
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
93
+ });
94
+ }
95
+ return target;
96
+ }
97
+ function _sliced_to_array(arr, i) {
98
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
99
+ }
100
+ function _to_consumable_array(arr) {
101
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
102
+ }
103
+ function _unsupported_iterable_to_array(o, minLen) {
104
+ if (!o) return;
105
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
106
+ var n = Object.prototype.toString.call(o).slice(8, -1);
107
+ if (n === "Object" && o.constructor) n = o.constructor.name;
108
+ if (n === "Map" || n === "Set") return Array.from(n);
109
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
110
+ }
111
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
112
+ import { useState } from "react";
113
+ import Filters from "../components/Filters.js";
114
+ import Text from "../components/Text.js";
115
+ import Card from "../components/Card.js";
116
+ import Button from "../components/Button.js";
117
+ import Select from "../components/Select.js";
118
+ import Checkbox from "../components/Checkbox.js";
119
+ import RangeSlider from "../components/RangeSlider.js";
120
+ import VerticalStack from "../components/VerticalStack.js";
121
+ import HorizontalStack from "../components/HorizontalStack.js";
122
+ import Box from "../components/Box.js";
123
+ import { transformStorySource } from "../utilities/transformers.js";
124
+ export default {
125
+ title: 'Litho/Filters',
126
+ component: Filters,
127
+ parameters: {
128
+ layout: 'padded',
129
+ docs: {
130
+ description: {
131
+ component: "A comprehensive Filters component that manages filters for datasets. It includes visible filters, more filters dropdown, query text field, filter pills, and tabs for complex filtering scenarios."
132
+ }
133
+ }
134
+ },
135
+ tags: [
136
+ 'autodocs'
137
+ ],
138
+ argTypes: {
139
+ filters: {
140
+ control: 'object',
141
+ description: 'Array of available filters'
142
+ },
143
+ appliedFilters: {
144
+ control: 'object',
145
+ description: 'Array of currently applied filters'
146
+ },
147
+ showTextField: {
148
+ control: 'boolean',
149
+ description: 'Whether to show the query text field'
150
+ },
151
+ queryValue: {
152
+ control: 'text',
153
+ description: 'Current value of the query text field'
154
+ },
155
+ queryPlaceholder: {
156
+ control: 'text',
157
+ description: 'Placeholder text for the query field'
158
+ },
159
+ padded: {
160
+ control: 'boolean',
161
+ description: 'Whether to apply padding to the filters container'
162
+ }
163
+ }
164
+ };
165
+ export var Default = {
166
+ render: function() {
167
+ var _useState = _sliced_to_array(useState([]), 2), appliedFilters = _useState[0], setAppliedFilters = _useState[1];
168
+ var _useState1 = _sliced_to_array(useState(''), 2), status = _useState1[0], setStatus = _useState1[1];
169
+ var _useState2 = _sliced_to_array(useState(''), 2), category = _useState2[0], setCategory = _useState2[1];
170
+ var _useState3 = _sliced_to_array(useState([
171
+ 0,
172
+ 1000
173
+ ]), 2), priceRange = _useState3[0], setPriceRange = _useState3[1];
174
+ var filters = [
175
+ {
176
+ key: 'status',
177
+ label: 'Status',
178
+ shortcut: true,
179
+ filter: /*#__PURE__*/ _jsx(Select, {
180
+ label: "Status",
181
+ labelHidden: true,
182
+ options: [
183
+ {
184
+ label: 'All statuses',
185
+ value: ''
186
+ },
187
+ {
188
+ label: 'Active',
189
+ value: 'active'
190
+ },
191
+ {
192
+ label: 'Inactive',
193
+ value: 'inactive'
194
+ },
195
+ {
196
+ label: 'Pending',
197
+ value: 'pending'
198
+ }
199
+ ],
200
+ value: status,
201
+ onChange: function(value) {
202
+ setStatus(value);
203
+ updateAppliedFilters('status', value, value ? "Status: ".concat(value) : null);
204
+ }
205
+ })
206
+ },
207
+ {
208
+ key: 'category',
209
+ label: 'Category',
210
+ filter: /*#__PURE__*/ _jsx(Select, {
211
+ label: "Category",
212
+ labelHidden: true,
213
+ options: [
214
+ {
215
+ label: 'All categories',
216
+ value: ''
217
+ },
218
+ {
219
+ label: 'Electronics',
220
+ value: 'electronics'
221
+ },
222
+ {
223
+ label: 'Clothing',
224
+ value: 'clothing'
225
+ },
226
+ {
227
+ label: 'Books',
228
+ value: 'books'
229
+ },
230
+ {
231
+ label: 'Home & Garden',
232
+ value: 'home'
233
+ }
234
+ ],
235
+ value: category,
236
+ onChange: function(value) {
237
+ setCategory(value);
238
+ updateAppliedFilters('category', value, value ? "Category: ".concat(value) : null);
239
+ }
240
+ })
241
+ },
242
+ {
243
+ key: 'price',
244
+ label: 'Price Range',
245
+ filter: /*#__PURE__*/ _jsxs(VerticalStack, {
246
+ gap: "4",
247
+ children: [
248
+ /*#__PURE__*/ _jsxs(Text, {
249
+ variant: "bodySm",
250
+ children: [
251
+ "Price: $",
252
+ priceRange[0],
253
+ " - $",
254
+ priceRange[1]
255
+ ]
256
+ }),
257
+ /*#__PURE__*/ _jsx(RangeSlider, {
258
+ label: "Price Range",
259
+ labelHidden: true,
260
+ min: 0,
261
+ max: 1000,
262
+ value: priceRange,
263
+ onChange: function(value) {
264
+ setPriceRange(value);
265
+ updateAppliedFilters('price', value, "Price: $".concat(value[0], " - $").concat(value[1]));
266
+ }
267
+ })
268
+ ]
269
+ })
270
+ }
271
+ ];
272
+ var updateAppliedFilters = function(key, value, label) {
273
+ setAppliedFilters(function(prev) {
274
+ var filtered = prev.filter(function(f) {
275
+ return f.key !== key;
276
+ });
277
+ if (value && (Array.isArray(value) && value.some(function(v) {
278
+ return v !== 0 && v !== 1000;
279
+ }) || !Array.isArray(value) && value !== '')) {
280
+ return _to_consumable_array(filtered).concat([
281
+ {
282
+ key: key,
283
+ label: label,
284
+ onRemove: function() {
285
+ if (key === 'status') setStatus('');
286
+ if (key === 'category') setCategory('');
287
+ if (key === 'price') setPriceRange([
288
+ 0,
289
+ 1000
290
+ ]);
291
+ setAppliedFilters(function(prev) {
292
+ return prev.filter(function(f) {
293
+ return f.key !== key;
294
+ });
295
+ });
296
+ }
297
+ }
298
+ ]);
299
+ }
300
+ return filtered;
301
+ });
302
+ };
303
+ var handleClearAll = function() {
304
+ setStatus('');
305
+ setCategory('');
306
+ setPriceRange([
307
+ 0,
308
+ 1000
309
+ ]);
310
+ setAppliedFilters([]);
311
+ };
312
+ return /*#__PURE__*/ _jsxs(Card, {
313
+ title: "Product Filters",
314
+ padded: true,
315
+ children: [
316
+ /*#__PURE__*/ _jsx(Filters, {
317
+ filters: filters,
318
+ appliedFilters: appliedFilters,
319
+ onClearAll: handleClearAll
320
+ }),
321
+ /*#__PURE__*/ _jsx(Box, {
322
+ marginBlockStart: "8",
323
+ padding: "4",
324
+ background: "subdued",
325
+ borderRadius: "default",
326
+ children: /*#__PURE__*/ _jsxs(VerticalStack, {
327
+ gap: "2",
328
+ children: [
329
+ /*#__PURE__*/ _jsx(Text, {
330
+ variant: "headingSm",
331
+ children: "Current Filters:"
332
+ }),
333
+ appliedFilters.length > 0 ? /*#__PURE__*/ _jsx(VerticalStack, {
334
+ gap: "1",
335
+ children: appliedFilters.map(function(filter) {
336
+ return /*#__PURE__*/ _jsxs(Text, {
337
+ variant: "bodyXs",
338
+ children: [
339
+ "• ",
340
+ filter.label
341
+ ]
342
+ }, filter.key);
343
+ })
344
+ }) : /*#__PURE__*/ _jsx(Text, {
345
+ variant: "bodyXs",
346
+ color: "subdued",
347
+ children: "No filters applied"
348
+ })
349
+ ]
350
+ })
351
+ })
352
+ ]
353
+ });
354
+ },
355
+ parameters: {
356
+ docs: {
357
+ description: {
358
+ story: 'Basic filters with status, category, and price range options.'
359
+ },
360
+ source: {
361
+ transform: transformStorySource
362
+ }
363
+ }
364
+ }
365
+ };
366
+ export var WithSearchField = {
367
+ render: function() {
368
+ var _useState = _sliced_to_array(useState([]), 2), appliedFilters = _useState[0], setAppliedFilters = _useState[1];
369
+ var _useState1 = _sliced_to_array(useState(''), 2), queryValue = _useState1[0], setQueryValue = _useState1[1];
370
+ var _useState2 = _sliced_to_array(useState([]), 2), selectedTags = _useState2[0], setSelectedTags = _useState2[1];
371
+ var _useState3 = _sliced_to_array(useState([]), 2), selectedAuthors = _useState3[0], setSelectedAuthors = _useState3[1];
372
+ var availableTags = [
373
+ 'React',
374
+ 'JavaScript',
375
+ 'CSS',
376
+ 'Node.js',
377
+ 'TypeScript',
378
+ 'GraphQL'
379
+ ];
380
+ var availableAuthors = [
381
+ 'John Doe',
382
+ 'Jane Smith',
383
+ 'Bob Wilson',
384
+ 'Alice Brown'
385
+ ];
386
+ var filters = [
387
+ {
388
+ key: 'tags',
389
+ label: 'Tags',
390
+ shortcut: true,
391
+ filter: /*#__PURE__*/ _jsx(VerticalStack, {
392
+ gap: "2",
393
+ children: availableTags.map(function(tag) {
394
+ return /*#__PURE__*/ _jsx(Checkbox, {
395
+ label: tag,
396
+ checked: selectedTags.includes(tag),
397
+ onChange: function(checked) {
398
+ var newTags = checked ? _to_consumable_array(selectedTags).concat([
399
+ tag
400
+ ]) : selectedTags.filter(function(t) {
401
+ return t !== tag;
402
+ });
403
+ setSelectedTags(newTags);
404
+ updateAppliedFilters('tags', newTags, newTags.length > 0 ? "Tags: ".concat(newTags.join(', ')) : null);
405
+ }
406
+ }, tag);
407
+ })
408
+ })
409
+ },
410
+ {
411
+ key: 'authors',
412
+ label: 'Authors',
413
+ filter: /*#__PURE__*/ _jsx(VerticalStack, {
414
+ gap: "2",
415
+ children: availableAuthors.map(function(author) {
416
+ return /*#__PURE__*/ _jsx(Checkbox, {
417
+ label: author,
418
+ checked: selectedAuthors.includes(author),
419
+ onChange: function(checked) {
420
+ var newAuthors = checked ? _to_consumable_array(selectedAuthors).concat([
421
+ author
422
+ ]) : selectedAuthors.filter(function(a) {
423
+ return a !== author;
424
+ });
425
+ setSelectedAuthors(newAuthors);
426
+ updateAppliedFilters('authors', newAuthors, newAuthors.length > 0 ? "Authors: ".concat(newAuthors.join(', ')) : null);
427
+ }
428
+ }, author);
429
+ })
430
+ })
431
+ }
432
+ ];
433
+ var updateAppliedFilters = function(key, value, label) {
434
+ setAppliedFilters(function(prev) {
435
+ var filtered = prev.filter(function(f) {
436
+ return f.key !== key;
437
+ });
438
+ if (value && Array.isArray(value) && value.length > 0) {
439
+ return _to_consumable_array(filtered).concat([
440
+ {
441
+ key: key,
442
+ label: label,
443
+ onRemove: function() {
444
+ if (key === 'tags') setSelectedTags([]);
445
+ if (key === 'authors') setSelectedAuthors([]);
446
+ setAppliedFilters(function(prev) {
447
+ return prev.filter(function(f) {
448
+ return f.key !== key;
449
+ });
450
+ });
451
+ }
452
+ }
453
+ ]);
454
+ }
455
+ return filtered;
456
+ });
457
+ };
458
+ var handleClearAll = function() {
459
+ setSelectedTags([]);
460
+ setSelectedAuthors([]);
461
+ setAppliedFilters([]);
462
+ };
463
+ return /*#__PURE__*/ _jsxs(Card, {
464
+ title: "Article Search & Filters",
465
+ padded: true,
466
+ children: [
467
+ /*#__PURE__*/ _jsx(Filters, {
468
+ filters: filters,
469
+ appliedFilters: appliedFilters,
470
+ onClearAll: handleClearAll,
471
+ showTextField: true,
472
+ queryValue: queryValue,
473
+ onQueryChange: setQueryValue,
474
+ onQueryClear: function() {
475
+ return setQueryValue('');
476
+ },
477
+ queryPlaceholder: "Search articles..."
478
+ }),
479
+ /*#__PURE__*/ _jsx(Box, {
480
+ marginBlockStart: "8",
481
+ padding: "4",
482
+ background: "subdued",
483
+ borderRadius: "default",
484
+ children: /*#__PURE__*/ _jsxs(VerticalStack, {
485
+ gap: "2",
486
+ children: [
487
+ /*#__PURE__*/ _jsx(Text, {
488
+ variant: "headingSm",
489
+ children: "Search & Filter Summary:"
490
+ }),
491
+ /*#__PURE__*/ _jsxs(VerticalStack, {
492
+ gap: "1",
493
+ children: [
494
+ /*#__PURE__*/ _jsxs(Text, {
495
+ variant: "bodyXs",
496
+ children: [
497
+ "Search Query: ",
498
+ queryValue || 'None'
499
+ ]
500
+ }),
501
+ /*#__PURE__*/ _jsxs(Text, {
502
+ variant: "bodyXs",
503
+ children: [
504
+ "Active Filters: ",
505
+ appliedFilters.length
506
+ ]
507
+ }),
508
+ appliedFilters.map(function(filter) {
509
+ return /*#__PURE__*/ _jsxs(Text, {
510
+ variant: "bodyXs",
511
+ style: {
512
+ marginLeft: '1rem'
513
+ },
514
+ children: [
515
+ "• ",
516
+ filter.label
517
+ ]
518
+ }, filter.key);
519
+ })
520
+ ]
521
+ })
522
+ ]
523
+ })
524
+ })
525
+ ]
526
+ });
527
+ },
528
+ parameters: {
529
+ docs: {
530
+ description: {
531
+ story: 'Filters with search text field for comprehensive filtering.'
532
+ },
533
+ source: {
534
+ transform: transformStorySource
535
+ }
536
+ }
537
+ }
538
+ };
539
+ export var FilterTabs = {
540
+ render: function() {
541
+ var _tabs_selectedTab, _tabs_selectedTab_accessory_props, _tabs_selectedTab_accessory, _tabs_selectedTab1;
542
+ var _useState = _sliced_to_array(useState(0), 2), selectedTab = _useState[0], setSelectedTab = _useState[1];
543
+ var _useState1 = _sliced_to_array(useState([]), 2), appliedFilters = _useState1[0], setAppliedFilters = _useState1[1];
544
+ var tabs = [
545
+ {
546
+ id: 'all',
547
+ content: 'All Items',
548
+ accessory: /*#__PURE__*/ _jsx(Text, {
549
+ variant: "bodySm",
550
+ color: "subdued",
551
+ children: "245 items"
552
+ })
553
+ },
554
+ {
555
+ id: 'active',
556
+ content: 'Active',
557
+ accessory: /*#__PURE__*/ _jsx(Text, {
558
+ variant: "bodySm",
559
+ color: "subdued",
560
+ children: "128 items"
561
+ })
562
+ },
563
+ {
564
+ id: 'inactive',
565
+ content: 'Inactive',
566
+ accessory: /*#__PURE__*/ _jsx(Text, {
567
+ variant: "bodySm",
568
+ color: "subdued",
569
+ children: "89 items"
570
+ })
571
+ },
572
+ {
573
+ id: 'pending',
574
+ content: 'Pending Review',
575
+ accessory: /*#__PURE__*/ _jsx(Text, {
576
+ variant: "bodySm",
577
+ color: "subdued",
578
+ children: "28 items"
579
+ })
580
+ },
581
+ {
582
+ id: 'draft',
583
+ content: 'Draft',
584
+ accessory: /*#__PURE__*/ _jsx(Text, {
585
+ variant: "bodySm",
586
+ color: "subdued",
587
+ children: "15 items"
588
+ })
589
+ },
590
+ {
591
+ id: 'archived',
592
+ content: 'Archived',
593
+ accessory: /*#__PURE__*/ _jsx(Text, {
594
+ variant: "bodySm",
595
+ color: "subdued",
596
+ children: "67 items"
597
+ })
598
+ }
599
+ ];
600
+ return /*#__PURE__*/ _jsxs(Card, {
601
+ title: "Status Filters with Tabs",
602
+ padded: true,
603
+ children: [
604
+ /*#__PURE__*/ _jsx(Filters.Tabs, {
605
+ tabs: tabs,
606
+ selected: selectedTab,
607
+ onSelect: setSelectedTab
608
+ }),
609
+ /*#__PURE__*/ _jsx(Box, {
610
+ marginBlockStart: "8",
611
+ padding: "4",
612
+ background: "subdued",
613
+ borderRadius: "default",
614
+ children: /*#__PURE__*/ _jsxs(VerticalStack, {
615
+ gap: "2",
616
+ children: [
617
+ /*#__PURE__*/ _jsx(Text, {
618
+ variant: "headingSm",
619
+ children: "Selected Tab:"
620
+ }),
621
+ /*#__PURE__*/ _jsxs(Text, {
622
+ variant: "bodyXs",
623
+ children: [
624
+ (_tabs_selectedTab = tabs[selectedTab]) === null || _tabs_selectedTab === void 0 ? void 0 : _tabs_selectedTab.content,
625
+ " - ",
626
+ (_tabs_selectedTab1 = tabs[selectedTab]) === null || _tabs_selectedTab1 === void 0 ? void 0 : (_tabs_selectedTab_accessory = _tabs_selectedTab1.accessory) === null || _tabs_selectedTab_accessory === void 0 ? void 0 : (_tabs_selectedTab_accessory_props = _tabs_selectedTab_accessory.props) === null || _tabs_selectedTab_accessory_props === void 0 ? void 0 : _tabs_selectedTab_accessory_props.children
627
+ ]
628
+ })
629
+ ]
630
+ })
631
+ })
632
+ ]
633
+ });
634
+ },
635
+ parameters: {
636
+ docs: {
637
+ description: {
638
+ story: 'Filter tabs for quick status-based filtering with item counts.'
639
+ },
640
+ source: {
641
+ transform: transformStorySource
642
+ }
643
+ }
644
+ }
645
+ };
646
+ export var ComplexFiltering = {
647
+ render: function() {
648
+ var _tabs_selectedTab;
649
+ var _useState = _sliced_to_array(useState([]), 2), appliedFilters = _useState[0], setAppliedFilters = _useState[1];
650
+ var _useState1 = _sliced_to_array(useState(''), 2), queryValue = _useState1[0], setQueryValue = _useState1[1];
651
+ var _useState2 = _sliced_to_array(useState(0), 2), selectedTab = _useState2[0], setSelectedTab = _useState2[1];
652
+ var _useState3 = _sliced_to_array(useState([
653
+ 0,
654
+ 500
655
+ ]), 2), priceRange = _useState3[0], setPriceRange = _useState3[1];
656
+ var _useState4 = _sliced_to_array(useState([]), 2), selectedBrands = _useState4[0], setSelectedBrands = _useState4[1];
657
+ var _useState5 = _sliced_to_array(useState([]), 2), selectedColors = _useState5[0], setSelectedColors = _useState5[1];
658
+ var _useState6 = _sliced_to_array(useState(''), 2), availability = _useState6[0], setAvailability = _useState6[1];
659
+ var _useState7 = _sliced_to_array(useState(''), 2), rating = _useState7[0], setRating = _useState7[1];
660
+ var availableBrands = [
661
+ 'Apple',
662
+ 'Samsung',
663
+ 'Google',
664
+ 'OnePlus',
665
+ 'Xiaomi'
666
+ ];
667
+ var availableColors = [
668
+ 'Black',
669
+ 'White',
670
+ 'Blue',
671
+ 'Red',
672
+ 'Gold'
673
+ ];
674
+ var tabs = [
675
+ {
676
+ id: 'all',
677
+ content: 'All Products',
678
+ accessory: /*#__PURE__*/ _jsx(Text, {
679
+ variant: "bodySm",
680
+ color: "subdued",
681
+ children: "1,234"
682
+ })
683
+ },
684
+ {
685
+ id: 'phones',
686
+ content: 'Phones',
687
+ accessory: /*#__PURE__*/ _jsx(Text, {
688
+ variant: "bodySm",
689
+ color: "subdued",
690
+ children: "456"
691
+ })
692
+ },
693
+ {
694
+ id: 'tablets',
695
+ content: 'Tablets',
696
+ accessory: /*#__PURE__*/ _jsx(Text, {
697
+ variant: "bodySm",
698
+ color: "subdued",
699
+ children: "123"
700
+ })
701
+ },
702
+ {
703
+ id: 'accessories',
704
+ content: 'Accessories',
705
+ accessory: /*#__PURE__*/ _jsx(Text, {
706
+ variant: "bodySm",
707
+ color: "subdued",
708
+ children: "655"
709
+ })
710
+ }
711
+ ];
712
+ var filters = [
713
+ {
714
+ key: 'price',
715
+ label: 'Price Range',
716
+ shortcut: true,
717
+ filter: /*#__PURE__*/ _jsxs(VerticalStack, {
718
+ gap: "4",
719
+ children: [
720
+ /*#__PURE__*/ _jsxs(Text, {
721
+ variant: "bodySm",
722
+ children: [
723
+ "$",
724
+ priceRange[0],
725
+ " - $",
726
+ priceRange[1]
727
+ ]
728
+ }),
729
+ /*#__PURE__*/ _jsx(RangeSlider, {
730
+ label: "Price Range",
731
+ labelHidden: true,
732
+ min: 0,
733
+ max: 500,
734
+ value: priceRange,
735
+ onChange: function(value) {
736
+ setPriceRange(value);
737
+ updateAppliedFilters('price', value, "Price: $".concat(value[0], " - $").concat(value[1]));
738
+ }
739
+ })
740
+ ]
741
+ })
742
+ },
743
+ {
744
+ key: 'brand',
745
+ label: 'Brand',
746
+ shortcut: true,
747
+ filter: /*#__PURE__*/ _jsx(VerticalStack, {
748
+ gap: "2",
749
+ children: availableBrands.map(function(brand) {
750
+ return /*#__PURE__*/ _jsx(Checkbox, {
751
+ label: brand,
752
+ checked: selectedBrands.includes(brand),
753
+ onChange: function(checked) {
754
+ var newBrands = checked ? _to_consumable_array(selectedBrands).concat([
755
+ brand
756
+ ]) : selectedBrands.filter(function(b) {
757
+ return b !== brand;
758
+ });
759
+ setSelectedBrands(newBrands);
760
+ updateAppliedFilters('brand', newBrands, newBrands.length > 0 ? "Brand: ".concat(newBrands.join(', ')) : null);
761
+ }
762
+ }, brand);
763
+ })
764
+ })
765
+ },
766
+ {
767
+ key: 'color',
768
+ label: 'Color',
769
+ filter: /*#__PURE__*/ _jsx(VerticalStack, {
770
+ gap: "2",
771
+ children: availableColors.map(function(color) {
772
+ return /*#__PURE__*/ _jsx(Checkbox, {
773
+ label: color,
774
+ checked: selectedColors.includes(color),
775
+ onChange: function(checked) {
776
+ var newColors = checked ? _to_consumable_array(selectedColors).concat([
777
+ color
778
+ ]) : selectedColors.filter(function(c) {
779
+ return c !== color;
780
+ });
781
+ setSelectedColors(newColors);
782
+ updateAppliedFilters('color', newColors, newColors.length > 0 ? "Color: ".concat(newColors.join(', ')) : null);
783
+ }
784
+ }, color);
785
+ })
786
+ })
787
+ },
788
+ {
789
+ key: 'availability',
790
+ label: 'Availability',
791
+ filter: /*#__PURE__*/ _jsx(Select, {
792
+ label: "Availability",
793
+ labelHidden: true,
794
+ options: [
795
+ {
796
+ label: 'All items',
797
+ value: ''
798
+ },
799
+ {
800
+ label: 'In stock',
801
+ value: 'in-stock'
802
+ },
803
+ {
804
+ label: 'Out of stock',
805
+ value: 'out-of-stock'
806
+ },
807
+ {
808
+ label: 'Pre-order',
809
+ value: 'pre-order'
810
+ }
811
+ ],
812
+ value: availability,
813
+ onChange: function(value) {
814
+ setAvailability(value);
815
+ updateAppliedFilters('availability', value, value ? "Availability: ".concat(value) : null);
816
+ }
817
+ })
818
+ },
819
+ {
820
+ key: 'rating',
821
+ label: 'Customer Rating',
822
+ filter: /*#__PURE__*/ _jsx(Select, {
823
+ label: "Rating",
824
+ labelHidden: true,
825
+ options: [
826
+ {
827
+ label: 'All ratings',
828
+ value: ''
829
+ },
830
+ {
831
+ label: '4+ stars',
832
+ value: '4+'
833
+ },
834
+ {
835
+ label: '3+ stars',
836
+ value: '3+'
837
+ },
838
+ {
839
+ label: '2+ stars',
840
+ value: '2+'
841
+ }
842
+ ],
843
+ value: rating,
844
+ onChange: function(value) {
845
+ setRating(value);
846
+ updateAppliedFilters('rating', value, value ? "Rating: ".concat(value, " stars") : null);
847
+ }
848
+ })
849
+ }
850
+ ];
851
+ var updateAppliedFilters = function(key, value, label) {
852
+ setAppliedFilters(function(prev) {
853
+ var filtered = prev.filter(function(f) {
854
+ return f.key !== key;
855
+ });
856
+ if (value && (Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value !== '' && !(Array.isArray(value) && value[0] === 0 && value[1] === 500))) {
857
+ return _to_consumable_array(filtered).concat([
858
+ {
859
+ key: key,
860
+ label: label,
861
+ onRemove: function() {
862
+ if (key === 'price') setPriceRange([
863
+ 0,
864
+ 500
865
+ ]);
866
+ if (key === 'brand') setSelectedBrands([]);
867
+ if (key === 'color') setSelectedColors([]);
868
+ if (key === 'availability') setAvailability('');
869
+ if (key === 'rating') setRating('');
870
+ setAppliedFilters(function(prev) {
871
+ return prev.filter(function(f) {
872
+ return f.key !== key;
873
+ });
874
+ });
875
+ }
876
+ }
877
+ ]);
878
+ }
879
+ return filtered;
880
+ });
881
+ };
882
+ var handleClearAll = function() {
883
+ setPriceRange([
884
+ 0,
885
+ 500
886
+ ]);
887
+ setSelectedBrands([]);
888
+ setSelectedColors([]);
889
+ setAvailability('');
890
+ setRating('');
891
+ setAppliedFilters([]);
892
+ };
893
+ return /*#__PURE__*/ _jsxs(VerticalStack, {
894
+ gap: "4",
895
+ children: [
896
+ /*#__PURE__*/ _jsx(Card, {
897
+ title: "Product Category",
898
+ padded: true,
899
+ children: /*#__PURE__*/ _jsx(Filters.Tabs, {
900
+ tabs: tabs,
901
+ selected: selectedTab,
902
+ onSelect: setSelectedTab
903
+ })
904
+ }),
905
+ /*#__PURE__*/ _jsx(Card, {
906
+ title: "Search & Filters",
907
+ padded: true,
908
+ children: /*#__PURE__*/ _jsx(Filters, {
909
+ filters: filters,
910
+ appliedFilters: appliedFilters,
911
+ onClearAll: handleClearAll,
912
+ showTextField: true,
913
+ queryValue: queryValue,
914
+ onQueryChange: setQueryValue,
915
+ onQueryClear: function() {
916
+ return setQueryValue('');
917
+ },
918
+ queryPlaceholder: "Search products..."
919
+ })
920
+ }),
921
+ /*#__PURE__*/ _jsx(Card, {
922
+ title: "Results Summary",
923
+ padded: true,
924
+ children: /*#__PURE__*/ _jsxs(VerticalStack, {
925
+ gap: "4",
926
+ children: [
927
+ /*#__PURE__*/ _jsxs(HorizontalStack, {
928
+ gap: "8",
929
+ children: [
930
+ /*#__PURE__*/ _jsxs(VerticalStack, {
931
+ gap: "2",
932
+ children: [
933
+ /*#__PURE__*/ _jsx(Text, {
934
+ variant: "headingSm",
935
+ children: "Category:"
936
+ }),
937
+ /*#__PURE__*/ _jsx(Text, {
938
+ variant: "bodyXs",
939
+ children: (_tabs_selectedTab = tabs[selectedTab]) === null || _tabs_selectedTab === void 0 ? void 0 : _tabs_selectedTab.content
940
+ })
941
+ ]
942
+ }),
943
+ /*#__PURE__*/ _jsxs(VerticalStack, {
944
+ gap: "2",
945
+ children: [
946
+ /*#__PURE__*/ _jsx(Text, {
947
+ variant: "headingSm",
948
+ children: "Search Query:"
949
+ }),
950
+ /*#__PURE__*/ _jsx(Text, {
951
+ variant: "bodyXs",
952
+ children: queryValue || 'None'
953
+ })
954
+ ]
955
+ })
956
+ ]
957
+ }),
958
+ appliedFilters.length > 0 && /*#__PURE__*/ _jsxs(VerticalStack, {
959
+ gap: "2",
960
+ children: [
961
+ /*#__PURE__*/ _jsxs(Text, {
962
+ variant: "headingSm",
963
+ children: [
964
+ "Active Filters (",
965
+ appliedFilters.length,
966
+ "):"
967
+ ]
968
+ }),
969
+ /*#__PURE__*/ _jsx(VerticalStack, {
970
+ gap: "1",
971
+ children: appliedFilters.map(function(filter) {
972
+ return /*#__PURE__*/ _jsxs(Text, {
973
+ variant: "bodyXs",
974
+ children: [
975
+ "• ",
976
+ filter.label
977
+ ]
978
+ }, filter.key);
979
+ })
980
+ })
981
+ ]
982
+ })
983
+ ]
984
+ })
985
+ })
986
+ ]
987
+ });
988
+ },
989
+ parameters: {
990
+ docs: {
991
+ description: {
992
+ story: 'Complex filtering scenario with tabs, search, and multiple filter types for e-commerce.'
993
+ },
994
+ source: {
995
+ transform: transformStorySource
996
+ }
997
+ }
998
+ }
999
+ };
1000
+ export var FilterPills = {
1001
+ render: function() {
1002
+ var _useState = _sliced_to_array(useState({
1003
+ new: false,
1004
+ popular: false,
1005
+ sale: false,
1006
+ featured: false
1007
+ }), 2), pillStates = _useState[0], setPillStates = _useState[1];
1008
+ var togglePill = function(key) {
1009
+ setPillStates(function(prev) {
1010
+ return _object_spread_props(_object_spread({}, prev), _define_property({}, key, !prev[key]));
1011
+ });
1012
+ };
1013
+ return /*#__PURE__*/ _jsx(Card, {
1014
+ title: "Filter Pills Demo",
1015
+ padded: true,
1016
+ children: /*#__PURE__*/ _jsxs(VerticalStack, {
1017
+ gap: "8",
1018
+ children: [
1019
+ /*#__PURE__*/ _jsxs(VerticalStack, {
1020
+ gap: "4",
1021
+ children: [
1022
+ /*#__PURE__*/ _jsx(Text, {
1023
+ variant: "headingSm",
1024
+ children: "Interactive Pills"
1025
+ }),
1026
+ /*#__PURE__*/ _jsxs(HorizontalStack, {
1027
+ gap: "2",
1028
+ wrap: true,
1029
+ children: [
1030
+ /*#__PURE__*/ _jsx(Filters.Pill, {
1031
+ label: "New Arrivals",
1032
+ applied: pillStates.new,
1033
+ onClick: function() {
1034
+ return togglePill('new');
1035
+ }
1036
+ }),
1037
+ /*#__PURE__*/ _jsx(Filters.Pill, {
1038
+ label: "Popular",
1039
+ applied: pillStates.popular,
1040
+ onClick: function() {
1041
+ return togglePill('popular');
1042
+ }
1043
+ }),
1044
+ /*#__PURE__*/ _jsx(Filters.Pill, {
1045
+ label: "On Sale",
1046
+ applied: pillStates.sale,
1047
+ onClick: function() {
1048
+ return togglePill('sale');
1049
+ }
1050
+ }),
1051
+ /*#__PURE__*/ _jsx(Filters.Pill, {
1052
+ label: "Featured",
1053
+ applied: pillStates.featured,
1054
+ onClick: function() {
1055
+ return togglePill('featured');
1056
+ }
1057
+ })
1058
+ ]
1059
+ })
1060
+ ]
1061
+ }),
1062
+ /*#__PURE__*/ _jsxs(VerticalStack, {
1063
+ gap: "4",
1064
+ children: [
1065
+ /*#__PURE__*/ _jsx(Text, {
1066
+ variant: "headingSm",
1067
+ children: "Pill States"
1068
+ }),
1069
+ /*#__PURE__*/ _jsxs(HorizontalStack, {
1070
+ gap: "2",
1071
+ wrap: true,
1072
+ children: [
1073
+ /*#__PURE__*/ _jsx(Filters.Pill, {
1074
+ label: "Available",
1075
+ applied: false
1076
+ }),
1077
+ /*#__PURE__*/ _jsx(Filters.Pill, {
1078
+ label: "Applied",
1079
+ applied: true
1080
+ }),
1081
+ /*#__PURE__*/ _jsx(Filters.Pill, {
1082
+ label: "Disabled",
1083
+ applied: false,
1084
+ disabled: true
1085
+ }),
1086
+ /*#__PURE__*/ _jsx(Filters.Pill, {
1087
+ destructive: true
1088
+ })
1089
+ ]
1090
+ })
1091
+ ]
1092
+ }),
1093
+ /*#__PURE__*/ _jsx(Box, {
1094
+ padding: "4",
1095
+ background: "subdued",
1096
+ borderRadius: "default",
1097
+ children: /*#__PURE__*/ _jsxs(VerticalStack, {
1098
+ gap: "2",
1099
+ children: [
1100
+ /*#__PURE__*/ _jsx(Text, {
1101
+ variant: "headingSm",
1102
+ children: "Current Selection:"
1103
+ }),
1104
+ /*#__PURE__*/ _jsxs(VerticalStack, {
1105
+ gap: "1",
1106
+ children: [
1107
+ Object.entries(pillStates).filter(function(param) {
1108
+ var _param = _sliced_to_array(param, 2), _ = _param[0], applied = _param[1];
1109
+ return applied;
1110
+ }).map(function(param) {
1111
+ var _param = _sliced_to_array(param, 2), key = _param[0], _ = _param[1];
1112
+ return /*#__PURE__*/ _jsxs(Text, {
1113
+ variant: "bodyXs",
1114
+ children: [
1115
+ "• ",
1116
+ key.charAt(0).toUpperCase() + key.slice(1)
1117
+ ]
1118
+ }, key);
1119
+ }),
1120
+ Object.values(pillStates).every(function(v) {
1121
+ return !v;
1122
+ }) && /*#__PURE__*/ _jsx(Text, {
1123
+ color: "subdued",
1124
+ variant: "bodyXs",
1125
+ children: "No filters selected"
1126
+ })
1127
+ ]
1128
+ })
1129
+ ]
1130
+ })
1131
+ })
1132
+ ]
1133
+ })
1134
+ });
1135
+ },
1136
+ parameters: {
1137
+ docs: {
1138
+ description: {
1139
+ story: 'Standalone filter pills in various states and configurations.'
1140
+ },
1141
+ source: {
1142
+ transform: transformStorySource
1143
+ }
1144
+ }
1145
+ }
1146
+ };
1147
+ export var ResponsiveBehavior = {
1148
+ render: function() {
1149
+ var _useState = _sliced_to_array(useState([]), 2), appliedFilters = _useState[0], setAppliedFilters = _useState[1];
1150
+ var _useState1 = _sliced_to_array(useState(''), 2), queryValue = _useState1[0], setQueryValue = _useState1[1];
1151
+ var _useState2 = _sliced_to_array(useState(0), 2), selectedTab = _useState2[0], setSelectedTab = _useState2[1];
1152
+ var longTabs = [
1153
+ {
1154
+ id: '1',
1155
+ content: 'All Products & Services'
1156
+ },
1157
+ {
1158
+ id: '2',
1159
+ content: 'Electronics & Gadgets'
1160
+ },
1161
+ {
1162
+ id: '3',
1163
+ content: 'Fashion & Accessories'
1164
+ },
1165
+ {
1166
+ id: '4',
1167
+ content: 'Home & Garden Supplies'
1168
+ },
1169
+ {
1170
+ id: '5',
1171
+ content: 'Sports & Outdoor Equipment'
1172
+ },
1173
+ {
1174
+ id: '6',
1175
+ content: 'Books & Educational Materials'
1176
+ },
1177
+ {
1178
+ id: '7',
1179
+ content: 'Health & Beauty Products'
1180
+ },
1181
+ {
1182
+ id: '8',
1183
+ content: 'Automotive & Transportation'
1184
+ }
1185
+ ];
1186
+ var filters = [
1187
+ {
1188
+ key: 'featured',
1189
+ label: 'Featured',
1190
+ shortcut: true,
1191
+ filter: /*#__PURE__*/ _jsx("div", {
1192
+ children: "Featured filter content"
1193
+ })
1194
+ },
1195
+ {
1196
+ key: 'bestseller',
1197
+ label: 'Best Sellers',
1198
+ shortcut: true,
1199
+ filter: /*#__PURE__*/ _jsx("div", {
1200
+ children: "Best sellers filter content"
1201
+ })
1202
+ },
1203
+ {
1204
+ key: 'price',
1205
+ label: 'Price Range',
1206
+ filter: /*#__PURE__*/ _jsx("div", {
1207
+ children: "Price range filter content"
1208
+ })
1209
+ },
1210
+ {
1211
+ key: 'brand',
1212
+ label: 'Brand',
1213
+ filter: /*#__PURE__*/ _jsx("div", {
1214
+ children: "Brand filter content"
1215
+ })
1216
+ },
1217
+ {
1218
+ key: 'rating',
1219
+ label: 'Customer Rating',
1220
+ filter: /*#__PURE__*/ _jsx("div", {
1221
+ children: "Rating filter content"
1222
+ })
1223
+ },
1224
+ {
1225
+ key: 'shipping',
1226
+ label: 'Shipping Options',
1227
+ filter: /*#__PURE__*/ _jsx("div", {
1228
+ children: "Shipping filter content"
1229
+ })
1230
+ }
1231
+ ];
1232
+ return /*#__PURE__*/ _jsxs(VerticalStack, {
1233
+ gap: "4",
1234
+ children: [
1235
+ /*#__PURE__*/ _jsx(Card, {
1236
+ title: "Responsive Filter Tabs",
1237
+ padded: true,
1238
+ children: /*#__PURE__*/ _jsxs(VerticalStack, {
1239
+ gap: "4",
1240
+ children: [
1241
+ /*#__PURE__*/ _jsx(Text, {
1242
+ variant: "bodyXs",
1243
+ children: "These tabs scroll horizontally on smaller screens with navigation arrows."
1244
+ }),
1245
+ /*#__PURE__*/ _jsx(Filters.Tabs, {
1246
+ tabs: longTabs,
1247
+ selected: selectedTab,
1248
+ onSelect: setSelectedTab
1249
+ })
1250
+ ]
1251
+ })
1252
+ }),
1253
+ /*#__PURE__*/ _jsx(Card, {
1254
+ title: "Responsive Filters Layout",
1255
+ padded: true,
1256
+ children: /*#__PURE__*/ _jsxs(VerticalStack, {
1257
+ gap: "4",
1258
+ children: [
1259
+ /*#__PURE__*/ _jsx(Text, {
1260
+ variant: "bodyXs",
1261
+ children: "Filter pills wrap to new lines on smaller screens, and the search field adapts to available space."
1262
+ }),
1263
+ /*#__PURE__*/ _jsx(Filters, {
1264
+ filters: filters,
1265
+ appliedFilters: appliedFilters,
1266
+ showTextField: true,
1267
+ queryValue: queryValue,
1268
+ onQueryChange: setQueryValue,
1269
+ onQueryClear: function() {
1270
+ return setQueryValue('');
1271
+ },
1272
+ queryPlaceholder: "Search across all categories..."
1273
+ })
1274
+ ]
1275
+ })
1276
+ }),
1277
+ /*#__PURE__*/ _jsx(Card, {
1278
+ title: "Mobile-Optimized Tips",
1279
+ padded: true,
1280
+ children: /*#__PURE__*/ _jsxs(VerticalStack, {
1281
+ gap: "2",
1282
+ children: [
1283
+ /*#__PURE__*/ _jsx(Text, {
1284
+ variant: "bodyXs",
1285
+ children: "• Tabs become horizontally scrollable with touch/swipe support"
1286
+ }),
1287
+ /*#__PURE__*/ _jsx(Text, {
1288
+ variant: "bodyXs",
1289
+ children: "• Filter pills stack vertically when space is limited"
1290
+ }),
1291
+ /*#__PURE__*/ _jsx(Text, {
1292
+ variant: "bodyXs",
1293
+ children: "• Search field takes full width on mobile"
1294
+ }),
1295
+ /*#__PURE__*/ _jsx(Text, {
1296
+ variant: "bodyXs",
1297
+ children: "• Popover content adapts to screen size and orientation"
1298
+ })
1299
+ ]
1300
+ })
1301
+ })
1302
+ ]
1303
+ });
1304
+ },
1305
+ parameters: {
1306
+ docs: {
1307
+ description: {
1308
+ story: 'Demonstrates responsive behavior of filters across different screen sizes.'
1309
+ },
1310
+ source: {
1311
+ transform: transformStorySource
1312
+ }
1313
+ }
1314
+ }
1315
+ };