@lumx/react 3.0.1 → 3.0.2-alpha-react-utils.1

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 (612) hide show
  1. package/{esm/_internal/useDisableBodyScroll.js → _internal/0062d1bc.js} +1 -1
  2. package/_internal/0062d1bc.js.map +1 -0
  3. package/_internal/03e8323d.d.ts +118 -0
  4. package/_internal/0402f9bc.d.ts +183 -0
  5. package/{esm/_internal/List2.js → _internal/0b370acc.js} +7 -10
  6. package/_internal/0b370acc.js.map +1 -0
  7. package/_internal/0d154d73.d.ts +67 -0
  8. package/_internal/113e3b40.d.ts +31 -0
  9. package/{esm/_internal/InputLabel.js → _internal/12ab39e4.js} +4 -4
  10. package/_internal/12ab39e4.js.map +1 -0
  11. package/{esm/_internal/DatePickerField.js → _internal/13e759f3.js} +10 -14
  12. package/_internal/13e759f3.js.map +1 -0
  13. package/{esm/_internal/SideNavigationItem.js → _internal/158b46d5.js} +8 -8
  14. package/_internal/158b46d5.js.map +1 -0
  15. package/_internal/17b74e16.d.ts +31 -0
  16. package/_internal/1b1530a4.d.ts +43 -0
  17. package/_internal/20976405.js +87 -0
  18. package/_internal/20976405.js.map +1 -0
  19. package/_internal/20b0e9a5.d.ts +77 -0
  20. package/{esm/_internal/Chip2.js → _internal/26cd9c63.js} +4 -4
  21. package/_internal/26cd9c63.js.map +1 -0
  22. package/{esm/_internal/ListSubheader.js → _internal/27f21164.js} +3 -3
  23. package/_internal/27f21164.js.map +1 -0
  24. package/{esm/_internal/constants.js → _internal/288dfd0f.js} +1 -1
  25. package/_internal/288dfd0f.js.map +1 -0
  26. package/_internal/28aaf23a.d.ts +41 -0
  27. package/_internal/2c829c0b.d.ts +57 -0
  28. package/{esm/_internal/useFocusTrap.js → _internal/2cc0aec5.js} +3 -3
  29. package/_internal/2cc0aec5.js.map +1 -0
  30. package/{esm/_internal/types.js → _internal/2d0a5b28.js} +3 -3
  31. package/_internal/2d0a5b28.js.map +1 -0
  32. package/_internal/2d4b5a5e.d.ts +92 -0
  33. package/_internal/2d770113.d.ts +38 -0
  34. package/{esm/_internal/TableRow.js → _internal/2fe97f00.js} +5 -5
  35. package/_internal/2fe97f00.js.map +1 -0
  36. package/_internal/31c16fa0.d.ts +37 -0
  37. package/{esm/_internal/renderLink.js → _internal/329a01d3.js} +2 -2
  38. package/_internal/329a01d3.js.map +1 -0
  39. package/{esm/_internal/SkeletonTypography.js → _internal/3326e990.js} +4 -4
  40. package/_internal/3326e990.js.map +1 -0
  41. package/{esm/_internal/IconButton.js → _internal/377b2f44.js} +7 -11
  42. package/_internal/377b2f44.js.map +1 -0
  43. package/{esm/_internal/CommentBlock.js → _internal/3b8d2a6e.js} +6 -6
  44. package/_internal/3b8d2a6e.js.map +1 -0
  45. package/_internal/3bd3186e.d.ts +57 -0
  46. package/{esm/_internal/ImageBlock.js → _internal/48e40868.js} +5 -5
  47. package/_internal/48e40868.js.map +1 -0
  48. package/{esm/_internal/TextField.js → _internal/490ec1da.js} +10 -10
  49. package/_internal/490ec1da.js.map +1 -0
  50. package/_internal/49127d69.d.ts +52 -0
  51. package/{esm/_internal/Message2.js → _internal/4dcd87cb.js} +5 -5
  52. package/_internal/4dcd87cb.js.map +1 -0
  53. package/{esm/_internal/Dropdown2.js → _internal/4f44d848.js} +6 -6
  54. package/_internal/4f44d848.js.map +1 -0
  55. package/{esm/_internal/partitionMulti.js → _internal/4fc64a2e.js} +2 -2
  56. package/_internal/4fc64a2e.js.map +1 -0
  57. package/_internal/53a831be.js +108 -0
  58. package/_internal/53a831be.js.map +1 -0
  59. package/_internal/55271fa1.d.ts +34 -0
  60. package/_internal/55d30377.d.ts +22 -0
  61. package/{esm/_internal/Switch2.js → _internal/56385b04.js} +7 -7
  62. package/_internal/56385b04.js.map +1 -0
  63. package/_internal/599e250a.d.ts +88 -0
  64. package/_internal/5a054691.d.ts +33 -0
  65. package/{esm/_internal/Avatar2.js → _internal/5a127b58.js} +5 -5
  66. package/_internal/5a127b58.js.map +1 -0
  67. package/{esm/_internal/ExpansionPanel.js → _internal/5a1c0db4.js} +10 -10
  68. package/_internal/5a1c0db4.js.map +1 -0
  69. package/{esm/_internal/RadioGroup.js → _internal/5babcc39.js} +7 -7
  70. package/_internal/5babcc39.js.map +1 -0
  71. package/_internal/5c1bf4d4.d.ts +81 -0
  72. package/_internal/5d8ed4ee.js +113 -0
  73. package/_internal/5d8ed4ee.js.map +1 -0
  74. package/{esm/_internal/Thumbnail2.js → _internal/616f2912.js} +6 -6
  75. package/_internal/616f2912.js.map +1 -0
  76. package/_internal/61f915de.d.ts +49 -0
  77. package/{esm/_internal/ChipGroup.js → _internal/620081fa.js} +4 -4
  78. package/_internal/620081fa.js.map +1 -0
  79. package/{esm/_internal/_rollupPluginBabelHelpers.js → _internal/6340c129.js} +18 -2
  80. package/_internal/6340c129.js.map +1 -0
  81. package/_internal/6581c863.d.ts +34 -0
  82. package/_internal/66de4d45.d.ts +32 -0
  83. package/_internal/6735c5c8.d.ts +62 -0
  84. package/_internal/69dd1472.js +112 -0
  85. package/_internal/69dd1472.js.map +1 -0
  86. package/{esm/_internal/Slider2.js → _internal/6a0e1c77.js} +7 -7
  87. package/_internal/6a0e1c77.js.map +1 -0
  88. package/_internal/701c20b0.d.ts +24 -0
  89. package/{esm/_internal/Progress2.js → _internal/7391188a.js} +4 -4
  90. package/_internal/7391188a.js.map +1 -0
  91. package/{esm/_internal/ButtonRoot.js → _internal/74cb6c26.js} +6 -5
  92. package/_internal/74cb6c26.js.map +1 -0
  93. package/{esm/_internal/ProgressTrackerStepPanel.js → _internal/761031bf.js} +11 -9
  94. package/_internal/761031bf.js.map +1 -0
  95. package/{esm/_internal/DragHandle.js → _internal/76fed69d.js} +5 -5
  96. package/_internal/76fed69d.js.map +1 -0
  97. package/{esm/_internal/type.js → _internal/78ef8e34.js} +1 -1
  98. package/_internal/78ef8e34.js.map +1 -0
  99. package/_internal/7b906e16.d.ts +17 -0
  100. package/_internal/7be11ddc.d.ts +35 -0
  101. package/_internal/7d39705e.d.ts +20 -0
  102. package/{esm/_internal/useDelayedVisibility.js → _internal/7e03266f.js} +2 -2
  103. package/_internal/7e03266f.js.map +1 -0
  104. package/{esm/_internal/Button2.js → _internal/7e8d0ac5.js} +6 -6
  105. package/_internal/7e8d0ac5.js.map +1 -0
  106. package/{esm/_internal/Flag2.js → _internal/7ffa45f6.js} +5 -5
  107. package/_internal/7ffa45f6.js.map +1 -0
  108. package/{esm/_internal/AutocompleteMultiple.js → _internal/84c1ec44.js} +10 -10
  109. package/_internal/84c1ec44.js.map +1 -0
  110. package/{esm/_internal/PostBlock.js → _internal/8518279f.js} +6 -6
  111. package/_internal/8518279f.js.map +1 -0
  112. package/{esm/_internal/mergeRefs.js → _internal/853713cd.js} +1 -1
  113. package/_internal/853713cd.js.map +1 -0
  114. package/_internal/86566d75.d.ts +27 -0
  115. package/_internal/86d22dde.d.ts +57 -0
  116. package/_internal/8e755ded.d.ts +101 -0
  117. package/_internal/901471f5.d.ts +37 -0
  118. package/_internal/935ce959.d.ts +49 -0
  119. package/_internal/97089888.d.ts +16 -0
  120. package/_internal/97cc728c.d.ts +26 -0
  121. package/{esm/_internal/Popover2.js → _internal/9ab3c637.js} +7 -6
  122. package/_internal/9ab3c637.js.map +1 -0
  123. package/{esm/_internal/Toolbar2.js → _internal/9ca3f59c.js} +3 -3
  124. package/_internal/9ca3f59c.js.map +1 -0
  125. package/_internal/9e95ea38.d.ts +43 -0
  126. package/{esm/_internal/Uploader2.js → _internal/a0108f92.js} +5 -5
  127. package/_internal/a0108f92.js.map +1 -0
  128. package/_internal/a493a193.d.ts +65 -0
  129. package/{esm/_internal/Icon2.js → _internal/a521723d.js} +4 -4
  130. package/_internal/a521723d.js.map +1 -0
  131. package/_internal/a6fad025.d.ts +107 -0
  132. package/{esm/_internal/Lightbox2.js → _internal/a8fa525f.js} +13 -12
  133. package/_internal/a8fa525f.js.map +1 -0
  134. package/{esm/_internal/AlertDialog.js → _internal/aca2ecf5.js} +9 -9
  135. package/_internal/aca2ecf5.js.map +1 -0
  136. package/{esm/_internal/Divider2.js → _internal/aef2ef1c.js} +5 -5
  137. package/_internal/aef2ef1c.js.map +1 -0
  138. package/{esm/_internal/Mosaic2.js → _internal/af048b0c.js} +5 -5
  139. package/_internal/af048b0c.js.map +1 -0
  140. package/_internal/af2cd0cd.d.ts +17 -0
  141. package/{esm/_internal/Slides.js → _internal/afec6b62.js} +278 -87
  142. package/_internal/afec6b62.js.map +1 -0
  143. package/{esm/_internal/InputHelper.js → _internal/b0eb3a30.js} +4 -4
  144. package/_internal/b0eb3a30.js.map +1 -0
  145. package/{esm/_internal/Dialog2.js → _internal/b89517ea.js} +14 -13
  146. package/_internal/b89517ea.js.map +1 -0
  147. package/{esm/_internal/Checkbox2.js → _internal/bafa6fcc.js} +8 -8
  148. package/_internal/bafa6fcc.js.map +1 -0
  149. package/{esm/_internal/ButtonGroup.js → _internal/bbbeb49e.js} +3 -7
  150. package/_internal/bbbeb49e.js.map +1 -0
  151. package/_internal/c11f6162.d.ts +52 -0
  152. package/{esm/_internal/Notification2.js → _internal/c723dab4.js} +8 -8
  153. package/_internal/c723dab4.js.map +1 -0
  154. package/_internal/c87cc857.d.ts +42 -0
  155. package/{esm/_internal/SelectMultiple.js → _internal/c97f8d04.js} +13 -13
  156. package/_internal/c97f8d04.js.map +1 -0
  157. package/_internal/cbb373ea.d.ts +6 -0
  158. package/_internal/cbef23b6.d.ts +104 -0
  159. package/_internal/cdf77f06.d.ts +88 -0
  160. package/{esm/_internal/LinkPreview.js → _internal/d350f2ff.js} +6 -6
  161. package/_internal/d350f2ff.js.map +1 -0
  162. package/{esm/_internal/Badge2.js → _internal/d71a8cf7.js} +4 -4
  163. package/_internal/d71a8cf7.js.map +1 -0
  164. package/{esm/_internal/GridItem.js → _internal/d9337952.js} +4 -4
  165. package/_internal/d9337952.js.map +1 -0
  166. package/_internal/def14e1a.d.ts +24 -0
  167. package/_internal/e0cd29c7.d.ts +35 -0
  168. package/{esm/_internal/useRovingTabIndex.js → _internal/e354228f.js} +4 -81
  169. package/_internal/e354228f.js.map +1 -0
  170. package/_internal/e3922a05.d.ts +22 -0
  171. package/_internal/e3cb6177.d.ts +75 -0
  172. package/_internal/e810c841.d.ts +182 -0
  173. package/_internal/ea700b01.d.ts +43 -0
  174. package/_internal/eca6d4dc.d.ts +269 -0
  175. package/{esm/_internal/Link2.js → _internal/eed07003.js} +6 -6
  176. package/_internal/eed07003.js.map +1 -0
  177. package/_internal/f1c9b334.d.ts +22 -0
  178. package/{esm/_internal/TabPanel.js → _internal/f3c3a674.js} +9 -7
  179. package/_internal/f3c3a674.js.map +1 -0
  180. package/{esm/_internal/UserBlock.js → _internal/f571cdcd.js} +6 -6
  181. package/_internal/f571cdcd.js.map +1 -0
  182. package/{esm/_internal/Tooltip2.js → _internal/f5bdff7e.js} +8 -8
  183. package/_internal/f5bdff7e.js.map +1 -0
  184. package/_internal/f851fc00.d.ts +34 -0
  185. package/_internal/f859b007.d.ts +49 -0
  186. package/_internal/fb384b79.d.ts +38 -0
  187. package/_internal/fc4c034b.js +63 -0
  188. package/_internal/fc4c034b.js.map +1 -0
  189. package/{esm/index2.js → _internal/fc608bd9.js} +1 -1
  190. package/_internal/fc608bd9.js.map +1 -0
  191. package/_internal/fd1f4d68.d.ts +36 -0
  192. package/{esm/_internal/getRootClassName.js → _internal/fd867c9d.js} +33 -33
  193. package/_internal/fd867c9d.js.map +1 -0
  194. package/{esm/_internal/FlexBox.js → _internal/ff8081e5.js} +9 -7
  195. package/_internal/ff8081e5.js.map +1 -0
  196. package/{esm/_internal/GenericBlock.js → _internal/ffd1bfe3.js} +7 -9
  197. package/_internal/ffd1bfe3.js.map +1 -0
  198. package/components/alert-dialog.d.ts +6 -0
  199. package/components/alert-dialog.js +35 -0
  200. package/components/alert-dialog.js.map +1 -0
  201. package/components/autocomplete.d.ts +8 -0
  202. package/components/autocomplete.js +33 -0
  203. package/{esm/_internal → components}/autocomplete.js.map +1 -1
  204. package/components/avatar.d.ts +4 -0
  205. package/components/avatar.js +13 -0
  206. package/{esm/_internal → components}/avatar.js.map +0 -0
  207. package/components/badge.d.ts +3 -0
  208. package/components/badge.js +10 -0
  209. package/{esm/_internal → components}/badge.js.map +0 -0
  210. package/components/button.d.ts +8 -0
  211. package/components/button.js +26 -0
  212. package/{esm/_internal → components}/button.js.map +1 -1
  213. package/components/checkbox.d.ts +3 -0
  214. package/components/checkbox.js +14 -0
  215. package/{esm/_internal → components}/checkbox.js.map +0 -0
  216. package/components/chip.d.ts +3 -0
  217. package/components/chip.js +12 -0
  218. package/{esm/_internal → components}/chip.js.map +0 -0
  219. package/components/comment-block.d.ts +5 -0
  220. package/components/comment-block.js +25 -0
  221. package/{esm/_internal → components}/comment-block.js.map +1 -1
  222. package/components/date-picker.d.ts +7 -0
  223. package/components/date-picker.js +33 -0
  224. package/{esm/_internal → components}/date-picker.js.map +1 -1
  225. package/components/dialog.d.ts +3 -0
  226. package/components/dialog.js +28 -0
  227. package/{esm/_internal → components}/dialog.js.map +1 -1
  228. package/components/divider.d.ts +3 -0
  229. package/components/divider.js +10 -0
  230. package/{esm/_internal → components}/divider.js.map +0 -0
  231. package/components/drag-handle.d.ts +3 -0
  232. package/components/drag-handle.js +11 -0
  233. package/{esm/_internal → components}/drag-handle.js.map +0 -0
  234. package/components/dropdown.d.ts +4 -0
  235. package/components/dropdown.js +22 -0
  236. package/{esm/_internal → components}/dropdown.js.map +1 -1
  237. package/components/expansion-panel.d.ts +7 -0
  238. package/components/expansion-panel.js +33 -0
  239. package/components/expansion-panel.js.map +1 -0
  240. package/components/flag.d.ts +3 -0
  241. package/components/flag.js +11 -0
  242. package/{esm/_internal → components}/flag.js.map +0 -0
  243. package/components/flex-box.d.ts +3 -0
  244. package/{esm/_internal → components}/flex-box.js +5 -5
  245. package/{esm/_internal → components}/flex-box.js.map +0 -0
  246. package/components/generic-block.d.ts +4 -0
  247. package/{esm/_internal → components}/generic-block.js +10 -10
  248. package/{esm/_internal → components}/generic-block.js.map +0 -0
  249. package/components/grid.d.ts +3 -0
  250. package/components/grid.js +10 -0
  251. package/{esm/_internal → components}/grid.js.map +0 -0
  252. package/components/heading.d.ts +4 -0
  253. package/components/heading.js +11 -0
  254. package/components/heading.js.map +1 -0
  255. package/components/icon.d.ts +3 -0
  256. package/components/icon.js +10 -0
  257. package/{esm/_internal → components}/icon.js.map +0 -0
  258. package/components/image-block.d.ts +4 -0
  259. package/{esm/_internal → components}/image-block.js +8 -8
  260. package/{esm/_internal → components}/image-block.js.map +0 -0
  261. package/components/input-helper.d.ts +3 -0
  262. package/{esm/_internal → components}/input-helper.js +5 -5
  263. package/{esm/_internal → components}/input-helper.js.map +0 -0
  264. package/components/input-label.d.ts +3 -0
  265. package/{esm/_internal → components}/input-label.js +5 -5
  266. package/{esm/_internal → components}/input-label.js.map +0 -0
  267. package/components/lightbox.d.ts +7 -0
  268. package/components/lightbox.js +28 -0
  269. package/{esm/_internal → components}/lightbox.js.map +1 -1
  270. package/components/link-preview.d.ts +5 -0
  271. package/components/link-preview.js +15 -0
  272. package/{esm/_internal → components}/link-preview.js.map +0 -0
  273. package/components/link.d.ts +3 -0
  274. package/components/link.js +12 -0
  275. package/{esm/_internal → components}/link.js.map +0 -0
  276. package/components/list.d.ts +3 -0
  277. package/components/list.js +15 -0
  278. package/{esm/_internal → components}/list.js.map +0 -0
  279. package/components/message.d.ts +3 -0
  280. package/components/message.js +11 -0
  281. package/{esm/_internal → components}/message.js.map +0 -0
  282. package/components/mosaic.d.ts +4 -0
  283. package/components/mosaic.js +14 -0
  284. package/{esm/_internal → components}/mosaic.js.map +0 -0
  285. package/components/notification.d.ts +3 -0
  286. package/components/notification.js +18 -0
  287. package/{esm/_internal → components}/notification.js.map +0 -0
  288. package/components/popover.d.ts +3 -0
  289. package/components/popover.js +16 -0
  290. package/{esm/_internal → components}/popover.js.map +1 -1
  291. package/components/post-block.d.ts +4 -0
  292. package/components/post-block.js +15 -0
  293. package/{esm/_internal → components}/post-block.js.map +0 -0
  294. package/components/progress-tracker.d.ts +3 -0
  295. package/components/progress-tracker.js +17 -0
  296. package/{esm/_internal → components}/progress-tracker.js.map +1 -1
  297. package/components/progress.d.ts +3 -0
  298. package/components/progress.js +10 -0
  299. package/{esm/_internal → components}/progress.js.map +0 -0
  300. package/components/radio-button.d.ts +3 -0
  301. package/components/radio-button.js +13 -0
  302. package/{esm/_internal → components}/radio-button.js.map +0 -0
  303. package/components/select.d.ts +7 -0
  304. package/components/select.js +32 -0
  305. package/{esm/_internal → components}/select.js.map +1 -1
  306. package/components/side-navigation.d.ts +7 -0
  307. package/components/side-navigation.js +26 -0
  308. package/{esm/_internal → components}/side-navigation.js.map +1 -1
  309. package/components/skeleton.d.ts +3 -0
  310. package/{esm/_internal → components}/skeleton.js +5 -5
  311. package/{esm/_internal → components}/skeleton.js.map +0 -0
  312. package/components/slider.d.ts +3 -0
  313. package/components/slider.js +13 -0
  314. package/{esm/_internal → components}/slider.js.map +0 -0
  315. package/components/slideshow.d.ts +7 -0
  316. package/components/slideshow.js +30 -0
  317. package/{esm/_internal → components}/slideshow.js.map +1 -1
  318. package/components/switch.d.ts +3 -0
  319. package/components/switch.js +13 -0
  320. package/{esm/_internal → components}/switch.js.map +0 -0
  321. package/components/table.d.ts +3 -0
  322. package/{esm/_internal → components}/table.js +6 -6
  323. package/{esm/_internal → components}/table.js.map +0 -0
  324. package/components/tabs.d.ts +4 -0
  325. package/components/tabs.js +15 -0
  326. package/{esm/_internal → components}/tabs.js.map +1 -1
  327. package/components/text-field.d.ts +7 -0
  328. package/components/text-field.js +27 -0
  329. package/{esm/_internal → components}/text-field.js.map +1 -1
  330. package/components/text.d.ts +3 -0
  331. package/components/text.js +10 -0
  332. package/components/text.js.map +1 -0
  333. package/components/thumbnail.d.ts +4 -0
  334. package/components/thumbnail.js +13 -0
  335. package/{esm/_internal → components}/thumbnail.js.map +0 -0
  336. package/components/toolbar.d.ts +3 -0
  337. package/{esm/_internal → components}/toolbar.js +4 -4
  338. package/{esm/_internal → components}/toolbar.js.map +0 -0
  339. package/components/tooltip.d.ts +4 -0
  340. package/components/tooltip.js +19 -0
  341. package/{esm/_internal → components}/tooltip.js.map +1 -1
  342. package/components/uploader.d.ts +3 -0
  343. package/components/uploader.js +11 -0
  344. package/{esm/_internal → components}/uploader.js.map +0 -0
  345. package/components/user-block.d.ts +5 -0
  346. package/components/user-block.js +17 -0
  347. package/{esm/_internal → components}/user-block.js.map +0 -0
  348. package/components.d.ts +2 -0
  349. package/{esm/_internal/components.js → components.js} +2 -1
  350. package/components.js.map +1 -0
  351. package/index.d.ts +56 -0
  352. package/index.js +96 -0
  353. package/{esm/index.js.map → index.js.map} +1 -1
  354. package/package.json +7 -7
  355. package/src/components/alert-dialog/AlertDialog.tsx +2 -1
  356. package/src/components/autocomplete/Autocomplete.tsx +2 -2
  357. package/src/components/autocomplete/AutocompleteMultiple.tsx +2 -1
  358. package/src/components/avatar/Avatar.tsx +2 -1
  359. package/src/components/badge/Badge.test.tsx +1 -1
  360. package/src/components/badge/Badge.tsx +2 -1
  361. package/src/components/button/Button.test.tsx +1 -1
  362. package/src/components/button/Button.tsx +2 -1
  363. package/src/components/button/ButtonGroup.tsx +2 -1
  364. package/src/components/button/ButtonRoot.test.tsx +1 -1
  365. package/src/components/button/ButtonRoot.tsx +2 -1
  366. package/src/components/button/IconButton.tsx +2 -1
  367. package/src/components/checkbox/Checkbox.test.tsx +1 -1
  368. package/src/components/checkbox/Checkbox.tsx +2 -1
  369. package/src/components/chip/Chip.test.tsx +1 -1
  370. package/src/components/chip/Chip.tsx +3 -1
  371. package/src/components/chip/ChipGroup.tsx +2 -1
  372. package/src/components/comment-block/CommentBlock.tsx +2 -1
  373. package/src/components/date-picker/DatePicker.tsx +1 -1
  374. package/src/components/date-picker/DatePickerControlled.tsx +1 -1
  375. package/src/components/date-picker/DatePickerField.tsx +1 -1
  376. package/src/components/date-picker/constants.ts +1 -1
  377. package/src/components/date-picker/types.ts +1 -1
  378. package/src/components/dialog/Dialog.tsx +4 -8
  379. package/src/components/divider/Divider.test.tsx +1 -1
  380. package/src/components/divider/Divider.tsx +3 -2
  381. package/src/components/drag-handle/DragHandle.tsx +2 -1
  382. package/src/components/dropdown/Dropdown.tsx +2 -1
  383. package/src/components/expansion-panel/ExpansionPanel.test.tsx +1 -1
  384. package/src/components/expansion-panel/ExpansionPanel.tsx +3 -10
  385. package/src/components/flag/Flag.test.tsx +1 -1
  386. package/src/components/flag/Flag.tsx +2 -1
  387. package/src/components/flex-box/FlexBox.stories.tsx +68 -4
  388. package/src/components/flex-box/FlexBox.tsx +14 -7
  389. package/src/components/flex-box/__snapshots__/FlexBox.test.tsx.snap +51 -0
  390. package/src/components/generic-block/GenericBlock.stories.jsx +23 -1
  391. package/src/components/generic-block/GenericBlock.tsx +3 -1
  392. package/src/components/grid/Grid.tsx +2 -1
  393. package/src/components/grid/GridItem.tsx +2 -1
  394. package/src/components/heading/Heading.stories.tsx +108 -0
  395. package/src/components/heading/Heading.test.tsx +77 -0
  396. package/src/components/heading/Heading.tsx +63 -0
  397. package/src/components/heading/HeadingLevelProvider.tsx +30 -0
  398. package/src/components/heading/constants.ts +16 -0
  399. package/src/components/heading/context.tsx +13 -0
  400. package/src/components/heading/index.ts +3 -0
  401. package/src/components/heading/useHeadingLevel.tsx +8 -0
  402. package/src/components/icon/Icon.test.tsx +1 -1
  403. package/src/components/icon/Icon.tsx +2 -1
  404. package/src/components/image-block/ImageBlock.tsx +2 -1
  405. package/src/components/index.ts +2 -1
  406. package/src/components/input-helper/InputHelper.tsx +2 -1
  407. package/src/components/input-label/InputLabel.tsx +2 -1
  408. package/src/components/lightbox/Lightbox.tsx +2 -1
  409. package/src/components/link/Link.tsx +2 -1
  410. package/src/components/link-preview/LinkPreview.test.tsx +1 -1
  411. package/src/components/link-preview/LinkPreview.tsx +2 -1
  412. package/src/components/list/List.tsx +2 -1
  413. package/src/components/list/ListDivider.tsx +2 -1
  414. package/src/components/list/ListItem.tsx +3 -8
  415. package/src/components/list/ListSubheader.tsx +2 -1
  416. package/src/components/list/useInteractiveList.tsx +1 -1
  417. package/src/components/message/Message.test.tsx +1 -1
  418. package/src/components/message/Message.tsx +2 -1
  419. package/src/components/mosaic/Mosaic.tsx +2 -1
  420. package/src/components/notification/Notification.tsx +2 -1
  421. package/src/components/popover/Popover.tsx +2 -1
  422. package/src/components/post-block/PostBlock.tsx +2 -1
  423. package/src/components/progress/Progress.tsx +2 -1
  424. package/src/components/progress-tracker/ProgressTracker.tsx +2 -1
  425. package/src/components/progress-tracker/ProgressTrackerStep.test.tsx +1 -1
  426. package/src/components/progress-tracker/ProgressTrackerStep.tsx +2 -1
  427. package/src/components/progress-tracker/ProgressTrackerStepPanel.tsx +2 -1
  428. package/src/components/radio-button/RadioButton.test.tsx +1 -1
  429. package/src/components/radio-button/RadioButton.tsx +2 -1
  430. package/src/components/radio-button/RadioGroup.tsx +2 -1
  431. package/src/components/select/Select.test.tsx +1 -1
  432. package/src/components/select/Select.tsx +2 -1
  433. package/src/components/select/SelectMultiple.test.tsx +1 -1
  434. package/src/components/select/SelectMultiple.tsx +2 -1
  435. package/src/components/select/WithSelectContext.tsx +1 -1
  436. package/src/components/select/constants.ts +1 -1
  437. package/src/components/side-navigation/SideNavigation.tsx +2 -1
  438. package/src/components/side-navigation/SideNavigationItem.test.tsx +1 -1
  439. package/src/components/side-navigation/SideNavigationItem.tsx +3 -9
  440. package/src/components/skeleton/SkeletonCircle.tsx +2 -1
  441. package/src/components/skeleton/SkeletonRectangle.tsx +2 -1
  442. package/src/components/skeleton/SkeletonTypography.tsx +2 -1
  443. package/src/components/slider/Slider.tsx +2 -1
  444. package/src/components/slideshow/Slides.tsx +35 -4
  445. package/src/components/slideshow/Slideshow.stories.tsx +98 -2
  446. package/src/components/slideshow/Slideshow.tsx +16 -4
  447. package/src/components/slideshow/SlideshowControls.stories.tsx +1 -1
  448. package/src/components/slideshow/SlideshowControls.tsx +51 -12
  449. package/src/components/slideshow/SlideshowItem.tsx +2 -6
  450. package/src/components/slideshow/SlideshowItemGroup.tsx +64 -0
  451. package/src/components/slideshow/__snapshots__/Slideshow.test.tsx.snap +4 -1
  452. package/src/components/slideshow/useSlideFocusManagement.tsx +92 -0
  453. package/src/components/switch/Switch.test.tsx +1 -1
  454. package/src/components/switch/Switch.tsx +2 -1
  455. package/src/components/table/Table.tsx +2 -1
  456. package/src/components/table/TableBody.tsx +2 -1
  457. package/src/components/table/TableCell.tsx +3 -1
  458. package/src/components/table/TableHeader.tsx +2 -1
  459. package/src/components/table/TableRow.tsx +2 -1
  460. package/src/components/tabs/Tab.test.tsx +1 -1
  461. package/src/components/tabs/Tab.tsx +2 -1
  462. package/src/components/tabs/TabList.test.tsx +1 -1
  463. package/src/components/tabs/TabList.tsx +2 -1
  464. package/src/components/tabs/TabPanel.tsx +2 -1
  465. package/src/components/text/Text.stories.tsx +80 -0
  466. package/src/components/text/Text.test.tsx +62 -0
  467. package/src/components/text/Text.tsx +95 -0
  468. package/src/components/text/index.ts +1 -0
  469. package/src/components/text-field/TextField.test.tsx +1 -1
  470. package/src/components/text-field/TextField.tsx +2 -1
  471. package/src/components/thumbnail/Thumbnail.tsx +2 -1
  472. package/src/components/thumbnail/types.ts +1 -1
  473. package/src/components/toolbar/Toolbar.tsx +2 -1
  474. package/src/components/tooltip/Tooltip.tsx +2 -1
  475. package/src/components/tooltip/useTooltipOpen.tsx +1 -1
  476. package/src/components/uploader/Uploader.test.tsx +1 -1
  477. package/src/components/uploader/Uploader.tsx +2 -1
  478. package/src/components/user-block/UserBlock.tsx +2 -1
  479. package/src/hooks/useCallbackOnEscape.ts +2 -1
  480. package/src/hooks/useClickAway.tsx +1 -1
  481. package/src/hooks/useDisableBodyScroll.ts +1 -1
  482. package/src/hooks/useFocusTrap.ts +1 -1
  483. package/src/hooks/useInterval.tsx +1 -1
  484. package/src/hooks/useOnResize.ts +1 -1
  485. package/src/hooks/useRovingTabIndex.tsx +9 -0
  486. package/src/index.ts +6 -0
  487. package/src/testing/utils/commonTestsSuite.ts +1 -1
  488. package/src/utils/{getRootClassName.ts → className.ts} +2 -0
  489. package/src/utils/event.ts +1 -0
  490. package/src/utils/focus/constants.ts +5 -0
  491. package/src/utils/focus/getFirstAndLastFocusable.ts +4 -10
  492. package/src/utils/focus/getFocusableElements.test.ts +151 -0
  493. package/src/utils/focus/getFocusableElements.ts +7 -0
  494. package/src/utils/index.ts +5 -0
  495. package/src/utils/utils.test.ts +1 -1
  496. package/types.d.ts +96 -11
  497. package/utils/index.d.ts +29 -0
  498. package/utils/index.js +5 -0
  499. package/utils/index.js.map +1 -0
  500. package/esm/_internal/AlertDialog.js.map +0 -1
  501. package/esm/_internal/AutocompleteMultiple.js.map +0 -1
  502. package/esm/_internal/Avatar2.js.map +0 -1
  503. package/esm/_internal/Badge2.js.map +0 -1
  504. package/esm/_internal/Button2.js.map +0 -1
  505. package/esm/_internal/ButtonGroup.js.map +0 -1
  506. package/esm/_internal/ButtonRoot.js.map +0 -1
  507. package/esm/_internal/Checkbox2.js.map +0 -1
  508. package/esm/_internal/Chip2.js.map +0 -1
  509. package/esm/_internal/ChipGroup.js.map +0 -1
  510. package/esm/_internal/ClickAwayProvider.js +0 -213
  511. package/esm/_internal/ClickAwayProvider.js.map +0 -1
  512. package/esm/_internal/CommentBlock.js.map +0 -1
  513. package/esm/_internal/DatePickerField.js.map +0 -1
  514. package/esm/_internal/Dialog2.js.map +0 -1
  515. package/esm/_internal/Divider2.js.map +0 -1
  516. package/esm/_internal/DragHandle.js.map +0 -1
  517. package/esm/_internal/Dropdown2.js.map +0 -1
  518. package/esm/_internal/ExpansionPanel.js.map +0 -1
  519. package/esm/_internal/Flag2.js.map +0 -1
  520. package/esm/_internal/FlexBox.js.map +0 -1
  521. package/esm/_internal/GenericBlock.js.map +0 -1
  522. package/esm/_internal/GridItem.js.map +0 -1
  523. package/esm/_internal/Icon2.js.map +0 -1
  524. package/esm/_internal/IconButton.js.map +0 -1
  525. package/esm/_internal/ImageBlock.js.map +0 -1
  526. package/esm/_internal/InputHelper.js.map +0 -1
  527. package/esm/_internal/InputLabel.js.map +0 -1
  528. package/esm/_internal/Lightbox2.js.map +0 -1
  529. package/esm/_internal/Link2.js.map +0 -1
  530. package/esm/_internal/LinkPreview.js.map +0 -1
  531. package/esm/_internal/List2.js.map +0 -1
  532. package/esm/_internal/ListSubheader.js.map +0 -1
  533. package/esm/_internal/Message2.js.map +0 -1
  534. package/esm/_internal/Mosaic2.js.map +0 -1
  535. package/esm/_internal/Notification2.js.map +0 -1
  536. package/esm/_internal/Popover2.js.map +0 -1
  537. package/esm/_internal/PostBlock.js.map +0 -1
  538. package/esm/_internal/Progress2.js.map +0 -1
  539. package/esm/_internal/ProgressTrackerStepPanel.js.map +0 -1
  540. package/esm/_internal/RadioGroup.js.map +0 -1
  541. package/esm/_internal/SelectMultiple.js.map +0 -1
  542. package/esm/_internal/SideNavigationItem.js.map +0 -1
  543. package/esm/_internal/SkeletonTypography.js.map +0 -1
  544. package/esm/_internal/Slider2.js.map +0 -1
  545. package/esm/_internal/Slides.js.map +0 -1
  546. package/esm/_internal/Switch2.js.map +0 -1
  547. package/esm/_internal/TabPanel.js.map +0 -1
  548. package/esm/_internal/TableRow.js.map +0 -1
  549. package/esm/_internal/TextField.js.map +0 -1
  550. package/esm/_internal/Thumbnail2.js.map +0 -1
  551. package/esm/_internal/Toolbar2.js.map +0 -1
  552. package/esm/_internal/Tooltip2.js.map +0 -1
  553. package/esm/_internal/Uploader2.js.map +0 -1
  554. package/esm/_internal/UserBlock.js.map +0 -1
  555. package/esm/_internal/_rollupPluginBabelHelpers.js.map +0 -1
  556. package/esm/_internal/alert-dialog.js +0 -34
  557. package/esm/_internal/alert-dialog.js.map +0 -1
  558. package/esm/_internal/autocomplete.js +0 -32
  559. package/esm/_internal/avatar.js +0 -13
  560. package/esm/_internal/badge.js +0 -10
  561. package/esm/_internal/button.js +0 -25
  562. package/esm/_internal/checkbox.js +0 -14
  563. package/esm/_internal/chip.js +0 -12
  564. package/esm/_internal/comment-block.js +0 -24
  565. package/esm/_internal/components.js.map +0 -1
  566. package/esm/_internal/constants.js.map +0 -1
  567. package/esm/_internal/date-picker.js +0 -32
  568. package/esm/_internal/dialog.js +0 -27
  569. package/esm/_internal/divider.js +0 -10
  570. package/esm/_internal/drag-handle.js +0 -11
  571. package/esm/_internal/dropdown.js +0 -21
  572. package/esm/_internal/expansion-panel.js +0 -32
  573. package/esm/_internal/expansion-panel.js.map +0 -1
  574. package/esm/_internal/flag.js +0 -11
  575. package/esm/_internal/getRootClassName.js.map +0 -1
  576. package/esm/_internal/grid.js +0 -10
  577. package/esm/_internal/icon.js +0 -10
  578. package/esm/_internal/lightbox.js +0 -27
  579. package/esm/_internal/link-preview.js +0 -15
  580. package/esm/_internal/link.js +0 -12
  581. package/esm/_internal/list.js +0 -15
  582. package/esm/_internal/mergeRefs.js.map +0 -1
  583. package/esm/_internal/message.js +0 -11
  584. package/esm/_internal/mosaic.js +0 -14
  585. package/esm/_internal/notification.js +0 -18
  586. package/esm/_internal/partitionMulti.js.map +0 -1
  587. package/esm/_internal/popover.js +0 -15
  588. package/esm/_internal/post-block.js +0 -15
  589. package/esm/_internal/progress-tracker.js +0 -16
  590. package/esm/_internal/progress.js +0 -10
  591. package/esm/_internal/radio-button.js +0 -13
  592. package/esm/_internal/renderLink.js.map +0 -1
  593. package/esm/_internal/select.js +0 -31
  594. package/esm/_internal/side-navigation.js +0 -25
  595. package/esm/_internal/slider.js +0 -13
  596. package/esm/_internal/slideshow.js +0 -27
  597. package/esm/_internal/switch.js +0 -13
  598. package/esm/_internal/tabs.js +0 -14
  599. package/esm/_internal/text-field.js +0 -26
  600. package/esm/_internal/thumbnail.js +0 -13
  601. package/esm/_internal/tooltip.js +0 -18
  602. package/esm/_internal/type.js.map +0 -1
  603. package/esm/_internal/types.js.map +0 -1
  604. package/esm/_internal/uploader.js +0 -11
  605. package/esm/_internal/useDelayedVisibility.js.map +0 -1
  606. package/esm/_internal/useDisableBodyScroll.js.map +0 -1
  607. package/esm/_internal/useFocusTrap.js.map +0 -1
  608. package/esm/_internal/useRovingTabIndex.js.map +0 -1
  609. package/esm/_internal/user-block.js +0 -17
  610. package/esm/index.js +0 -91
  611. package/esm/index2.js.map +0 -1
  612. package/src/utils/index.tsx +0 -7
@@ -2,7 +2,8 @@ import React, { forwardRef, ReactNode } from 'react';
2
2
 
3
3
  import classNames from 'classnames';
4
4
 
5
- import { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';
5
+ import { Comp, GenericProps } from '@lumx/react/utils/type';
6
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
6
7
 
7
8
  /**
8
9
  * Defines the props of the component.
@@ -8,7 +8,7 @@ import { Chip } from '@lumx/react/components/chip/Chip';
8
8
  import { Icon } from '@lumx/react/components/icon/Icon';
9
9
 
10
10
  import { commonTestsSuite, Wrapper } from '@lumx/react/testing/utils';
11
- import { getBasicClass } from '@lumx/react/utils';
11
+ import { getBasicClass } from '@lumx/react/utils/className';
12
12
 
13
13
  import { mdiCloseCircle, mdiMenuDown } from '@lumx/icons';
14
14
  import { Dropdown } from '@lumx/react/components/dropdown/Dropdown';
@@ -11,7 +11,8 @@ import { Chip } from '@lumx/react/components/chip/Chip';
11
11
  import { Icon } from '@lumx/react/components/icon/Icon';
12
12
  import { InputLabel } from '@lumx/react/components/input-label/InputLabel';
13
13
 
14
- import { Comp, getRootClassName, handleBasicClasses } from '@lumx/react/utils';
14
+ import { Comp } from '@lumx/react/utils/type';
15
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
15
16
 
16
17
  import { WithSelectContext } from './WithSelectContext';
17
18
  import { CoreSelectProps, SelectVariant } from './constants';
@@ -10,7 +10,7 @@ import { Dropdown } from '@lumx/react/components/dropdown/Dropdown';
10
10
  import { Icon } from '@lumx/react/components/icon/Icon';
11
11
 
12
12
  import { commonTestsSuite, Wrapper } from '@lumx/react/testing/utils';
13
- import { getBasicClass } from '@lumx/react/utils';
13
+ import { getBasicClass } from '@lumx/react/utils/className';
14
14
  import { SelectMultiple, SelectMultipleProps } from './SelectMultiple';
15
15
  import { DEFAULT_PROPS } from './WithSelectContext';
16
16
  import { SelectVariant } from './constants';
@@ -9,7 +9,8 @@ import { Chip } from '@lumx/react/components/chip/Chip';
9
9
  import { Icon } from '@lumx/react/components/icon/Icon';
10
10
  import { InputLabel } from '@lumx/react/components/input-label/InputLabel';
11
11
 
12
- import { Comp, getRootClassName, handleBasicClasses } from '@lumx/react/utils';
12
+ import { Comp } from '@lumx/react/utils/type';
13
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
13
14
 
14
15
  import { WithSelectContext } from './WithSelectContext';
15
16
  import { CoreSelectProps, SelectVariant } from './constants';
@@ -8,7 +8,7 @@ import { Dropdown } from '@lumx/react/components/dropdown/Dropdown';
8
8
  import { InputHelper } from '@lumx/react/components/input-helper/InputHelper';
9
9
  import { Placement } from '@lumx/react/components/popover/Popover';
10
10
 
11
- import { getRootClassName, handleBasicClasses } from '@lumx/react/utils';
11
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
12
12
  import { mergeRefs } from '@lumx/react/utils/mergeRefs';
13
13
  import { useListenFocus } from '@lumx/react/hooks/useListenFocus';
14
14
  import { CoreSelectProps, SelectVariant } from './constants';
@@ -1,5 +1,5 @@
1
1
  import { IconButtonProps } from '@lumx/react';
2
- import { GenericProps, HasTheme, ValueOf } from '@lumx/react/utils';
2
+ import { GenericProps, HasTheme, ValueOf } from '@lumx/react/utils/type';
3
3
  import { ReactNode, SyntheticEvent } from 'react';
4
4
 
5
5
  /**
@@ -4,7 +4,8 @@ import classNames from 'classnames';
4
4
 
5
5
  import { SideNavigationItem, Theme } from '@lumx/react';
6
6
 
7
- import { Comp, GenericProps, getRootClassName, handleBasicClasses, HasTheme, isComponent } from '@lumx/react/utils';
7
+ import { Comp, GenericProps, HasTheme, isComponent } from '@lumx/react/utils/type';
8
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
8
9
 
9
10
  /**
10
11
  * Defines the props of the component.
@@ -5,7 +5,7 @@ import 'jest-enzyme';
5
5
  import without from 'lodash/without';
6
6
 
7
7
  import { commonTestsSuite, Wrapper } from '@lumx/react/testing/utils';
8
- import { getBasicClass } from '@lumx/react/utils';
8
+ import { getBasicClass } from '@lumx/react/utils/className';
9
9
 
10
10
  import { mdiAccount } from '@lumx/icons';
11
11
 
@@ -7,15 +7,9 @@ import { mdiChevronDown, mdiChevronUp } from '@lumx/icons';
7
7
 
8
8
  import { Emphasis, Icon, Size, IconButton, IconButtonProps } from '@lumx/react';
9
9
 
10
- import {
11
- Callback,
12
- Comp,
13
- GenericProps,
14
- getRootClassName,
15
- handleBasicClasses,
16
- isComponent,
17
- onEnterPressed,
18
- } from '@lumx/react/utils';
10
+ import { Callback, Comp, GenericProps, isComponent } from '@lumx/react/utils/type';
11
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
12
+ import { onEnterPressed } from '@lumx/react/utils/event';
19
13
  import { renderLink } from '@lumx/react/utils/renderLink';
20
14
 
21
15
  /**
@@ -2,7 +2,8 @@ import classNames from 'classnames';
2
2
  import React, { forwardRef } from 'react';
3
3
 
4
4
  import { GlobalSize, Theme, ColorPalette } from '@lumx/react';
5
- import { Comp, GenericProps, getRootClassName, handleBasicClasses, HasTheme } from '@lumx/react/utils';
5
+ import { Comp, GenericProps, HasTheme } from '@lumx/react/utils/type';
6
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
6
7
 
7
8
  /**
8
9
  * Defines the props of the component.
@@ -2,7 +2,8 @@ import classNames from 'classnames';
2
2
  import React, { forwardRef } from 'react';
3
3
 
4
4
  import { AspectRatio, GlobalSize, Theme, ColorPalette } from '@lumx/react';
5
- import { Comp, GenericProps, getRootClassName, handleBasicClasses, HasTheme, ValueOf } from '@lumx/react/utils';
5
+ import { Comp, GenericProps, HasTheme, ValueOf } from '@lumx/react/utils/type';
6
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
6
7
 
7
8
  /**
8
9
  * Skeleton variants.
@@ -2,7 +2,8 @@ import classNames from 'classnames';
2
2
  import React, { CSSProperties, forwardRef } from 'react';
3
3
 
4
4
  import { Theme, TypographyInterface, ColorPalette } from '@lumx/react';
5
- import { Comp, GenericProps, getRootClassName, handleBasicClasses, HasTheme } from '@lumx/react/utils';
5
+ import { Comp, GenericProps, HasTheme } from '@lumx/react/utils/type';
6
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
6
7
 
7
8
  /**
8
9
  * Defines the props of the component.
@@ -6,7 +6,8 @@ import classNames from 'classnames';
6
6
  import { InputHelper, InputLabel, Theme } from '@lumx/react';
7
7
 
8
8
  import useEventCallback from '@lumx/react/hooks/useEventCallback';
9
- import { Comp, GenericProps, getRootClassName, handleBasicClasses, HasTheme } from '@lumx/react/utils';
9
+ import { Comp, GenericProps, HasTheme } from '@lumx/react/utils/type';
10
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
10
11
 
11
12
  import { uid } from 'uid';
12
13
  import { clamp } from '@lumx/react/utils/clamp';
@@ -1,9 +1,12 @@
1
- import React, { CSSProperties, forwardRef } from 'react';
1
+ import React, { Children, CSSProperties, forwardRef } from 'react';
2
+ import chunk from 'lodash/chunk';
2
3
 
3
4
  import classNames from 'classnames';
4
5
 
5
6
  import { FULL_WIDTH_PERCENT } from '@lumx/react/components/slideshow/constants';
6
- import { Comp, GenericProps, getRootClassName, handleBasicClasses, HasTheme } from '@lumx/react/utils';
7
+ import { Comp, GenericProps, HasTheme } from '@lumx/react/utils/type';
8
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
9
+ import { buildSlideShowGroupId, SlideshowItemGroup } from './SlideshowItemGroup';
7
10
 
8
11
  export interface SlidesProps extends GenericProps, HasTheme {
9
12
  /** current slide active */
@@ -24,6 +27,13 @@ export interface SlidesProps extends GenericProps, HasTheme {
24
27
  toggleAutoPlay: () => void;
25
28
  /** component to be rendered after the slides */
26
29
  afterSlides?: React.ReactNode;
30
+ /** Whether the slides have controls linked */
31
+ hasControls?: boolean;
32
+ /**
33
+ * Accessible label to set on a slide group.
34
+ * Receives the group position starting from 1 and the total number of groups.
35
+ * */
36
+ slideGroupLabel?: (groupPosition: number, groupTotal: number) => string;
27
37
  }
28
38
 
29
39
  /**
@@ -56,11 +66,22 @@ export const Slides: Comp<SlidesProps, HTMLDivElement> = forwardRef((props, ref)
56
66
  slidesId,
57
67
  children,
58
68
  afterSlides,
69
+ hasControls,
70
+ slideGroupLabel,
59
71
  ...forwardedProps
60
72
  } = props;
73
+ const wrapperRef = React.useRef<HTMLDivElement>(null);
74
+ const startIndexVisible = activeIndex;
75
+ const endIndexVisible = startIndexVisible + 1;
76
+
61
77
  // Inline style of wrapper element.
62
78
  const wrapperStyle: CSSProperties = { transform: `translateX(-${FULL_WIDTH_PERCENT * activeIndex}%)` };
63
79
 
80
+ const groups = React.useMemo(() => {
81
+ const childrenArray = Children.toArray(children);
82
+ return groupBy && groupBy > 1 ? chunk(childrenArray, groupBy) : childrenArray;
83
+ }, [children, groupBy]);
84
+
64
85
  return (
65
86
  <section
66
87
  id={id}
@@ -79,8 +100,18 @@ export const Slides: Comp<SlidesProps, HTMLDivElement> = forwardRef((props, ref)
79
100
  onMouseLeave={toggleAutoPlay}
80
101
  aria-live={isAutoPlaying ? 'off' : 'polite'}
81
102
  >
82
- <div className={`${CLASSNAME}__wrapper`} style={wrapperStyle}>
83
- {children}
103
+ <div ref={wrapperRef} className={`${CLASSNAME}__wrapper`} style={wrapperStyle}>
104
+ {groups.map((group, index) => (
105
+ <SlideshowItemGroup
106
+ key={index}
107
+ id={slidesId && buildSlideShowGroupId(slidesId, index)}
108
+ role={hasControls ? 'tabpanel' : 'group'}
109
+ label={slideGroupLabel ? slideGroupLabel(index + 1, groups.length) : undefined}
110
+ isDisplayed={index >= startIndexVisible && index < endIndexVisible}
111
+ >
112
+ {group}
113
+ </SlideshowItemGroup>
114
+ ))}
84
115
  </div>
85
116
  </div>
86
117
 
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import range from 'lodash/range';
3
- import { AspectRatio, Button, FlexBox, ImageBlock, Slideshow, SlideshowItem } from '@lumx/react';
3
+ import { AspectRatio, Button, FlexBox, ImageBlock, Slideshow, SlideshowItem, Orientation } from '@lumx/react';
4
4
  import { boolean, number } from '@storybook/addon-knobs';
5
5
  import { thumbnailsKnob } from '@lumx/react/stories/knobs/thumbnailsKnob';
6
6
 
@@ -15,6 +15,7 @@ export const Simple = ({ theme }: any) => {
15
15
 
16
16
  return (
17
17
  <Slideshow
18
+ aria-label="Simple carousel example"
18
19
  activeIndex={activeIndex}
19
20
  autoPlay={autoPlay}
20
21
  interval={interval}
@@ -25,6 +26,7 @@ export const Simple = ({ theme }: any) => {
25
26
  theme={theme}
26
27
  groupBy={groupBy}
27
28
  style={{ width: '50%' }}
29
+ slideGroupLabel={(currentGroup, totalGroup) => `${currentGroup} of ${totalGroup}`}
28
30
  >
29
31
  {images.map(({ image, alt }, index) => (
30
32
  <SlideshowItem key={`${image}-${index}`}>
@@ -48,6 +50,7 @@ export const SimpleWithAutoPlay = ({ theme }: any) => {
48
50
 
49
51
  return (
50
52
  <Slideshow
53
+ aria-label="Simple with autoplay example"
51
54
  activeIndex={activeIndex}
52
55
  autoPlay
53
56
  interval={interval}
@@ -59,6 +62,7 @@ export const SimpleWithAutoPlay = ({ theme }: any) => {
59
62
  theme={theme}
60
63
  groupBy={groupBy}
61
64
  style={{ width: '50%' }}
65
+ slideGroupLabel={(currentGroup, totalGroup) => `${currentGroup} of ${totalGroup}`}
62
66
  >
63
67
  {images.map(({ image, alt }, index) => (
64
68
  <SlideshowItem key={`${image}-${index}`}>
@@ -75,7 +79,7 @@ export const SimpleWithAutoPlay = ({ theme }: any) => {
75
79
  };
76
80
 
77
81
  export const ResponsiveSlideShowSwipe = () => {
78
- const slides = range(3);
82
+ const slides = range(5);
79
83
  return (
80
84
  <>
81
85
  In responsive mode
@@ -86,11 +90,13 @@ export const ResponsiveSlideShowSwipe = () => {
86
90
  </ul>
87
91
  <FlexBox vAlign="center">
88
92
  <Slideshow
93
+ aria-label="Responsive SlideShow Swipe"
89
94
  activeIndex={0}
90
95
  slideshowControlsProps={{
91
96
  nextButtonProps: { label: 'Next' },
92
97
  previousButtonProps: { label: 'Previous' },
93
98
  }}
99
+ slideGroupLabel={(currentGroup, totalGroup) => `${currentGroup} of ${totalGroup}`}
94
100
  >
95
101
  {slides.map((slide) => (
96
102
  <SlideshowItem key={`${slide}`}>
@@ -114,3 +120,93 @@ export const ResponsiveSlideShowSwipe = () => {
114
120
  </>
115
121
  );
116
122
  };
123
+
124
+ const slides = [
125
+ {
126
+ id: 0,
127
+ src: 'https://www.w3.org/WAI/ARIA/apg/example-index/carousel/images/foyleswarslide__800x600.jpg',
128
+ alt: 'A man in a suit and fedora and a woman with coiffed hair look sternly into the camera.',
129
+ title: 'Foyle’s War Revisited',
130
+ subtitle: '8 pm Sunday, March 8, on TV: Sneak peek at the final season',
131
+ link: '#',
132
+ },
133
+ {
134
+ id: 1,
135
+ src: 'https://www.w3.org/WAI/ARIA/apg/example-index/carousel/images/britcomdavidslide__800x600.jpg',
136
+ alt: 'British flag with WILL-TV host David Thiel.',
137
+ title: 'Great Britain Vote: 7 pm Sat.',
138
+ link: '#',
139
+ },
140
+ {
141
+ id: 2,
142
+ src: 'https://www.w3.org/WAI/ARIA/apg/example-index/carousel/images/mag800-2__800x600.jpg',
143
+ alt: 'Mid-American Gardener panelists on the set.',
144
+ title: 'Mid-American Gardener: Thursdays at 7 pm',
145
+ subtitle: 'Watch the latest episode',
146
+ link: '#',
147
+ },
148
+ {
149
+ id: 3,
150
+ src: 'https://www.w3.org/WAI/ARIA/apg/example-index/carousel/images/foyleswarslide__800x600.jpg',
151
+ alt: 'A man in a suit and fedora and a woman with coiffed hair look sternly into the camera.',
152
+ title: 'Foyle’s War Revisited',
153
+ subtitle: '8 pm Sunday, March 8, on TV: Sneak peek at the final season',
154
+ link: '#',
155
+ },
156
+ {
157
+ id: 4,
158
+ src: 'https://www.w3.org/WAI/ARIA/apg/example-index/carousel/images/britcomdavidslide__800x600.jpg',
159
+ alt: 'British flag with WILL-TV host David Thiel.',
160
+ title: 'Great Britain Vote: 7 pm Sat.',
161
+ link: '#',
162
+ },
163
+ {
164
+ id: 5,
165
+ src: 'https://www.w3.org/WAI/ARIA/apg/example-index/carousel/images/mag800-2__800x600.jpg',
166
+ alt: 'Mid-American Gardener panelists on the set.',
167
+ title: 'Mid-American Gardener: Thursdays at 7 pm',
168
+ subtitle: 'Watch the latest episode',
169
+ link: '#',
170
+ },
171
+ ];
172
+ export const WithComplexContent = () => (
173
+ <Slideshow
174
+ aria-label="Carousel with complex content"
175
+ activeIndex={0}
176
+ groupBy={2}
177
+ slideshowControlsProps={{
178
+ nextButtonProps: { label: 'Next' },
179
+ previousButtonProps: { label: 'Previous' },
180
+ playButtonProps: { label: 'Play/Pause' },
181
+ paginationItemProps: (index) => ({ label: `Slide ${index + 1}` }),
182
+ }}
183
+ slideGroupLabel={(currentGroup, totalGroup) => `${currentGroup} of ${totalGroup}`}
184
+ >
185
+ {range(number('Slides', 6)).map((nb) => {
186
+ const slide = slides[nb % slides.length];
187
+
188
+ return (
189
+ <SlideshowItem key={slide.id}>
190
+ <a href={slide.link}>
191
+ <ImageBlock
192
+ thumbnailProps={{ aspectRatio: AspectRatio.horizontal, loading: 'eager' }}
193
+ image={slide.src}
194
+ alt={slide.alt}
195
+ />
196
+ </a>
197
+ <FlexBox orientation={Orientation.vertical}>
198
+ <h3>
199
+ <a href={slide.link}>{slide.title}</a>
200
+ {/* Add a non focusable element to test that it stays that way after a page change. */}
201
+ <button type="button" tabIndex={-1} aria-hidden="true">
202
+ Not focusable
203
+ </button>
204
+ <button type="button">Focusable</button>
205
+ </h3>
206
+ {slide.subtitle && <p>{slide.subtitle}</p>}
207
+ </FlexBox>
208
+ </SlideshowItem>
209
+ );
210
+ })}
211
+ </Slideshow>
212
+ );
@@ -2,22 +2,26 @@ import React, { forwardRef } from 'react';
2
2
 
3
3
  import { SlideshowControls, SlideshowControlsProps, Theme, Slides, SlidesProps } from '@lumx/react';
4
4
  import { DEFAULT_OPTIONS } from '@lumx/react/hooks/useSlideshowControls';
5
- import { Comp, GenericProps } from '@lumx/react/utils';
5
+ import { Comp, GenericProps } from '@lumx/react/utils/type';
6
6
  import { useFocusWithin } from '@lumx/react/hooks/useFocusWithin';
7
7
  import { mergeRefs } from '@lumx/react/utils/mergeRefs';
8
+ import { buildSlideShowGroupId } from './SlideshowItemGroup';
8
9
 
9
10
  /**
10
11
  * Defines the props of the component.
11
12
  */
12
13
  export interface SlideshowProps
13
14
  extends GenericProps,
14
- Pick<SlidesProps, 'autoPlay' | 'slidesId' | 'id' | 'theme' | 'fillHeight' | 'groupBy'> {
15
+ Pick<SlidesProps, 'autoPlay' | 'slidesId' | 'id' | 'theme' | 'fillHeight' | 'groupBy' | 'slideGroupLabel'> {
15
16
  /** current slide active */
16
17
  activeIndex?: SlidesProps['activeIndex'];
17
18
  /** Interval between each slide when automatic rotation is enabled. */
18
19
  interval?: number;
19
20
  /** Props to pass to the slideshow controls (minus those already set by the Slideshow props). */
20
- slideshowControlsProps?: Pick<SlideshowControlsProps, 'nextButtonProps' | 'previousButtonProps'> &
21
+ slideshowControlsProps?: Pick<
22
+ SlideshowControlsProps,
23
+ 'nextButtonProps' | 'previousButtonProps' | 'paginationItemProps'
24
+ > &
21
25
  Omit<
22
26
  SlideshowControlsProps,
23
27
  | 'activeIndex'
@@ -61,6 +65,7 @@ export const Slideshow: Comp<SlideshowProps, HTMLDivElement> = forwardRef((props
61
65
  theme,
62
66
  id,
63
67
  slidesId,
68
+ slideGroupLabel,
64
69
  ...forwardedProps
65
70
  } = props;
66
71
  // Number of slideshow items.
@@ -99,6 +104,8 @@ export const Slideshow: Comp<SlideshowProps, HTMLDivElement> = forwardRef((props
99
104
  onFocusOut: startAutoPlay,
100
105
  });
101
106
 
107
+ const showControls = slideshowControlsProps && slidesCount > 1;
108
+
102
109
  return (
103
110
  <Slides
104
111
  activeIndex={currentIndex}
@@ -111,8 +118,9 @@ export const Slideshow: Comp<SlideshowProps, HTMLDivElement> = forwardRef((props
111
118
  autoPlay={autoPlay}
112
119
  slidesId={slideshowSlidesId}
113
120
  toggleAutoPlay={toggleAutoPlay}
114
- interval={interval}
115
121
  ref={mergeRefs(ref, setSlideshow)}
122
+ hasControls={showControls}
123
+ slideGroupLabel={slideGroupLabel}
116
124
  afterSlides={
117
125
  slideshowControlsProps && slidesCount > 1 ? (
118
126
  <div className={`${Slides.className}__controls`}>
@@ -143,6 +151,10 @@ export const Slideshow: Comp<SlideshowProps, HTMLDivElement> = forwardRef((props
143
151
  }
144
152
  : undefined
145
153
  }
154
+ paginationItemProps={(index) => ({
155
+ 'aria-controls': buildSlideShowGroupId(slideshowSlidesId, index),
156
+ ...slideshowControlsProps.paginationItemProps?.(index),
157
+ })}
146
158
  />
147
159
  </div>
148
160
  ) : undefined
@@ -26,6 +26,7 @@ export const Simple = () => {
26
26
  onPaginationClick={onPaginationClick}
27
27
  nextButtonProps={{ label: 'Next' }}
28
28
  previousButtonProps={{ label: 'Previous' }}
29
+ paginationItemLabel={(index) => `Slide ${index}`}
29
30
  />
30
31
  );
31
32
  };
@@ -62,7 +63,6 @@ export const ControllingSlideshow = ({ theme }: any) => {
62
63
  onFocusOut: startAutoPlay,
63
64
  });
64
65
 
65
- /* eslint-disable jsx-a11y/no-noninteractive-tabindex */
66
66
  return (
67
67
  <Slides
68
68
  activeIndex={currentIndex}
@@ -5,12 +5,13 @@ import range from 'lodash/range';
5
5
 
6
6
  import { mdiChevronLeft, mdiChevronRight, mdiPlayCircleOutline, mdiPauseCircleOutline } from '@lumx/icons';
7
7
  import { Emphasis, IconButton, IconButtonProps, Theme } from '@lumx/react';
8
- import { Comp, GenericProps, getRootClassName, handleBasicClasses, HasTheme } from '@lumx/react/utils';
8
+ import { Comp, GenericProps, HasTheme } from '@lumx/react/utils/type';
9
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
9
10
  import { WINDOW } from '@lumx/react/constants';
10
11
  import { useSlideshowControls, DEFAULT_OPTIONS } from '@lumx/react/hooks/useSlideshowControls';
12
+ import { useRovingTabIndex } from '@lumx/react/hooks/useRovingTabIndex';
11
13
 
12
14
  import { useSwipeNavigate } from './useSwipeNavigate';
13
- import { useKeyNavigate } from './useKeyNavigate';
14
15
  import { PAGINATION_ITEM_SIZE, PAGINATION_ITEMS_MAX } from './constants';
15
16
  import { usePaginationVisibleRange } from './usePaginationVisibleRange';
16
17
 
@@ -28,6 +29,8 @@ export interface SlideshowControlsProps extends GenericProps, HasTheme {
28
29
  /** Props to pass to the previous button (minus those already set by the SlideshowControls props). */
29
30
  previousButtonProps: Pick<IconButtonProps, 'label'> &
30
31
  Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;
32
+ /** Props to pass to the pagination wrapper */
33
+ paginationProps?: Omit<React.HTMLAttributes<HTMLDivElement>, 'className' | 'style' | 'role'>;
31
34
  /** Number of slides. */
32
35
  slidesCount: number;
33
36
  /** On next button click callback. */
@@ -38,8 +41,15 @@ export interface SlideshowControlsProps extends GenericProps, HasTheme {
38
41
  onPreviousClick?(loopback?: boolean): void;
39
42
  /** whether the slideshow is currently playing */
40
43
  isAutoPlaying?: boolean;
41
- /** function to be executed in order to retrieve the label for the pagination item */
44
+ /**
45
+ * function to be executed in order to retrieve the label for the pagination item
46
+ * @deprecated Use paginationItemProps instead.
47
+ * */
42
48
  paginationItemLabel?: (index: number) => string;
49
+ /**
50
+ * function to be executed in order to retrieve the props for a pagination item.
51
+ */
52
+ paginationItemProps?: (itemIndex: number) => React.HTMLAttributes<HTMLButtonElement> & { label?: string };
43
53
  /** Props to pass to the lay button (minus those already set by the SlideshowControls props). */
44
54
  playButtonProps?: Pick<IconButtonProps, 'label'> &
45
55
  Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;
@@ -80,11 +90,13 @@ const InternalSlideshowControls: Comp<SlideshowControlsProps, HTMLDivElement> =
80
90
  onPreviousClick,
81
91
  parentRef,
82
92
  previousButtonProps,
93
+ paginationProps,
83
94
  slidesCount,
84
95
  theme,
85
96
  isAutoPlaying = false,
86
97
  playButtonProps,
87
98
  paginationItemLabel,
99
+ paginationItemProps,
88
100
  ...forwardedProps
89
101
  } = props;
90
102
 
@@ -93,8 +105,7 @@ const InternalSlideshowControls: Comp<SlideshowControlsProps, HTMLDivElement> =
93
105
  // Checking window object to avoid errors in SSR.
94
106
  parent = parentRef instanceof HTMLElement ? parentRef : parentRef?.current;
95
107
  }
96
- // Listen to keyboard navigate left & right.
97
- useKeyNavigate(parent, onNextClick, onPreviousClick);
108
+ const paginationRef = React.useRef(null);
98
109
  // Listen to touch swipe navigate left & right.
99
110
  useSwipeNavigate(
100
111
  parent,
@@ -104,6 +115,18 @@ const InternalSlideshowControls: Comp<SlideshowControlsProps, HTMLDivElement> =
104
115
  useCallback(() => onPreviousClick?.(false), [onPreviousClick]),
105
116
  );
106
117
 
118
+ /**
119
+ * Add roving tab index pattern to pagination items and activate slide on focus.
120
+ */
121
+ useRovingTabIndex({
122
+ parentRef: paginationRef,
123
+ elementSelector: 'button',
124
+ keepTabIndex: true,
125
+ onElementFocus: (element) => {
126
+ element.click();
127
+ },
128
+ });
129
+
107
130
  // Pagination "bullet" range.
108
131
  const visibleRange = usePaginationVisibleRange(activeIndex as number, slidesCount);
109
132
 
@@ -126,8 +149,13 @@ const InternalSlideshowControls: Comp<SlideshowControlsProps, HTMLDivElement> =
126
149
  emphasis={Emphasis.low}
127
150
  onClick={onPreviousClick}
128
151
  />
129
- <div className={`${CLASSNAME}__pagination`}>
130
- <div className={`${CLASSNAME}__pagination-items`} style={wrapperStyle}>
152
+ <div ref={paginationRef} className={`${CLASSNAME}__pagination`}>
153
+ <div
154
+ className={`${CLASSNAME}__pagination-items`}
155
+ style={wrapperStyle}
156
+ role="tablist"
157
+ {...paginationProps}
158
+ >
131
159
  {useMemo(
132
160
  () =>
133
161
  range(slidesCount).map((index) => {
@@ -137,6 +165,15 @@ const InternalSlideshowControls: Comp<SlideshowControlsProps, HTMLDivElement> =
137
165
  (index === visibleRange.min || index === visibleRange.max);
138
166
  const isActive = activeIndex === index;
139
167
  const isOutRange = index < visibleRange.min || index > visibleRange.max;
168
+ const {
169
+ className: itemClassName = undefined,
170
+ label = undefined,
171
+ ...itemProps
172
+ } = paginationItemProps ? paginationItemProps(index) : {};
173
+
174
+ const ariaLabel =
175
+ label || paginationItemLabel?.(index) || `${index + 1} / ${slidesCount}`;
176
+
140
177
  return (
141
178
  <button
142
179
  className={classNames(
@@ -146,15 +183,16 @@ const InternalSlideshowControls: Comp<SlideshowControlsProps, HTMLDivElement> =
146
183
  isOnEdge,
147
184
  isOutRange,
148
185
  }),
186
+ itemClassName,
149
187
  )}
150
188
  key={index}
151
189
  type="button"
190
+ tabIndex={isActive ? undefined : -1}
191
+ role="tab"
192
+ aria-selected={isActive}
152
193
  onClick={() => onPaginationClick?.(index)}
153
- {...{
154
- 'aria-label': paginationItemLabel
155
- ? paginationItemLabel(index)
156
- : `${index + 1} / ${slidesCount}`,
157
- }}
194
+ aria-label={ariaLabel}
195
+ {...itemProps}
158
196
  />
159
197
  );
160
198
  }),
@@ -163,6 +201,7 @@ const InternalSlideshowControls: Comp<SlideshowControlsProps, HTMLDivElement> =
163
201
  visibleRange.min,
164
202
  visibleRange.max,
165
203
  activeIndex,
204
+ paginationItemProps,
166
205
  paginationItemLabel,
167
206
  onPaginationClick,
168
207
  ],
@@ -2,14 +2,13 @@ import React, { forwardRef } from 'react';
2
2
 
3
3
  import classNames from 'classnames';
4
4
 
5
- import { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';
5
+ import { Comp, GenericProps } from '@lumx/react/utils/type';
6
+ import { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';
6
7
 
7
8
  /**
8
9
  * Defines the props of the component.
9
10
  */
10
11
  export interface SlideshowItemProps extends GenericProps {
11
- /** whether the slideshow item is currently visible */
12
- isCurrentlyVisible?: boolean;
13
12
  /** interval in which slides are automatically shown */
14
13
  interval?: number;
15
14
  }
@@ -33,7 +32,6 @@ const CLASSNAME = getRootClassName(COMPONENT_NAME);
33
32
  */
34
33
  export const SlideshowItem: Comp<SlideshowItemProps, HTMLDivElement> = forwardRef((props, ref) => {
35
34
  const { className, children, ...forwardedProps } = props;
36
-
37
35
  return (
38
36
  <div
39
37
  ref={ref}
@@ -43,8 +41,6 @@ export const SlideshowItem: Comp<SlideshowItemProps, HTMLDivElement> = forwardRe
43
41
  prefix: CLASSNAME,
44
42
  }),
45
43
  )}
46
- aria-roledescription="slide"
47
- role="group"
48
44
  {...forwardedProps}
49
45
  >
50
46
  {children}