@heymantle/litho 0.0.15 → 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 (371) 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/dist/cjs/components/ActionList.js +33 -25
  6. package/dist/cjs/components/AnnouncementBar.js +115 -18
  7. package/dist/cjs/components/AnnouncementCard.js +269 -0
  8. package/dist/cjs/components/AppProvider.js +15 -2
  9. package/dist/cjs/components/Autocomplete.js +58 -36
  10. package/dist/cjs/components/Badge.js +28 -14
  11. package/dist/cjs/components/Banner.js +37 -27
  12. package/dist/cjs/components/Box.js +50 -38
  13. package/dist/cjs/components/Button.js +338 -109
  14. package/dist/cjs/components/ButtonGroup.js +27 -14
  15. package/dist/cjs/components/Card.js +311 -143
  16. package/dist/cjs/components/Checkbox.js +55 -47
  17. package/dist/cjs/components/CheckboxCard.js +222 -0
  18. package/dist/cjs/components/CheckboxCardGroup.js +384 -0
  19. package/dist/cjs/components/ChoiceList.js +21 -11
  20. package/dist/cjs/components/Code.js +22 -8
  21. package/dist/cjs/components/Collapsible.js +24 -11
  22. package/dist/cjs/components/ColorField.js +163 -38
  23. package/dist/cjs/components/ContextualSaveBar.js +13 -6
  24. package/dist/cjs/components/DatePicker.js +48 -37
  25. package/dist/cjs/components/Disclosure.js +35 -22
  26. package/dist/cjs/components/Divider.js +82 -18
  27. package/dist/cjs/components/DropZone.js +111 -37
  28. package/dist/cjs/components/EmptyState.js +18 -6
  29. package/dist/cjs/components/Filters.js +84 -36
  30. package/dist/cjs/components/FooterHelp.js +14 -4
  31. package/dist/cjs/components/Form.js +13 -2
  32. package/dist/cjs/components/Frame.js +57 -22
  33. package/dist/cjs/components/FrameSaveBar.js +37 -6
  34. package/dist/cjs/components/Grid.js +31 -15
  35. package/dist/cjs/components/HorizontalStack.js +38 -25
  36. package/dist/cjs/components/Icon.js +683 -61
  37. package/dist/cjs/components/Image.js +35 -22
  38. package/dist/cjs/components/InlineError.js +19 -10
  39. package/dist/cjs/components/Label.js +21 -12
  40. package/dist/cjs/components/Layout.js +33 -24
  41. package/dist/cjs/components/LayoutSection.js +84 -22
  42. package/dist/cjs/components/Link.js +35 -22
  43. package/dist/cjs/components/List.js +28 -12
  44. package/dist/cjs/components/Listbox.js +53 -31
  45. package/dist/cjs/components/Loading.js +14 -2
  46. package/dist/cjs/components/Modal.js +22 -40
  47. package/dist/cjs/components/Navigation.js +107 -36
  48. package/dist/cjs/components/Page.js +44 -31
  49. package/dist/cjs/components/Pagination.js +20 -5
  50. package/dist/cjs/components/Pane.js +67 -4
  51. package/dist/cjs/components/Popover.js +37 -21
  52. package/dist/cjs/components/PopoverManager.js +14 -1
  53. package/dist/cjs/components/ProgressBar.js +28 -15
  54. package/dist/cjs/components/RadioButton.js +32 -24
  55. package/dist/cjs/components/RadioButtonCard.js +92 -67
  56. package/dist/cjs/components/RadioButtonCardGroup.js +379 -0
  57. package/dist/cjs/components/RangeSlider.js +34 -26
  58. package/dist/cjs/components/ResourceList.js +28 -14
  59. package/dist/cjs/components/Select.js +38 -26
  60. package/dist/cjs/components/SkeletonText.js +33 -18
  61. package/dist/cjs/components/Spinner.js +24 -12
  62. package/dist/cjs/components/Stack.js +131 -71
  63. package/dist/cjs/components/TabNavigation.js +27 -1
  64. package/dist/cjs/components/Table.js +58 -18
  65. package/dist/cjs/components/Tabs.js +52 -23
  66. package/dist/cjs/components/Tag.js +37 -16
  67. package/dist/cjs/components/Text.js +32 -18
  68. package/dist/cjs/components/TextField.js +119 -69
  69. package/dist/cjs/components/Thumbnail.js +25 -11
  70. package/dist/cjs/components/TimePicker.js +22 -1
  71. package/dist/cjs/components/Tip.js +140 -25
  72. package/dist/cjs/components/ToastNotification.js +107 -34
  73. package/dist/cjs/components/ToastProvider.js +13 -3
  74. package/dist/cjs/components/Tooltip.js +50 -41
  75. package/dist/cjs/components/TopBar.js +83 -9
  76. package/dist/cjs/components/VerticalStack.js +31 -16
  77. package/dist/cjs/index.js +24 -0
  78. package/dist/cjs/stories/Autocomplete.stories.js +10 -10
  79. package/dist/cjs/stories/Checkbox.stories.js +6 -8
  80. package/dist/cjs/stories/CheckboxCardGroup.stories.js +459 -0
  81. package/dist/cjs/stories/Collapsible.stories.js +11 -11
  82. package/dist/cjs/stories/ColorField.stories.js +2 -3
  83. package/dist/cjs/stories/ComplexExamples.stories.js +48 -77
  84. package/dist/cjs/stories/ContextualSaveBar.stories.js +1 -1
  85. package/dist/cjs/stories/Divider.stories.js +15 -16
  86. package/dist/cjs/stories/DropZone.stories.js +3 -3
  87. package/dist/cjs/stories/FooterHelp.stories.js +3 -4
  88. package/dist/cjs/stories/Form.stories.js +2 -4
  89. package/dist/cjs/stories/Grid.stories.js +24 -33
  90. package/dist/cjs/stories/Icon.stories.js +22 -23
  91. package/dist/cjs/stories/Image.stories.js +12 -15
  92. package/dist/cjs/stories/InlineError.stories.js +0 -1
  93. package/dist/cjs/stories/Layout.stories.js +96 -2
  94. package/dist/cjs/stories/LayoutSection.stories.js +13 -18
  95. package/dist/cjs/stories/List.stories.js +24 -28
  96. package/dist/cjs/stories/Listbox.stories.js +2 -2
  97. package/dist/cjs/stories/Loading.stories.js +21 -25
  98. package/dist/cjs/stories/Modal.stories.js +0 -1
  99. package/dist/cjs/stories/Pagination.stories.js +4 -4
  100. package/dist/cjs/stories/Pane.stories.js +10 -18
  101. package/dist/cjs/stories/Popover.stories.js +7 -7
  102. package/dist/cjs/stories/PopoverManager.stories.js +9 -9
  103. package/dist/cjs/stories/ProgressBar.stories.js +8 -8
  104. package/dist/cjs/stories/RadioButton.stories.js +2 -2
  105. package/dist/cjs/stories/RadioButtonCard.stories.js +2 -2
  106. package/dist/cjs/stories/RadioButtonCardGroup.stories.js +502 -0
  107. package/dist/cjs/stories/RangeSlider.stories.js +1 -3
  108. package/dist/cjs/stories/ResourceList.stories.js +13 -13
  109. package/dist/cjs/stories/Spinner.stories.js +9 -9
  110. package/dist/cjs/stories/Stack.stories.js +233 -51
  111. package/dist/cjs/stories/Tabs.stories.js +2 -2
  112. package/dist/cjs/stories/Tag.stories.js +1 -1
  113. package/dist/cjs/stories/Thumbnail.stories.js +17 -18
  114. package/dist/cjs/stories/TimePicker.stories.js +0 -5
  115. package/dist/cjs/stories/Tip.stories.js +1 -1
  116. package/dist/esm/components/ActionList.js +33 -25
  117. package/dist/esm/components/AnnouncementBar.js +115 -18
  118. package/dist/esm/components/AnnouncementCard.js +254 -0
  119. package/dist/esm/components/AppProvider.js +15 -2
  120. package/dist/esm/components/Autocomplete.js +58 -36
  121. package/dist/esm/components/Badge.js +28 -14
  122. package/dist/esm/components/Banner.js +37 -27
  123. package/dist/esm/components/Box.js +50 -38
  124. package/dist/esm/components/Button.js +338 -109
  125. package/dist/esm/components/ButtonGroup.js +27 -14
  126. package/dist/esm/components/Card.js +300 -140
  127. package/dist/esm/components/Checkbox.js +55 -47
  128. package/dist/esm/components/CheckboxCard.js +207 -0
  129. package/dist/esm/components/CheckboxCardGroup.js +370 -0
  130. package/dist/esm/components/ChoiceList.js +21 -11
  131. package/dist/esm/components/Code.js +22 -8
  132. package/dist/esm/components/Collapsible.js +24 -11
  133. package/dist/esm/components/ColorField.js +165 -40
  134. package/dist/esm/components/ContextualSaveBar.js +13 -6
  135. package/dist/esm/components/DatePicker.js +48 -37
  136. package/dist/esm/components/Disclosure.js +35 -22
  137. package/dist/esm/components/Divider.js +78 -20
  138. package/dist/esm/components/DropZone.js +111 -37
  139. package/dist/esm/components/EmptyState.js +18 -6
  140. package/dist/esm/components/Filters.js +84 -36
  141. package/dist/esm/components/FooterHelp.js +14 -4
  142. package/dist/esm/components/Form.js +13 -2
  143. package/dist/esm/components/Frame.js +57 -22
  144. package/dist/esm/components/FrameSaveBar.js +37 -6
  145. package/dist/esm/components/Grid.js +31 -15
  146. package/dist/esm/components/HorizontalStack.js +38 -25
  147. package/dist/esm/components/Icon.js +681 -62
  148. package/dist/esm/components/Image.js +35 -22
  149. package/dist/esm/components/InlineError.js +19 -10
  150. package/dist/esm/components/Label.js +21 -12
  151. package/dist/esm/components/Layout.js +58 -25
  152. package/dist/esm/components/LayoutSection.js +84 -22
  153. package/dist/esm/components/Link.js +35 -22
  154. package/dist/esm/components/List.js +28 -12
  155. package/dist/esm/components/Listbox.js +53 -31
  156. package/dist/esm/components/Loading.js +14 -2
  157. package/dist/esm/components/Modal.js +69 -41
  158. package/dist/esm/components/Navigation.js +107 -36
  159. package/dist/esm/components/Page.js +44 -31
  160. package/dist/esm/components/Pagination.js +20 -5
  161. package/dist/esm/components/Pane.js +67 -4
  162. package/dist/esm/components/Popover.js +37 -21
  163. package/dist/esm/components/PopoverManager.js +14 -1
  164. package/dist/esm/components/ProgressBar.js +28 -15
  165. package/dist/esm/components/RadioButton.js +32 -24
  166. package/dist/esm/components/RadioButtonCard.js +92 -67
  167. package/dist/esm/components/RadioButtonCardGroup.js +364 -0
  168. package/dist/esm/components/RangeSlider.js +34 -26
  169. package/dist/esm/components/ResourceList.js +28 -14
  170. package/dist/esm/components/Select.js +38 -26
  171. package/dist/esm/components/SkeletonText.js +33 -18
  172. package/dist/esm/components/Spinner.js +24 -12
  173. package/dist/esm/components/Stack.js +131 -71
  174. package/dist/esm/components/TabNavigation.js +27 -1
  175. package/dist/esm/components/Table.js +58 -18
  176. package/dist/esm/components/Tabs.js +52 -23
  177. package/dist/esm/components/Tag.js +37 -16
  178. package/dist/esm/components/Text.js +32 -18
  179. package/dist/esm/components/TextField.js +119 -69
  180. package/dist/esm/components/Thumbnail.js +25 -11
  181. package/dist/esm/components/TimePicker.js +22 -1
  182. package/dist/esm/components/Tip.js +140 -25
  183. package/dist/esm/components/ToastNotification.js +107 -34
  184. package/dist/esm/components/ToastProvider.js +13 -3
  185. package/dist/esm/components/Tooltip.js +50 -41
  186. package/dist/esm/components/TopBar.js +83 -9
  187. package/dist/esm/components/VerticalStack.js +31 -16
  188. package/dist/esm/index.js +6 -0
  189. package/dist/esm/stories/Autocomplete.stories.js +10 -10
  190. package/dist/esm/stories/Checkbox.stories.js +6 -8
  191. package/dist/esm/stories/CheckboxCardGroup.stories.js +421 -0
  192. package/dist/esm/stories/Collapsible.stories.js +11 -11
  193. package/dist/esm/stories/ColorField.stories.js +2 -3
  194. package/dist/esm/stories/ComplexExamples.stories.js +48 -77
  195. package/dist/esm/stories/ContextualSaveBar.stories.js +1 -1
  196. package/dist/esm/stories/Divider.stories.js +15 -16
  197. package/dist/esm/stories/DropZone.stories.js +3 -3
  198. package/dist/esm/stories/FooterHelp.stories.js +3 -4
  199. package/dist/esm/stories/Form.stories.js +2 -4
  200. package/dist/esm/stories/Grid.stories.js +24 -33
  201. package/dist/esm/stories/Icon.stories.js +22 -23
  202. package/dist/esm/stories/Image.stories.js +12 -15
  203. package/dist/esm/stories/InlineError.stories.js +0 -1
  204. package/dist/esm/stories/Layout.stories.js +93 -2
  205. package/dist/esm/stories/LayoutSection.stories.js +13 -18
  206. package/dist/esm/stories/List.stories.js +24 -28
  207. package/dist/esm/stories/Listbox.stories.js +2 -2
  208. package/dist/esm/stories/Loading.stories.js +21 -25
  209. package/dist/esm/stories/Modal.stories.js +0 -1
  210. package/dist/esm/stories/Pagination.stories.js +4 -4
  211. package/dist/esm/stories/Pane.stories.js +10 -18
  212. package/dist/esm/stories/Popover.stories.js +7 -7
  213. package/dist/esm/stories/PopoverManager.stories.js +9 -9
  214. package/dist/esm/stories/ProgressBar.stories.js +8 -8
  215. package/dist/esm/stories/RadioButton.stories.js +2 -2
  216. package/dist/esm/stories/RadioButtonCard.stories.js +2 -2
  217. package/dist/esm/stories/RadioButtonCardGroup.stories.js +461 -0
  218. package/dist/esm/stories/RangeSlider.stories.js +1 -3
  219. package/dist/esm/stories/ResourceList.stories.js +13 -13
  220. package/dist/esm/stories/Spinner.stories.js +9 -9
  221. package/dist/esm/stories/Stack.stories.js +224 -51
  222. package/dist/esm/stories/Tabs.stories.js +2 -2
  223. package/dist/esm/stories/Tag.stories.js +1 -1
  224. package/dist/esm/stories/Thumbnail.stories.js +17 -18
  225. package/dist/esm/stories/TimePicker.stories.js +0 -5
  226. package/dist/esm/stories/Tip.stories.js +1 -1
  227. package/dist/types/components/ActionList.d.ts +1 -31
  228. package/dist/types/components/ActionList.d.ts.map +1 -1
  229. package/dist/types/components/AnnouncementBar.d.ts +1 -19
  230. package/dist/types/components/AnnouncementBar.d.ts.map +1 -1
  231. package/dist/types/components/AnnouncementCard.d.ts +3 -0
  232. package/dist/types/components/AnnouncementCard.d.ts.map +1 -0
  233. package/dist/types/components/AppProvider.d.ts +14 -1
  234. package/dist/types/components/AppProvider.d.ts.map +1 -1
  235. package/dist/types/components/Autocomplete.d.ts +1 -71
  236. package/dist/types/components/Autocomplete.d.ts.map +1 -1
  237. package/dist/types/components/Badge.d.ts +1 -19
  238. package/dist/types/components/Badge.d.ts.map +1 -1
  239. package/dist/types/components/Banner.d.ts +1 -37
  240. package/dist/types/components/Banner.d.ts.map +1 -1
  241. package/dist/types/components/Box.d.ts +1 -68
  242. package/dist/types/components/Box.d.ts.map +1 -1
  243. package/dist/types/components/Button.d.ts +1 -131
  244. package/dist/types/components/Button.d.ts.map +1 -1
  245. package/dist/types/components/ButtonGroup.d.ts +1 -22
  246. package/dist/types/components/ButtonGroup.d.ts.map +1 -1
  247. package/dist/types/components/Card.d.ts +54 -59
  248. package/dist/types/components/Card.d.ts.map +1 -1
  249. package/dist/types/components/Checkbox.d.ts +1 -63
  250. package/dist/types/components/Checkbox.d.ts.map +1 -1
  251. package/dist/types/components/CheckboxCard.d.ts +3 -0
  252. package/dist/types/components/CheckboxCard.d.ts.map +1 -0
  253. package/dist/types/components/CheckboxCardGroup.d.ts +3 -0
  254. package/dist/types/components/CheckboxCardGroup.d.ts.map +1 -0
  255. package/dist/types/components/ChoiceList.d.ts +1 -42
  256. package/dist/types/components/ChoiceList.d.ts.map +1 -1
  257. package/dist/types/components/Code.d.ts +1 -26
  258. package/dist/types/components/Code.d.ts.map +1 -1
  259. package/dist/types/components/Collapsible.d.ts +1 -15
  260. package/dist/types/components/Collapsible.d.ts.map +1 -1
  261. package/dist/types/components/ColorField.d.ts +13 -34
  262. package/dist/types/components/ColorField.d.ts.map +1 -1
  263. package/dist/types/components/ContextualSaveBar.d.ts +13 -6
  264. package/dist/types/components/ContextualSaveBar.d.ts.map +1 -1
  265. package/dist/types/components/DatePicker.d.ts +1 -64
  266. package/dist/types/components/DatePicker.d.ts.map +1 -1
  267. package/dist/types/components/Disclosure.d.ts +1 -25
  268. package/dist/types/components/Disclosure.d.ts.map +1 -1
  269. package/dist/types/components/Divider.d.ts +1 -19
  270. package/dist/types/components/Divider.d.ts.map +1 -1
  271. package/dist/types/components/DropZone.d.ts +1 -62
  272. package/dist/types/components/DropZone.d.ts.map +1 -1
  273. package/dist/types/components/EmptyState.d.ts +1 -50
  274. package/dist/types/components/EmptyState.d.ts.map +1 -1
  275. package/dist/types/components/Filters.d.ts +13 -68
  276. package/dist/types/components/Filters.d.ts.map +1 -1
  277. package/dist/types/components/FooterHelp.d.ts +14 -4
  278. package/dist/types/components/FooterHelp.d.ts.map +1 -1
  279. package/dist/types/components/Form.d.ts +13 -2
  280. package/dist/types/components/Form.d.ts.map +1 -1
  281. package/dist/types/components/Frame.d.ts +15 -36
  282. package/dist/types/components/Frame.d.ts.map +1 -1
  283. package/dist/types/components/FrameSaveBar.d.ts +3 -6
  284. package/dist/types/components/FrameSaveBar.d.ts.map +1 -1
  285. package/dist/types/components/Grid.d.ts +5 -21
  286. package/dist/types/components/Grid.d.ts.map +1 -1
  287. package/dist/types/components/HorizontalStack.d.ts +1 -34
  288. package/dist/types/components/HorizontalStack.d.ts.map +1 -1
  289. package/dist/types/components/Icon.d.ts +1 -41
  290. package/dist/types/components/Icon.d.ts.map +1 -1
  291. package/dist/types/components/Image.d.ts +1 -43
  292. package/dist/types/components/Image.d.ts.map +1 -1
  293. package/dist/types/components/InlineError.d.ts +1 -20
  294. package/dist/types/components/InlineError.d.ts.map +1 -1
  295. package/dist/types/components/Label.d.ts +1 -26
  296. package/dist/types/components/Label.d.ts.map +1 -1
  297. package/dist/types/components/Layout.d.ts +24 -15
  298. package/dist/types/components/Layout.d.ts.map +1 -1
  299. package/dist/types/components/LayoutSection.d.ts +1 -19
  300. package/dist/types/components/LayoutSection.d.ts.map +1 -1
  301. package/dist/types/components/Link.d.ts +1 -37
  302. package/dist/types/components/Link.d.ts.map +1 -1
  303. package/dist/types/components/List.d.ts +5 -17
  304. package/dist/types/components/List.d.ts.map +1 -1
  305. package/dist/types/components/Listbox.d.ts +1 -32
  306. package/dist/types/components/Listbox.d.ts.map +1 -1
  307. package/dist/types/components/Loading.d.ts +14 -2
  308. package/dist/types/components/Loading.d.ts.map +1 -1
  309. package/dist/types/components/Modal.d.ts +26 -35
  310. package/dist/types/components/Modal.d.ts.map +1 -1
  311. package/dist/types/components/Navigation.d.ts +1 -25
  312. package/dist/types/components/Navigation.d.ts.map +1 -1
  313. package/dist/types/components/Page.d.ts +1 -57
  314. package/dist/types/components/Page.d.ts.map +1 -1
  315. package/dist/types/components/Pagination.d.ts +13 -3
  316. package/dist/types/components/Pagination.d.ts.map +1 -1
  317. package/dist/types/components/Pane.d.ts +55 -3
  318. package/dist/types/components/Pane.d.ts.map +1 -1
  319. package/dist/types/components/Popover.d.ts +5 -37
  320. package/dist/types/components/Popover.d.ts.map +1 -1
  321. package/dist/types/components/PopoverManager.d.ts.map +1 -1
  322. package/dist/types/components/ProgressBar.d.ts +1 -22
  323. package/dist/types/components/ProgressBar.d.ts.map +1 -1
  324. package/dist/types/components/RadioButton.d.ts +1 -37
  325. package/dist/types/components/RadioButton.d.ts.map +1 -1
  326. package/dist/types/components/RadioButtonCard.d.ts +1 -39
  327. package/dist/types/components/RadioButtonCard.d.ts.map +1 -1
  328. package/dist/types/components/RadioButtonCardGroup.d.ts +3 -0
  329. package/dist/types/components/RadioButtonCardGroup.d.ts.map +1 -0
  330. package/dist/types/components/RangeSlider.d.ts +1 -42
  331. package/dist/types/components/RangeSlider.d.ts.map +1 -1
  332. package/dist/types/components/ResourceList.d.ts +5 -30
  333. package/dist/types/components/ResourceList.d.ts.map +1 -1
  334. package/dist/types/components/Select.d.ts +1 -46
  335. package/dist/types/components/Select.d.ts.map +1 -1
  336. package/dist/types/components/SkeletonText.d.ts +1 -26
  337. package/dist/types/components/SkeletonText.d.ts.map +1 -1
  338. package/dist/types/components/Spinner.d.ts +1 -16
  339. package/dist/types/components/Spinner.d.ts.map +1 -1
  340. package/dist/types/components/Stack.d.ts +1 -47
  341. package/dist/types/components/Stack.d.ts.map +1 -1
  342. package/dist/types/components/TabNavigation.d.ts.map +1 -1
  343. package/dist/types/components/Table.d.ts +13 -58
  344. package/dist/types/components/Table.d.ts.map +1 -1
  345. package/dist/types/components/Tabs.d.ts +3 -41
  346. package/dist/types/components/Tabs.d.ts.map +1 -1
  347. package/dist/types/components/Tag.d.ts +1 -24
  348. package/dist/types/components/Tag.d.ts.map +1 -1
  349. package/dist/types/components/Text.d.ts +1 -30
  350. package/dist/types/components/Text.d.ts.map +1 -1
  351. package/dist/types/components/TextField.d.ts +1 -109
  352. package/dist/types/components/TextField.d.ts.map +1 -1
  353. package/dist/types/components/Thumbnail.d.ts +1 -16
  354. package/dist/types/components/Thumbnail.d.ts.map +1 -1
  355. package/dist/types/components/TimePicker.d.ts +28 -1
  356. package/dist/types/components/TimePicker.d.ts.map +1 -1
  357. package/dist/types/components/Tip.d.ts +1 -21
  358. package/dist/types/components/Tip.d.ts.map +1 -1
  359. package/dist/types/components/ToastNotification.d.ts +1 -34
  360. package/dist/types/components/ToastNotification.d.ts.map +1 -1
  361. package/dist/types/components/ToastProvider.d.ts +13 -3
  362. package/dist/types/components/ToastProvider.d.ts.map +1 -1
  363. package/dist/types/components/Tooltip.d.ts +1 -54
  364. package/dist/types/components/Tooltip.d.ts.map +1 -1
  365. package/dist/types/components/TopBar.d.ts +1 -19
  366. package/dist/types/components/TopBar.d.ts.map +1 -1
  367. package/dist/types/components/VerticalStack.d.ts +1 -25
  368. package/dist/types/components/VerticalStack.d.ts.map +1 -1
  369. package/dist/types/index.d.ts +6 -0
  370. package/index.css +76 -14
  371. package/package.json +4 -3
@@ -1,6 +1,28 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { tv } from "tailwind-variants";
3
- var styles = tv({
3
+ /**
4
+ * @component Spinner
5
+ *
6
+ * @description An animated loading indicator for inline use within buttons, cards, or sections during asynchronous operations.
7
+ *
8
+ * @usage
9
+ * - DO: Use inline within buttons, cards, or sections to indicate localized loading.
10
+ * - DON'T: Use as a full-page loading indicator; use `Loading` for page-level progress bars.
11
+ *
12
+ * @accessibility
13
+ * - Renders with `role="status"` and an `aria-label`; always provide a descriptive `accessibilityLabel`.
14
+ * - Avoid relying on the animation alone; the `role="status"` ensures screen readers announce loading state.
15
+ *
16
+ * @alternative
17
+ * - If you need a page-level progress bar, use `Loading` instead.
18
+ * - If you need placeholder content while data loads, use `SkeletonText` instead.
19
+ *
20
+ * @param {Object} props - The props object.
21
+ * @param {('small'|'large')} [props.size='large'] - The size of the spinner, either "small" or "large".
22
+ * @param {('default'|'subdued')} [props.color='default'] - The color variant of the spinner.
23
+ * @param {string} [props.accessibilityLabel='Loading...'] - The accessible label for screen readers, describing the spinner's purpose.
24
+ * @returns {JSX.Element} The rendered Spinner component.
25
+ */ var styles = tv({
4
26
  base: "Litho-Spinner",
5
27
  variants: {
6
28
  size: {
@@ -19,17 +41,7 @@ var svgStyles = tv({
19
41
  }
20
42
  }
21
43
  });
22
- /**
23
- * Spinner Component
24
- *
25
- * This component renders a loading spinner with customizable size, color, and accessibility label.
26
- *
27
- * @param {Object} props - The props object.
28
- * @param {('small'|'large')} [props.size='large'] - The size of the spinner, either "small" or "large".
29
- * @param {('default'|'subdued')} [props.color='default'] - The color variant of the spinner.
30
- * @param {string} [props.accessibilityLabel='Loading...'] - The accessible label for screen readers, describing the spinner's purpose.
31
- * @returns {JSX.Element} The rendered Spinner component.
32
- */ function Spinner() {
44
+ function Spinner() {
33
45
  var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
34
46
  var _props_size = props.size, size = _props_size === void 0 ? "large" : _props_size, _props_color = props.color, color = _props_color === void 0 ? "default" : _props_color, _props_accessibilityLabel = props.accessibilityLabel, accessibilityLabel = _props_accessibilityLabel === void 0 ? "Loading..." : _props_accessibilityLabel;
35
47
  var classes = styles({
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  function _define_property(obj, key, value) {
3
2
  if (key in obj) {
4
3
  Object.defineProperty(obj, key, {
@@ -80,7 +79,62 @@ function _object_without_properties_loose(source, excluded) {
80
79
  }
81
80
  import { jsx as _jsx } from "react/jsx-runtime";
82
81
  import { tv } from "tailwind-variants";
83
- var styles = tv({
82
+ /**
83
+ * @component Stack
84
+ *
85
+ * @description A flex layout component that arranges children in a row or column with configurable gap, alignment, and wrapping.
86
+ *
87
+ * @usage
88
+ * - DO: Arrange child elements with consistent spacing using the `gap` prop.
89
+ * - DON'T: Use for grid-based layouts (use `Grid` instead).
90
+ *
91
+ * @accessibility
92
+ * - Stack is a layout utility; ensure child content maintains logical reading order.
93
+ *
94
+ * @alternative
95
+ * - If you need explicit horizontal layout, use `Stack` with `horizontal` prop.
96
+ * - If you need responsive layout that switches from vertical to horizontal at a breakpoint, use `Stack` with `horizontal="md"` (or `"sm"`, `"lg"`, etc.).
97
+ * - If you need 2D grid layout, use `Grid`.
98
+ *
99
+ * @param {Object} [props={}] - Component props.
100
+ * @param {string} [props.as='div'] - The HTML element to render. Defaults to `div`.
101
+ * @param {React.ReactNode} [props.children] - Child elements to render inside the stack.
102
+ * @param {boolean|'xs'|'sm'|'md'|'lg'|'xl'} [props.horizontal=false] - Direction control. When `true`, always horizontal (flex-row). When a breakpoint string is passed (e.g. `"md"`), the stack is vertical below that breakpoint and horizontal at/above it. Defaults to `false` (vertical).
103
+ * @param {('none'|'xs'|'sm'|'md'|'lg'|'0'|'px'|'0.5'|'1'|'1.5'|'2'|'3'|'4'|'5'|'6'|'8'|'10')} [props.gap='md'] - Spacing between children. Semantic options: 'none' (0), 'xs' (1), 'sm' (2), 'md' (4), 'lg' (8). Numeric options: '0', 'px', '0.5', '1', '2', '3', '4', '5', '6', '8', '10'. Defaults to 'md'.
104
+ * @param {string} [props.id] - Optional ID for the component.
105
+ * @param {string} [props.className] - Additional custom class names to apply to the component.
106
+ * @param {('start'|'center'|'end'|'stretch'|'baseline')} [props.align='stretch'] - Cross-axis alignment (maps to CSS `align-items`). Controls vertical alignment for horizontal stacks and horizontal alignment for vertical stacks.
107
+ * @param {boolean} [props.wrap=false] - Whether children should wrap to the next line if necessary. Defaults to false.
108
+ * @param {('start'|'center'|'end'|'between'|'evenly'|'around')} [props.justify='start'] - Main axis justification. Controls horizontal justification for horizontal stacks and vertical justification for vertical stacks.
109
+ * @param {boolean} [props.fill=false] - When true and horizontal is active, direct children fill equal space (flex: 1 1 0%). Set to false to let children size naturally. Defaults to false.
110
+ * @param {('1'|'2'|'3'|'4'|'5'|'6'|null)} [props.flex=null] - Flex grow value. Sets `flex-1` through `flex-6` on the stack. Defaults to null (no flex).
111
+ * @param {boolean} [props.fullWidth=false] - When true, applies width: 100% (w-full). Defaults to false.
112
+ * @param {Object} [restProps] - Additional props passed to the root element.
113
+ *
114
+ * @returns {JSX.Element} The rendered Stack component.
115
+ *
116
+ * @example
117
+ * // Vertical stack (default)
118
+ * <Stack gap="sm" align="center">
119
+ * <div>Item 1</div>
120
+ * <div>Item 2</div>
121
+ * </Stack>
122
+ *
123
+ * @example
124
+ * // Horizontal stack
125
+ * <Stack horizontal>
126
+ * <div>Item 1</div>
127
+ * <div>Item 2</div>
128
+ * </Stack>
129
+ *
130
+ * @example
131
+ * // Responsive: vertical on mobile, horizontal at md breakpoint
132
+ * <Stack horizontal="md">
133
+ * <div>Column 1</div>
134
+ * <div>Column 2</div>
135
+ * <div>Column 3</div>
136
+ * </Stack>
137
+ */ var styles = tv({
84
138
  base: "Litho-Stack flex",
85
139
  variants: {
86
140
  direction: {
@@ -99,6 +153,7 @@ var styles = tv({
99
153
  "px": "gap-px",
100
154
  "0.5": "gap-0.5",
101
155
  "1": "gap-1",
156
+ "1.5": "gap-1.5",
102
157
  "2": "gap-2",
103
158
  "3": "gap-3",
104
159
  "4": "gap-4",
@@ -107,75 +162,66 @@ var styles = tv({
107
162
  "8": "gap-8",
108
163
  "10": "gap-10"
109
164
  },
110
- align: {
111
- start: "justify-start",
112
- center: "justify-center",
113
- end: "justify-end",
114
- "space-between": "justify-between",
115
- "space-evenly": "justify-evenly",
116
- "space-around": "justify-around",
117
- spaceBetween: "justify-between"
165
+ flex: {
166
+ "1": "flex-1",
167
+ "2": "flex-2",
168
+ "3": "flex-3",
169
+ "4": "flex-4",
170
+ "5": "flex-5",
171
+ "6": "flex-6"
118
172
  },
119
- blockAlign: {
173
+ align: {
120
174
  start: "items-start",
121
175
  center: "items-center",
122
176
  end: "items-end",
123
- stretch: "items-stretch"
177
+ stretch: "items-stretch",
178
+ baseline: "items-baseline"
124
179
  },
125
- inlineAlign: {
126
- start: "items-start",
127
- center: "items-center",
128
- end: "items-end",
129
- stretch: "items-stretch"
180
+ justify: {
181
+ start: "justify-start",
182
+ center: "justify-center",
183
+ end: "justify-end",
184
+ between: "justify-between",
185
+ evenly: "justify-evenly",
186
+ stretch: "justify-stretch",
187
+ around: "justify-around"
130
188
  },
131
189
  wrap: {
132
190
  true: "flex-wrap",
133
191
  false: "flex-nowrap"
192
+ },
193
+ fullWidth: {
194
+ true: "w-full",
195
+ false: ""
134
196
  }
135
197
  },
136
198
  defaultVariants: {
137
199
  direction: "vertical",
138
200
  gap: "md",
139
- align: "start"
201
+ align: "stretch",
202
+ justify: "start",
203
+ fullWidth: false
140
204
  }
141
205
  });
142
- /**
143
- * Stack Component
144
- *
145
- * A flexible stack component for creating vertical or horizontal layouts with customizable spacing and alignment.
146
- * By default, creates a vertical stack with medium gap spacing.
147
- *
148
- * @param {Object} [props={}] - Component props.
149
- * @param {string} [props.as='div'] - The HTML element to render. Defaults to `div`.
150
- * @param {React.ReactNode} [props.children] - Child elements to render inside the stack.
151
- * @param {boolean} [props.horizontal=false] - If true, renders a horizontal stack (flex-row). Defaults to vertical (flex-col).
152
- * @param {('none'|'xs'|'sm'|'md'|'lg'|'0'|'px'|'0.5'|'1'|'2'|'3'|'4'|'5'|'6'|'8'|'10')} [props.gap='md'] - Spacing between children. Semantic options: 'none' (0), 'xs' (1), 'sm' (2), 'md' (4), 'lg' (8). Numeric options: '0', 'px', '0.5', '1', '2', '3', '4', '5', '6', '8', '10'. Defaults to 'md'.
153
- * @param {string} [props.id] - Optional ID for the component.
154
- * @param {string} [props.className] - Additional custom class names to apply to the component.
155
- * @param {('start'|'center'|'end'|'space-between'|'space-evenly'|'space-around'|'spaceBetween')} [props.align='start'] - Main axis alignment. Controls horizontal alignment for horizontal stacks and vertical alignment for vertical stacks.
156
- * @param {('start'|'center'|'end'|'stretch')} [props.blockAlign] - Cross-axis alignment for horizontal stacks (vertical alignment). Only applicable when horizontal=true.
157
- * @param {('start'|'center'|'end'|'stretch')} [props.inlineAlign] - Cross-axis alignment for vertical stacks (horizontal alignment). Only applicable when horizontal=false.
158
- * @param {boolean} [props.wrap=false] - Whether children should wrap to the next line if necessary. Defaults to false.
159
- * @param {Object} [restProps] - Additional props passed to the root element.
160
- *
161
- * @returns {JSX.Element} The rendered Stack component.
162
- *
163
- * @example
164
- * // Vertical stack (default)
165
- * <Stack gap="sm" inlineAlign="center">
166
- * <div>Item 1</div>
167
- * <div>Item 2</div>
168
- * </Stack>
169
- *
170
- * @example
171
- * // Horizontal stack
172
- * <Stack horizontal gap="md" blockAlign="center" wrap={true}>
173
- * <div>Item 1</div>
174
- * <div>Item 2</div>
175
- * </Stack>
176
- */ function Stack() {
206
+ // Static maps for Tailwind JIT scanability — do not construct dynamically
207
+ var responsiveDirectionClasses = {
208
+ xs: "flex-col xs:flex-row",
209
+ sm: "flex-col sm:flex-row",
210
+ md: "flex-col md:flex-row",
211
+ lg: "flex-col lg:flex-row",
212
+ xl: "flex-col xl:flex-row"
213
+ };
214
+ var fillModifierClasses = {
215
+ true: "Litho-Stack--fill",
216
+ xs: "Litho-Stack--fill-xs",
217
+ sm: "Litho-Stack--fill-sm",
218
+ md: "Litho-Stack--fill-md",
219
+ lg: "Litho-Stack--fill-lg",
220
+ xl: "Litho-Stack--fill-xl"
221
+ };
222
+ function Stack() {
177
223
  var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
178
- var _props_as = props.as, as = _props_as === void 0 ? "div" : _props_as, children = props.children, _props_horizontal = props.horizontal, horizontal = _props_horizontal === void 0 ? false : _props_horizontal, _props_gap = props.gap, gap = _props_gap === void 0 ? "md" : _props_gap, id = props.id, className = props.className, align = props.align, blockAlign = props.blockAlign, inlineAlign = props.inlineAlign, _props_wrap = props.wrap, wrap = _props_wrap === void 0 ? false : _props_wrap, restProps = _object_without_properties(props, [
224
+ var _props_as = props.as, as = _props_as === void 0 ? "div" : _props_as, children = props.children, _props_horizontal = props.horizontal, horizontal = _props_horizontal === void 0 ? false : _props_horizontal, _props_gap = props.gap, gap = _props_gap === void 0 ? "md" : _props_gap, id = props.id, className = props.className, align = props.align, justify = props.justify, _props_wrap = props.wrap, wrap = _props_wrap === void 0 ? false : _props_wrap, _props_flex = props.flex, flex = _props_flex === void 0 ? null : _props_flex, _props_fill = props.fill, fill = _props_fill === void 0 ? false : _props_fill, _props_fullWidth = props.fullWidth, fullWidth = _props_fullWidth === void 0 ? false : _props_fullWidth, restProps = _object_without_properties(props, [
179
225
  "as",
180
226
  "children",
181
227
  "horizontal",
@@ -183,29 +229,43 @@ var styles = tv({
183
229
  "id",
184
230
  "className",
185
231
  "align",
186
- "blockAlign",
187
- "inlineAlign",
188
- "wrap"
232
+ "justify",
233
+ "wrap",
234
+ "flex",
235
+ "fill",
236
+ "fullWidth"
189
237
  ]);
190
- var direction = horizontal ? "horizontal" : "vertical";
191
- // For horizontal stacks, use blockAlign for cross-axis
192
- // For vertical stacks, use inlineAlign for cross-axis
193
- var crossAxisAlign = horizontal ? blockAlign : inlineAlign;
194
- var classes = styles(_object_spread_props(_object_spread({
238
+ var isResponsive = typeof horizontal === "string";
239
+ var isHorizontal = horizontal === true;
240
+ var effectivelyHorizontal = isHorizontal || isResponsive;
241
+ // For boolean horizontal, use tv direction variant
242
+ // For responsive, tv gets "vertical" (flex-col) and responsive classes override at breakpoint
243
+ var direction = isHorizontal ? "horizontal" : "vertical";
244
+ // Horizontal stacks default to center (items-center), vertical to stretch (items-stretch)
245
+ var effectiveAlign = align !== undefined ? align : effectivelyHorizontal ? "center" : "stretch";
246
+ var classes = styles({
195
247
  direction: direction,
196
248
  gap: gap,
197
- align: align
198
- }, horizontal && blockAlign ? {
199
- blockAlign: blockAlign
200
- } : {}, !horizontal && inlineAlign ? {
201
- inlineAlign: inlineAlign
202
- } : {}), {
203
- wrap: wrap
204
- }));
249
+ align: effectiveAlign,
250
+ justify: justify,
251
+ wrap: wrap,
252
+ flex: flex,
253
+ fullWidth: fullWidth
254
+ });
255
+ // Responsive direction classes (e.g. "flex-col md:flex-row")
256
+ var responsiveClasses = isResponsive ? responsiveDirectionClasses[horizontal] : "";
257
+ // Fill modifier class for CSS child targeting
258
+ var fillClass = fill && effectivelyHorizontal ? fillModifierClasses[horizontal] || fillModifierClasses["true"] : "";
205
259
  var Element = as;
260
+ var allClasses = [
261
+ classes,
262
+ responsiveClasses,
263
+ fillClass,
264
+ className
265
+ ].filter(Boolean).join(" ");
206
266
  return /*#__PURE__*/ _jsx(Element, _object_spread_props(_object_spread({
207
267
  id: id,
208
- className: "".concat(classes).concat(className ? " ".concat(className) : "")
268
+ className: allClasses
209
269
  }, restProps), {
210
270
  children: children
211
271
  }));
@@ -53,7 +53,33 @@ import Button from "./Button.js";
53
53
  import Text from "./Text.js";
54
54
  import Spinner from "./Spinner.js";
55
55
  import Tooltip from "./Tooltip.js";
56
- var AVG_CHAR_WIDTH = 5.5;
56
+ /**
57
+ * @component TabNavigation
58
+ *
59
+ * @description A URL-based tab navigation component that renders tabs as links, supporting closeable tabs and route-driven active states.
60
+ *
61
+ * @usage
62
+ * - DO: Use for navigation tabs that change the URL/route.
63
+ * - DON'T: Use for in-page content switching without URL changes (use Tabs).
64
+ *
65
+ * @accessibility
66
+ * - Renders as navigation links; ensure each tab link has descriptive text.
67
+ *
68
+ * @alternative
69
+ * - If you need in-page content tabs without URL routing, use `Tabs`. If you need a sidebar nav, use `Navigation`.
70
+ *
71
+ * @param {Object} props - Component properties.
72
+ * @param {Array<Object>} [props.tabs=[]] - Array of tab objects to display.
73
+ * @param {string} props.tabs[].id - Unique identifier for the tab.
74
+ * @param {string} props.tabs[].title - Display title for the tab.
75
+ * @param {boolean} [props.tabs[].loading] - Whether the tab is in a loading state.
76
+ * @param {Object} [props.tabs[].readStatus] - Read status indicator for the tab.
77
+ * @param {string} [props.activeTabId] - The ID of the currently active tab.
78
+ * @param {Function} [props.onTabClick] - Callback fired when a tab is clicked, receives the tab ID.
79
+ * @param {Function} [props.onTabClose] - Callback fired when a tab's close button is clicked, receives the tab ID.
80
+ * @param {string} [props.className=""] - Additional CSS class names for the container.
81
+ * @returns {JSX.Element} The rendered TabNavigation component.
82
+ */ var AVG_CHAR_WIDTH = 5.5;
57
83
  var tabStyles = tv({
58
84
  base: "relative group cursor-pointer rounded-t-sm items-center px-2 pt-2 gap-0.5 overflow-hidden min-w-[60px] max-w-[160px] pointer-coarse:pb-1 pointer-coarse:pt-3 transition-colors",
59
85
  variants: {
@@ -163,19 +163,21 @@ import { SelectionType } from "../utilities/useIndexResourceState.js";
163
163
  import { useMobile } from "../utilities/useMobile.js";
164
164
  import { useMounted } from "../utilities/useMounted.js";
165
165
  import useTableScrollState from "../utilities/useTableScrollState.js";
166
- var TableContext = /*#__PURE__*/ createContext({});
167
- var TableWrapperContext = /*#__PURE__*/ createContext({});
168
166
  /**
169
- * @typedef {Object} TableHeading
170
- * @property {string|React.ReactNode} title - The title content of the heading.
171
- * @property {boolean} [sortable=false] - Whether the column is sortable.
172
- * @property {"start" | "end" | "left" | "right" | "center"} [alignment="start"] - Alignment of the heading content.
173
- * @property {boolean} [hidden=false] - Whether the heading is hidden.
174
- * @property {string|React.ReactNode} [tooltip] - Tooltip content for the heading.
175
- * @property {string|React.ReactNode} [tooltipContent] - Alternative tooltip content for the heading.
176
- * @property {Function} [onAction] - Callback function when the heading is clicked.
177
- */ /**
178
- * 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`.
179
181
  *
180
182
  * @param {Object} props - Component props.
181
183
  * @param {Array<TableHeading|string|React.ReactNode>} [props.headings=[]] - Column headings. Can be strings, React nodes, or configuration objects.
@@ -202,6 +204,17 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
202
204
  * @param {Function} [props.onSelectionChange] - Callback for handling selection changes.
203
205
  * @param {boolean} [props.loading=false] - Whether the table is loading.
204
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.
205
218
  */ function Table() {
206
219
  var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
207
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 ? {
@@ -462,13 +475,23 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
462
475
  if (isSortable) handleSort(sortIndex);
463
476
  else if (heading.onAction) heading.onAction();
464
477
  };
465
- var labelContent = /*#__PURE__*/ _jsxs("div", {
478
+ var labelContent = /*#__PURE__*/ _jsxs("div", _object_spread_props(_object_spread({
466
479
  className: styles.headingLabelStyles({
467
480
  alignment: alignment,
468
481
  sortable: !!isSortable,
469
482
  interactive: !!isInteractive
470
483
  }),
471
- 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
+ } : {}), {
472
495
  children: [
473
496
  [
474
497
  "right",
@@ -483,7 +506,7 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
483
506
  "center"
484
507
  ].includes(alignment) && sortContent
485
508
  ]
486
- });
509
+ }));
487
510
  var hasTooltip = (heading.tooltip || heading.tooltipContent) && !isCovered;
488
511
  return /*#__PURE__*/ _jsx(HeadingCell, {
489
512
  className: styles.headingStyles({
@@ -678,6 +701,14 @@ var TableWrapperContext = /*#__PURE__*/ createContext({});
678
701
  return handleSelectionChange(isAllSelected ? SelectionType.Page : SelectionType.All, true);
679
702
  },
680
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
+ },
681
712
  children: isAllSelected ? "Undo" : paginatedSelectAllActionText || "Select all"
682
713
  })
683
714
  ]
@@ -966,7 +997,14 @@ Table.displayName = "Table";
966
997
  Table.Row = Row;
967
998
  Table.Row.displayName = "Table.Row";
968
999
  /**
969
- * 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
+ *
970
1008
  * @param {Object} props - Cell properties.
971
1009
  * @param {string} [props.alignment="start"] - Text alignment.
972
1010
  * @param {boolean} [props.selectionCell=false] - Whether this is a selection cell.
@@ -1024,8 +1062,10 @@ Table.Row.displayName = "Table.Row";
1024
1062
  Table.Cell = Cell;
1025
1063
  Table.Cell.displayName = "Table.Cell";
1026
1064
  /**
1027
- * Footer component for the Table.
1028
- * 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.
1029
1069
  *
1030
1070
  * @param {Object} props - The component props.
1031
1071
  * @param {boolean} props.hasNextPage - Whether there is a next page.
@@ -107,30 +107,27 @@ import Popover from "./Popover.js";
107
107
  import { CaretDownMinor, CaretUpMinor } from "@shopify/polaris-icons";
108
108
  import * as PolarisIcons from "@shopify/polaris-icons";
109
109
  import Badge from "./Badge.js";
110
- var styles = tv({
111
- base: "Litho-Tabs flex overflow-x-hidden whitespace-nowrap",
112
- variants: {
113
- borderBottom: {
114
- true: "border-b",
115
- false: ""
116
- },
117
- padded: {
118
- true: "p-2",
119
- false: ""
120
- }
121
- }
122
- });
123
- var containerStyles = tv({
124
- base: "Litho-Tabs__TabContainer flex flex-1 overflow-x-hidden whitespace-nowrap space-x-1"
125
- });
126
110
  /**
127
- * 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`.
128
124
  *
129
125
  * @param {Object} props - Component props.
130
126
  * @param {Object[]} props.tabs - List of tabs to display.
131
127
  * @param {string} props.tabs[].id - Unique identifier for the tab.
132
128
  * @param {string} props.tabs[].content - Content or label to display for the tab.
133
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.
134
131
  * @param {boolean} [props.tabs[].disclosure=false] - Whether the tab is part of a "More" disclosure group.
135
132
  * @param {number} props.selected - Index of the currently selected tab.
136
133
  * @param {Function} props.onSelect - Callback fired when a tab is selected, receives the tab's index.
@@ -144,7 +141,23 @@ var containerStyles = tv({
144
141
  * @param {number} [props.badgeCount] - The number of badges to display for the tab.
145
142
  * @param {string} [props.badgeStatus="default"] - The status of the badge.
146
143
  * @returns {JSX.Element} The Tabs component.
147
- */ 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() {
148
161
  var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
149
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;
150
163
  var selectedIndex = parseInt(_selectedIndex);
@@ -253,6 +266,7 @@ var containerStyles = tv({
253
266
  },
254
267
  disclosure: disclosure && tab.disclosure,
255
268
  icon: tab.icon,
269
+ showIconOnMobile: tab.showIconOnMobile,
256
270
  fullWidth: fullWidth,
257
271
  hidden: tab.hidden,
258
272
  simple: simpleTabs,
@@ -359,6 +373,7 @@ var tabStyles = tv({
359
373
  * @param {boolean} [props.selected] - Whether this tab is currently selected.
360
374
  * @param {number} [props.index] - The index position of this tab in the tabs array.
361
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.
362
377
  * @param {Function} [props.onSelect] - Callback fired when the tab is selected, receives the tab's index.
363
378
  * @param {Function} [props.onClick] - Custom click handler that overrides the default onSelect behavior.
364
379
  * @param {React.ReactNode} [props.children] - The content/label to display inside the tab.
@@ -373,7 +388,7 @@ var tabStyles = tv({
373
388
  * @returns {JSX.Element} The Tab component.
374
389
  */ function Tab() {
375
390
  var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
376
- 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, _props_badgeStatus = props.badgeStatus, badgeStatus = _props_badgeStatus === void 0 ? "default" : _props_badgeStatus, badgeCount = props.badgeCount;
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;
377
392
  var polarisIcon = typeof icon === "string" ? PolarisIcons[icon] : PolarisIcons[icon === null || icon === void 0 ? void 0 : icon.displayName];
378
393
  var showDisclosure = disclosure && (selected || alwaysShowDisclosureIcon);
379
394
  var tabClasses = tabStyles({
@@ -390,18 +405,32 @@ var tabStyles = tv({
390
405
  onClick: onClick ? onClick : onSelect ? function() {
391
406
  return onSelect(index);
392
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
+ },
393
418
  children: [
394
419
  icon && !!polarisIcon && /*#__PURE__*/ _jsx("span", {
395
- className: "Litho-Tabs__Tab-Icon mr-1",
420
+ className: "Litho-Tabs__Tab-Icon mr-1 ".concat(showIconOnMobile ? "" : "hidden @md:inline-flex"),
396
421
  children: /*#__PURE__*/ _jsx(Icon, {
397
422
  source: polarisIcon,
398
423
  color: selected && simple ? "default" : selected ? "primary" : "subdued",
399
424
  size: simple ? "lg" : undefined
400
425
  })
401
426
  }),
402
- icon && !!polarisIcon === false && /*#__PURE__*/ _jsx("span", {
403
- className: "Litho-Tabs__Tab-Icon ".concat(simple ? "mr-0" : "mr-1"),
404
- 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
+ })
405
434
  }),
406
435
  /*#__PURE__*/ _jsx("span", {
407
436
  className: "Litho-Tabs__Tab-Content block min-h-5 leading-5",