@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
@@ -160,21 +160,24 @@ import Text from "./Text.js";
160
160
  import Tooltip from "./Tooltip.js";
161
161
  import { styles } from "../styles/Table.js";
162
162
  import { SelectionType } from "../utilities/useIndexResourceState.js";
163
+ import { useMobile } from "../utilities/useMobile.js";
163
164
  import { useMounted } from "../utilities/useMounted.js";
164
165
  import useTableScrollState from "../utilities/useTableScrollState.js";
165
- var TableContext = /*#__PURE__*/ createContext({});
166
- var TableWrapperContext = /*#__PURE__*/ createContext({});
167
166
  /**
168
- * @typedef {Object} TableHeading
169
- * @property {string|React.ReactNode} title - The title content of the heading.
170
- * @property {boolean} [sortable=false] - Whether the column is sortable.
171
- * @property {"start" | "end" | "left" | "right" | "center"} [alignment="start"] - Alignment of the heading content.
172
- * @property {boolean} [hidden=false] - Whether the heading is hidden.
173
- * @property {string|React.ReactNode} [tooltip] - Tooltip content for the heading.
174
- * @property {string|React.ReactNode} [tooltipContent] - Alternative tooltip content for the heading.
175
- * @property {Function} [onAction] - Callback function when the heading is clicked.
176
- */ /**
177
- * Table component for displaying data in a customizable, sortable, and scrollable format.
167
+ * @component Table
168
+ *
169
+ * @description A data table component with sortable columns, selectable rows, sticky headers, and pagination support.
170
+ *
171
+ * @usage
172
+ * - DO: Display structured tabular data with columns, sorting, and optional row selection.
173
+ * - DON'T: Use for layout purposes (use Grid).
174
+ *
175
+ * @accessibility
176
+ * - Renders a semantic `<table>` with proper `<thead>` and `<tbody>`; ensure column headers describe data clearly.
177
+ *
178
+ * @alternative
179
+ * - If you need a simple list without columns, use `ResourceList`.
180
+ * - If you need a layout grid, use `Grid`.
178
181
  *
179
182
  * @param {Object} props - Component props.
180
183
  * @param {Array<TableHeading|string|React.ReactNode>} [props.headings=[]] - Column headings. Can be strings, React nodes, or configuration objects.
@@ -201,6 +204,17 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
201
204
  * @param {Function} [props.onSelectionChange] - Callback for handling selection changes.
202
205
  * @param {boolean} [props.loading=false] - Whether the table is loading.
203
206
  * @returns {React.ReactElement} The rendered Table component.
207
+ */ var TableContext = /*#__PURE__*/ createContext({});
208
+ var TableWrapperContext = /*#__PURE__*/ createContext({});
209
+ /**
210
+ * @typedef {Object} TableHeading
211
+ * @property {string|React.ReactNode} title - The title content of the heading.
212
+ * @property {boolean} [sortable=false] - Whether the column is sortable.
213
+ * @property {"start" | "end" | "left" | "right" | "center"} [alignment="start"] - Alignment of the heading content.
214
+ * @property {boolean} [hidden=false] - Whether the heading is hidden.
215
+ * @property {string|React.ReactNode} [tooltip] - Tooltip content for the heading.
216
+ * @property {string|React.ReactNode} [tooltipContent] - Alternative tooltip content for the heading.
217
+ * @property {Function} [onAction] - Callback function when the heading is clicked.
204
218
  */ function Table() {
205
219
  var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
206
220
  var tmp = props.headings, _headings = tmp === void 0 ? [] : tmp, _props_headingStyle = props.headingStyle, headingStyle = _props_headingStyle === void 0 ? "default" : _props_headingStyle, _props_stickyHeader = props.stickyHeader, stickyHeader = _props_stickyHeader === void 0 ? true : _props_stickyHeader, _props_rows = props.rows, rows = _props_rows === void 0 ? [] : _props_rows, tmp1 = props.footers, _footers = tmp1 === void 0 ? [] : tmp1, _props_verticalAlign = props.verticalAlign, verticalAlign = _props_verticalAlign === void 0 ? "middle" : _props_verticalAlign, tmp2 = props.fixedFirstColumns, _fixedFirstColumns = tmp2 === void 0 ? 0 : tmp2, _props_fixedLastColumns = props.fixedLastColumns, fixedLastColumns = _props_fixedLastColumns === void 0 ? 0 : _props_fixedLastColumns, initialSortColumnIndex = props.initialSortColumnIndex, _props_defaultSortDirection = props.defaultSortDirection, defaultSortDirection = _props_defaultSortDirection === void 0 ? "ascending" : _props_defaultSortDirection, onSort = props.onSort, _props_increasedTableDensity = props.increasedTableDensity, increasedTableDensity = _props_increasedTableDensity === void 0 ? false : _props_increasedTableDensity, firstColumnMinWidth = props.firstColumnMinWidth, _props_bordered = props.bordered, bordered = _props_bordered === void 0 ? false : _props_bordered, _props_topBorder = props.topBorder, topBorder = _props_topBorder === void 0 ? true : _props_topBorder, _props_bulkActions = props.bulkActions, bulkActions = _props_bulkActions === void 0 ? [] : _props_bulkActions, _props_promotedBulkActions = props.promotedBulkActions, promotedBulkActions = _props_promotedBulkActions === void 0 ? [] : _props_promotedBulkActions, emptyState = props.emptyState, _children = props.children, paginatedSelectAllActionText = props.paginatedSelectAllActionText, _props_resourceName = props.resourceName, resourceName = _props_resourceName === void 0 ? {
@@ -447,6 +461,8 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
447
461
  var alignment = cellAlignment[indexAdjusted];
448
462
  var isSortable = sortable && sortable.length > 0 && sortable[indexAdjusted];
449
463
  var sortIndex = selectable ? indexAdjusted - 1 : indexAdjusted;
464
+ // Check if this cell is covered by a fixed overlay
465
+ var isCovered = !fixed && !reverseColumns && (fixedFirstColumns > 0 && indexAdjusted < fixedFirstColumns || fixedLastColumns > 0 && indexAdjusted >= headings.length - fixedLastColumns);
450
466
  var sortContent = isSortable ? /*#__PURE__*/ _jsx("div", {
451
467
  className: "min-h-5 ".concat(sort.index === sortIndex ? "opacity-100" : "opacity-0 group-hover:opacity-100"),
452
468
  children: /*#__PURE__*/ _jsx(Icon, {
@@ -459,13 +475,23 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
459
475
  if (isSortable) handleSort(sortIndex);
460
476
  else if (heading.onAction) heading.onAction();
461
477
  };
462
- var labelContent = /*#__PURE__*/ _jsxs("div", {
478
+ var labelContent = /*#__PURE__*/ _jsxs("div", _object_spread_props(_object_spread({
463
479
  className: styles.headingLabelStyles({
464
480
  alignment: alignment,
465
481
  sortable: !!isSortable,
466
482
  interactive: !!isInteractive
467
483
  }),
468
- onClick: isInteractive ? handleClick : undefined,
484
+ onClick: isInteractive ? handleClick : undefined
485
+ }, isInteractive ? {
486
+ role: "button",
487
+ tabIndex: 0,
488
+ onKeyDown: function(e) {
489
+ if (e.key === "Enter" || e.key === " ") {
490
+ e.preventDefault();
491
+ handleClick();
492
+ }
493
+ }
494
+ } : {}), {
469
495
  children: [
470
496
  [
471
497
  "right",
@@ -480,7 +506,8 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
480
506
  "center"
481
507
  ].includes(alignment) && sortContent
482
508
  ]
483
- });
509
+ }));
510
+ var hasTooltip = (heading.tooltip || heading.tooltipContent) && !isCovered;
484
511
  return /*#__PURE__*/ _jsx(HeadingCell, {
485
512
  className: styles.headingStyles({
486
513
  hidden: hideCell,
@@ -498,7 +525,7 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
498
525
  className: styles.headingLabelContainerStyles({
499
526
  alignment: alignment
500
527
  }),
501
- children: heading.hidden ? null : heading.tooltip || heading.tooltipContent ? /*#__PURE__*/ _jsx(Tooltip, {
528
+ children: heading.hidden ? null : hasTooltip ? /*#__PURE__*/ _jsx(Tooltip, {
502
529
  content: heading.tooltip || heading.tooltipContent,
503
530
  preferredPosition: "above",
504
531
  children: labelContent
@@ -614,12 +641,16 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
614
641
  value: {
615
642
  columnsToRender: columnsToRender,
616
643
  reverseColumns: reverseColumns,
617
- hideCellsOnMobile: hideCellsOnMobile
644
+ hideCellsOnMobile: hideCellsOnMobile,
645
+ isFixedOverlay: fixed,
646
+ fixedFirstColumns: fixedFirstColumns,
647
+ fixedLastColumns: fixedLastColumns
618
648
  },
619
649
  children: /*#__PURE__*/ _jsxs("table", {
620
650
  className: styles.tableStyles(),
621
651
  children: [
622
652
  hasHeadings && renderHeadings({
653
+ fixed: fixed,
623
654
  hidden: true,
624
655
  columnsToRender: columnsToRender,
625
656
  reverseColumns: reverseColumns,
@@ -670,6 +701,14 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
670
701
  return handleSelectionChange(isAllSelected ? SelectionType.Page : SelectionType.All, true);
671
702
  },
672
703
  className: "rounded-md block text-sm font-medium cursor-pointer px-2 py-1 hover",
704
+ role: "button",
705
+ tabIndex: 0,
706
+ onKeyDown: function(e) {
707
+ if (e.key === "Enter" || e.key === " ") {
708
+ e.preventDefault();
709
+ handleSelectionChange(isAllSelected ? SelectionType.Page : SelectionType.All, true);
710
+ }
711
+ },
673
712
  children: isAllSelected ? "Undo" : paginatedSelectAllActionText || "Select all"
674
713
  })
675
714
  ]
@@ -752,7 +791,8 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
752
791
  increasedTableDensity: increasedTableDensity,
753
792
  tableContainerRef: tableContainerRef,
754
793
  cellAlignment: cellAlignment,
755
- noBodyCellPadding: noBodyCellPadding
794
+ noBodyCellPadding: noBodyCellPadding,
795
+ columnWidths: columnWidths
756
796
  },
757
797
  children: /*#__PURE__*/ _jsxs("div", {
758
798
  "data-id": idRef.current,
@@ -803,8 +843,7 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
803
843
  children: renderTable({
804
844
  classes: "relative overflow-hidden",
805
845
  fixed: true,
806
- columnsToRender: fixedFirstColumns,
807
- hideCellsOnMobile: true
846
+ columnsToRender: fixedFirstColumns
808
847
  })
809
848
  }) : /*#__PURE__*/ _jsx("div", {
810
849
  className: styles.overflowShadowStyles({
@@ -822,8 +861,7 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
822
861
  classes: "relative overflow-hidden",
823
862
  fixed: true,
824
863
  columnsToRender: fixedLastColumns,
825
- reverseColumns: true,
826
- hideCellsOnMobile: true
864
+ reverseColumns: true
827
865
  })
828
866
  }) : /*#__PURE__*/ _jsx("div", {
829
867
  className: styles.overflowShadowStyles({
@@ -959,7 +997,14 @@ Table.displayName = "Table";
959
997
  Table.Row = Row;
960
998
  Table.Row.displayName = "Table.Row";
961
999
  /**
962
- * Represents a cell within a table row.
1000
+ * @component Table.Cell
1001
+ *
1002
+ * @usage
1003
+ * - DO: Use for custom cell content within table rows.
1004
+ *
1005
+ * @accessibility
1006
+ * - Renders as `<td>`.
1007
+ *
963
1008
  * @param {Object} props - Cell properties.
964
1009
  * @param {string} [props.alignment="start"] - Text alignment.
965
1010
  * @param {boolean} [props.selectionCell=false] - Whether this is a selection cell.
@@ -968,8 +1013,11 @@ Table.Row.displayName = "Table.Row";
968
1013
  */ function Cell(param) {
969
1014
  var tmp = param.alignment, _alignment = tmp === void 0 ? "start" : tmp, children = param.children, _param_selectionCell = param.selectionCell, selectionCell = _param_selectionCell === void 0 ? false : _param_selectionCell;
970
1015
  var _useContext = useContext(TableContext), cellAlignment = _useContext.cellAlignment, increasedTableDensity = _useContext.increasedTableDensity, selectable = _useContext.selectable, noBodyCellPadding = _useContext.noBodyCellPadding;
971
- var _useContext1 = useContext(TableWrapperContext), hideCellsOnMobile = _useContext1.hideCellsOnMobile, reverseColumns = _useContext1.reverseColumns, columnsToRender = _useContext1.columnsToRender;
1016
+ var _useContext1 = useContext(TableWrapperContext), hideCellsOnMobile = _useContext1.hideCellsOnMobile, reverseColumns = _useContext1.reverseColumns, columnsToRender = _useContext1.columnsToRender, isFixedOverlay = _useContext1.isFixedOverlay, fixedFirstColumns = _useContext1.fixedFirstColumns, fixedLastColumns = _useContext1.fixedLastColumns;
1017
+ var isMobile = useMobile();
972
1018
  var columnCount = (cellAlignment === null || cellAlignment === void 0 ? void 0 : cellAlignment.length) || 0;
1019
+ // Use state instead of ref so changes trigger re-render
1020
+ var _useState = _sliced_to_array(useState(-1), 2), cellIndex = _useState[0], setCellIndex = _useState[1];
973
1021
  var cellIndexRef = useRef(null);
974
1022
  var setCellRef = useCallback(function(node) {
975
1023
  if (!node || cellIndexRef.current !== null) return;
@@ -977,16 +1025,21 @@ Table.Row.displayName = "Table.Row";
977
1025
  if ((parentRow === null || parentRow === void 0 ? void 0 : parentRow.tagName) === "TR") {
978
1026
  var totalCells = parentRow.children.length;
979
1027
  var index = node.cellIndex;
980
- cellIndexRef.current = reverseColumns ? totalCells - columnsToRender + index - (totalCells - columnCount) : index;
1028
+ var calculatedIndex = reverseColumns ? totalCells - columnsToRender + index - (totalCells - columnCount) : index;
1029
+ cellIndexRef.current = calculatedIndex;
1030
+ setCellIndex(calculatedIndex);
981
1031
  }
982
1032
  }, [
983
1033
  reverseColumns,
984
1034
  columnsToRender,
985
1035
  columnCount
986
1036
  ]);
987
- var _cellIndexRef_current;
988
- var cellIndex = (_cellIndexRef_current = cellIndexRef.current) !== null && _cellIndexRef_current !== void 0 ? _cellIndexRef_current : -1;
989
1037
  var alignment = (cellAlignment === null || cellAlignment === void 0 ? void 0 : cellAlignment[cellIndex]) || _alignment;
1038
+ // Check if this cell is covered by a fixed overlay
1039
+ // When cellIndex is unknown (-1), conservatively assume the cell might be covered
1040
+ // if there are any fixed columns. This prevents duplicate popovers during the
1041
+ // brief window between initial render and when cellIndex is calculated.
1042
+ var isCoveredByFixedOverlay = !isFixedOverlay && !reverseColumns && (cellIndex === -1 ? fixedFirstColumns > 0 || fixedLastColumns > 0 : fixedFirstColumns > 0 && cellIndex < fixedFirstColumns || fixedLastColumns > 0 && cellIndex >= columnCount - fixedLastColumns);
990
1043
  return /*#__PURE__*/ _jsx("td", {
991
1044
  ref: setCellRef,
992
1045
  className: styles.cellStyles({
@@ -997,6 +1050,7 @@ Table.Row.displayName = "Table.Row";
997
1050
  tableIsSelectable: selectable,
998
1051
  noBodyCellPadding: noBodyCellPadding
999
1052
  }),
1053
+ inert: !isMobile && isCoveredByFixedOverlay || undefined,
1000
1054
  children: /*#__PURE__*/ _jsx("div", {
1001
1055
  className: styles.cellContentStyles({
1002
1056
  alignment: alignment
@@ -1008,8 +1062,10 @@ Table.Row.displayName = "Table.Row";
1008
1062
  Table.Cell = Cell;
1009
1063
  Table.Cell.displayName = "Table.Cell";
1010
1064
  /**
1011
- * Footer component for the Table.
1012
- * Displays pagination controls and optionally the total result count.
1065
+ * @component Table.Footer
1066
+ *
1067
+ * @usage
1068
+ * - DO: Use for summary or pagination content below the table.
1013
1069
  *
1014
1070
  * @param {Object} props - The component props.
1015
1071
  * @param {boolean} props.hasNextPage - Whether there is a next page.
@@ -106,30 +106,28 @@ import Icon from "./Icon.js";
106
106
  import Popover from "./Popover.js";
107
107
  import { CaretDownMinor, CaretUpMinor } from "@shopify/polaris-icons";
108
108
  import * as PolarisIcons from "@shopify/polaris-icons";
109
- var styles = tv({
110
- base: "Litho-Tabs flex overflow-x-hidden whitespace-nowrap",
111
- variants: {
112
- borderBottom: {
113
- true: "border-b",
114
- false: ""
115
- },
116
- padded: {
117
- true: "p-2",
118
- false: ""
119
- }
120
- }
121
- });
122
- var containerStyles = tv({
123
- base: "Litho-Tabs__TabContainer flex flex-1 overflow-x-hidden whitespace-nowrap space-x-1"
124
- });
109
+ import Badge from "./Badge.js";
125
110
  /**
126
- * Tabs component that displays a set of tab items with selectable states.
111
+ * @component Tabs
112
+ *
113
+ * @description An in-page tab switcher that renders a horizontal tab bar for toggling between content panels without URL changes.
114
+ *
115
+ * @usage
116
+ * - DO: Switch between related content views within the same page.
117
+ * - DON'T: Use for URL-based routing (use TabNavigation).
118
+ *
119
+ * @accessibility
120
+ * - Implements tablist/tab/tabpanel ARIA roles; supports keyboard arrow navigation between tabs.
121
+ *
122
+ * @alternative
123
+ * - If you need URL-based tab navigation, use `TabNavigation`. If you need collapsible sections, use `Collapsible`.
127
124
  *
128
125
  * @param {Object} props - Component props.
129
126
  * @param {Object[]} props.tabs - List of tabs to display.
130
127
  * @param {string} props.tabs[].id - Unique identifier for the tab.
131
128
  * @param {string} props.tabs[].content - Content or label to display for the tab.
132
129
  * @param {string} [props.tabs[].icon] - Optional icon to display for the tab.
130
+ * @param {boolean} [props.tabs[].showIconOnMobile=true] - When false, the tab icon is hidden on mobile and only shown at md (≥800px) breakpoint.
133
131
  * @param {boolean} [props.tabs[].disclosure=false] - Whether the tab is part of a "More" disclosure group.
134
132
  * @param {number} props.selected - Index of the currently selected tab.
135
133
  * @param {Function} props.onSelect - Callback fired when a tab is selected, receives the tab's index.
@@ -140,8 +138,26 @@ var containerStyles = tv({
140
138
  * @param {boolean} [props.padded=true] - If true, applies padding to the Tabs container.
141
139
  * @param {boolean} [props.borderBottom=true] - If true, applies a bottom border to the Tabs container.
142
140
  * @param {boolean} [props.simpleTabs=false] - If true, simplifies the styling for the selected tab.
141
+ * @param {number} [props.badgeCount] - The number of badges to display for the tab.
142
+ * @param {string} [props.badgeStatus="default"] - The status of the badge.
143
143
  * @returns {JSX.Element} The Tabs component.
144
- */ function Tabs() {
144
+ */ var styles = tv({
145
+ base: "Litho-Tabs flex overflow-x-hidden whitespace-nowrap",
146
+ variants: {
147
+ borderBottom: {
148
+ true: "border-b",
149
+ false: ""
150
+ },
151
+ padded: {
152
+ true: "p-2",
153
+ false: ""
154
+ }
155
+ }
156
+ });
157
+ var containerStyles = tv({
158
+ base: "Litho-Tabs__TabContainer flex flex-1 overflow-x-hidden whitespace-nowrap space-x-1"
159
+ });
160
+ function Tabs() {
145
161
  var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
146
162
  var tmp = props.tabs, _tabs = tmp === void 0 ? [] : tmp, _selectedIndex = props.selected, onSelect = props.onSelect, fullWidth = props.fullWidth, _props_disclosureText = props.disclosureText, disclosureText = _props_disclosureText === void 0 ? "More" : _props_disclosureText, _props_disclosure = props.disclosure, disclosure = _props_disclosure === void 0 ? false : _props_disclosure, _props_activeDisclosure = props.activeDisclosure, activeDisclosure = _props_activeDisclosure === void 0 ? false : _props_activeDisclosure, _props_padded = props.padded, padded = _props_padded === void 0 ? true : _props_padded, _props_borderBottom = props.borderBottom, borderBottom = _props_borderBottom === void 0 ? true : _props_borderBottom, _props_simpleTabs = props.simpleTabs, simpleTabs = _props_simpleTabs === void 0 ? false : _props_simpleTabs;
147
163
  var selectedIndex = parseInt(_selectedIndex);
@@ -250,9 +266,12 @@ var containerStyles = tv({
250
266
  },
251
267
  disclosure: disclosure && tab.disclosure,
252
268
  icon: tab.icon,
269
+ showIconOnMobile: tab.showIconOnMobile,
253
270
  fullWidth: fullWidth,
254
271
  hidden: tab.hidden,
255
272
  simple: simpleTabs,
273
+ badgeCount: tab.badgeCount,
274
+ badgeStatus: tab.badgeStatus,
256
275
  children: tab.content
257
276
  }, "tab-".concat(tab.originalIndex));
258
277
  })
@@ -345,9 +364,31 @@ var tabStyles = tv({
345
364
  }
346
365
  ]
347
366
  });
348
- function Tab() {
367
+ /**
368
+ * Individual tab item component used within the Tabs component.
369
+ *
370
+ * @param {Object} props - Component props.
371
+ * @param {string} [props.id] - Unique identifier for the tab, used to generate the DOM element ID.
372
+ * @param {boolean} [props.active] - Whether the tab's disclosure popover is currently active/open.
373
+ * @param {boolean} [props.selected] - Whether this tab is currently selected.
374
+ * @param {number} [props.index] - The index position of this tab in the tabs array.
375
+ * @param {string|React.ReactNode} [props.icon] - Icon to display. Can be a Polaris icon name string or a custom React node.
376
+ * @param {boolean} [props.showIconOnMobile=true] - When false, the tab icon is hidden on mobile and only shown at md (≥800px) breakpoint.
377
+ * @param {Function} [props.onSelect] - Callback fired when the tab is selected, receives the tab's index.
378
+ * @param {Function} [props.onClick] - Custom click handler that overrides the default onSelect behavior.
379
+ * @param {React.ReactNode} [props.children] - The content/label to display inside the tab.
380
+ * @param {boolean} [props.fullWidth] - Whether the tab should expand to fill available space.
381
+ * @param {boolean} [props.hidden] - Whether the tab should be visually hidden (used for overflow handling).
382
+ * @param {boolean} [props.simple] - Whether to use simplified styling (no background, column layout).
383
+ * @param {boolean} [props.disclosure=false] - Whether to show a disclosure caret icon when selected.
384
+ * @param {boolean} [props.alwaysShowDisclosureIcon=false] - Whether to always show the disclosure icon regardless of selection state.
385
+ * @param {boolean} [props.disabled=false] - Whether the tab is disabled.
386
+ * @param {string} [props.badgeStatus="default"] - The status variant of the badge (e.g., "default", "success", "warning").
387
+ * @param {number} [props.badgeCount] - If provided (>= 0), displays a badge with this count.
388
+ * @returns {JSX.Element} The Tab component.
389
+ */ function Tab() {
349
390
  var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
350
- var id = props.id, active = props.active, selected = props.selected, index = props.index, icon = props.icon, onSelect = props.onSelect, onClick = props.onClick, children = props.children, fullWidth = props.fullWidth, hidden = props.hidden, simple = props.simple, _props_disclosure = props.disclosure, disclosure = _props_disclosure === void 0 ? false : _props_disclosure, _props_alwaysShowDisclosureIcon = props.alwaysShowDisclosureIcon, alwaysShowDisclosureIcon = _props_alwaysShowDisclosureIcon === void 0 ? false : _props_alwaysShowDisclosureIcon, _props_disabled = props.disabled, disabled = _props_disabled === void 0 ? false : _props_disabled;
391
+ var id = props.id, active = props.active, selected = props.selected, index = props.index, icon = props.icon, _props_showIconOnMobile = props.showIconOnMobile, showIconOnMobile = _props_showIconOnMobile === void 0 ? true : _props_showIconOnMobile, onSelect = props.onSelect, onClick = props.onClick, children = props.children, fullWidth = props.fullWidth, hidden = props.hidden, simple = props.simple, _props_disclosure = props.disclosure, disclosure = _props_disclosure === void 0 ? false : _props_disclosure, _props_alwaysShowDisclosureIcon = props.alwaysShowDisclosureIcon, alwaysShowDisclosureIcon = _props_alwaysShowDisclosureIcon === void 0 ? false : _props_alwaysShowDisclosureIcon, _props_disabled = props.disabled, disabled = _props_disabled === void 0 ? false : _props_disabled, _props_badgeStatus = props.badgeStatus, badgeStatus = _props_badgeStatus === void 0 ? "default" : _props_badgeStatus, badgeCount = props.badgeCount;
351
392
  var polarisIcon = typeof icon === "string" ? PolarisIcons[icon] : PolarisIcons[icon === null || icon === void 0 ? void 0 : icon.displayName];
352
393
  var showDisclosure = disclosure && (selected || alwaysShowDisclosureIcon);
353
394
  var tabClasses = tabStyles({
@@ -364,18 +405,32 @@ function Tab() {
364
405
  onClick: onClick ? onClick : onSelect ? function() {
365
406
  return onSelect(index);
366
407
  } : undefined,
408
+ role: "tab",
409
+ tabIndex: disabled ? -1 : 0,
410
+ "aria-selected": selected,
411
+ onKeyDown: function(e) {
412
+ if (e.key === "Enter" || e.key === " ") {
413
+ e.preventDefault();
414
+ if (onClick) onClick();
415
+ else if (onSelect) onSelect(index);
416
+ }
417
+ },
367
418
  children: [
368
419
  icon && !!polarisIcon && /*#__PURE__*/ _jsx("span", {
369
- className: "Litho-Tabs__Tab-Icon mr-1",
420
+ className: "Litho-Tabs__Tab-Icon mr-1 ".concat(showIconOnMobile ? "" : "hidden @md:inline-flex"),
370
421
  children: /*#__PURE__*/ _jsx(Icon, {
371
422
  source: polarisIcon,
372
423
  color: selected && simple ? "default" : selected ? "primary" : "subdued",
373
424
  size: simple ? "lg" : undefined
374
425
  })
375
426
  }),
376
- icon && !!polarisIcon === false && /*#__PURE__*/ _jsx("span", {
377
- className: "Litho-Tabs__Tab-Icon ".concat(simple ? "mr-0" : "mr-1"),
378
- children: icon
427
+ icon && !polarisIcon && /*#__PURE__*/ _jsx("span", {
428
+ className: "Litho-Tabs__Tab-Icon ".concat(simple ? "mr-0" : "mr-1", " ").concat(showIconOnMobile ? "" : "hidden @md:inline-flex"),
429
+ children: /*#__PURE__*/ _jsx(Icon, {
430
+ source: icon,
431
+ color: selected && simple ? "default" : selected ? "primary" : "subdued",
432
+ size: simple ? "lg" : undefined
433
+ })
379
434
  }),
380
435
  /*#__PURE__*/ _jsx("span", {
381
436
  className: "Litho-Tabs__Tab-Content block min-h-5 leading-5",
@@ -388,6 +443,11 @@ function Tab() {
388
443
  color: selected && simple ? "default" : selected ? "active" : "subdued",
389
444
  size: simple ? "lg" : undefined
390
445
  })
446
+ }),
447
+ badgeCount >= 0 && /*#__PURE__*/ _jsx(Badge, {
448
+ status: badgeStatus,
449
+ className: "ml-1",
450
+ children: badgeCount
391
451
  })
392
452
  ]
393
453
  });
@@ -2,7 +2,33 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { tv } from "tailwind-variants";
3
3
  import Icon from "./Icon.js";
4
4
  import { CancelSmallMinor, TickSmallMinor } from "@shopify/polaris-icons";
5
- var styles = tv({
5
+ /**
6
+ * @component Tag
7
+ *
8
+ * @description A removable label component used to display active filters, selected categories, or user-applied tags.
9
+ *
10
+ * @usage
11
+ * - DO: Display removable filters, categories, or labels.
12
+ * - DON'T: Use for non-removable status indicators (use Badge).
13
+ *
14
+ * @accessibility
15
+ * - Tag renders a button for removal; ensure the remove action is accessible via keyboard.
16
+ *
17
+ * @alternative
18
+ * - If you need a non-interactive status label, use `Badge`.
19
+ * - If you need a selectable option, use `ChoiceList`.
20
+ *
21
+ * @param {Object} props - The properties for the Tag component.
22
+ * @param {React.ReactNode} props.children - The content to be displayed inside the Tag.
23
+ * @param {boolean} [props.disabled=false] - Whether the tag is disabled.
24
+ * @param {Function} [props.onClick] - The callback function to execute on tag click.
25
+ * @param {Function} [props.onRemove] - The callback function to execute when the remove icon is clicked.
26
+ * @param {string} [props.accessibilityLabel] - The accessibility label for the tag.
27
+ * @param {string} [props.url] - The URL to open when the tag is clicked.
28
+ * @param {string} [props.target="_self"] - Specifies where to open the URL.
29
+ *
30
+ * @returns {JSX.Element} The rendered Tag component.
31
+ */ var styles = tv({
6
32
  base: "Litho-Tag text-xs rounded-md inline-grid pl-1 whitespace-nowrap",
7
33
  variants: {
8
34
  disabled: {
@@ -75,21 +101,7 @@ var actionStyles = tv({
75
101
  }
76
102
  }
77
103
  });
78
- /**
79
- * Renders a Tag component with optional interactive and removable features.
80
- *
81
- * @function Tag
82
- * @param {Object} props - The properties for the Tag component.
83
- * @param {React.ReactNode} props.children - The content to be displayed inside the Tag.
84
- * @param {boolean} [props.disabled=false] - Whether the tag is disabled.
85
- * @param {Function} [props.onClick] - The callback function to execute on tag click.
86
- * @param {Function} [props.onRemove] - The callback function to execute when the remove icon is clicked.
87
- * @param {string} [props.accessibilityLabel] - The accessibility label for the tag.
88
- * @param {string} [props.url] - The URL to open when the tag is clicked.
89
- * @param {string} [props.target="_self"] - Specifies where to open the URL.
90
- *
91
- * @returns {JSX.Element} The rendered Tag component.
92
- */ function Tag() {
104
+ function Tag() {
93
105
  var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
94
106
  var children = props.children, _props_disabled = props.disabled, disabled = _props_disabled === void 0 ? false : _props_disabled, icon = props.icon, onClick = props.onClick, onRemove = props.onRemove, accessibilityLabel = props.accessibilityLabel, url = props.url, _props_target = props.target, target = _props_target === void 0 ? "_self" : _props_target, className = props.className, _props_selected = props.selected, selected = _props_selected === void 0 ? false : _props_selected;
95
107
  var interactive = !!url || !!onClick;
@@ -136,6 +148,15 @@ var actionStyles = tv({
136
148
  hasRemoveAction && /*#__PURE__*/ _jsx("div", {
137
149
  className: actionClasses,
138
150
  onClick: onRemove,
151
+ role: "button",
152
+ tabIndex: disabled ? -1 : 0,
153
+ "aria-label": "Remove",
154
+ onKeyDown: function(e) {
155
+ if (e.key === "Enter" || e.key === " ") {
156
+ e.preventDefault();
157
+ onRemove === null || onRemove === void 0 ? void 0 : onRemove();
158
+ }
159
+ },
139
160
  children: /*#__PURE__*/ _jsx(Icon, {
140
161
  source: CancelSmallMinor,
141
162
  color: disabled ? "disabled" : "default",
@@ -79,7 +79,37 @@ function _object_without_properties_loose(source, excluded) {
79
79
  }
80
80
  import { jsx as _jsx } from "react/jsx-runtime";
81
81
  import { tv } from "tailwind-variants";
82
- var styles = tv({
82
+ /**
83
+ * @component Text
84
+ *
85
+ * @description A typography component that renders text content with consistent heading and body variants, alignment, weight, and color options.
86
+ *
87
+ * @usage
88
+ * - DO: Use for all text content with consistent typography variants (headings, body, captions).
89
+ * - DON'T: Use raw HTML heading or paragraph tags; always use Text with the appropriate `variant` prop.
90
+ *
91
+ * @accessibility
92
+ * - Use the `as` prop to render semantically correct heading levels (h1-h6) matching the visual hierarchy.
93
+ * - Use `visuallyHidden` to provide screen-reader-only text without hiding content from assistive tech.
94
+ *
95
+ * @alternative
96
+ * - If you need a code block, use `Code` instead.
97
+ * - If you need a clickable text element, use `Link` or `Button` with `link` variant instead.
98
+ *
99
+ * @param {Object} props - Properties to customize the text component.
100
+ * @param {'left' | 'center' | 'right' | 'end' | 'start'} [props.alignment] - Text alignment.
101
+ * @param {'normal' | 'regular' | 'medium' | 'semibold' | 'bold'} [props.fontWeight] - Font weight.
102
+ * @param {'default' | 'subdued' | 'critical' | 'success' | 'warning' | 'alternate' | 'link' | 'disabled'} [props.color] - Text color variant.
103
+ * @param {boolean} [props.truncate] - Whether to truncate text with ellipsis.
104
+ * @param {'headingXl' | 'headingLg' | 'headingMd' | 'headingSm' | 'headingXs' | 'bodyXl' | 'bodyLg' | 'bodyMd' | 'bodySm' | 'bodyXs'} [props.variant] - Text size and style variant.
105
+ * @param {boolean} [props.visuallyHidden] - Visually hides text for accessibility.
106
+ * @param {string} [props.className] - Additional CSS class names.
107
+ * @param {string} [props.as] - Element type (e.g., 'p' or 'span').
108
+ * @param {number} [props.clampLines] - Number of lines to clamp.
109
+ * @param {boolean} [props.strike] - Whether to strike through the text.
110
+ * @param {React.ReactNode} [props.children] - The content to be displayed within the text component. Defaults to an empty string.
111
+ * @returns {JSX.Element} Rendered text component with applied styles.
112
+ */ var styles = tv({
83
113
  base: "Litho-Text block",
84
114
  variants: {
85
115
  alignment: {
@@ -218,23 +248,7 @@ var styles = tv({
218
248
  }
219
249
  ]
220
250
  });
221
- /**
222
- * A text component that renders styled text based on provided props.
223
- *
224
- * @param {Object} props - Properties to customize the text component.
225
- * @param {'left' | 'center' | 'right' | 'end' | 'start'} [props.alignment] - Text alignment.
226
- * @param {'normal' | 'regular' | 'medium' | 'semibold' | 'bold'} [props.fontWeight] - Font weight.
227
- * @param {'default' | 'subdued' | 'critical' | 'success' | 'warning' | 'alternate' | 'link' | 'disabled'} [props.color] - Text color variant.
228
- * @param {boolean} [props.truncate] - Whether to truncate text with ellipsis.
229
- * @param {'headingXl' | 'headingLg' | 'headingMd' | 'headingSm' | 'headingXs' | 'bodyXl' | 'bodyLg' | 'bodyMd' | 'bodySm' | 'bodyXs'} [props.variant] - Text size and style variant.
230
- * @param {boolean} [props.visuallyHidden] - Visually hides text for accessibility.
231
- * @param {string} [props.className] - Additional CSS class names.
232
- * @param {string} [props.as] - Element type (e.g., 'p' or 'span').
233
- * @param {number} [props.clampLines] - Number of lines to clamp.
234
- * @param {boolean} [props.strike] - Whether to strike through the text.
235
- * @param {React.ReactNode} [props.children] - The content to be displayed within the text component. Defaults to an empty string.
236
- * @returns {JSX.Element} Rendered text component with applied styles.
237
- */ function Text() {
251
+ function Text() {
238
252
  var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
239
253
  var alignment = props.alignment, as = props.as, className = props.className, color = props.color, fontWeight = props.fontWeight, truncate = props.truncate, variant = props.variant, visuallyHidden = props.visuallyHidden, clampLines = props.clampLines, strike = props.strike, children = props.children, rest = _object_without_properties(props, [
240
254
  "alignment",