@heymantle/litho 0.0.14 → 0.0.16

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 (381) hide show
  1. package/AI_COMPONENTS_GUIDE.md +28 -15
  2. package/AI_INTEGRATION_GUIDE.md +3 -3
  3. package/AI_PATTERNS_GUIDE.md +59 -25
  4. package/COMPONENT_QUICK_REFERENCE.md +3 -3
  5. package/README.md +52 -0
  6. package/dist/cjs/components/ActionList.js +33 -25
  7. package/dist/cjs/components/AnnouncementBar.js +115 -18
  8. package/dist/cjs/components/AnnouncementCard.js +269 -0
  9. package/dist/cjs/components/AppProvider.js +15 -2
  10. package/dist/cjs/components/Autocomplete.js +58 -36
  11. package/dist/cjs/components/Badge.js +28 -14
  12. package/dist/cjs/components/Banner.js +37 -27
  13. package/dist/cjs/components/Box.js +50 -38
  14. package/dist/cjs/components/Button.js +338 -109
  15. package/dist/cjs/components/ButtonGroup.js +27 -14
  16. package/dist/cjs/components/Card.js +311 -143
  17. package/dist/cjs/components/Checkbox.js +55 -47
  18. package/dist/cjs/components/CheckboxCard.js +222 -0
  19. package/dist/cjs/components/CheckboxCardGroup.js +384 -0
  20. package/dist/cjs/components/ChoiceList.js +21 -11
  21. package/dist/cjs/components/Code.js +22 -8
  22. package/dist/cjs/components/Collapsible.js +24 -11
  23. package/dist/cjs/components/ColorField.js +163 -38
  24. package/dist/cjs/components/ContextualSaveBar.js +13 -6
  25. package/dist/cjs/components/DatePicker.js +48 -37
  26. package/dist/cjs/components/Disclosure.js +57 -13
  27. package/dist/cjs/components/Divider.js +82 -18
  28. package/dist/cjs/components/DropZone.js +194 -68
  29. package/dist/cjs/components/EmptyState.js +18 -6
  30. package/dist/cjs/components/Filters.js +84 -36
  31. package/dist/cjs/components/FooterHelp.js +14 -4
  32. package/dist/cjs/components/Form.js +13 -2
  33. package/dist/cjs/components/Frame.js +57 -22
  34. package/dist/cjs/components/FrameSaveBar.js +37 -6
  35. package/dist/cjs/components/Grid.js +31 -15
  36. package/dist/cjs/components/HorizontalStack.js +38 -25
  37. package/dist/cjs/components/Icon.js +683 -61
  38. package/dist/cjs/components/Image.js +35 -22
  39. package/dist/cjs/components/InlineError.js +19 -10
  40. package/dist/cjs/components/Label.js +21 -12
  41. package/dist/cjs/components/Layout.js +37 -26
  42. package/dist/cjs/components/LayoutSection.js +84 -22
  43. package/dist/cjs/components/Link.js +35 -22
  44. package/dist/cjs/components/List.js +28 -12
  45. package/dist/cjs/components/Listbox.js +53 -31
  46. package/dist/cjs/components/Loading.js +14 -2
  47. package/dist/cjs/components/Modal.js +32 -39
  48. package/dist/cjs/components/Navigation.js +107 -36
  49. package/dist/cjs/components/Page.js +44 -31
  50. package/dist/cjs/components/Pagination.js +20 -5
  51. package/dist/cjs/components/Pane.js +67 -4
  52. package/dist/cjs/components/Popover.js +63 -30
  53. package/dist/cjs/components/PopoverManager.js +14 -1
  54. package/dist/cjs/components/ProgressBar.js +28 -15
  55. package/dist/cjs/components/RadioButton.js +32 -24
  56. package/dist/cjs/components/RadioButtonCard.js +92 -67
  57. package/dist/cjs/components/RadioButtonCardGroup.js +379 -0
  58. package/dist/cjs/components/RangeSlider.js +34 -26
  59. package/dist/cjs/components/ResourceList.js +28 -14
  60. package/dist/cjs/components/Select.js +38 -26
  61. package/dist/cjs/components/SkeletonText.js +33 -18
  62. package/dist/cjs/components/Spinner.js +24 -12
  63. package/dist/cjs/components/Stack.js +131 -71
  64. package/dist/cjs/components/TabNavigation.js +27 -1
  65. package/dist/cjs/components/Table.js +85 -29
  66. package/dist/cjs/components/Tabs.js +84 -24
  67. package/dist/cjs/components/Tag.js +37 -16
  68. package/dist/cjs/components/Text.js +32 -18
  69. package/dist/cjs/components/TextField.js +119 -69
  70. package/dist/cjs/components/Thumbnail.js +25 -11
  71. package/dist/cjs/components/TimePicker.js +22 -1
  72. package/dist/cjs/components/Tip.js +140 -25
  73. package/dist/cjs/components/ToastNotification.js +107 -34
  74. package/dist/cjs/components/ToastProvider.js +13 -3
  75. package/dist/cjs/components/Tooltip.js +50 -41
  76. package/dist/cjs/components/TopBar.js +83 -9
  77. package/dist/cjs/components/VerticalStack.js +31 -16
  78. package/dist/cjs/index.js +24 -0
  79. package/dist/cjs/playwright.config.js +114 -0
  80. package/dist/cjs/stories/Autocomplete.stories.js +10 -10
  81. package/dist/cjs/stories/Checkbox.stories.js +6 -8
  82. package/dist/cjs/stories/CheckboxCardGroup.stories.js +459 -0
  83. package/dist/cjs/stories/Collapsible.stories.js +11 -11
  84. package/dist/cjs/stories/ColorField.stories.js +2 -3
  85. package/dist/cjs/stories/ComplexExamples.stories.js +48 -77
  86. package/dist/cjs/stories/ContextualSaveBar.stories.js +1 -1
  87. package/dist/cjs/stories/Divider.stories.js +15 -16
  88. package/dist/cjs/stories/DropZone.stories.js +3 -3
  89. package/dist/cjs/stories/FooterHelp.stories.js +3 -4
  90. package/dist/cjs/stories/Form.stories.js +2 -4
  91. package/dist/cjs/stories/Grid.stories.js +24 -33
  92. package/dist/cjs/stories/Icon.stories.js +22 -23
  93. package/dist/cjs/stories/Image.stories.js +12 -15
  94. package/dist/cjs/stories/InlineError.stories.js +0 -1
  95. package/dist/cjs/stories/Layout.stories.js +96 -2
  96. package/dist/cjs/stories/LayoutSection.stories.js +13 -18
  97. package/dist/cjs/stories/List.stories.js +24 -28
  98. package/dist/cjs/stories/Listbox.stories.js +2 -2
  99. package/dist/cjs/stories/Loading.stories.js +21 -25
  100. package/dist/cjs/stories/Modal.stories.js +0 -1
  101. package/dist/cjs/stories/Pagination.stories.js +4 -4
  102. package/dist/cjs/stories/Pane.stories.js +10 -18
  103. package/dist/cjs/stories/Popover.stories.js +7 -7
  104. package/dist/cjs/stories/PopoverManager.stories.js +9 -9
  105. package/dist/cjs/stories/ProgressBar.stories.js +8 -8
  106. package/dist/cjs/stories/RadioButton.stories.js +2 -2
  107. package/dist/cjs/stories/RadioButtonCard.stories.js +2 -2
  108. package/dist/cjs/stories/RadioButtonCardGroup.stories.js +502 -0
  109. package/dist/cjs/stories/RangeSlider.stories.js +1 -3
  110. package/dist/cjs/stories/ResourceList.stories.js +13 -13
  111. package/dist/cjs/stories/Spinner.stories.js +9 -9
  112. package/dist/cjs/stories/Stack.stories.js +233 -51
  113. package/dist/cjs/stories/Tabs.stories.js +2 -2
  114. package/dist/cjs/stories/Tag.stories.js +1 -1
  115. package/dist/cjs/stories/Thumbnail.stories.js +17 -18
  116. package/dist/cjs/stories/TimePicker.stories.js +0 -5
  117. package/dist/cjs/stories/Tip.stories.js +1 -1
  118. package/dist/cjs/styles/Table.js +2 -7
  119. package/dist/cjs/tests/visual/stories.spec.js +637 -0
  120. package/dist/cjs/utilities/dates.js +7 -7
  121. package/dist/esm/components/ActionList.js +33 -25
  122. package/dist/esm/components/AnnouncementBar.js +115 -18
  123. package/dist/esm/components/AnnouncementCard.js +254 -0
  124. package/dist/esm/components/AppProvider.js +15 -2
  125. package/dist/esm/components/Autocomplete.js +58 -36
  126. package/dist/esm/components/Badge.js +28 -14
  127. package/dist/esm/components/Banner.js +37 -27
  128. package/dist/esm/components/Box.js +50 -38
  129. package/dist/esm/components/Button.js +338 -109
  130. package/dist/esm/components/ButtonGroup.js +27 -14
  131. package/dist/esm/components/Card.js +300 -140
  132. package/dist/esm/components/Checkbox.js +55 -47
  133. package/dist/esm/components/CheckboxCard.js +207 -0
  134. package/dist/esm/components/CheckboxCardGroup.js +370 -0
  135. package/dist/esm/components/ChoiceList.js +21 -11
  136. package/dist/esm/components/Code.js +22 -8
  137. package/dist/esm/components/Collapsible.js +24 -11
  138. package/dist/esm/components/ColorField.js +165 -40
  139. package/dist/esm/components/ContextualSaveBar.js +13 -6
  140. package/dist/esm/components/DatePicker.js +48 -37
  141. package/dist/esm/components/Disclosure.js +50 -6
  142. package/dist/esm/components/Divider.js +78 -20
  143. package/dist/esm/components/DropZone.js +194 -68
  144. package/dist/esm/components/EmptyState.js +18 -6
  145. package/dist/esm/components/Filters.js +84 -36
  146. package/dist/esm/components/FooterHelp.js +14 -4
  147. package/dist/esm/components/Form.js +13 -2
  148. package/dist/esm/components/Frame.js +57 -22
  149. package/dist/esm/components/FrameSaveBar.js +37 -6
  150. package/dist/esm/components/Grid.js +31 -15
  151. package/dist/esm/components/HorizontalStack.js +38 -25
  152. package/dist/esm/components/Icon.js +681 -62
  153. package/dist/esm/components/Image.js +35 -22
  154. package/dist/esm/components/InlineError.js +19 -10
  155. package/dist/esm/components/Label.js +21 -12
  156. package/dist/esm/components/Layout.js +62 -27
  157. package/dist/esm/components/LayoutSection.js +84 -22
  158. package/dist/esm/components/Link.js +35 -22
  159. package/dist/esm/components/List.js +28 -12
  160. package/dist/esm/components/Listbox.js +53 -31
  161. package/dist/esm/components/Loading.js +14 -2
  162. package/dist/esm/components/Modal.js +79 -40
  163. package/dist/esm/components/Navigation.js +107 -36
  164. package/dist/esm/components/Page.js +44 -31
  165. package/dist/esm/components/Pagination.js +20 -5
  166. package/dist/esm/components/Pane.js +67 -4
  167. package/dist/esm/components/Popover.js +63 -30
  168. package/dist/esm/components/PopoverManager.js +14 -1
  169. package/dist/esm/components/ProgressBar.js +28 -15
  170. package/dist/esm/components/RadioButton.js +32 -24
  171. package/dist/esm/components/RadioButtonCard.js +92 -67
  172. package/dist/esm/components/RadioButtonCardGroup.js +364 -0
  173. package/dist/esm/components/RangeSlider.js +34 -26
  174. package/dist/esm/components/ResourceList.js +28 -14
  175. package/dist/esm/components/Select.js +38 -26
  176. package/dist/esm/components/SkeletonText.js +33 -18
  177. package/dist/esm/components/Spinner.js +24 -12
  178. package/dist/esm/components/Stack.js +131 -71
  179. package/dist/esm/components/TabNavigation.js +27 -1
  180. package/dist/esm/components/Table.js +85 -29
  181. package/dist/esm/components/Tabs.js +84 -24
  182. package/dist/esm/components/Tag.js +37 -16
  183. package/dist/esm/components/Text.js +32 -18
  184. package/dist/esm/components/TextField.js +119 -69
  185. package/dist/esm/components/Thumbnail.js +25 -11
  186. package/dist/esm/components/TimePicker.js +22 -1
  187. package/dist/esm/components/Tip.js +140 -25
  188. package/dist/esm/components/ToastNotification.js +107 -34
  189. package/dist/esm/components/ToastProvider.js +13 -3
  190. package/dist/esm/components/Tooltip.js +50 -41
  191. package/dist/esm/components/TopBar.js +83 -9
  192. package/dist/esm/components/VerticalStack.js +31 -16
  193. package/dist/esm/index.js +6 -0
  194. package/dist/esm/playwright.config.js +104 -0
  195. package/dist/esm/stories/Autocomplete.stories.js +10 -10
  196. package/dist/esm/stories/Checkbox.stories.js +6 -8
  197. package/dist/esm/stories/CheckboxCardGroup.stories.js +421 -0
  198. package/dist/esm/stories/Collapsible.stories.js +11 -11
  199. package/dist/esm/stories/ColorField.stories.js +2 -3
  200. package/dist/esm/stories/ComplexExamples.stories.js +48 -77
  201. package/dist/esm/stories/ContextualSaveBar.stories.js +1 -1
  202. package/dist/esm/stories/Divider.stories.js +15 -16
  203. package/dist/esm/stories/DropZone.stories.js +3 -3
  204. package/dist/esm/stories/FooterHelp.stories.js +3 -4
  205. package/dist/esm/stories/Form.stories.js +2 -4
  206. package/dist/esm/stories/Grid.stories.js +24 -33
  207. package/dist/esm/stories/Icon.stories.js +22 -23
  208. package/dist/esm/stories/Image.stories.js +12 -15
  209. package/dist/esm/stories/InlineError.stories.js +0 -1
  210. package/dist/esm/stories/Layout.stories.js +93 -2
  211. package/dist/esm/stories/LayoutSection.stories.js +13 -18
  212. package/dist/esm/stories/List.stories.js +24 -28
  213. package/dist/esm/stories/Listbox.stories.js +2 -2
  214. package/dist/esm/stories/Loading.stories.js +21 -25
  215. package/dist/esm/stories/Modal.stories.js +0 -1
  216. package/dist/esm/stories/Pagination.stories.js +4 -4
  217. package/dist/esm/stories/Pane.stories.js +10 -18
  218. package/dist/esm/stories/Popover.stories.js +7 -7
  219. package/dist/esm/stories/PopoverManager.stories.js +9 -9
  220. package/dist/esm/stories/ProgressBar.stories.js +8 -8
  221. package/dist/esm/stories/RadioButton.stories.js +2 -2
  222. package/dist/esm/stories/RadioButtonCard.stories.js +2 -2
  223. package/dist/esm/stories/RadioButtonCardGroup.stories.js +461 -0
  224. package/dist/esm/stories/RangeSlider.stories.js +1 -3
  225. package/dist/esm/stories/ResourceList.stories.js +13 -13
  226. package/dist/esm/stories/Spinner.stories.js +9 -9
  227. package/dist/esm/stories/Stack.stories.js +224 -51
  228. package/dist/esm/stories/Tabs.stories.js +2 -2
  229. package/dist/esm/stories/Tag.stories.js +1 -1
  230. package/dist/esm/stories/Thumbnail.stories.js +17 -18
  231. package/dist/esm/stories/TimePicker.stories.js +0 -5
  232. package/dist/esm/stories/Tip.stories.js +1 -1
  233. package/dist/esm/styles/Table.js +2 -7
  234. package/dist/esm/tests/visual/stories.spec.js +633 -0
  235. package/dist/esm/utilities/dates.js +7 -7
  236. package/dist/types/components/ActionList.d.ts +1 -31
  237. package/dist/types/components/ActionList.d.ts.map +1 -1
  238. package/dist/types/components/AnnouncementBar.d.ts +1 -19
  239. package/dist/types/components/AnnouncementBar.d.ts.map +1 -1
  240. package/dist/types/components/AnnouncementCard.d.ts +3 -0
  241. package/dist/types/components/AnnouncementCard.d.ts.map +1 -0
  242. package/dist/types/components/AppProvider.d.ts +14 -1
  243. package/dist/types/components/AppProvider.d.ts.map +1 -1
  244. package/dist/types/components/Autocomplete.d.ts +1 -71
  245. package/dist/types/components/Autocomplete.d.ts.map +1 -1
  246. package/dist/types/components/Badge.d.ts +1 -19
  247. package/dist/types/components/Badge.d.ts.map +1 -1
  248. package/dist/types/components/Banner.d.ts +1 -37
  249. package/dist/types/components/Banner.d.ts.map +1 -1
  250. package/dist/types/components/Box.d.ts +1 -68
  251. package/dist/types/components/Box.d.ts.map +1 -1
  252. package/dist/types/components/Button.d.ts +1 -131
  253. package/dist/types/components/Button.d.ts.map +1 -1
  254. package/dist/types/components/ButtonGroup.d.ts +1 -22
  255. package/dist/types/components/ButtonGroup.d.ts.map +1 -1
  256. package/dist/types/components/Card.d.ts +54 -59
  257. package/dist/types/components/Card.d.ts.map +1 -1
  258. package/dist/types/components/Checkbox.d.ts +1 -63
  259. package/dist/types/components/Checkbox.d.ts.map +1 -1
  260. package/dist/types/components/CheckboxCard.d.ts +3 -0
  261. package/dist/types/components/CheckboxCard.d.ts.map +1 -0
  262. package/dist/types/components/CheckboxCardGroup.d.ts +3 -0
  263. package/dist/types/components/CheckboxCardGroup.d.ts.map +1 -0
  264. package/dist/types/components/ChoiceList.d.ts +1 -42
  265. package/dist/types/components/ChoiceList.d.ts.map +1 -1
  266. package/dist/types/components/Code.d.ts +1 -26
  267. package/dist/types/components/Code.d.ts.map +1 -1
  268. package/dist/types/components/Collapsible.d.ts +1 -15
  269. package/dist/types/components/Collapsible.d.ts.map +1 -1
  270. package/dist/types/components/ColorField.d.ts +13 -34
  271. package/dist/types/components/ColorField.d.ts.map +1 -1
  272. package/dist/types/components/ContextualSaveBar.d.ts +13 -6
  273. package/dist/types/components/ContextualSaveBar.d.ts.map +1 -1
  274. package/dist/types/components/DatePicker.d.ts +1 -64
  275. package/dist/types/components/DatePicker.d.ts.map +1 -1
  276. package/dist/types/components/Disclosure.d.ts +1 -25
  277. package/dist/types/components/Disclosure.d.ts.map +1 -1
  278. package/dist/types/components/Divider.d.ts +1 -19
  279. package/dist/types/components/Divider.d.ts.map +1 -1
  280. package/dist/types/components/DropZone.d.ts +3 -62
  281. package/dist/types/components/DropZone.d.ts.map +1 -1
  282. package/dist/types/components/EmptyState.d.ts +1 -50
  283. package/dist/types/components/EmptyState.d.ts.map +1 -1
  284. package/dist/types/components/Filters.d.ts +13 -68
  285. package/dist/types/components/Filters.d.ts.map +1 -1
  286. package/dist/types/components/FooterHelp.d.ts +14 -4
  287. package/dist/types/components/FooterHelp.d.ts.map +1 -1
  288. package/dist/types/components/Form.d.ts +13 -2
  289. package/dist/types/components/Form.d.ts.map +1 -1
  290. package/dist/types/components/Frame.d.ts +15 -36
  291. package/dist/types/components/Frame.d.ts.map +1 -1
  292. package/dist/types/components/FrameSaveBar.d.ts +3 -6
  293. package/dist/types/components/FrameSaveBar.d.ts.map +1 -1
  294. package/dist/types/components/Grid.d.ts +5 -21
  295. package/dist/types/components/Grid.d.ts.map +1 -1
  296. package/dist/types/components/HorizontalStack.d.ts +1 -34
  297. package/dist/types/components/HorizontalStack.d.ts.map +1 -1
  298. package/dist/types/components/Icon.d.ts +1 -41
  299. package/dist/types/components/Icon.d.ts.map +1 -1
  300. package/dist/types/components/Image.d.ts +1 -43
  301. package/dist/types/components/Image.d.ts.map +1 -1
  302. package/dist/types/components/InlineError.d.ts +1 -20
  303. package/dist/types/components/InlineError.d.ts.map +1 -1
  304. package/dist/types/components/Label.d.ts +1 -26
  305. package/dist/types/components/Label.d.ts.map +1 -1
  306. package/dist/types/components/Layout.d.ts +24 -15
  307. package/dist/types/components/Layout.d.ts.map +1 -1
  308. package/dist/types/components/LayoutSection.d.ts +1 -19
  309. package/dist/types/components/LayoutSection.d.ts.map +1 -1
  310. package/dist/types/components/Link.d.ts +1 -37
  311. package/dist/types/components/Link.d.ts.map +1 -1
  312. package/dist/types/components/List.d.ts +5 -17
  313. package/dist/types/components/List.d.ts.map +1 -1
  314. package/dist/types/components/Listbox.d.ts +1 -32
  315. package/dist/types/components/Listbox.d.ts.map +1 -1
  316. package/dist/types/components/Loading.d.ts +14 -2
  317. package/dist/types/components/Loading.d.ts.map +1 -1
  318. package/dist/types/components/Modal.d.ts +26 -35
  319. package/dist/types/components/Modal.d.ts.map +1 -1
  320. package/dist/types/components/Navigation.d.ts +1 -25
  321. package/dist/types/components/Navigation.d.ts.map +1 -1
  322. package/dist/types/components/Page.d.ts +1 -57
  323. package/dist/types/components/Page.d.ts.map +1 -1
  324. package/dist/types/components/Pagination.d.ts +13 -3
  325. package/dist/types/components/Pagination.d.ts.map +1 -1
  326. package/dist/types/components/Pane.d.ts +55 -3
  327. package/dist/types/components/Pane.d.ts.map +1 -1
  328. package/dist/types/components/Popover.d.ts +5 -35
  329. package/dist/types/components/Popover.d.ts.map +1 -1
  330. package/dist/types/components/PopoverManager.d.ts.map +1 -1
  331. package/dist/types/components/ProgressBar.d.ts +1 -22
  332. package/dist/types/components/ProgressBar.d.ts.map +1 -1
  333. package/dist/types/components/RadioButton.d.ts +1 -37
  334. package/dist/types/components/RadioButton.d.ts.map +1 -1
  335. package/dist/types/components/RadioButtonCard.d.ts +1 -39
  336. package/dist/types/components/RadioButtonCard.d.ts.map +1 -1
  337. package/dist/types/components/RadioButtonCardGroup.d.ts +3 -0
  338. package/dist/types/components/RadioButtonCardGroup.d.ts.map +1 -0
  339. package/dist/types/components/RangeSlider.d.ts +1 -42
  340. package/dist/types/components/RangeSlider.d.ts.map +1 -1
  341. package/dist/types/components/ResourceList.d.ts +5 -30
  342. package/dist/types/components/ResourceList.d.ts.map +1 -1
  343. package/dist/types/components/Select.d.ts +1 -46
  344. package/dist/types/components/Select.d.ts.map +1 -1
  345. package/dist/types/components/SkeletonText.d.ts +1 -26
  346. package/dist/types/components/SkeletonText.d.ts.map +1 -1
  347. package/dist/types/components/Spinner.d.ts +1 -16
  348. package/dist/types/components/Spinner.d.ts.map +1 -1
  349. package/dist/types/components/Stack.d.ts +1 -47
  350. package/dist/types/components/Stack.d.ts.map +1 -1
  351. package/dist/types/components/TabNavigation.d.ts.map +1 -1
  352. package/dist/types/components/Table.d.ts +13 -58
  353. package/dist/types/components/Table.d.ts.map +1 -1
  354. package/dist/types/components/Tabs.d.ts +40 -34
  355. package/dist/types/components/Tabs.d.ts.map +1 -1
  356. package/dist/types/components/Tag.d.ts +1 -24
  357. package/dist/types/components/Tag.d.ts.map +1 -1
  358. package/dist/types/components/Text.d.ts +1 -30
  359. package/dist/types/components/Text.d.ts.map +1 -1
  360. package/dist/types/components/TextField.d.ts +1 -109
  361. package/dist/types/components/TextField.d.ts.map +1 -1
  362. package/dist/types/components/Thumbnail.d.ts +1 -16
  363. package/dist/types/components/Thumbnail.d.ts.map +1 -1
  364. package/dist/types/components/TimePicker.d.ts +28 -1
  365. package/dist/types/components/TimePicker.d.ts.map +1 -1
  366. package/dist/types/components/Tip.d.ts +1 -21
  367. package/dist/types/components/Tip.d.ts.map +1 -1
  368. package/dist/types/components/ToastNotification.d.ts +1 -34
  369. package/dist/types/components/ToastNotification.d.ts.map +1 -1
  370. package/dist/types/components/ToastProvider.d.ts +13 -3
  371. package/dist/types/components/ToastProvider.d.ts.map +1 -1
  372. package/dist/types/components/Tooltip.d.ts +1 -54
  373. package/dist/types/components/Tooltip.d.ts.map +1 -1
  374. package/dist/types/components/TopBar.d.ts +1 -19
  375. package/dist/types/components/TopBar.d.ts.map +1 -1
  376. package/dist/types/components/VerticalStack.d.ts +1 -25
  377. package/dist/types/components/VerticalStack.d.ts.map +1 -1
  378. package/dist/types/index.d.ts +6 -0
  379. package/dist/types/styles/Table.d.ts.map +1 -1
  380. package/index.css +76 -14
  381. package/package.json +15 -5
@@ -10,6 +10,19 @@ function _array_with_holes(arr) {
10
10
  function _array_without_holes(arr) {
11
11
  if (Array.isArray(arr)) return _array_like_to_array(arr);
12
12
  }
13
+ function _define_property(obj, key, value) {
14
+ if (key in obj) {
15
+ Object.defineProperty(obj, key, {
16
+ value: value,
17
+ enumerable: true,
18
+ configurable: true,
19
+ writable: true
20
+ });
21
+ } else {
22
+ obj[key] = value;
23
+ }
24
+ return obj;
25
+ }
13
26
  function _iterable_to_array(iter) {
14
27
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
15
28
  }
@@ -43,6 +56,45 @@ function _non_iterable_rest() {
43
56
  function _non_iterable_spread() {
44
57
  throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
45
58
  }
59
+ function _object_spread(target) {
60
+ for(var i = 1; i < arguments.length; i++){
61
+ var source = arguments[i] != null ? arguments[i] : {};
62
+ var ownKeys = Object.keys(source);
63
+ if (typeof Object.getOwnPropertySymbols === "function") {
64
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
65
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
66
+ }));
67
+ }
68
+ ownKeys.forEach(function(key) {
69
+ _define_property(target, key, source[key]);
70
+ });
71
+ }
72
+ return target;
73
+ }
74
+ function ownKeys(object, enumerableOnly) {
75
+ var keys = Object.keys(object);
76
+ if (Object.getOwnPropertySymbols) {
77
+ var symbols = Object.getOwnPropertySymbols(object);
78
+ if (enumerableOnly) {
79
+ symbols = symbols.filter(function(sym) {
80
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
81
+ });
82
+ }
83
+ keys.push.apply(keys, symbols);
84
+ }
85
+ return keys;
86
+ }
87
+ function _object_spread_props(target, source) {
88
+ source = source != null ? source : {};
89
+ if (Object.getOwnPropertyDescriptors) {
90
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
91
+ } else {
92
+ ownKeys(Object(source)).forEach(function(key) {
93
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
94
+ });
95
+ }
96
+ return target;
97
+ }
46
98
  function _sliced_to_array(arr, i) {
47
99
  return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
48
100
  }
@@ -69,34 +121,20 @@ import SkeletonText from "./SkeletonText.js";
69
121
  import Spinner from "./Spinner.js";
70
122
  import Text from "./Text.js";
71
123
  import { CancelMajor, CircleAlertMajor, FileMinor, ImageMajor, ImagesMajor, MagicMajor } from "@shopify/polaris-icons";
72
- var dropZoneStyles = tv({
73
- base: "Litho-DropZone w-full flex items-center justify-center p-4 border border-form-border border-dashed rounded-md focus:outline-hidden",
74
- variants: {
75
- uploading: {
76
- true: "bg-form-bg-disabled",
77
- false: ""
78
- },
79
- disabled: {
80
- true: "pointer-events-none user-select-none",
81
- false: "cursor-pointer bg-form-bg hover:bg-form-bg-hover"
82
- },
83
- hasFocusWithin: {
84
- true: "ring ring-form-focus border-form-border-focus",
85
- false: ""
86
- },
87
- dragOver: {
88
- true: "bg-form-bg-hover border-form-border-focus ring ring-form-focus",
89
- false: ""
90
- }
91
- },
92
- defaultVariants: {
93
- disabled: false,
94
- uploading: false,
95
- dragOver: false
96
- }
97
- });
98
124
  /**
99
- * DropZone component for handling file uploads with previews.
125
+ * @component DropZone
126
+ *
127
+ * @description A file upload area that accepts drag-and-drop or click-to-browse file selection with type and size validation.
128
+ *
129
+ * @usage
130
+ * - DO: Use for file upload areas that accept drag-and-drop or click-to-browse.
131
+ * - DON'T: Use for non-file inputs.
132
+ *
133
+ * @accessibility
134
+ * - Supports keyboard activation; ensure a descriptive label is provided for the upload area.
135
+ *
136
+ * @alternative
137
+ * - If you need a simple file input, use a native `<input type="file">` with TextField styling.
100
138
  *
101
139
  * @param {Object} props - Component props.
102
140
  * @param {string} [props.id] - The ID for the DropZone input.
@@ -127,14 +165,72 @@ var dropZoneStyles = tv({
127
165
  * @param {Function} [props.onFilePreviewClick] - Callback for clicking a file preview.
128
166
  * @param {string} [props.filename] - Name of the file being uploaded.
129
167
  * @returns {JSX.Element} DropZone component.
130
- */ function DropZone() {
168
+ */ var normalizeDropZoneAccept = function(accept) {
169
+ if (!accept) return [];
170
+ return typeof accept === "string" ? [
171
+ accept
172
+ ] : accept;
173
+ };
174
+ var isFileAcceptedForDropZone = function(file) {
175
+ var accept = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
176
+ if (!accept || accept.length === 0) return true;
177
+ return accept.some(function(type) {
178
+ if (!type) return false;
179
+ if (type === "*/*") return true;
180
+ if (type.endsWith("/*")) {
181
+ var _type_split = _sliced_to_array(type.split("/"), 1), prefix = _type_split[0];
182
+ if (prefix === "*") return true;
183
+ return !!(file === null || file === void 0 ? void 0 : file.type) && file.type.startsWith("".concat(prefix, "/"));
184
+ }
185
+ return (file === null || file === void 0 ? void 0 : file.type) === type;
186
+ });
187
+ };
188
+ var partitionFilesByDropZoneAccept = function(files) {
189
+ var accept = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
190
+ var acceptedFiles = [];
191
+ var rejectedFiles = [];
192
+ files.forEach(function(file) {
193
+ if (isFileAcceptedForDropZone(file, accept)) {
194
+ acceptedFiles.push(file);
195
+ } else {
196
+ rejectedFiles.push(file);
197
+ }
198
+ });
199
+ return {
200
+ acceptedFiles: acceptedFiles,
201
+ rejectedFiles: rejectedFiles
202
+ };
203
+ };
204
+ var dropZoneStyles = tv({
205
+ base: "Litho-DropZone w-full flex items-center justify-center p-4 border border-form-border border-dashed rounded-md focus:outline-hidden",
206
+ variants: {
207
+ uploading: {
208
+ true: "bg-form-bg-disabled",
209
+ false: ""
210
+ },
211
+ disabled: {
212
+ true: "pointer-events-none user-select-none",
213
+ false: "cursor-pointer bg-form-bg hover:bg-form-bg-hover"
214
+ },
215
+ hasFocusWithin: {
216
+ true: "ring ring-form-focus border-form-border-focus",
217
+ false: ""
218
+ },
219
+ dragOver: {
220
+ true: "bg-form-bg-hover border-form-border-focus ring ring-form-focus",
221
+ false: ""
222
+ }
223
+ },
224
+ defaultVariants: {
225
+ disabled: false,
226
+ uploading: false,
227
+ dragOver: false
228
+ }
229
+ });
230
+ function DropZone() {
131
231
  var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
132
232
  var id = props.id, label = props.label, labelHidden = props.labelHidden, labelAction = props.labelAction, tooltip = props.tooltip, labelVariant = props.labelVariant, _props_type = props.type, type = _props_type === void 0 ? "file" : _props_type, _accept = props.accept, _props_allowMultiple = props.allowMultiple, allowMultiple = _props_allowMultiple === void 0 ? false : _props_allowMultiple, _props_showDropZoneWhenDisabled = props.showDropZoneWhenDisabled, showDropZoneWhenDisabled = _props_showDropZoneWhenDisabled === void 0 ? true : _props_showDropZoneWhenDisabled, _disabled = props.disabled, onDrop = props.onDrop, onDropAccepted = props.onDropAccepted, onDropRejected = props.onDropRejected, helpText = props.helpText, error = props.error, _props_uploading = props.uploading, uploading = _props_uploading === void 0 ? false : _props_uploading, _props_uploadedFiles = props.uploadedFiles, uploadedFiles = _props_uploadedFiles === void 0 ? [] : _props_uploadedFiles, _props_uploadLabel = props.uploadLabel, uploadLabel = _props_uploadLabel === void 0 ? "Drag and drop files or click to upload" : _props_uploadLabel, _props_uploadingLabel = props.uploadingLabel, uploadingLabel = _props_uploadingLabel === void 0 ? "Uploading..." : _props_uploadingLabel, _props_dragLabel = props.dragLabel, dragLabel = _props_dragLabel === void 0 ? "Release to upload" : _props_dragLabel, tmp = props.showFilePreview, _showFilePreview = tmp === void 0 ? true : tmp, previewLoading = props.previewLoading, _props_previewRows = props.previewRows, previewRows = _props_previewRows === void 0 ? 2 : _props_previewRows, onRemove = props.onRemove, onFilePreviewClick = props.onFilePreviewClick, filename = props.filename;
133
- var accept = _accept ? typeof _accept === "string" ? [
134
- _accept
135
- ] : _accept : [
136
- "*/*"
137
- ];
233
+ var accept = normalizeDropZoneAccept(_accept);
138
234
  var inputRef = useRef(null);
139
235
  var _useState = _sliced_to_array(useState(false), 2), hasFocusWithin = _useState[0], setHasFocusWithin = _useState[1];
140
236
  var _useState1 = _sliced_to_array(useState(false), 2), isDraggingOver = _useState1[0], setIsDraggingOver = _useState1[1];
@@ -195,22 +291,7 @@ var dropZoneStyles = tv({
195
291
  setDragFileCount(0);
196
292
  if (disabled) return;
197
293
  var droppedFiles = Array.from(event.dataTransfer.files);
198
- var acceptedFiles = [];
199
- var rejectedFiles = [];
200
- droppedFiles.forEach(function(file) {
201
- var isValidType = typeAccept.length === 0 || typeAccept.some(function(type) {
202
- if (type.endsWith("/*")) {
203
- return file.type.startsWith("".concat(type.split("/")[0], "/"));
204
- }
205
- return file.type === type;
206
- });
207
- var isValid = isValidType;
208
- if (isValid) {
209
- acceptedFiles.push(file);
210
- } else {
211
- rejectedFiles.push(file);
212
- }
213
- });
294
+ var _partitionFilesByDropZoneAccept = partitionFilesByDropZoneAccept(droppedFiles, typeAccept), acceptedFiles = _partitionFilesByDropZoneAccept.acceptedFiles, rejectedFiles = _partitionFilesByDropZoneAccept.rejectedFiles;
214
295
  if (onDrop) {
215
296
  onDrop(droppedFiles);
216
297
  }
@@ -223,22 +304,7 @@ var dropZoneStyles = tv({
223
304
  };
224
305
  var handleFileChange = function(event) {
225
306
  var selectedFiles = Array.from(event.target.files);
226
- var acceptedFiles = [];
227
- var rejectedFiles = [];
228
- selectedFiles.forEach(function(file) {
229
- var isValidType = typeAccept.length === 0 || typeAccept.some(function(type) {
230
- if (type.endsWith("/*")) {
231
- return file.type.startsWith("".concat(type.split("/")[0], "/"));
232
- }
233
- return file.type === type;
234
- });
235
- var isValid = isValidType;
236
- if (isValid) {
237
- acceptedFiles.push(file);
238
- } else {
239
- rejectedFiles.push(file);
240
- }
241
- });
307
+ var _partitionFilesByDropZoneAccept = partitionFilesByDropZoneAccept(selectedFiles, typeAccept), acceptedFiles = _partitionFilesByDropZoneAccept.acceptedFiles, rejectedFiles = _partitionFilesByDropZoneAccept.rejectedFiles;
242
308
  if (onDrop) {
243
309
  onDrop(selectedFiles);
244
310
  }
@@ -358,6 +424,56 @@ var dropZoneStyles = tv({
358
424
  ]
359
425
  });
360
426
  }
427
+ var DropTarget = function() {
428
+ var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
429
+ var _accept = props.accept, _props_allowMultiple = props.allowMultiple, allowMultiple = _props_allowMultiple === void 0 ? true : _props_allowMultiple, _props_disabled = props.disabled, disabled = _props_disabled === void 0 ? false : _props_disabled, onDrop = props.onDrop, onDropAccepted = props.onDropAccepted, onDropRejected = props.onDropRejected, className = props.className, dragOverClassName = props.dragOverClassName, children = props.children;
430
+ var accept = normalizeDropZoneAccept(_accept);
431
+ var _useState = _sliced_to_array(useState(false), 2), isDraggingOver = _useState[0], setIsDraggingOver = _useState[1];
432
+ var handleDragOver = function(event) {
433
+ event.preventDefault();
434
+ event.stopPropagation();
435
+ if (!disabled) {
436
+ setIsDraggingOver(true);
437
+ }
438
+ };
439
+ var handleDragLeave = function(event) {
440
+ event.preventDefault();
441
+ event.stopPropagation();
442
+ setIsDraggingOver(false);
443
+ };
444
+ var handleDrop = function(event) {
445
+ event.preventDefault();
446
+ event.stopPropagation();
447
+ setIsDraggingOver(false);
448
+ if (disabled) return;
449
+ var droppedFiles = Array.from(event.dataTransfer.files);
450
+ if (allowMultiple === false) {
451
+ droppedFiles = droppedFiles.slice(0, 1);
452
+ }
453
+ var _partitionFilesByDropZoneAccept = partitionFilesByDropZoneAccept(droppedFiles, accept), acceptedFiles = _partitionFilesByDropZoneAccept.acceptedFiles, rejectedFiles = _partitionFilesByDropZoneAccept.rejectedFiles;
454
+ if (onDrop) {
455
+ onDrop(droppedFiles);
456
+ }
457
+ if (onDropAccepted && acceptedFiles.length > 0) {
458
+ onDropAccepted(acceptedFiles);
459
+ }
460
+ if (onDropRejected && rejectedFiles.length > 0) {
461
+ onDropRejected(rejectedFiles);
462
+ }
463
+ };
464
+ var dropTargetClassName = [
465
+ className,
466
+ isDraggingOver && dragOverClassName
467
+ ].filter(Boolean).join(" ");
468
+ return /*#__PURE__*/ _jsx("div", {
469
+ className: dropTargetClassName,
470
+ onDragOver: handleDragOver,
471
+ onDragLeave: handleDragLeave,
472
+ onDrop: handleDrop,
473
+ children: children
474
+ });
475
+ };
476
+ DropZone.DropTarget = DropTarget;
361
477
  var previewContainerStyles = tv({
362
478
  base: "flex flex-col",
363
479
  variants: {
@@ -439,11 +555,21 @@ var previewStyles = tv({
439
555
  return /*#__PURE__*/ _jsxs("div", {
440
556
  className: "flex justify-between items-center gap-2",
441
557
  children: [
442
- /*#__PURE__*/ _jsxs("div", {
558
+ /*#__PURE__*/ _jsxs("div", _object_spread_props(_object_spread({
443
559
  className: previewClasses,
444
560
  onClick: onClick ? function() {
445
561
  return onClick(file);
446
- } : undefined,
562
+ } : undefined
563
+ }, onClick ? {
564
+ role: "button",
565
+ tabIndex: 0,
566
+ onKeyDown: function(e) {
567
+ if (e.key === "Enter" || e.key === " ") {
568
+ e.preventDefault();
569
+ onClick(file);
570
+ }
571
+ }
572
+ } : {}), {
447
573
  children: [
448
574
  /*#__PURE__*/ _jsx(FileThumbnail, {
449
575
  file: file
@@ -465,7 +591,7 @@ var previewStyles = tv({
465
591
  ]
466
592
  })
467
593
  ]
468
- }),
594
+ })),
469
595
  onRemove && /*#__PURE__*/ _jsx(Button, {
470
596
  size: "small",
471
597
  icon: CancelMajor,
@@ -4,12 +4,21 @@ import Image from "./Image.js";
4
4
  import Text from "./Text.js";
5
5
  import ProgressBar from "./ProgressBar.js";
6
6
  import { tv } from "tailwind-variants";
7
- var styles = tv({
8
- base: "Litho-EmptyState py-16 px-4 flex flex-col items-center text-center gap-6"
9
- });
10
7
  /**
11
- * EmptyState component for displaying a structured layout with a title, description,
12
- * icon, and action buttons when no content is available.
8
+ * @component EmptyState
9
+ *
10
+ * @description A placeholder component displayed when a resource list, table, or page has no content, with a heading, description, and call-to-action.
11
+ *
12
+ * @usage
13
+ * - DO: Display when a resource list, table, or page has no data to show.
14
+ * - DON'T: Use for error states (use `Banner` instead).
15
+ *
16
+ * @accessibility
17
+ * - Ensure the heading and action buttons are descriptive; decorative images should have empty alt text.
18
+ *
19
+ * @alternative
20
+ * - If you need to show an error or warning message, use `Banner` instead.
21
+ * - If you need a loading state, use `SkeletonText`.
13
22
  *
14
23
  * @param {Object} props - The properties to customize the EmptyState component.
15
24
  * @param {string} [props.description] - Text description to display in the empty state.
@@ -33,7 +42,10 @@ var styles = tv({
33
42
  * @param {number} [props.progress] - Progress value to display in the empty state.
34
43
  *
35
44
  * @returns {JSX.Element} The rendered EmptyState component.
36
- */ function EmptyState() {
45
+ */ var styles = tv({
46
+ base: "Litho-EmptyState py-16 px-4 flex flex-col items-center text-center gap-6"
47
+ });
48
+ function EmptyState() {
37
49
  var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
38
50
  var description = props.description, icon = props.icon, iconSource = props.iconSource, primaryAction = props.primaryAction, secondaryAction = props.secondaryAction, title = props.title, _props_titleVariant = props.titleVariant, titleVariant = _props_titleVariant === void 0 ? "headingXl" : _props_titleVariant, _props_descriptionVariant = props.descriptionVariant, descriptionVariant = _props_descriptionVariant === void 0 ? "bodyLg" : _props_descriptionVariant, progress = props.progress, className = props.className;
39
51
  var classes = styles();
@@ -122,33 +122,21 @@ import TextField from "./TextField.js";
122
122
  import Tooltip from "./Tooltip.js";
123
123
  import { CancelSmallMinor, CaretDownMinor, DeleteMinor, HorizontalDotsMinor, PlusMinor, SearchMajor, ChevronLeftMinor, ChevronRightMinor } from "@shopify/polaris-icons";
124
124
  import { useDarkMode } from "./AppProvider.js";
125
- var styles = tv({
126
- base: "Litho-Filters flex items-center overflow-x-auto",
127
- variants: {
128
- showTextField: {
129
- true: "justify-between",
130
- false: ""
131
- }
132
- }
133
- });
134
- var filterContainerStyles = tv({
135
- base: "Litho-FiltersContainer flex flex-wrap gap-1.5 items-center",
136
- variants: {
137
- showTextField: {
138
- true: "p-2",
139
- false: ""
140
- },
141
- padded: {
142
- true: "p-2",
143
- false: ""
144
- }
145
- }
146
- });
147
125
  /**
148
- * Filters Component - A React component that manages filters for a given dataset.
149
- * Includes functionality for visible filters, more filters, and a query field.
126
+ * @component Filters
127
+ *
128
+ * @description A filter management component that renders active filter pills and controls for filtering table or resource list data.
129
+ *
130
+ * @usage
131
+ * - DO: Use for filtering content in tables or resource lists with removable filter pills.
132
+ * - DON'T: Use for general-purpose tabs (use Tabs).
133
+ *
134
+ * @accessibility
135
+ * - Filter pills are keyboard accessible with remove actions; ensure each filter has a descriptive label.
136
+ *
137
+ * @alternative
138
+ * - If you need general-purpose tabs, use `Tabs`. If you need a search input, use `TextField`.
150
139
  *
151
- * @component
152
140
  * @param {Object} props - The component props.
153
141
  * @param {Array<{
154
142
  * key: string,
@@ -177,7 +165,29 @@ var filterContainerStyles = tv({
177
165
  * @param {boolean} [props.disableQueryField=false] - Whether the query text field is disabled.
178
166
  * @param {string} [props.className] - Additional class names for the component.
179
167
  * @returns {JSX.Element|null} The Filters component or null if no filters are available.
180
- */ function Filters(props) {
168
+ */ var styles = tv({
169
+ base: "Litho-Filters flex items-center overflow-x-auto",
170
+ variants: {
171
+ showTextField: {
172
+ true: "justify-between",
173
+ false: ""
174
+ }
175
+ }
176
+ });
177
+ var filterContainerStyles = tv({
178
+ base: "Litho-FiltersContainer flex flex-wrap gap-1.5 items-center",
179
+ variants: {
180
+ showTextField: {
181
+ true: "p-2",
182
+ false: ""
183
+ },
184
+ padded: {
185
+ true: "p-2",
186
+ false: ""
187
+ }
188
+ }
189
+ });
190
+ function Filters(props) {
181
191
  var _filters_filter;
182
192
  var _props_filters = props.filters, filters = _props_filters === void 0 ? [] : _props_filters, _props_appliedFilters = props.appliedFilters, appliedFilters = _props_appliedFilters === void 0 ? [] : _props_appliedFilters, onClearAll = props.onClearAll, _props_showTextField = props.showTextField, showTextField = _props_showTextField === void 0 ? false : _props_showTextField, _props_textFieldSubdued = props.textFieldSubdued, textFieldSubdued = _props_textFieldSubdued === void 0 ? false : _props_textFieldSubdued, _props_padded = props.padded, padded = _props_padded === void 0 ? false : _props_padded, queryValue = props.queryValue, onQueryChange = props.onQueryChange, onQueryBlur = props.onQueryBlur, onQueryFocus = props.onQueryFocus, onQueryClear = props.onQueryClear, _props_queryPlaceholder = props.queryPlaceholder, queryPlaceholder = _props_queryPlaceholder === void 0 ? "Search" : _props_queryPlaceholder, _props_ignorePromotedFiltersWhenRemoving = props.ignorePromotedFiltersWhenRemoving, ignorePromotedFiltersWhenRemoving = _props_ignorePromotedFiltersWhenRemoving === void 0 ? true : _props_ignorePromotedFiltersWhenRemoving, disableQueryField = props.disableQueryField, className = props.className;
183
193
  var classes = styles({
@@ -442,9 +452,11 @@ var pillTextStyles = tv({
442
452
  }
443
453
  });
444
454
  /**
445
- * Filters.Pill - A subcomponent for rendering filter pills.
455
+ * @component Filters.Pill
456
+ *
457
+ * @usage
458
+ * - DO: Display active filter values as removable chips.
446
459
  *
447
- * @component
448
460
  * @param {Object} props - The component props.
449
461
  * @param {string} props.label - The label of the filter pill.
450
462
  * @param {boolean} [props.applied=false] - Whether the pill represents an applied filter.
@@ -463,9 +475,19 @@ var pillTextStyles = tv({
463
475
  var textClasses = pillTextStyles({
464
476
  applied: applied
465
477
  });
466
- var content = /*#__PURE__*/ _jsx("div", {
478
+ var content = /*#__PURE__*/ _jsx("div", _object_spread_props(_object_spread({
467
479
  className: classes,
468
- onClick: onClick,
480
+ onClick: onClick
481
+ }, onClick && {
482
+ role: "button",
483
+ tabIndex: disabled ? -1 : 0,
484
+ onKeyDown: function(e) {
485
+ if (e.key === "Enter" || e.key === " ") {
486
+ e.preventDefault();
487
+ onClick();
488
+ }
489
+ }
490
+ }), {
469
491
  children: destructive ? /*#__PURE__*/ _jsx(Icon, {
470
492
  source: DeleteMinor,
471
493
  color: "subdued"
@@ -485,7 +507,7 @@ var pillTextStyles = tv({
485
507
  })
486
508
  ]
487
509
  })
488
- });
510
+ }));
489
511
  if (destructive) {
490
512
  return /*#__PURE__*/ _jsx(Tooltip, {
491
513
  content: "Remove filters",
@@ -518,9 +540,11 @@ var rightGradientStyles = tv({
518
540
  }
519
541
  });
520
542
  /**
521
- * Filters.Tabs - A subcomponent for managing tabs with scrollable functionality.
543
+ * @component Filters.Tabs
544
+ *
545
+ * @usage
546
+ * - DO: Group filter pills with tab-based categories.
522
547
  *
523
- * @component
524
548
  * @param {Object} props - The component props.
525
549
  * @param {Array} props.tabs - The tabs to display.
526
550
  * @param {Object} [props.insertBeforeTabs] - Tab to insert before the main tabs.
@@ -719,9 +743,11 @@ var tabActionIconStyles = tv({
719
743
  base: "opacity-80"
720
744
  });
721
745
  /**
722
- * Filters.Tab - A subcomponent for rendering individual tabs within the Filters.Tabs component.
746
+ * @component Filters.Tab
747
+ *
748
+ * @usage
749
+ * - DO: Use as an individual tab within Filters.Tabs.
723
750
  *
724
- * @component
725
751
  * @param {Object} props - The component props.
726
752
  * @param {React.ReactNode} [props.icon=HorizontalDotsMinor] - The icon displayed in the tab (default is a horizontal dots icon).
727
753
  * @param {boolean} [props.selected=false] - Whether the tab is currently selected.
@@ -749,6 +775,15 @@ var tabActionIconStyles = tv({
749
775
  return /*#__PURE__*/ _jsx("div", {
750
776
  className: classes,
751
777
  onClick: onClick,
778
+ role: "tab",
779
+ tabIndex: 0,
780
+ "aria-selected": selected,
781
+ onKeyDown: function(e) {
782
+ if (e.key === "Enter" || e.key === " ") {
783
+ e.preventDefault();
784
+ onClick === null || onClick === void 0 ? void 0 : onClick();
785
+ }
786
+ },
752
787
  children: /*#__PURE__*/ _jsxs("div", {
753
788
  className: "flex flex-col items-start justify-start",
754
789
  children: [
@@ -763,7 +798,20 @@ var tabActionIconStyles = tv({
763
798
  }),
764
799
  onAction && /*#__PURE__*/ _jsxs("div", {
765
800
  className: actionClasses,
766
- onClick: onAction,
801
+ onClick: function(e) {
802
+ e.stopPropagation();
803
+ onAction(e);
804
+ },
805
+ role: "button",
806
+ tabIndex: 0,
807
+ "aria-label": tooltip,
808
+ onKeyDown: function(e) {
809
+ if (e.key === "Enter" || e.key === " ") {
810
+ e.preventDefault();
811
+ e.stopPropagation();
812
+ onAction(e);
813
+ }
814
+ },
767
815
  children: [
768
816
  !interactive && /*#__PURE__*/ _jsx("div", {
769
817
  className: "min-h-full min-w-2 bg-linear-to-l from-surface-highest to-transparent"
@@ -2,11 +2,21 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import Icon from "./Icon.js";
3
3
  import { CircleInformationMajor } from "@shopify/polaris-icons";
4
4
  /**
5
- * Renders a `FooterHelp` component, which provides additional information
6
- * or guidance to users, typically displayed at the bottom of a page. The component
7
- * centers its content within a rounded, styled box that includes an icon and customizable text.
5
+ * @component FooterHelp
6
+ *
7
+ * @description A bottom-of-page help component that displays a link to additional resources or documentation.
8
+ *
9
+ * @usage
10
+ * - DO: Place at the bottom of a page to provide contextual help links.
11
+ * - DON'T: Use in card footers or inline (use `Link` instead).
12
+ *
13
+ * @accessibility
14
+ * - Renders help text with a link; ensure the link text is descriptive for screen readers.
15
+ *
16
+ * @alternative
17
+ * - If you need an inline help link, use `Link` instead.
18
+ * - If you need contextual tips, use `Tip`.
8
19
  *
9
- * @component
10
20
  * @param {Object} [props] - The props for the FooterHelp component.
11
21
  * @param {React.ReactNode} [props.children] - The content to display next to the information icon.
12
22
  * This is typically a text string or any valid React node.
@@ -1,7 +1,18 @@
1
1
  /**
2
- * A reusable Form component that provides a structured HTML form with customizable attributes and submission handling.
2
+ * @component Form
3
+ *
4
+ * @description A form wrapper that handles submit events and integrates with the contextual save bar for unsaved changes.
5
+ *
6
+ * @usage
7
+ * - DO: Wrap form fields to handle submission with Enter key and prevent default behavior.
8
+ * - DON'T: Use for non-form content.
9
+ *
10
+ * @accessibility
11
+ * - Renders a semantic `<form>` element; screen readers identify it as a form region.
12
+ *
13
+ * @alternative
14
+ * - If you need to manage form save state globally, use `ContextualSaveBar` alongside Form.
3
15
  *
4
- * @component
5
16
  * @param {Object} [props={}] - The properties passed to the component.
6
17
  * @param {string} [props.acceptCharset] - The character encoding that the form accepts.
7
18
  * @param {string} [props.action] - The URL where the form data should be submitted.