@lumx/react 3.10.1-alpha.0 → 3.10.1-alpha.2

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 (329) hide show
  1. package/_internal/17c3ea1d.js +137 -0
  2. package/_internal/17c3ea1d.js.map +1 -0
  3. package/_internal/1da25128.js +411 -0
  4. package/_internal/1da25128.js.map +1 -0
  5. package/_internal/230173a8.js +13 -0
  6. package/_internal/230173a8.js.map +1 -0
  7. package/_internal/23bdba2d.js +71 -0
  8. package/_internal/23bdba2d.js.map +1 -0
  9. package/_internal/26926e5c.d.ts +36 -0
  10. package/_internal/2a3d237c.js +12 -0
  11. package/_internal/2a3d237c.js.map +1 -0
  12. package/_internal/2c5dbb03.js +26 -0
  13. package/_internal/2c5dbb03.js.map +1 -0
  14. package/_internal/2e2abe51.js +2154 -0
  15. package/_internal/2e2abe51.js.map +1 -0
  16. package/_internal/31490c59.d.ts +167 -0
  17. package/_internal/3181f000.js +14 -0
  18. package/_internal/3181f000.js.map +1 -0
  19. package/_internal/35f100be.d.ts +104 -0
  20. package/_internal/36bd7352.js +219 -0
  21. package/_internal/36bd7352.js.map +1 -0
  22. package/_internal/3a1facc0.js +18 -0
  23. package/_internal/3a1facc0.js.map +1 -0
  24. package/_internal/4c20d932.js +89 -0
  25. package/_internal/4c20d932.js.map +1 -0
  26. package/_internal/4c28d012.js +305 -0
  27. package/_internal/4c28d012.js.map +1 -0
  28. package/_internal/4cd0bf32.js +160 -0
  29. package/_internal/4cd0bf32.js.map +1 -0
  30. package/_internal/4daccdd5.js +25 -0
  31. package/_internal/4daccdd5.js.map +1 -0
  32. package/_internal/524b1d04.js +64 -0
  33. package/_internal/524b1d04.js.map +1 -0
  34. package/_internal/53c94227.js +123 -0
  35. package/_internal/53c94227.js.map +1 -0
  36. package/_internal/54d9ded5.js +418 -0
  37. package/_internal/54d9ded5.js.map +1 -0
  38. package/_internal/56aec41b.js +652 -0
  39. package/_internal/56aec41b.js.map +1 -0
  40. package/_internal/5720caf5.js +124 -0
  41. package/_internal/5720caf5.js.map +1 -0
  42. package/_internal/646f0db6.js +113 -0
  43. package/_internal/646f0db6.js.map +1 -0
  44. package/_internal/6cc8dca8.d.ts +22 -0
  45. package/_internal/7f022f8c.d.ts +34 -0
  46. package/_internal/{index.d.ts → 8d67e1e3.d.ts} +1 -1
  47. package/_internal/b8f2948d.js +691 -0
  48. package/_internal/b8f2948d.js.map +1 -0
  49. package/_internal/bc28d510.js +784 -0
  50. package/_internal/bc28d510.js.map +1 -0
  51. package/_internal/c68d24e4.js +145 -0
  52. package/_internal/c68d24e4.js.map +1 -0
  53. package/_internal/c6c99f76.js +105 -0
  54. package/_internal/c6c99f76.js.map +1 -0
  55. package/_internal/cae46566.js +65 -0
  56. package/_internal/cae46566.js.map +1 -0
  57. package/_internal/components/alert-dialog/index.ts-623b1ed3.d.ts +37 -0
  58. package/_internal/components/alert-dialog/index.ts-f83bd6ef.js +148 -0
  59. package/_internal/components/alert-dialog/index.ts-f83bd6ef.js.map +1 -0
  60. package/_internal/components/autocomplete/index.ts-3f8f125c.js +264 -0
  61. package/_internal/components/autocomplete/index.ts-3f8f125c.js.map +1 -0
  62. package/_internal/components/autocomplete/index.ts-8d6b123f.d.ts +201 -0
  63. package/_internal/components/avatar/index.ts-93ee0ea9.js +89 -0
  64. package/_internal/components/avatar/index.ts-93ee0ea9.js.map +1 -0
  65. package/_internal/components/avatar/index.ts-f92852b4.d.ts +43 -0
  66. package/_internal/components/badge/index.ts-2d7700ef.d.ts +30 -0
  67. package/_internal/components/badge/index.ts-6753d67f.js +88 -0
  68. package/_internal/components/badge/index.ts-6753d67f.js.map +1 -0
  69. package/_internal/components/button/index.ts-031307ce.js +51 -0
  70. package/_internal/components/button/index.ts-031307ce.js.map +1 -0
  71. package/_internal/components/button/index.ts-b29e26a4.d.ts +22 -0
  72. package/_internal/components/checkbox/index.ts-a33166d7.js +127 -0
  73. package/_internal/components/checkbox/index.ts-a33166d7.js.map +1 -0
  74. package/_internal/components/checkbox/index.ts-f82358ff.d.ts +38 -0
  75. package/_internal/components/chip/index.ts-4a91f1a7.d.ts +68 -0
  76. package/_internal/components/chip/index.ts-a2b5b771.js +110 -0
  77. package/_internal/components/chip/index.ts-a2b5b771.js.map +1 -0
  78. package/_internal/components/comment-block/index.ts-58fa051a.js +121 -0
  79. package/_internal/components/comment-block/index.ts-58fa051a.js.map +1 -0
  80. package/_internal/components/comment-block/index.ts-8cfa5af0.d.ts +67 -0
  81. package/_internal/components/date-picker/index.ts-145262d5.js +2 -0
  82. package/_internal/components/date-picker/index.ts-145262d5.js.map +1 -0
  83. package/_internal/components/date-picker/index.ts-70a34fa7.d.ts +95 -0
  84. package/_internal/components/dialog/index.ts-ea044db2.js +224 -0
  85. package/_internal/components/dialog/index.ts-ea044db2.js.map +1 -0
  86. package/_internal/components/dialog/index.ts-eca28654.d.ts +55 -0
  87. package/_internal/components/divider/index.ts-4a56db75.js +55 -0
  88. package/_internal/components/divider/index.ts-4a56db75.js.map +1 -0
  89. package/_internal/components/divider/index.ts-b011d8ca.d.ts +18 -0
  90. package/_internal/components/drag-handle/index.ts-0aebf92f.js +54 -0
  91. package/_internal/components/drag-handle/index.ts-0aebf92f.js.map +1 -0
  92. package/_internal/components/drag-handle/index.ts-3ab31dd1.d.ts +18 -0
  93. package/_internal/components/dropdown/index.ts-2a17db51.js +154 -0
  94. package/_internal/components/dropdown/index.ts-2a17db51.js.map +1 -0
  95. package/_internal/components/dropdown/index.ts-b648a15c.d.ts +87 -0
  96. package/_internal/components/expansion-panel/index.ts-69f09f5b.d.ts +38 -0
  97. package/_internal/components/expansion-panel/index.ts-fae3762e.js +143 -0
  98. package/_internal/components/expansion-panel/index.ts-fae3762e.js.map +1 -0
  99. package/_internal/components/flag/index.ts-8dcd685b.js +56 -0
  100. package/_internal/components/flag/index.ts-8dcd685b.js.map +1 -0
  101. package/_internal/components/flag/index.ts-fda89adb.d.ts +23 -0
  102. package/_internal/components/flex-box/index.ts-87f2b58d.d.ts +43 -0
  103. package/_internal/components/flex-box/index.ts-c216e957.js +60 -0
  104. package/_internal/components/flex-box/index.ts-c216e957.js.map +1 -0
  105. package/_internal/components/generic-block/index.ts-999a62a4.js +115 -0
  106. package/_internal/components/generic-block/index.ts-999a62a4.js.map +1 -0
  107. package/_internal/components/generic-block/index.ts-cd3b0e21.d.ts +106 -0
  108. package/_internal/components/grid/index.ts-67e0694f.d.ts +50 -0
  109. package/_internal/components/grid/index.ts-fdf1b306.js +113 -0
  110. package/_internal/components/grid/index.ts-fdf1b306.js.map +1 -0
  111. package/_internal/components/grid-column/index.ts-97c61cbe.js +64 -0
  112. package/_internal/components/grid-column/index.ts-97c61cbe.js.map +1 -0
  113. package/_internal/components/grid-column/index.ts-c89e1c18.d.ts +31 -0
  114. package/_internal/components/heading/index.ts-0179e9a9.js +112 -0
  115. package/_internal/components/heading/index.ts-0179e9a9.js.map +1 -0
  116. package/_internal/components/heading/index.ts-587579e8.d.ts +37 -0
  117. package/_internal/components/icon/index.ts-740ca1de.js +2 -0
  118. package/_internal/components/icon/index.ts-740ca1de.js.map +1 -0
  119. package/_internal/components/icon/index.ts-b3fa5e15.d.ts +34 -0
  120. package/_internal/components/image-block/index.ts-36b3828f.d.ts +49 -0
  121. package/_internal/components/image-block/index.ts-ef5e2e7d.js +111 -0
  122. package/_internal/components/image-block/index.ts-ef5e2e7d.js.map +1 -0
  123. package/_internal/components/image-lightbox/index.ts-137f85a8.js +765 -0
  124. package/_internal/components/image-lightbox/index.ts-137f85a8.js.map +1 -0
  125. package/_internal/components/image-lightbox/index.ts-2cb92d18.d.ts +75 -0
  126. package/_internal/components/inline-list/index.ts-033dd358.js +76 -0
  127. package/_internal/components/inline-list/index.ts-033dd358.js.map +1 -0
  128. package/_internal/components/inline-list/index.ts-e1c8a3ff.d.ts +34 -0
  129. package/_internal/components/input-helper/index.ts-32a9ca90.d.ts +22 -0
  130. package/_internal/components/input-helper/index.ts-ab3a1ef5.js +75 -0
  131. package/_internal/components/input-helper/index.ts-ab3a1ef5.js.map +1 -0
  132. package/_internal/components/input-label/index.ts-86f2ea41.d.ts +24 -0
  133. package/_internal/components/input-label/index.ts-d6ca5569.js +60 -0
  134. package/_internal/components/input-label/index.ts-d6ca5569.js.map +1 -0
  135. package/_internal/components/lightbox/index.ts-5370e8e6.d.ts +36 -0
  136. package/_internal/components/lightbox/index.ts-7a16cdc7.js +149 -0
  137. package/_internal/components/lightbox/index.ts-7a16cdc7.js.map +1 -0
  138. package/_internal/components/link/index.ts-26435006.d.ts +37 -0
  139. package/_internal/components/link/index.ts-d04f4e53.js +120 -0
  140. package/_internal/components/link/index.ts-d04f4e53.js.map +1 -0
  141. package/_internal/components/link-preview/index.ts-e560a274.d.ts +36 -0
  142. package/_internal/components/link-preview/index.ts-fee89f66.js +109 -0
  143. package/_internal/components/link-preview/index.ts-fee89f66.js.map +1 -0
  144. package/_internal/components/list/index.ts-ab57902e.d.ts +118 -0
  145. package/_internal/components/list/index.ts-f3101625.js +86 -0
  146. package/_internal/components/list/index.ts-f3101625.js.map +1 -0
  147. package/_internal/components/message/index.ts-041cf0cb.js +97 -0
  148. package/_internal/components/message/index.ts-041cf0cb.js.map +1 -0
  149. package/_internal/components/message/index.ts-2d38e0ea.d.ts +37 -0
  150. package/_internal/components/mosaic/index.ts-232d5aed.d.ts +23 -0
  151. package/_internal/components/mosaic/index.ts-d2128cd3.js +94 -0
  152. package/_internal/components/mosaic/index.ts-d2128cd3.js.map +1 -0
  153. package/_internal/components/navigation/index.ts-6d8bea53.d.ts +58 -0
  154. package/_internal/components/navigation/index.ts-e8dc0a7f.js +222 -0
  155. package/_internal/components/navigation/index.ts-e8dc0a7f.js.map +1 -0
  156. package/_internal/components/notification/index.ts-235fd340.js +140 -0
  157. package/_internal/components/notification/index.ts-235fd340.js.map +1 -0
  158. package/_internal/components/notification/index.ts-bb3f03f6.d.ts +34 -0
  159. package/_internal/components/popover/index.ts-2f17a9b6.js +3 -0
  160. package/_internal/components/popover/index.ts-2f17a9b6.js.map +1 -0
  161. package/_internal/components/popover/index.ts-e3b4ff19.d.ts +66 -0
  162. package/_internal/components/post-block/index.ts-0acb9bb4.js +101 -0
  163. package/_internal/components/post-block/index.ts-0acb9bb4.js.map +1 -0
  164. package/_internal/components/post-block/index.ts-9b8ff90b.d.ts +41 -0
  165. package/_internal/components/progress/index.ts-2a713859.js +189 -0
  166. package/_internal/components/progress/index.ts-2a713859.js.map +1 -0
  167. package/_internal/components/progress/index.ts-dfdfa5fb.d.ts +60 -0
  168. package/_internal/components/progress-tracker/index.ts-2649f756.js +312 -0
  169. package/_internal/components/progress-tracker/index.ts-2649f756.js.map +1 -0
  170. package/_internal/components/progress-tracker/index.ts-95320f32.d.ts +101 -0
  171. package/_internal/components/radio-button/index.ts-5eaab4cf.d.ts +54 -0
  172. package/_internal/components/radio-button/index.ts-b4dfb2a0.js +150 -0
  173. package/_internal/components/radio-button/index.ts-b4dfb2a0.js.map +1 -0
  174. package/_internal/components/select/index.ts-a65e3507.d.ts +91 -0
  175. package/_internal/components/select/index.ts-e8fad28b.js +257 -0
  176. package/_internal/components/select/index.ts-e8fad28b.js.map +1 -0
  177. package/_internal/components/side-navigation/index.ts-3f5f3785.d.ts +60 -0
  178. package/_internal/components/side-navigation/index.ts-c9a5fc3e.js +184 -0
  179. package/_internal/components/side-navigation/index.ts-c9a5fc3e.js.map +1 -0
  180. package/_internal/components/skeleton/index.ts-a7daefac.d.ts +75 -0
  181. package/_internal/components/skeleton/index.ts-ffc995af.js +179 -0
  182. package/_internal/components/skeleton/index.ts-ffc995af.js.map +1 -0
  183. package/_internal/components/slider/index.ts-24a0d598.d.ts +52 -0
  184. package/_internal/components/slider/index.ts-72aadf4c.js +308 -0
  185. package/_internal/components/slider/index.ts-72aadf4c.js.map +1 -0
  186. package/_internal/components/slideshow/index.ts-c99f2892.js +151 -0
  187. package/_internal/components/slideshow/index.ts-c99f2892.js.map +1 -0
  188. package/_internal/components/slideshow/index.ts-e49462c6.d.ts +25 -0
  189. package/_internal/components/switch/index.ts-207ba52b.d.ts +34 -0
  190. package/_internal/components/switch/index.ts-542e6eaf.js +115 -0
  191. package/_internal/components/switch/index.ts-542e6eaf.js.map +1 -0
  192. package/_internal/components/table/index.ts-905ce390.js +310 -0
  193. package/_internal/components/table/index.ts-905ce390.js.map +1 -0
  194. package/_internal/components/table/index.ts-c4f39b2d.d.ts +108 -0
  195. package/_internal/components/tabs/index.ts-713119f4.js +289 -0
  196. package/_internal/components/tabs/index.ts-713119f4.js.map +1 -0
  197. package/_internal/components/tabs/index.ts-dbfc48d9.d.ts +106 -0
  198. package/_internal/components/text/index.ts-6afbe8cd.js +2 -0
  199. package/_internal/components/text/index.ts-6afbe8cd.js.map +1 -0
  200. package/_internal/components/text/index.ts-8a812048.d.ts +53 -0
  201. package/_internal/components/text-field/index.ts-92e6b3b3.d.ts +77 -0
  202. package/_internal/components/text-field/index.ts-c3be8563.js +341 -0
  203. package/_internal/components/text-field/index.ts-c3be8563.js.map +1 -0
  204. package/_internal/components/thumbnail/index.ts-16d7b403.js +40 -0
  205. package/_internal/components/thumbnail/index.ts-16d7b403.js.map +1 -0
  206. package/_internal/components/thumbnail/index.ts-1b6c0b48.d.ts +8 -0
  207. package/_internal/components/toolbar/index.ts-813b902e.js +63 -0
  208. package/_internal/components/toolbar/index.ts-813b902e.js.map +1 -0
  209. package/_internal/components/toolbar/index.ts-9f5129d1.d.ts +24 -0
  210. package/_internal/components/tooltip/index.ts-905c847c.js +322 -0
  211. package/_internal/components/tooltip/index.ts-905c847c.js.map +1 -0
  212. package/_internal/components/tooltip/index.ts-c6931e9e.d.ts +35 -0
  213. package/_internal/components/uploader/index.ts-31f21c2a.js +132 -0
  214. package/_internal/components/uploader/index.ts-31f21c2a.js.map +1 -0
  215. package/_internal/components/uploader/index.ts-c3ccba98.d.ts +51 -0
  216. package/_internal/components/user-block/index.ts-18c58e19.d.ts +50 -0
  217. package/_internal/components/user-block/index.ts-d43e5f3c.js +136 -0
  218. package/_internal/components/user-block/index.ts-d43e5f3c.js.map +1 -0
  219. package/_internal/dc3e28c8.d.ts +38 -0
  220. package/_internal/f39a1ba4.js +73 -0
  221. package/_internal/f39a1ba4.js.map +1 -0
  222. package/_internal/f3e77e3e.js +22 -0
  223. package/_internal/f3e77e3e.js.map +1 -0
  224. package/_internal/f502ab30.js +78 -0
  225. package/_internal/f502ab30.js.map +1 -0
  226. package/_internal/f52adbae.js +36 -0
  227. package/_internal/f52adbae.js.map +1 -0
  228. package/_internal/f57e1239.js +205 -0
  229. package/_internal/f57e1239.js.map +1 -0
  230. package/_internal/f5ff1aa4.d.ts +47 -0
  231. package/_internal/fb975afe.js +52 -0
  232. package/_internal/fb975afe.js.map +1 -0
  233. package/index.d.ts +66 -3023
  234. package/index.js +64 -14531
  235. package/index.js.map +1 -1
  236. package/package.json +3 -3
  237. package/src/components/alert-dialog/AlertDialog.tsx +3 -4
  238. package/src/components/autocomplete/Autocomplete.tsx +4 -3
  239. package/src/components/autocomplete/AutocompleteMultiple.tsx +7 -6
  240. package/src/components/avatar/Avatar.tsx +4 -3
  241. package/src/components/badge/Badge.tsx +7 -4
  242. package/src/components/badge/BadgeWrapper.tsx +7 -4
  243. package/src/components/button/Button.tsx +5 -3
  244. package/src/components/button/ButtonGroup.tsx +4 -3
  245. package/src/components/button/ButtonRoot.tsx +4 -3
  246. package/src/components/button/IconButton.tsx +3 -3
  247. package/src/components/checkbox/Checkbox.tsx +4 -3
  248. package/src/components/chip/Chip.tsx +8 -9
  249. package/src/components/chip/ChipGroup.tsx +5 -4
  250. package/src/components/comment-block/CommentBlock.tsx +4 -4
  251. package/src/components/date-picker/DatePicker.tsx +5 -3
  252. package/src/components/date-picker/DatePickerControlled.tsx +6 -3
  253. package/src/components/date-picker/DatePickerField.tsx +4 -3
  254. package/src/components/dialog/Dialog.tsx +4 -3
  255. package/src/components/divider/Divider.tsx +4 -3
  256. package/src/components/drag-handle/DragHandle.test.tsx +1 -1
  257. package/src/components/drag-handle/DragHandle.tsx +4 -3
  258. package/src/components/dropdown/Dropdown.tsx +4 -3
  259. package/src/components/expansion-panel/ExpansionPanel.tsx +4 -3
  260. package/src/components/flag/Flag.tsx +5 -3
  261. package/src/components/flex-box/FlexBox.tsx +8 -5
  262. package/src/components/generic-block/GenericBlock.tsx +4 -1
  263. package/src/components/grid/Grid.tsx +4 -3
  264. package/src/components/grid/GridItem.tsx +4 -3
  265. package/src/components/grid-column/GridColumn.tsx +5 -5
  266. package/src/components/heading/Heading.tsx +8 -4
  267. package/src/components/icon/Icon.tsx +5 -4
  268. package/src/components/image-block/ImageBlock.tsx +4 -3
  269. package/src/components/image-lightbox/ImageLightbox.tsx +4 -3
  270. package/src/components/inline-list/InlineList.tsx +4 -3
  271. package/src/components/input-helper/InputHelper.tsx +7 -4
  272. package/src/components/input-label/InputLabel.tsx +7 -4
  273. package/src/components/lightbox/Lightbox.tsx +4 -3
  274. package/src/components/link/Link.tsx +4 -3
  275. package/src/components/link-preview/LinkPreview.tsx +4 -3
  276. package/src/components/list/List.tsx +7 -5
  277. package/src/components/list/ListDivider.tsx +4 -3
  278. package/src/components/list/ListItem.tsx +4 -3
  279. package/src/components/list/ListSubheader.tsx +4 -3
  280. package/src/components/message/Message.tsx +7 -4
  281. package/src/components/mosaic/Mosaic.tsx +7 -5
  282. package/src/components/navigation/NavigationItem.tsx +1 -1
  283. package/src/components/navigation/NavigationSection.test.tsx +19 -6
  284. package/src/components/notification/Notification.tsx +4 -6
  285. package/src/components/popover/Popover.tsx +3 -2
  286. package/src/components/popover-dialog/PopoverDialog.tsx +5 -3
  287. package/src/components/post-block/PostBlock.tsx +4 -6
  288. package/src/components/progress/Progress.tsx +5 -4
  289. package/src/components/progress/ProgressCircular.tsx +4 -4
  290. package/src/components/progress/ProgressLinear.tsx +4 -4
  291. package/src/components/progress-tracker/ProgressTracker.tsx +5 -3
  292. package/src/components/progress-tracker/ProgressTrackerStep.tsx +5 -5
  293. package/src/components/progress-tracker/ProgressTrackerStepPanel.tsx +24 -24
  294. package/src/components/radio-button/RadioButton.tsx +4 -4
  295. package/src/components/radio-button/RadioGroup.tsx +4 -3
  296. package/src/components/select/Select.tsx +3 -5
  297. package/src/components/select/SelectMultiple.tsx +3 -5
  298. package/src/components/side-navigation/SideNavigation.tsx +4 -4
  299. package/src/components/side-navigation/SideNavigationItem.tsx +4 -5
  300. package/src/components/skeleton/SkeletonCircle.tsx +5 -3
  301. package/src/components/skeleton/SkeletonRectangle.tsx +5 -3
  302. package/src/components/skeleton/SkeletonTypography.tsx +5 -3
  303. package/src/components/slider/Slider.tsx +4 -5
  304. package/src/components/slideshow/Slides.tsx +6 -4
  305. package/src/components/slideshow/Slideshow.tsx +5 -3
  306. package/src/components/slideshow/SlideshowControls.tsx +4 -3
  307. package/src/components/slideshow/SlideshowItem.tsx +4 -3
  308. package/src/components/slideshow/SlideshowItemGroup.tsx +5 -4
  309. package/src/components/switch/Switch.tsx +4 -5
  310. package/src/components/table/Table.tsx +4 -4
  311. package/src/components/table/TableBody.tsx +4 -3
  312. package/src/components/table/TableCell.tsx +5 -5
  313. package/src/components/table/TableHeader.tsx +4 -3
  314. package/src/components/table/TableRow.tsx +4 -3
  315. package/src/components/tabs/Tab.tsx +4 -3
  316. package/src/components/tabs/TabList.tsx +8 -5
  317. package/src/components/tabs/TabPanel.tsx +7 -5
  318. package/src/components/text/Text.tsx +6 -4
  319. package/src/components/text-field/TextField.tsx +4 -3
  320. package/src/components/thumbnail/Thumbnail.tsx +5 -5
  321. package/src/components/toolbar/Toolbar.tsx +4 -3
  322. package/src/components/tooltip/Tooltip.tsx +4 -3
  323. package/src/components/uploader/Uploader.tsx +5 -3
  324. package/src/components/user-block/UserBlock.tsx +6 -4
  325. package/src/testing/utils/commonTestsSuiteRTL.tsx +2 -1
  326. package/src/utils/react/forwardRef.ts +10 -0
  327. package/src/utils/react/forwardRefPolymorphic.ts +10 -0
  328. package/utils/index.d.ts +1 -1
  329. package/src/utils/forwardRefPolymorphic.ts +0 -9
@@ -0,0 +1,50 @@
1
+ import { S as Size, G as GenericProps, H as HasTheme, O as Orientation, C as Comp } from '../../8d67e1e3.js';
2
+ import React, { ReactNode } from 'react';
3
+ import { AvatarProps } from '../avatar/index.ts-f92852b4.js';
4
+ import '../../35f100be.js';
5
+
6
+ /**
7
+ * User block sizes.
8
+ */
9
+ type UserBlockSize = Extract<Size, 'xs' | 's' | 'm' | 'l'>;
10
+ /**
11
+ * Defines the props of the component.
12
+ */
13
+ interface UserBlockProps extends GenericProps, HasTheme {
14
+ /** Props to pass to the avatar. */
15
+ avatarProps?: Omit<AvatarProps, 'alt'>;
16
+ /** Additional fields used to describe the user. */
17
+ fields?: string[];
18
+ /** Props to pass to the link wrapping the avatar thumbnail. */
19
+ linkProps?: React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>;
20
+ /** Custom react component for the link (can be used to inject react router Link). */
21
+ linkAs?: 'a' | any;
22
+ /** Multiple action toolbar content. */
23
+ multipleActions?: ReactNode;
24
+ /** User name. */
25
+ name?: string;
26
+ /** Props to pass to the name block. */
27
+ nameProps?: GenericProps;
28
+ /** Orientation. */
29
+ orientation?: Orientation;
30
+ /** Simple action toolbar content. */
31
+ simpleAction?: ReactNode;
32
+ /** Size variant. */
33
+ size?: UserBlockSize;
34
+ /** On click callback. */
35
+ onClick?(): void;
36
+ /** On mouse enter callback. */
37
+ onMouseEnter?(): void;
38
+ /** On mouse leave callback. */
39
+ onMouseLeave?(): void;
40
+ }
41
+ /**
42
+ * UserBlock component.
43
+ *
44
+ * @param props Component props.
45
+ * @param ref Component ref.
46
+ * @return React element.
47
+ */
48
+ declare const UserBlock: Comp<UserBlockProps, HTMLDivElement>;
49
+
50
+ export { UserBlock, type UserBlockProps, type UserBlockSize };
@@ -0,0 +1,136 @@
1
+ import { h as getRootClassName, O as Orientation, S as Size, i as forwardRef, T as Theme, j as _objectWithoutProperties, k as _objectSpread2, g as classNames, C as ColorPalette, _ as _extends } from '../../1da25128.js';
2
+ import React__default from 'react';
3
+ import isEmpty from 'lodash/isEmpty';
4
+ import set from 'lodash/set';
5
+ import { u as useTheme } from '../../3181f000.js';
6
+ import { h as handleBasicClasses } from '../../f57e1239.js';
7
+ import { Avatar } from '../avatar/index.ts-93ee0ea9.js';
8
+ import { Link } from '../link/index.ts-d04f4e53.js';
9
+
10
+ const _excluded = ["avatarProps", "className", "fields", "linkProps", "linkAs", "multipleActions", "name", "nameProps", "onClick", "onMouseEnter", "onMouseLeave", "orientation", "simpleAction", "size", "theme"];
11
+
12
+ /**
13
+ * User block sizes.
14
+ */
15
+
16
+ /**
17
+ * Defines the props of the component.
18
+ */
19
+
20
+ /**
21
+ * Component display name.
22
+ */
23
+ const COMPONENT_NAME = 'UserBlock';
24
+
25
+ /**
26
+ * Component default class name and class prefix.
27
+ */
28
+ const CLASSNAME = getRootClassName(COMPONENT_NAME);
29
+
30
+ /**
31
+ * Component default props.
32
+ */
33
+ const DEFAULT_PROPS = {
34
+ orientation: Orientation.horizontal,
35
+ size: Size.m
36
+ };
37
+
38
+ /**
39
+ * UserBlock component.
40
+ *
41
+ * @param props Component props.
42
+ * @param ref Component ref.
43
+ * @return React element.
44
+ */
45
+ const UserBlock = forwardRef((props, ref) => {
46
+ const defaultTheme = useTheme() || Theme.light;
47
+ const {
48
+ avatarProps,
49
+ className,
50
+ fields,
51
+ linkProps,
52
+ linkAs,
53
+ multipleActions,
54
+ name,
55
+ nameProps,
56
+ onClick,
57
+ onMouseEnter,
58
+ onMouseLeave,
59
+ orientation,
60
+ simpleAction,
61
+ size,
62
+ theme = defaultTheme
63
+ } = props,
64
+ forwardedProps = _objectWithoutProperties(props, _excluded);
65
+ let componentSize = size;
66
+
67
+ // Special case - When using vertical orientation force the size to be Sizes.l.
68
+ if (orientation === Orientation.vertical) {
69
+ componentSize = Size.l;
70
+ }
71
+ const shouldDisplayActions = orientation === Orientation.vertical;
72
+ const isLink = Boolean((linkProps === null || linkProps === void 0 ? void 0 : linkProps.href) || linkAs);
73
+ const isClickable = !!onClick || isLink;
74
+ const nameBlock = React__default.useMemo(() => {
75
+ if (isEmpty(name)) {
76
+ return null;
77
+ }
78
+ let NameComponent = 'span';
79
+ const nProps = _objectSpread2(_objectSpread2({}, nameProps), {}, {
80
+ className: classNames(`${CLASSNAME}__name`, linkProps === null || linkProps === void 0 ? void 0 : linkProps.className, nameProps === null || nameProps === void 0 ? void 0 : nameProps.className)
81
+ });
82
+ if (isClickable) {
83
+ NameComponent = Link;
84
+ Object.assign(nProps, _objectSpread2(_objectSpread2({}, linkProps), {}, {
85
+ onClick,
86
+ linkAs,
87
+ color: ColorPalette.dark
88
+ }));
89
+ }
90
+ // Disable avatar focus since the name block is the same link / same button.
91
+ if (avatarProps) {
92
+ set(avatarProps, ['thumbnailProps', 'tabIndex'], -1);
93
+ }
94
+ return /*#__PURE__*/React__default.createElement(NameComponent, nProps, name);
95
+ }, [avatarProps, isClickable, linkAs, linkProps, name, nameProps, onClick]);
96
+ const fieldsBlock = fields && componentSize !== Size.s && componentSize !== Size.xs && /*#__PURE__*/React__default.createElement("div", {
97
+ className: `${CLASSNAME}__fields`
98
+ }, fields.map((field, idx) => /*#__PURE__*/React__default.createElement("span", {
99
+ key: idx,
100
+ className: `${CLASSNAME}__field`
101
+ }, field)));
102
+ return /*#__PURE__*/React__default.createElement("div", _extends({
103
+ ref: ref
104
+ }, forwardedProps, {
105
+ className: classNames(className, handleBasicClasses({
106
+ prefix: CLASSNAME,
107
+ orientation,
108
+ size: componentSize,
109
+ theme,
110
+ isClickable
111
+ })),
112
+ onMouseLeave: onMouseLeave,
113
+ onMouseEnter: onMouseEnter
114
+ }), avatarProps && /*#__PURE__*/React__default.createElement(Avatar, _extends({
115
+ linkAs: linkAs,
116
+ linkProps: linkProps,
117
+ alt: ""
118
+ }, avatarProps, {
119
+ className: classNames(`${CLASSNAME}__avatar`, avatarProps.className),
120
+ size: componentSize,
121
+ onClick: onClick,
122
+ theme: theme
123
+ })), (fields || name) && /*#__PURE__*/React__default.createElement("div", {
124
+ className: `${CLASSNAME}__wrapper`
125
+ }, nameBlock, fieldsBlock), shouldDisplayActions && simpleAction && /*#__PURE__*/React__default.createElement("div", {
126
+ className: `${CLASSNAME}__action`
127
+ }, simpleAction), shouldDisplayActions && multipleActions && /*#__PURE__*/React__default.createElement("div", {
128
+ className: `${CLASSNAME}__actions`
129
+ }, multipleActions));
130
+ });
131
+ UserBlock.displayName = COMPONENT_NAME;
132
+ UserBlock.className = CLASSNAME;
133
+ UserBlock.defaultProps = DEFAULT_PROPS;
134
+
135
+ export { UserBlock };
136
+ //# sourceMappingURL=index.ts-d43e5f3c.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.ts-d43e5f3c.js","sources":["../../../../src/components/user-block/UserBlock.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\n\nimport classNames from 'classnames';\nimport isEmpty from 'lodash/isEmpty';\nimport set from 'lodash/set';\n\nimport { Avatar, ColorPalette, Link, Orientation, Size, Theme } from '@lumx/react';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { AvatarProps } from '../avatar/Avatar';\n\n/**\n * User block sizes.\n */\nexport type UserBlockSize = Extract<Size, 'xs' | 's' | 'm' | 'l'>;\n\n/**\n * Defines the props of the component.\n */\nexport interface UserBlockProps extends GenericProps, HasTheme {\n /** Props to pass to the avatar. */\n avatarProps?: Omit<AvatarProps, 'alt'>;\n /** Additional fields used to describe the user. */\n fields?: string[];\n /** Props to pass to the link wrapping the avatar thumbnail. */\n linkProps?: React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>;\n /** Custom react component for the link (can be used to inject react router Link). */\n linkAs?: 'a' | any;\n /** Multiple action toolbar content. */\n multipleActions?: ReactNode;\n /** User name. */\n name?: string;\n /** Props to pass to the name block. */\n nameProps?: GenericProps;\n /** Orientation. */\n orientation?: Orientation;\n /** Simple action toolbar content. */\n simpleAction?: ReactNode;\n /** Size variant. */\n size?: UserBlockSize;\n /** On click callback. */\n onClick?(): void;\n /** On mouse enter callback. */\n onMouseEnter?(): void;\n /** On mouse leave callback. */\n onMouseLeave?(): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'UserBlock';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<UserBlockProps> = {\n orientation: Orientation.horizontal,\n size: Size.m,\n};\n\n/**\n * UserBlock component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const UserBlock = forwardRef<UserBlockProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n avatarProps,\n className,\n fields,\n linkProps,\n linkAs,\n multipleActions,\n name,\n nameProps,\n onClick,\n onMouseEnter,\n onMouseLeave,\n orientation,\n simpleAction,\n size,\n theme = defaultTheme,\n ...forwardedProps\n } = props;\n let componentSize = size;\n\n // Special case - When using vertical orientation force the size to be Sizes.l.\n if (orientation === Orientation.vertical) {\n componentSize = Size.l;\n }\n\n const shouldDisplayActions: boolean = orientation === Orientation.vertical;\n\n const isLink = Boolean(linkProps?.href || linkAs);\n const isClickable = !!onClick || isLink;\n\n const nameBlock: ReactNode = React.useMemo(() => {\n if (isEmpty(name)) {\n return null;\n }\n let NameComponent: any = 'span';\n const nProps: any = {\n ...nameProps,\n className: classNames(`${CLASSNAME}__name`, linkProps?.className, nameProps?.className),\n };\n if (isClickable) {\n NameComponent = Link;\n Object.assign(nProps, {\n ...linkProps,\n onClick,\n linkAs,\n color: ColorPalette.dark,\n });\n }\n // Disable avatar focus since the name block is the same link / same button.\n if (avatarProps) {\n set(avatarProps, ['thumbnailProps', 'tabIndex'], -1);\n }\n return <NameComponent {...nProps}>{name}</NameComponent>;\n }, [avatarProps, isClickable, linkAs, linkProps, name, nameProps, onClick]);\n\n const fieldsBlock: ReactNode = fields && componentSize !== Size.s && componentSize !== Size.xs && (\n <div className={`${CLASSNAME}__fields`}>\n {fields.map((field: string, idx: number) => (\n <span key={idx} className={`${CLASSNAME}__field`}>\n {field}\n </span>\n ))}\n </div>\n );\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({ prefix: CLASSNAME, orientation, size: componentSize, theme, isClickable }),\n )}\n onMouseLeave={onMouseLeave}\n onMouseEnter={onMouseEnter}\n >\n {avatarProps && (\n <Avatar\n linkAs={linkAs}\n linkProps={linkProps}\n alt=\"\"\n {...(avatarProps as any)}\n className={classNames(`${CLASSNAME}__avatar`, avatarProps.className)}\n size={componentSize}\n onClick={onClick}\n theme={theme}\n />\n )}\n {(fields || name) && (\n <div className={`${CLASSNAME}__wrapper`}>\n {nameBlock}\n {fieldsBlock}\n </div>\n )}\n {shouldDisplayActions && simpleAction && <div className={`${CLASSNAME}__action`}>{simpleAction}</div>}\n {shouldDisplayActions && multipleActions && (\n <div className={`${CLASSNAME}__actions`}>{multipleActions}</div>\n )}\n </div>\n );\n});\nUserBlock.displayName = COMPONENT_NAME;\nUserBlock.className = CLASSNAME;\nUserBlock.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","orientation","Orientation","horizontal","size","Size","m","UserBlock","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","avatarProps","className","fields","linkProps","linkAs","multipleActions","name","nameProps","onClick","onMouseEnter","onMouseLeave","simpleAction","theme","forwardedProps","_objectWithoutProperties","_excluded","componentSize","vertical","l","shouldDisplayActions","isLink","Boolean","href","isClickable","nameBlock","React","useMemo","isEmpty","NameComponent","nProps","_objectSpread","classNames","Link","Object","assign","color","ColorPalette","dark","set","createElement","fieldsBlock","s","xs","map","field","idx","key","_extends","handleBasicClasses","prefix","Avatar","alt","displayName","defaultProps"],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { C as Comp } from './8d67e1e3.js';
2
+ import { B as BaseButtonProps } from './7f022f8c.js';
3
+ import { TooltipProps } from './components/tooltip/index.ts-c6931e9e.js';
4
+
5
+ interface IconButtonProps extends BaseButtonProps {
6
+ /**
7
+ * Icon (SVG path).
8
+ * If `image` is also set, `image` will be used instead.
9
+ */
10
+ icon?: string;
11
+ /**
12
+ * Image (image url).
13
+ * Has priority over `icon`.
14
+ */
15
+ image?: string;
16
+ /**
17
+ * Label text (required for a11y purpose).
18
+ * If you really don't want an aria-label, you can set an empty label (this is not recommended).
19
+ */
20
+ label: string;
21
+ /**
22
+ * Props to pass to the tooltip.
23
+ * If undefined or if tooltipProps.label is undefined, the label prop will be used as tooltip label.
24
+ * */
25
+ tooltipProps?: Partial<TooltipProps>;
26
+ /** Whether the tooltip should be hidden or not. */
27
+ hideTooltip?: boolean;
28
+ }
29
+ /**
30
+ * IconButton component.
31
+ *
32
+ * @param props Component props.
33
+ * @param ref Component ref.
34
+ * @return React element.
35
+ */
36
+ declare const IconButton: Comp<IconButtonProps, HTMLButtonElement>;
37
+
38
+ export { type IconButtonProps as I, IconButton as a };
@@ -0,0 +1,73 @@
1
+ import get from 'lodash/get';
2
+ import React__default from 'react';
3
+
4
+ /** Get types of the values of a record. */
5
+
6
+ /**
7
+ * Properties of a component to use to determine it's name.
8
+ * In the order of preference.
9
+ */
10
+ const NAME_PROPERTIES = ['type', 'type.displayName', 'displayName', 'name', 'type.name', 'props.mdxType', '_reactInternalFiber.elementType.name'];
11
+
12
+ /** LumX Component Type. */
13
+
14
+ /** Union type of all heading elements */
15
+
16
+ /** Union type of all text elements */
17
+
18
+ /**
19
+ * Define a generic props types.
20
+ */
21
+
22
+ /**
23
+ * Callback function type alias (use for readability)
24
+ */
25
+
26
+ /**
27
+ * Create a predicate function that checks if a ReactNode is a react element from the given component.
28
+ *
29
+ * @param component React function component or the component name
30
+ * @return predicate returning true if value is instance of the component
31
+ */
32
+ const isComponent = component => instance => {
33
+ const componentName = typeof component === 'string' ? component : component.displayName;
34
+ return !!get(instance, '$$typeof') && NAME_PROPERTIES.some(nameProperty => get(instance, nameProperty) === componentName);
35
+ };
36
+
37
+ /**
38
+ * Similar to `isComponent` but more precise as it's not based on the component `displayName` but on the component function reference.
39
+ */
40
+ const isComponentType = type => node => /*#__PURE__*/React__default.isValidElement(node) && node.type === type;
41
+
42
+ /**
43
+ * JS falsy values.
44
+ * (excluding `NaN` as it can't be distinguished from `number`)
45
+ */
46
+
47
+ /**
48
+ * Require either `aria-label` or `arial-labelledby` prop.
49
+ * If none are set, the order will prioritize `aria-labelledby` over `aria-label` as it
50
+ * needs a visible element.
51
+ */
52
+
53
+ /**
54
+ * Extract ref type for a component or JSX intrinsic element
55
+ *
56
+ * @example ComponentRef<'div'> => React.Ref<HTMLDivElement>
57
+ * @example ComponentRef<Button> => React.Ref<HTMLButtonElement
58
+ */
59
+
60
+ /**
61
+ * Rectangle size
62
+ */
63
+
64
+ /**
65
+ * Maybe a HTMLElement or a React ref of a HTMLElement
66
+ */
67
+
68
+ /**
69
+ * A point coordinate in 2D space
70
+ */
71
+
72
+ export { isComponentType as a, isComponent as i };
73
+ //# sourceMappingURL=f39a1ba4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"f39a1ba4.js","sources":["../../src/utils/type.ts"],"sourcesContent":["import get from 'lodash/get';\nimport React, { ReactElement, ReactNode, Ref } from 'react';\nimport { Theme } from '@lumx/react';\n\n/** Get types of the values of a record. */\nexport type ValueOf<T extends Record<any, any>> = T[keyof T];\n\n/**\n * Properties of a component to use to determine it's name.\n * In the order of preference.\n */\nconst NAME_PROPERTIES: string[] = [\n 'type',\n 'type.displayName',\n 'displayName',\n 'name',\n 'type.name',\n 'props.mdxType',\n '_reactInternalFiber.elementType.name',\n];\n\n/** LumX Component Type. */\nexport type Comp<P, T = HTMLElement> = {\n (props: P & { ref?: Ref<T> }): ReactElement | null;\n /** React component type. */\n readonly $$typeof: symbol;\n /** Component default props. */\n defaultProps?: Partial<P>;\n /** Component name. */\n displayName?: string;\n /** Component base class name. */\n className?: string;\n};\n\n/** Union type of all heading elements */\nexport type HeadingElement = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\n/** Union type of all text elements */\nexport type TextElement = 'span' | 'p' | HeadingElement;\n\nexport type HasPolymorphicAs<E extends React.ElementType> = React.ComponentPropsWithoutRef<E> & {\n /**\n * Customize the rendered component.\n */\n as?: E;\n};\n\nexport interface HasTheme {\n /**\n * Theme adapting the component to light or dark background.\n */\n theme?: Theme;\n}\n\nexport interface HasClassName {\n /**\n * Class name forwarded to the root element of the component.\n */\n className?: string;\n}\n\nexport interface HasCloseMode {\n /**\n * Choose how the children are hidden when closed\n * ('hide' keeps the children in DOM but hide them, 'unmount' remove the children from the DOM).\n */\n closeMode?: 'hide' | 'unmount';\n}\n\n/**\n * Define a generic props types.\n */\nexport interface GenericProps extends HasClassName {\n /**\n * Any prop (particularly any supported prop for a HTML element).\n */\n [propName: string]: any;\n}\n\n/**\n * Callback function type alias (use for readability)\n */\nexport type Callback = () => void;\nexport type Predicate<T> = (t: T) => boolean;\n\n/**\n * Create a predicate function that checks if a ReactNode is a react element from the given component.\n *\n * @param component React function component or the component name\n * @return predicate returning true if value is instance of the component\n */\nexport const isComponent =\n <C>(component: Comp<C, any> | string) =>\n (instance: ReactNode): instance is ReactElement => {\n const componentName = typeof component === 'string' ? component : component.displayName;\n\n return (\n !!get(instance, '$$typeof') &&\n NAME_PROPERTIES.some((nameProperty: string): boolean => get(instance, nameProperty) === componentName)\n );\n };\n\n/**\n * Similar to `isComponent` but more precise as it's not based on the component `displayName` but on the component function reference.\n */\nexport const isComponentType =\n (type: ReactElement['type']) =>\n (node: ReactNode): node is ReactElement =>\n React.isValidElement(node) && node.type === type;\n\n/**\n * JS falsy values.\n * (excluding `NaN` as it can't be distinguished from `number`)\n */\nexport type Falsy = false | undefined | null | 0 | '';\n\n/**\n * Require either `aria-label` or `arial-labelledby` prop.\n * If none are set, the order will prioritize `aria-labelledby` over `aria-label` as it\n * needs a visible element.\n */\nexport type HasAriaLabelOrLabelledBy<T = string | undefined> = T extends string\n ? {\n /**\n * The id of the element to use as title of the dialog. Can be within or out of the dialog.\n * Although it is not recommended, aria-label can be used instead if no visible element is available.\n */\n 'aria-labelledby': T;\n /** The label of the dialog. */\n 'aria-label'?: undefined;\n }\n : {\n 'aria-label': string;\n 'aria-labelledby'?: undefined;\n };\n\n/**\n * Extract ref type for a component or JSX intrinsic element\n *\n * @example ComponentRef<'div'> => React.Ref<HTMLDivElement>\n * @example ComponentRef<Button> => React.Ref<HTMLButtonElement\n */\nexport type ComponentRef<C> = C extends keyof JSX.IntrinsicElements\n ? JSX.IntrinsicElements[C]['ref']\n : C extends Comp<any, infer T>\n ? React.Ref<T>\n : C extends React.JSXElementConstructor<{ ref?: infer R }>\n ? R\n : never;\n\n/**\n * Rectangle size\n */\nexport type RectSize = { width: number; height: number };\n\n/**\n * Maybe a HTMLElement or a React ref of a HTMLElement\n */\nexport type MaybeElementOrRef<E extends HTMLElement> = E | React.RefObject<E | null> | null | undefined;\n\n/**\n * A point coordinate in 2D space\n */\nexport type Point = { x: number; y: number };\n"],"names":["NAME_PROPERTIES","isComponent","component","instance","componentName","displayName","get","some","nameProperty","isComponentType","type","node","React","isValidElement"],"mappings":";;;AAIA;;AAGA;AACA;AACA;AACA;AACA,MAAMA,eAAyB,GAAG,CAC9B,MAAM,EACN,kBAAkB,EAClB,aAAa,EACb,MAAM,EACN,WAAW,EACX,eAAe,EACf,sCAAsC,CACzC,CAAA;;AAED;;AAaA;;AAGA;;AAgCA;AACA;AACA;;AAQA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;MACaC,WAAW,GAChBC,SAAgC,IACnCC,QAAmB,IAA+B;EAC/C,MAAMC,aAAa,GAAG,OAAOF,SAAS,KAAK,QAAQ,GAAGA,SAAS,GAAGA,SAAS,CAACG,WAAW,CAAA;EAEvF,OACI,CAAC,CAACC,GAAG,CAACH,QAAQ,EAAE,UAAU,CAAC,IAC3BH,eAAe,CAACO,IAAI,CAAEC,YAAoB,IAAcF,GAAG,CAACH,QAAQ,EAAEK,YAAY,CAAC,KAAKJ,aAAa,CAAC,CAAA;AAE9G,EAAC;;AAEL;AACA;AACA;MACaK,eAAe,GACvBC,IAA0B,IAC1BC,IAAe,iBACZC,cAAK,CAACC,cAAc,CAACF,IAAI,CAAC,IAAIA,IAAI,CAACD,IAAI,KAAKA,KAAI;;AAExD;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;;AAgBA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;;;;"}
@@ -0,0 +1,22 @@
1
+ import React__default from 'react';
2
+
3
+ /** Empty object */
4
+
5
+ const DEFAULT_VALUE = {};
6
+
7
+ /**
8
+ * Tooltip react context simply used as a marker to know when parent react node have a tooltip
9
+ */
10
+ const TooltipContext = /*#__PURE__*/React__default.createContext(undefined);
11
+ const TooltipContextProvider = _ref => {
12
+ let {
13
+ children
14
+ } = _ref;
15
+ return /*#__PURE__*/React__default.createElement(TooltipContext.Provider, {
16
+ value: DEFAULT_VALUE
17
+ }, children);
18
+ };
19
+ const useTooltipContext = () => React__default.useContext(TooltipContext);
20
+
21
+ export { TooltipContextProvider as T, useTooltipContext as u };
22
+ //# sourceMappingURL=f3e77e3e.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"f3e77e3e.js","sources":["../../src/components/tooltip/context.tsx"],"sourcesContent":["import React from 'react';\n\n/** Empty object */\ntype TooltipContextValue = NonNullable<unknown>;\n\nconst DEFAULT_VALUE = {};\n\n/**\n * Tooltip react context simply used as a marker to know when parent react node have a tooltip\n */\nconst TooltipContext = React.createContext<TooltipContextValue | undefined>(undefined);\n\nexport const TooltipContextProvider: React.FC = ({ children }) => (\n <TooltipContext.Provider value={DEFAULT_VALUE}>{children}</TooltipContext.Provider>\n);\n\nexport const useTooltipContext = () => React.useContext(TooltipContext);\n"],"names":["DEFAULT_VALUE","TooltipContext","React","createContext","undefined","TooltipContextProvider","_ref","children","createElement","Provider","value","useTooltipContext","useContext"],"mappings":";;AAEA;;AAGA,MAAMA,aAAa,GAAG,EAAE,CAAA;;AAExB;AACA;AACA;AACA,MAAMC,cAAc,gBAAGC,cAAK,CAACC,aAAa,CAAkCC,SAAS,CAAC,CAAA;AAE/E,MAAMC,sBAAgC,GAAGC,IAAA,IAAA;EAAA,IAAC;AAAEC,IAAAA,QAAAA;AAAS,GAAC,GAAAD,IAAA,CAAA;AAAA,EAAA,oBACzDJ,cAAA,CAAAM,aAAA,CAACP,cAAc,CAACQ,QAAQ,EAAA;AAACC,IAAAA,KAAK,EAAEV,aAAAA;AAAc,GAAA,EAAEO,QAAkC,CAAC,CAAA;AAAA,EACtF;AAEM,MAAMI,iBAAiB,GAAGA,MAAMT,cAAK,CAACU,UAAU,CAACX,cAAc;;;;"}
@@ -0,0 +1,78 @@
1
+ import { useEffect } from 'react';
2
+
3
+ const useRovingTabIndex = _ref => {
4
+ let {
5
+ parentRef,
6
+ elementSelector,
7
+ keepTabIndex,
8
+ onElementFocus,
9
+ extraDependencies = []
10
+ } = _ref;
11
+ useEffect(() => {
12
+ const parent = parentRef === null || parentRef === void 0 ? void 0 : parentRef.current;
13
+ if (!parent) {
14
+ return undefined;
15
+ }
16
+ const elements = parent.querySelectorAll(elementSelector);
17
+ const initialFocusableElement = parent === null || parent === void 0 ? void 0 : parent.querySelector(`${elementSelector}[tabindex="0"]`);
18
+ const handleKeyDown = index => evt => {
19
+ let newTabFocus = index;
20
+ if (!(evt.key === 'ArrowRight' || evt.key === 'ArrowLeft')) {
21
+ return;
22
+ }
23
+ if (evt.key === 'ArrowRight') {
24
+ // Move right
25
+ newTabFocus += 1;
26
+ // If we're at the end, go to the start
27
+ if (newTabFocus >= elements.length) {
28
+ newTabFocus = 0;
29
+ }
30
+ } else if (evt.key === 'ArrowLeft') {
31
+ // Move left
32
+ newTabFocus -= 1;
33
+ if (newTabFocus < 0) {
34
+ // If we're at the start, move to the end
35
+ newTabFocus = elements.length - 1;
36
+ }
37
+ }
38
+ const newElement = elements[newTabFocus];
39
+ newElement === null || newElement === void 0 ? void 0 : newElement.focus();
40
+
41
+ // When an element is focused using roving tab index, trigger the onElementFocus callback
42
+ if (newElement && onElementFocus) {
43
+ onElementFocus(newElement);
44
+ }
45
+ if (keepTabIndex) {
46
+ evt.currentTarget.setAttribute('tabindex', '-1');
47
+ newElement === null || newElement === void 0 ? void 0 : newElement.setAttribute('tabindex', '0');
48
+ }
49
+ };
50
+ if ((elements === null || elements === void 0 ? void 0 : elements.length) > 0) {
51
+ elements.forEach((el, key) => {
52
+ // if no element has tabindex set to 0, set the first element as focusable
53
+ if (!initialFocusableElement && key === 0) {
54
+ el.setAttribute('tabindex', '0');
55
+ // set all other to -1
56
+ } else if (initialFocusableElement !== el) {
57
+ el.setAttribute('tabindex', '-1');
58
+ }
59
+ // add event listener
60
+ el.addEventListener('keydown', handleKeyDown(key));
61
+ });
62
+ }
63
+
64
+ // Cleanup listeners
65
+ return () => {
66
+ if ((elements === null || elements === void 0 ? void 0 : elements.length) > 0) {
67
+ elements.forEach((el, key) => {
68
+ el.removeEventListener('keydown', handleKeyDown(key));
69
+ });
70
+ }
71
+ };
72
+ },
73
+ // eslint-disable-next-line react-hooks/exhaustive-deps
74
+ [parentRef, ...extraDependencies]);
75
+ };
76
+
77
+ export { useRovingTabIndex as u };
78
+ //# sourceMappingURL=f502ab30.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"f502ab30.js","sources":["../../src/hooks/useRovingTabIndex.tsx"],"sourcesContent":["import { RefObject, useEffect } from 'react';\n\ninterface UseRovingTabIndexOptions {\n parentRef: RefObject<HTMLElement>;\n elementSelector: string;\n keepTabIndex?: boolean;\n /** Action to trigger when an element is focused using roving tab index */\n onElementFocus?: (element: HTMLElement) => void;\n /** List of values to be used as extra dependencies of the useEffect */\n extraDependencies?: any[];\n}\n\nexport const useRovingTabIndex = ({\n parentRef,\n elementSelector,\n keepTabIndex,\n onElementFocus,\n extraDependencies = [],\n}: UseRovingTabIndexOptions): void => {\n useEffect(\n () => {\n const parent = parentRef?.current;\n if (!parent) {\n return undefined;\n }\n\n const elements = parent.querySelectorAll(elementSelector) as NodeListOf<HTMLElement>;\n const initialFocusableElement = parent?.querySelector(`${elementSelector}[tabindex=\"0\"]`);\n\n const handleKeyDown = (index: number) => (evt: KeyboardEvent) => {\n let newTabFocus = index;\n if (!(evt.key === 'ArrowRight' || evt.key === 'ArrowLeft')) {\n return;\n }\n\n if (evt.key === 'ArrowRight') {\n // Move right\n newTabFocus += 1;\n // If we're at the end, go to the start\n if (newTabFocus >= elements.length) {\n newTabFocus = 0;\n }\n } else if (evt.key === 'ArrowLeft') {\n // Move left\n newTabFocus -= 1;\n if (newTabFocus < 0) {\n // If we're at the start, move to the end\n newTabFocus = elements.length - 1;\n }\n }\n const newElement = elements[newTabFocus];\n newElement?.focus();\n\n // When an element is focused using roving tab index, trigger the onElementFocus callback\n if (newElement && onElementFocus) {\n onElementFocus(newElement);\n }\n\n if (keepTabIndex) {\n (evt.currentTarget as HTMLElement).setAttribute('tabindex', '-1');\n newElement?.setAttribute('tabindex', '0');\n }\n };\n\n if (elements?.length > 0) {\n elements.forEach((el, key) => {\n // if no element has tabindex set to 0, set the first element as focusable\n if (!initialFocusableElement && key === 0) {\n el.setAttribute('tabindex', '0');\n // set all other to -1\n } else if (initialFocusableElement !== el) {\n el.setAttribute('tabindex', '-1');\n }\n // add event listener\n el.addEventListener('keydown', handleKeyDown(key) as EventListener);\n });\n }\n\n // Cleanup listeners\n return () => {\n if (elements?.length > 0) {\n elements.forEach((el, key) => {\n el.removeEventListener('keydown', handleKeyDown(key) as EventListener);\n });\n }\n };\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [parentRef, ...extraDependencies],\n );\n};\n"],"names":["useRovingTabIndex","_ref","parentRef","elementSelector","keepTabIndex","onElementFocus","extraDependencies","useEffect","parent","current","undefined","elements","querySelectorAll","initialFocusableElement","querySelector","handleKeyDown","index","evt","newTabFocus","key","length","newElement","focus","currentTarget","setAttribute","forEach","el","addEventListener","removeEventListener"],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { useMemo } from 'react';
2
+
3
+ /**
4
+ * Merge refs into a single function ref.
5
+ *
6
+ * @param refs React references to merge.
7
+ * @return the merged ref.
8
+ */
9
+ function mergeRefs() {
10
+ for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
11
+ refs[_key] = arguments[_key];
12
+ }
13
+ return value => refs.forEach(ref => {
14
+ if (typeof ref === 'function') {
15
+ ref(value);
16
+ } else if (ref) {
17
+ // eslint-disable-next-line no-param-reassign
18
+ ref.current = value;
19
+ }
20
+ });
21
+ }
22
+
23
+ /**
24
+ * Same as `mergeRefs` but memoized
25
+ */
26
+ const useMergeRefs = function () {
27
+ for (var _len2 = arguments.length, refs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
28
+ refs[_key2] = arguments[_key2];
29
+ }
30
+ return useMemo(() => mergeRefs(...refs),
31
+ // eslint-disable-next-line react-hooks/exhaustive-deps
32
+ refs);
33
+ };
34
+
35
+ export { mergeRefs as m, useMergeRefs as u };
36
+ //# sourceMappingURL=f52adbae.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"f52adbae.js","sources":["../../src/utils/mergeRefs.ts"],"sourcesContent":["import { Falsy } from '@lumx/react/utils/type';\nimport { MutableRefObject, useMemo } from 'react';\n\ntype FnRef<T> = (value: T) => void;\n\n/**\n * Merge refs into a single function ref.\n *\n * @param refs React references to merge.\n * @return the merged ref.\n */\nexport function mergeRefs<T>(...refs: Array<MutableRefObject<T | null> | FnRef<T> | Falsy>): FnRef<T> {\n return (value) =>\n refs.forEach((ref) => {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n // eslint-disable-next-line no-param-reassign\n (ref as MutableRefObject<T>).current = value;\n }\n });\n}\n\n/**\n * Same as `mergeRefs` but memoized\n */\nexport const useMergeRefs = <T>(...refs: Array<MutableRefObject<T | null> | FnRef<T> | Falsy>) => {\n return useMemo(\n () => mergeRefs(...refs),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n refs,\n );\n};\n"],"names":["mergeRefs","_len","arguments","length","refs","Array","_key","value","forEach","ref","current","useMergeRefs","_len2","_key2","useMemo"],"mappings":";;AAKA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,SAASA,GAA6E;AAAA,EAAA,KAAA,IAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAtEC,IAAI,GAAAC,IAAAA,KAAA,CAAAJ,IAAA,GAAAK,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,EAAA,EAAA;AAAJF,IAAAA,IAAI,CAAAE,IAAA,CAAAJ,GAAAA,SAAA,CAAAI,IAAA,CAAA,CAAA;AAAA,GAAA;AAChC,EAAA,OAAQC,KAAK,IACTH,IAAI,CAACI,OAAO,CAAEC,GAAG,IAAK;AAClB,IAAA,IAAI,OAAOA,GAAG,KAAK,UAAU,EAAE;MAC3BA,GAAG,CAACF,KAAK,CAAC,CAAA;KACb,MAAM,IAAIE,GAAG,EAAE;AACZ;MACCA,GAAG,CAAyBC,OAAO,GAAGH,KAAK,CAAA;AAChD,KAAA;AACJ,GAAC,CAAC,CAAA;AACV,CAAA;;AAEA;AACA;AACA;AACaI,MAAAA,YAAY,GAAG,YAAsE;AAAA,EAAA,KAAA,IAAAC,KAAA,GAAAV,SAAA,CAAAC,MAAA,EAA/DC,IAAI,GAAAC,IAAAA,KAAA,CAAAO,KAAA,GAAAC,KAAA,GAAA,CAAA,EAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA,EAAA,EAAA;AAAJT,IAAAA,IAAI,CAAAS,KAAA,CAAAX,GAAAA,SAAA,CAAAW,KAAA,CAAA,CAAA;AAAA,GAAA;AACnC,EAAA,OAAOC,OAAO,CACV,MAAMd,SAAS,CAAC,GAAGI,IAAI,CAAC;AACxB;AACAA,EAAAA,IACJ,CAAC,CAAA;AACL;;;;"}