@lumx/react 3.20.1-alpha.5 → 3.20.1-alpha.50

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 (518) hide show
  1. package/CONTRIBUTING.md +1 -5
  2. package/README.md +0 -2
  3. package/_internal/{index.js → Cd8LPzmx.js} +78 -102
  4. package/_internal/Cd8LPzmx.js.map +1 -0
  5. package/index.d.ts +75 -390
  6. package/index.js +3960 -4706
  7. package/index.js.map +1 -1
  8. package/package.json +17 -36
  9. package/utils/index.d.ts +61 -8
  10. package/utils/index.js +1 -1
  11. package/_internal/Falsy.d.ts +0 -7
  12. package/_internal/index.js.map +0 -1
  13. package/src/components/alert-dialog/AlertDialog.stories.tsx +0 -127
  14. package/src/components/alert-dialog/AlertDialog.test.tsx +0 -35
  15. package/src/components/alert-dialog/AlertDialog.tsx +0 -189
  16. package/src/components/alert-dialog/index.ts +0 -1
  17. package/src/components/autocomplete/Autocomplete.stories.tsx +0 -75
  18. package/src/components/autocomplete/Autocomplete.test.tsx +0 -101
  19. package/src/components/autocomplete/Autocomplete.tsx +0 -294
  20. package/src/components/autocomplete/AutocompleteMultiple.stories.tsx +0 -167
  21. package/src/components/autocomplete/AutocompleteMultiple.test.tsx +0 -63
  22. package/src/components/autocomplete/AutocompleteMultiple.tsx +0 -156
  23. package/src/components/autocomplete/__mockData__/index.ts +0 -39
  24. package/src/components/autocomplete/index.ts +0 -2
  25. package/src/components/avatar/Avatar.stories.tsx +0 -121
  26. package/src/components/avatar/Avatar.test.tsx +0 -34
  27. package/src/components/avatar/Avatar.tsx +0 -114
  28. package/src/components/avatar/index.ts +0 -1
  29. package/src/components/badge/Badge.stories.tsx +0 -70
  30. package/src/components/badge/Badge.test.tsx +0 -47
  31. package/src/components/badge/Badge.tsx +0 -58
  32. package/src/components/badge/BadgeWrapper.stories.tsx +0 -76
  33. package/src/components/badge/BadgeWrapper.test.tsx +0 -49
  34. package/src/components/badge/BadgeWrapper.tsx +0 -37
  35. package/src/components/badge/index.ts +0 -2
  36. package/src/components/button/Button.stories.tsx +0 -356
  37. package/src/components/button/Button.test.tsx +0 -127
  38. package/src/components/button/Button.tsx +0 -103
  39. package/src/components/button/ButtonGroup.stories.tsx +0 -54
  40. package/src/components/button/ButtonGroup.test.tsx +0 -43
  41. package/src/components/button/ButtonGroup.tsx +0 -52
  42. package/src/components/button/ButtonRoot.tsx +0 -193
  43. package/src/components/button/IconButton.stories.tsx +0 -52
  44. package/src/components/button/IconButton.test.tsx +0 -68
  45. package/src/components/button/IconButton.tsx +0 -93
  46. package/src/components/button/index.ts +0 -4
  47. package/src/components/checkbox/Checkbox.stories.tsx +0 -64
  48. package/src/components/checkbox/Checkbox.test.tsx +0 -156
  49. package/src/components/checkbox/Checkbox.tsx +0 -164
  50. package/src/components/checkbox/index.ts +0 -1
  51. package/src/components/chip/Chip.stories.tsx +0 -166
  52. package/src/components/chip/Chip.test.tsx +0 -243
  53. package/src/components/chip/Chip.tsx +0 -168
  54. package/src/components/chip/ChipGroup.stories.tsx +0 -49
  55. package/src/components/chip/ChipGroup.test.tsx +0 -39
  56. package/src/components/chip/ChipGroup.tsx +0 -60
  57. package/src/components/chip/index.ts +0 -2
  58. package/src/components/comment-block/CommentBlock.stories.tsx +0 -92
  59. package/src/components/comment-block/CommentBlock.test.tsx +0 -29
  60. package/src/components/comment-block/CommentBlock.tsx +0 -172
  61. package/src/components/comment-block/index.ts +0 -1
  62. package/src/components/date-picker/DatePicker.stories.tsx +0 -118
  63. package/src/components/date-picker/DatePicker.test.tsx +0 -36
  64. package/src/components/date-picker/DatePicker.tsx +0 -52
  65. package/src/components/date-picker/DatePickerControlled.test.tsx +0 -93
  66. package/src/components/date-picker/DatePickerControlled.tsx +0 -259
  67. package/src/components/date-picker/DatePickerField.stories.tsx +0 -100
  68. package/src/components/date-picker/DatePickerField.test.tsx +0 -72
  69. package/src/components/date-picker/DatePickerField.tsx +0 -135
  70. package/src/components/date-picker/constants.ts +0 -11
  71. package/src/components/date-picker/index.ts +0 -4
  72. package/src/components/date-picker/types.ts +0 -28
  73. package/src/components/dialog/Dialog.stories.tsx +0 -318
  74. package/src/components/dialog/Dialog.test.tsx +0 -99
  75. package/src/components/dialog/Dialog.tsx +0 -288
  76. package/src/components/dialog/index.ts +0 -1
  77. package/src/components/divider/Divider.test.tsx +0 -53
  78. package/src/components/divider/Divider.tsx +0 -52
  79. package/src/components/divider/index.ts +0 -1
  80. package/src/components/drag-handle/DragHandle.test.tsx +0 -38
  81. package/src/components/drag-handle/DragHandle.tsx +0 -53
  82. package/src/components/drag-handle/index.ts +0 -1
  83. package/src/components/dropdown/Dropdown.stories.tsx +0 -31
  84. package/src/components/dropdown/Dropdown.test.tsx +0 -66
  85. package/src/components/dropdown/Dropdown.tsx +0 -186
  86. package/src/components/dropdown/index.ts +0 -1
  87. package/src/components/expansion-panel/ExpansionPanel.stories.tsx +0 -91
  88. package/src/components/expansion-panel/ExpansionPanel.test.tsx +0 -186
  89. package/src/components/expansion-panel/ExpansionPanel.tsx +0 -195
  90. package/src/components/expansion-panel/index.ts +0 -1
  91. package/src/components/flag/Flag.stories.tsx +0 -48
  92. package/src/components/flag/Flag.test.tsx +0 -64
  93. package/src/components/flag/Flag.tsx +0 -54
  94. package/src/components/flag/index.ts +0 -1
  95. package/src/components/flex-box/FlexBox.stories.tsx +0 -158
  96. package/src/components/flex-box/FlexBox.test.tsx +0 -25
  97. package/src/components/flex-box/FlexBox.tsx +0 -100
  98. package/src/components/flex-box/index.ts +0 -1
  99. package/src/components/generic-block/GenericBlock.stories.jsx +0 -128
  100. package/src/components/generic-block/GenericBlock.test.tsx +0 -156
  101. package/src/components/generic-block/GenericBlock.tsx +0 -225
  102. package/src/components/generic-block/constants.ts +0 -9
  103. package/src/components/generic-block/index.ts +0 -2
  104. package/src/components/grid/Grid.tsx +0 -85
  105. package/src/components/grid/GridItem.tsx +0 -57
  106. package/src/components/grid/index.ts +0 -2
  107. package/src/components/grid-column/GridColumn.stories.tsx +0 -46
  108. package/src/components/grid-column/GridColumn.test.jsx +0 -58
  109. package/src/components/grid-column/GridColumn.tsx +0 -83
  110. package/src/components/grid-column/index.ts +0 -1
  111. package/src/components/heading/Heading.stories.tsx +0 -70
  112. package/src/components/heading/Heading.test.tsx +0 -84
  113. package/src/components/heading/Heading.tsx +0 -67
  114. package/src/components/heading/HeadingLevelProvider.tsx +0 -30
  115. package/src/components/heading/constants.ts +0 -16
  116. package/src/components/heading/context.tsx +0 -13
  117. package/src/components/heading/index.ts +0 -3
  118. package/src/components/heading/useHeadingLevel.tsx +0 -8
  119. package/src/components/icon/Icon.stories.tsx +0 -47
  120. package/src/components/icon/Icon.test.tsx +0 -44
  121. package/src/components/icon/Icon.tsx +0 -24
  122. package/src/components/icon/index.ts +0 -1
  123. package/src/components/image-block/ImageBlock.stories.tsx +0 -119
  124. package/src/components/image-block/ImageBlock.test.tsx +0 -59
  125. package/src/components/image-block/ImageBlock.tsx +0 -142
  126. package/src/components/image-block/ImageCaption.tsx +0 -115
  127. package/src/components/image-block/index.ts +0 -1
  128. package/src/components/image-lightbox/ImageLightbox.stories.tsx +0 -161
  129. package/src/components/image-lightbox/ImageLightbox.test.tsx +0 -252
  130. package/src/components/image-lightbox/ImageLightbox.tsx +0 -90
  131. package/src/components/image-lightbox/constants.ts +0 -11
  132. package/src/components/image-lightbox/index.ts +0 -2
  133. package/src/components/image-lightbox/internal/ImageSlide.tsx +0 -107
  134. package/src/components/image-lightbox/internal/ImageSlideshow.tsx +0 -164
  135. package/src/components/image-lightbox/internal/useAnimateScroll.ts +0 -55
  136. package/src/components/image-lightbox/internal/usePointerZoom.ts +0 -148
  137. package/src/components/image-lightbox/types.ts +0 -50
  138. package/src/components/image-lightbox/useImageLightbox.tsx +0 -141
  139. package/src/components/inline-list/InlineList.stories.tsx +0 -78
  140. package/src/components/inline-list/InlineList.test.tsx +0 -54
  141. package/src/components/inline-list/InlineList.tsx +0 -96
  142. package/src/components/inline-list/index.ts +0 -1
  143. package/src/components/input-helper/InputHelper.stories.tsx +0 -35
  144. package/src/components/input-helper/InputHelper.test.tsx +0 -57
  145. package/src/components/input-helper/InputHelper.tsx +0 -65
  146. package/src/components/input-helper/constants.ts +0 -11
  147. package/src/components/input-helper/index.ts +0 -1
  148. package/src/components/input-label/InputLabel.stories.tsx +0 -47
  149. package/src/components/input-label/InputLabel.test.tsx +0 -61
  150. package/src/components/input-label/InputLabel.tsx +0 -69
  151. package/src/components/input-label/index.ts +0 -1
  152. package/src/components/lightbox/Lightbox.stories.tsx +0 -101
  153. package/src/components/lightbox/Lightbox.test.tsx +0 -55
  154. package/src/components/lightbox/Lightbox.tsx +0 -180
  155. package/src/components/lightbox/index.ts +0 -1
  156. package/src/components/link/Link.stories.tsx +0 -196
  157. package/src/components/link/Link.test.tsx +0 -127
  158. package/src/components/link/Link.tsx +0 -119
  159. package/src/components/link/index.ts +0 -1
  160. package/src/components/link-preview/LinkPreview.stories.tsx +0 -61
  161. package/src/components/link-preview/LinkPreview.test.tsx +0 -107
  162. package/src/components/link-preview/LinkPreview.tsx +0 -160
  163. package/src/components/link-preview/index.ts +0 -1
  164. package/src/components/list/List.stories.tsx +0 -116
  165. package/src/components/list/List.test.tsx +0 -20
  166. package/src/components/list/List.tsx +0 -104
  167. package/src/components/list/ListDivider.stories.tsx +0 -12
  168. package/src/components/list/ListDivider.test.tsx +0 -24
  169. package/src/components/list/ListDivider.tsx +0 -37
  170. package/src/components/list/ListItem.stories.tsx +0 -66
  171. package/src/components/list/ListItem.test.tsx +0 -95
  172. package/src/components/list/ListItem.tsx +0 -157
  173. package/src/components/list/ListSubheader.stories.tsx +0 -11
  174. package/src/components/list/ListSubheader.test.tsx +0 -23
  175. package/src/components/list/ListSubheader.tsx +0 -44
  176. package/src/components/list/index.ts +0 -4
  177. package/src/components/list/useInteractiveList.tsx +0 -202
  178. package/src/components/message/Message.stories.tsx +0 -72
  179. package/src/components/message/Message.test.tsx +0 -77
  180. package/src/components/message/Message.tsx +0 -100
  181. package/src/components/message/index.ts +0 -1
  182. package/src/components/mosaic/Mosaic.stories.tsx +0 -89
  183. package/src/components/mosaic/Mosaic.test.tsx +0 -79
  184. package/src/components/mosaic/Mosaic.tsx +0 -98
  185. package/src/components/mosaic/index.ts +0 -1
  186. package/src/components/navigation/Navigation.stories.tsx +0 -236
  187. package/src/components/navigation/Navigation.test.tsx +0 -67
  188. package/src/components/navigation/Navigation.tsx +0 -81
  189. package/src/components/navigation/NavigationItem.test.tsx +0 -37
  190. package/src/components/navigation/NavigationItem.tsx +0 -86
  191. package/src/components/navigation/NavigationSection.test.tsx +0 -139
  192. package/src/components/navigation/NavigationSection.tsx +0 -107
  193. package/src/components/navigation/context.tsx +0 -7
  194. package/src/components/navigation/index.ts +0 -1
  195. package/src/components/notification/Notification.test.tsx +0 -95
  196. package/src/components/notification/Notification.tsx +0 -138
  197. package/src/components/notification/Notifications.stories.tsx +0 -92
  198. package/src/components/notification/constants.ts +0 -28
  199. package/src/components/notification/index.ts +0 -1
  200. package/src/components/popover/Popover.stories.tsx +0 -264
  201. package/src/components/popover/Popover.test.tsx +0 -64
  202. package/src/components/popover/Popover.tsx +0 -201
  203. package/src/components/popover/constants.ts +0 -62
  204. package/src/components/popover/index.ts +0 -3
  205. package/src/components/popover/usePopoverStyle.tsx +0 -184
  206. package/src/components/popover/useRestoreFocusOnClose.tsx +0 -47
  207. package/src/components/popover-dialog/PopoverDialog.stories.tsx +0 -64
  208. package/src/components/popover-dialog/PopoverDialog.test.tsx +0 -140
  209. package/src/components/popover-dialog/PopoverDialog.tsx +0 -76
  210. package/src/components/popover-dialog/index.tsx +0 -1
  211. package/src/components/post-block/PostBlock.test.tsx +0 -29
  212. package/src/components/post-block/PostBlock.tsx +0 -122
  213. package/src/components/post-block/index.ts +0 -1
  214. package/src/components/progress/Progress.tsx +0 -70
  215. package/src/components/progress/ProgressCircular.stories.tsx +0 -44
  216. package/src/components/progress/ProgressCircular.test.tsx +0 -48
  217. package/src/components/progress/ProgressCircular.tsx +0 -84
  218. package/src/components/progress/ProgressLinear.stories.tsx +0 -12
  219. package/src/components/progress/ProgressLinear.test.tsx +0 -32
  220. package/src/components/progress/ProgressLinear.tsx +0 -52
  221. package/src/components/progress/index.ts +0 -3
  222. package/src/components/progress-tracker/ProgressTracker.stories.tsx +0 -145
  223. package/src/components/progress-tracker/ProgressTracker.test.tsx +0 -44
  224. package/src/components/progress-tracker/ProgressTracker.tsx +0 -87
  225. package/src/components/progress-tracker/ProgressTrackerProvider.test.tsx +0 -67
  226. package/src/components/progress-tracker/ProgressTrackerProvider.tsx +0 -67
  227. package/src/components/progress-tracker/ProgressTrackerStep.test.tsx +0 -38
  228. package/src/components/progress-tracker/ProgressTrackerStep.tsx +0 -159
  229. package/src/components/progress-tracker/ProgressTrackerStepPanel.test.tsx +0 -36
  230. package/src/components/progress-tracker/ProgressTrackerStepPanel.tsx +0 -69
  231. package/src/components/progress-tracker/index.ts +0 -4
  232. package/src/components/radio-button/RadioButton.stories.tsx +0 -71
  233. package/src/components/radio-button/RadioButton.test.tsx +0 -145
  234. package/src/components/radio-button/RadioButton.tsx +0 -143
  235. package/src/components/radio-button/RadioGroup.stories.tsx +0 -39
  236. package/src/components/radio-button/RadioGroup.test.tsx +0 -31
  237. package/src/components/radio-button/RadioGroup.tsx +0 -44
  238. package/src/components/radio-button/index.ts +0 -2
  239. package/src/components/select/Select.stories.tsx +0 -385
  240. package/src/components/select/Select.test.tsx +0 -200
  241. package/src/components/select/Select.tsx +0 -199
  242. package/src/components/select/SelectMultiple.stories.tsx +0 -315
  243. package/src/components/select/SelectMultiple.test.tsx +0 -215
  244. package/src/components/select/SelectMultiple.tsx +0 -206
  245. package/src/components/select/WithSelectContext.tsx +0 -147
  246. package/src/components/select/constants.ts +0 -55
  247. package/src/components/select/index.ts +0 -2
  248. package/src/components/side-navigation/SideNavigation.stories.tsx +0 -191
  249. package/src/components/side-navigation/SideNavigation.test.tsx +0 -39
  250. package/src/components/side-navigation/SideNavigation.tsx +0 -52
  251. package/src/components/side-navigation/SideNavigationItem.stories.tsx +0 -133
  252. package/src/components/side-navigation/SideNavigationItem.test.tsx +0 -138
  253. package/src/components/side-navigation/SideNavigationItem.tsx +0 -170
  254. package/src/components/side-navigation/index.ts +0 -2
  255. package/src/components/skeleton/SkeletonCircle.stories.tsx +0 -41
  256. package/src/components/skeleton/SkeletonCircle.test.tsx +0 -29
  257. package/src/components/skeleton/SkeletonCircle.tsx +0 -54
  258. package/src/components/skeleton/SkeletonRectangle.stories.tsx +0 -82
  259. package/src/components/skeleton/SkeletonRectangle.test.tsx +0 -29
  260. package/src/components/skeleton/SkeletonRectangle.tsx +0 -90
  261. package/src/components/skeleton/SkeletonTypography.stories.tsx +0 -21
  262. package/src/components/skeleton/SkeletonTypography.test.tsx +0 -29
  263. package/src/components/skeleton/SkeletonTypography.tsx +0 -59
  264. package/src/components/skeleton/index.ts +0 -3
  265. package/src/components/slider/Slider.stories.tsx +0 -45
  266. package/src/components/slider/Slider.test.tsx +0 -31
  267. package/src/components/slider/Slider.tsx +0 -299
  268. package/src/components/slider/index.ts +0 -2
  269. package/src/components/slideshow/Slides.tsx +0 -130
  270. package/src/components/slideshow/Slideshow.stories.tsx +0 -180
  271. package/src/components/slideshow/Slideshow.test.tsx +0 -37
  272. package/src/components/slideshow/Slideshow.tsx +0 -173
  273. package/src/components/slideshow/SlideshowControls.stories.tsx +0 -102
  274. package/src/components/slideshow/SlideshowControls.tsx +0 -243
  275. package/src/components/slideshow/SlideshowItem.tsx +0 -46
  276. package/src/components/slideshow/SlideshowItemGroup.tsx +0 -60
  277. package/src/components/slideshow/constants.ts +0 -24
  278. package/src/components/slideshow/index.ts +0 -4
  279. package/src/components/slideshow/useKeyNavigate.ts +0 -28
  280. package/src/components/slideshow/usePaginationVisibleRange.ts +0 -37
  281. package/src/components/slideshow/useSlideFocusManagement.tsx +0 -92
  282. package/src/components/slideshow/useSwipeNavigate.ts +0 -18
  283. package/src/components/switch/Switch.stories.tsx +0 -49
  284. package/src/components/switch/Switch.test.tsx +0 -146
  285. package/src/components/switch/Switch.tsx +0 -145
  286. package/src/components/switch/index.ts +0 -1
  287. package/src/components/table/Table.test.tsx +0 -31
  288. package/src/components/table/Table.tsx +0 -61
  289. package/src/components/table/TableBody.test.tsx +0 -32
  290. package/src/components/table/TableBody.tsx +0 -44
  291. package/src/components/table/TableCell.test.tsx +0 -74
  292. package/src/components/table/TableCell.tsx +0 -132
  293. package/src/components/table/TableHeader.test.tsx +0 -32
  294. package/src/components/table/TableHeader.tsx +0 -50
  295. package/src/components/table/TableRow.test.tsx +0 -42
  296. package/src/components/table/TableRow.tsx +0 -73
  297. package/src/components/table/index.ts +0 -5
  298. package/src/components/tabs/Tab.test.tsx +0 -52
  299. package/src/components/tabs/Tab.tsx +0 -133
  300. package/src/components/tabs/TabList.test.tsx +0 -51
  301. package/src/components/tabs/TabList.tsx +0 -94
  302. package/src/components/tabs/TabPanel.test.tsx +0 -39
  303. package/src/components/tabs/TabPanel.tsx +0 -69
  304. package/src/components/tabs/TabProvider.test.tsx +0 -163
  305. package/src/components/tabs/TabProvider.tsx +0 -67
  306. package/src/components/tabs/Tabs.stories.tsx +0 -170
  307. package/src/components/tabs/index.ts +0 -4
  308. package/src/components/tabs/state.ts +0 -114
  309. package/src/components/tabs/test-utils.ts +0 -39
  310. package/src/components/text/Text.stories.tsx +0 -177
  311. package/src/components/text/Text.test.tsx +0 -94
  312. package/src/components/text/Text.tsx +0 -141
  313. package/src/components/text/index.ts +0 -1
  314. package/src/components/text-field/TextField.stories.tsx +0 -180
  315. package/src/components/text-field/TextField.test.tsx +0 -299
  316. package/src/components/text-field/TextField.tsx +0 -493
  317. package/src/components/text-field/index.ts +0 -1
  318. package/src/components/thumbnail/Thumbnail.stories.tsx +0 -448
  319. package/src/components/thumbnail/Thumbnail.test.tsx +0 -66
  320. package/src/components/thumbnail/Thumbnail.tsx +0 -248
  321. package/src/components/thumbnail/index.ts +0 -3
  322. package/src/components/thumbnail/types.ts +0 -48
  323. package/src/components/thumbnail/useFocusPointStyle.test.ts +0 -92
  324. package/src/components/thumbnail/useFocusPointStyle.tsx +0 -107
  325. package/src/components/thumbnail/useImageLoad.ts +0 -40
  326. package/src/components/toolbar/Toolbar.tsx +0 -68
  327. package/src/components/toolbar/index.ts +0 -1
  328. package/src/components/tooltip/Tooltip.stories.tsx +0 -117
  329. package/src/components/tooltip/Tooltip.test.tsx +0 -411
  330. package/src/components/tooltip/Tooltip.tsx +0 -165
  331. package/src/components/tooltip/constants.ts +0 -8
  332. package/src/components/tooltip/context.tsx +0 -17
  333. package/src/components/tooltip/index.ts +0 -1
  334. package/src/components/tooltip/useInjectTooltipRef.tsx +0 -55
  335. package/src/components/tooltip/useTooltipOpen.tsx +0 -143
  336. package/src/components/uploader/Uploader.stories.tsx +0 -109
  337. package/src/components/uploader/Uploader.test.tsx +0 -148
  338. package/src/components/uploader/Uploader.tsx +0 -177
  339. package/src/components/uploader/index.ts +0 -1
  340. package/src/components/user-block/UserBlock.stories.tsx +0 -135
  341. package/src/components/user-block/UserBlock.test.tsx +0 -108
  342. package/src/components/user-block/UserBlock.tsx +0 -193
  343. package/src/components/user-block/index.ts +0 -1
  344. package/src/constants.ts +0 -27
  345. package/src/hooks/useBooleanState.tsx +0 -13
  346. package/src/hooks/useCallbackOnEscape.ts +0 -34
  347. package/src/hooks/useChipGroupNavigation.tsx +0 -75
  348. package/src/hooks/useClickAway.tsx +0 -48
  349. package/src/hooks/useDisableBodyScroll.ts +0 -28
  350. package/src/hooks/useEventCallback.tsx +0 -17
  351. package/src/hooks/useFocus.tsx +0 -21
  352. package/src/hooks/useFocusTrap.ts +0 -93
  353. package/src/hooks/useFocusWithin.ts +0 -33
  354. package/src/hooks/useId.test.tsx +0 -23
  355. package/src/hooks/useId.ts +0 -15
  356. package/src/hooks/useImageSize.ts +0 -17
  357. package/src/hooks/useInfiniteScroll.tsx +0 -60
  358. package/src/hooks/useIntersectionObserver.tsx +0 -43
  359. package/src/hooks/useInterval.tsx +0 -31
  360. package/src/hooks/useKeyboardListNavigation.tsx +0 -204
  361. package/src/hooks/useListenFocus.tsx +0 -26
  362. package/src/hooks/useOverflowTooltipLabel.tsx +0 -32
  363. package/src/hooks/usePopper.ts +0 -12
  364. package/src/hooks/usePreviousValue.ts +0 -13
  365. package/src/hooks/useRovingTabIndex.tsx +0 -90
  366. package/src/hooks/useSizeOnWindowResize.ts +0 -30
  367. package/src/hooks/useSlideshowControls.ts +0 -246
  368. package/src/hooks/useStopPropagation.ts +0 -21
  369. package/src/hooks/useTransitionVisibility.ts +0 -48
  370. package/src/index.ts +0 -63
  371. package/src/stories/controls/color.ts +0 -7
  372. package/src/stories/controls/element.ts +0 -6
  373. package/src/stories/controls/focusPoint.ts +0 -1
  374. package/src/stories/controls/icons.ts +0 -126
  375. package/src/stories/controls/image.ts +0 -84
  376. package/src/stories/controls/selectArgType.ts +0 -8
  377. package/src/stories/controls/theme.ts +0 -3
  378. package/src/stories/controls/typography.ts +0 -5
  379. package/src/stories/controls/withUndefined.ts +0 -1
  380. package/src/stories/decorators/withChromaticForceScreenSize.tsx +0 -8
  381. package/src/stories/decorators/withCombinations.tsx +0 -132
  382. package/src/stories/decorators/withNestedProps.tsx +0 -23
  383. package/src/stories/decorators/withResizableBox.tsx +0 -21
  384. package/src/stories/decorators/withThemedBackground.tsx +0 -18
  385. package/src/stories/decorators/withValueOnChange.tsx +0 -18
  386. package/src/stories/decorators/withWrapper.tsx +0 -21
  387. package/src/stories/generated/Autocomplete/Demos.stories.tsx +0 -7
  388. package/src/stories/generated/Avatar/Demos.stories.tsx +0 -7
  389. package/src/stories/generated/Badge/Demos.stories.tsx +0 -9
  390. package/src/stories/generated/Button/Demos.stories.tsx +0 -11
  391. package/src/stories/generated/Checkbox/Demos.stories.tsx +0 -6
  392. package/src/stories/generated/Chip/Demos.stories.tsx +0 -11
  393. package/src/stories/generated/CommentBlock/Demos.stories.tsx +0 -8
  394. package/src/stories/generated/DatePicker/Demos.stories.tsx +0 -8
  395. package/src/stories/generated/Dialog/Demos.stories.tsx +0 -10
  396. package/src/stories/generated/Divider/Demos.stories.tsx +0 -6
  397. package/src/stories/generated/Dropdown/Demos.stories.tsx +0 -8
  398. package/src/stories/generated/ExpansionPanel/Demos.stories.tsx +0 -9
  399. package/src/stories/generated/Flag/Demos.stories.tsx +0 -6
  400. package/src/stories/generated/GenericBlock/Demos.stories.tsx +0 -8
  401. package/src/stories/generated/Heading/Demos.stories.tsx +0 -6
  402. package/src/stories/generated/Icon/Demos.stories.tsx +0 -8
  403. package/src/stories/generated/ImageBlock/Demos.stories.tsx +0 -9
  404. package/src/stories/generated/ImageLightbox/Demos.stories.tsx +0 -6
  405. package/src/stories/generated/Lightbox/Demos.stories.tsx +0 -6
  406. package/src/stories/generated/LinkPreview/Demos.stories.tsx +0 -7
  407. package/src/stories/generated/List/Demos.stories.tsx +0 -11
  408. package/src/stories/generated/Message/Demos.stories.tsx +0 -11
  409. package/src/stories/generated/Mosaic/Demos.stories.tsx +0 -10
  410. package/src/stories/generated/Notification/Demos.stories.tsx +0 -6
  411. package/src/stories/generated/Popover/Demos.stories.tsx +0 -11
  412. package/src/stories/generated/PopoverDialog/Demos.stories.tsx +0 -6
  413. package/src/stories/generated/PostBlock/Demos.stories.tsx +0 -6
  414. package/src/stories/generated/Progress/Demos.stories.tsx +0 -7
  415. package/src/stories/generated/ProgressTracker/Demos.stories.tsx +0 -9
  416. package/src/stories/generated/RadioButton/Demos.stories.tsx +0 -6
  417. package/src/stories/generated/Select/Demos.stories.tsx +0 -14
  418. package/src/stories/generated/SideNavigation/Demos.stories.tsx +0 -10
  419. package/src/stories/generated/Skeleton/Demos.stories.tsx +0 -9
  420. package/src/stories/generated/Slider/Demos.stories.tsx +0 -9
  421. package/src/stories/generated/Slideshow/Demos.stories.tsx +0 -8
  422. package/src/stories/generated/Switch/Demos.stories.tsx +0 -6
  423. package/src/stories/generated/Table/Demos.stories.tsx +0 -7
  424. package/src/stories/generated/Tabs/Demos.stories.tsx +0 -8
  425. package/src/stories/generated/TextField/Demos.stories.tsx +0 -20
  426. package/src/stories/generated/Thumbnail/Demos.stories.tsx +0 -12
  427. package/src/stories/generated/Toolbar/Demos.stories.tsx +0 -10
  428. package/src/stories/generated/Tooltip/Demos.stories.tsx +0 -8
  429. package/src/stories/generated/Uploader/Demos.stories.tsx +0 -8
  430. package/src/stories/generated/UserBlock/Demos.stories.tsx +0 -11
  431. package/src/stories/utils/CustomLink.tsx +0 -13
  432. package/src/stories/utils/concatPath.tsx +0 -17
  433. package/src/stories/utils/disableArgTypes.ts +0 -3
  434. package/src/stories/utils/initDemoShadowDOMPortal.ts +0 -10
  435. package/src/stories/utils/lorem.ts +0 -59
  436. package/src/stories/utils/theming.tsx +0 -166
  437. package/src/stories/utils/toFlattenProps.ts +0 -28
  438. package/src/stories/utils/withCategory.ts +0 -12
  439. package/src/testing/utils/ThemeSentinel.tsx +0 -11
  440. package/src/testing/utils/commonTestsSuiteRTL.tsx +0 -193
  441. package/src/testing/utils/index.ts +0 -1
  442. package/src/testing/utils/queries.ts +0 -19
  443. package/src/untypped-modules.d.ts +0 -5
  444. package/src/utils/ClickAwayProvider/ClickAwayProvider.stories.jsx +0 -70
  445. package/src/utils/ClickAwayProvider/ClickAwayProvider.tsx +0 -69
  446. package/src/utils/ClickAwayProvider/index.ts +0 -1
  447. package/src/utils/MaterialThemeSwitcher/MaterialThemeSwitcher.tsx +0 -54
  448. package/src/utils/MaterialThemeSwitcher/index.ts +0 -1
  449. package/src/utils/Portal/Portal.test.tsx +0 -32
  450. package/src/utils/Portal/Portal.tsx +0 -33
  451. package/src/utils/Portal/PortalProvider.stories.jsx +0 -23
  452. package/src/utils/Portal/PortalProvider.test.tsx +0 -73
  453. package/src/utils/Portal/PortalProvider.tsx +0 -24
  454. package/src/utils/Portal/index.tsx +0 -2
  455. package/src/utils/browser/DOM/findImage.tsx +0 -3
  456. package/src/utils/browser/DOM/startViewTransition.ts +0 -68
  457. package/src/utils/browser/focus/constants.ts +0 -7
  458. package/src/utils/browser/focus/getFirstAndLastFocusable.test.ts +0 -134
  459. package/src/utils/browser/focus/getFirstAndLastFocusable.ts +0 -21
  460. package/src/utils/browser/focus/getFocusableElements.test.ts +0 -151
  461. package/src/utils/browser/focus/getFocusableElements.ts +0 -7
  462. package/src/utils/browser/isFocusVisible.ts +0 -9
  463. package/src/utils/browser/isHoverNotSupported.test.js +0 -24
  464. package/src/utils/browser/isHoverNotSupported.ts +0 -2
  465. package/src/utils/browser/isReducedMotion.ts +0 -6
  466. package/src/utils/date/addMonthResetDay.test.ts +0 -13
  467. package/src/utils/date/addMonthResetDay.ts +0 -9
  468. package/src/utils/date/formatDayNumber.test.ts +0 -12
  469. package/src/utils/date/formatDayNumber.ts +0 -5
  470. package/src/utils/date/getFirstDayOfWeek.test.ts +0 -20
  471. package/src/utils/date/getFirstDayOfWeek.ts +0 -59
  472. package/src/utils/date/getMonthCalendar.test.ts +0 -127
  473. package/src/utils/date/getMonthCalendar.ts +0 -69
  474. package/src/utils/date/getWeekDays.test.ts +0 -48
  475. package/src/utils/date/getWeekDays.ts +0 -34
  476. package/src/utils/date/getYearDisplayName.test.ts +0 -20
  477. package/src/utils/date/getYearDisplayName.ts +0 -12
  478. package/src/utils/date/isDateValid.test.ts +0 -15
  479. package/src/utils/date/isDateValid.ts +0 -4
  480. package/src/utils/date/isSameDay.test.ts +0 -37
  481. package/src/utils/date/isSameDay.ts +0 -11
  482. package/src/utils/disabled/DisabledStateContext.tsx +0 -29
  483. package/src/utils/disabled/DisabledStateProvider.stories.tsx +0 -94
  484. package/src/utils/disabled/index.ts +0 -2
  485. package/src/utils/disabled/useDisableStateProps.test.tsx +0 -74
  486. package/src/utils/disabled/useDisableStateProps.tsx +0 -37
  487. package/src/utils/function/makeListenerTowerContext.ts +0 -32
  488. package/src/utils/index.ts +0 -7
  489. package/src/utils/locale/getCurrentLocale.ts +0 -4
  490. package/src/utils/locale/parseLocale.test.ts +0 -17
  491. package/src/utils/locale/parseLocale.ts +0 -23
  492. package/src/utils/locale/types.ts +0 -8
  493. package/src/utils/number/clamp.ts +0 -17
  494. package/src/utils/object/isEqual.test.ts +0 -25
  495. package/src/utils/object/isEqual.ts +0 -11
  496. package/src/utils/partitionMulti.test.ts +0 -27
  497. package/src/utils/partitionMulti.ts +0 -29
  498. package/src/utils/react/OnBeforeUnmount.tsx +0 -20
  499. package/src/utils/react/flattenChildren.ts +0 -32
  500. package/src/utils/react/forwardRef.ts +0 -11
  501. package/src/utils/react/forwardRefPolymorphic.ts +0 -9
  502. package/src/utils/react/mergeRefs.ts +0 -33
  503. package/src/utils/react/renderButtonOrLink.tsx +0 -16
  504. package/src/utils/react/renderLink.tsx +0 -17
  505. package/src/utils/react/skipRender.tsx +0 -18
  506. package/src/utils/react/unref.ts +0 -7
  507. package/src/utils/react/wrapChildrenIconWithSpaces.test.tsx +0 -37
  508. package/src/utils/react/wrapChildrenIconWithSpaces.tsx +0 -22
  509. package/src/utils/theme/ThemeContext.ts +0 -16
  510. package/src/utils/theme/invertTheme.ts +0 -4
  511. package/src/utils/type/Comp.ts +0 -14
  512. package/src/utils/type/ComponentRef.ts +0 -16
  513. package/src/utils/type/HasAriaDisabled.ts +0 -6
  514. package/src/utils/type/HasPolymorphicAs.ts +0 -8
  515. package/src/utils/type/MaybeElementOrRef.ts +0 -6
  516. package/src/utils/type/index.ts +0 -8
  517. package/src/utils/type/isComponent.ts +0 -33
  518. package/src/utils/type/isComponentType.ts +0 -9
@@ -1,148 +0,0 @@
1
- import React from 'react';
2
- import type { Point } from '@lumx/react/utils/type';
3
- import type { useAnimateScroll } from './useAnimateScroll';
4
-
5
- /**
6
- * Listen to mouse wheel + ctrl and multi-pointer pinch to zoom
7
- */
8
- export function usePointerZoom(
9
- scrollAreaRef: React.RefObject<HTMLDivElement>,
10
- onScaleChange: ((value: number) => void) | undefined,
11
- animateScroll: ReturnType<typeof useAnimateScroll>,
12
- ) {
13
- const [isPointerZooming, setPointerZooming] = React.useState(false);
14
- React.useEffect(() => {
15
- const scrollArea = scrollAreaRef.current as HTMLDivElement;
16
- if (!scrollArea || !onScaleChange) {
17
- return undefined;
18
- }
19
-
20
- let animationFrame: number | null;
21
- let zoomStateTimeoutId: ReturnType<typeof setTimeout> | null;
22
-
23
- function updateScaleOnNextFrame(newScale: number, mousePosition: Point): void {
24
- // Cancel previously scheduled frame
25
- if (animationFrame) cancelAnimationFrame(animationFrame);
26
-
27
- // Cancel previously scheduled zoom state change
28
- if (zoomStateTimeoutId) clearTimeout(zoomStateTimeoutId);
29
-
30
- function nextFrame() {
31
- setPointerZooming(true);
32
- onScaleChange?.(newScale);
33
-
34
- animationFrame = null;
35
- // Wait a bit before indicating the pointer zooming is finished
36
- zoomStateTimeoutId = setTimeout(() => setPointerZooming(false), 100);
37
- }
38
- animationFrame = requestAnimationFrame(nextFrame);
39
-
40
- // Animate scroll in parallel (centering on the current mouse position)
41
- animateScroll(mousePosition, {
42
- width: scrollArea.scrollWidth,
43
- height: scrollArea.scrollHeight,
44
- });
45
- }
46
-
47
- function onWheel(event: WheelEvent) {
48
- if (!event.ctrlKey) {
49
- return;
50
- }
51
- event.preventDefault();
52
- const newScale = Math.exp(-event.deltaY / 50);
53
-
54
- // Update scale on next frame (focused on the mouse position)
55
- updateScaleOnNextFrame(newScale, {
56
- x: event.clientX,
57
- y: event.clientY,
58
- });
59
- }
60
-
61
- const activePointers: Record<PointerEvent['pointerId'], PointerEvent> = {};
62
- let prevDistance: number | null = null;
63
- let previousCenterPoint: Point | null = null;
64
-
65
- function onPointerDown(event: PointerEvent) {
66
- activePointers[event.pointerId] = event;
67
- }
68
- function onPointerMove(event: PointerEvent) {
69
- // Update pointer in cache
70
- if (activePointers[event.pointerId]) {
71
- activePointers[event.pointerId] = event;
72
- }
73
-
74
- const pointers = Object.values(activePointers);
75
-
76
- // Make sure we run computation on one of the pointer in the group
77
- if (pointers[0]?.pointerId !== event.pointerId) {
78
- return;
79
- }
80
-
81
- // Centered point between all pointers
82
- const centerPoint: Point = {
83
- x: pointers.reduce((x, { clientX }) => x + clientX, 0) / pointers.length,
84
- y: pointers.reduce((y, { clientY }) => y + clientY, 0) / pointers.length,
85
- };
86
-
87
- // Movement of the center point
88
- const deltaCenterPoint = previousCenterPoint && {
89
- left: previousCenterPoint.x - centerPoint.x,
90
- top: previousCenterPoint.y - centerPoint.y,
91
- };
92
-
93
- // Pan X & Y
94
- if (deltaCenterPoint) {
95
- // Apply movement of the center point to the scroll
96
- scrollArea.scrollBy({
97
- top: deltaCenterPoint.top / 2,
98
- left: deltaCenterPoint.left / 2,
99
- });
100
- }
101
-
102
- // Pinch to zoom
103
- if (pointers.length === 2) {
104
- const [pointer1, pointer2] = pointers;
105
- const distance = Math.hypot(pointer2.clientX - pointer1.clientX, pointer2.clientY - pointer1.clientY);
106
-
107
- if (prevDistance && deltaCenterPoint) {
108
- const delta = prevDistance - distance;
109
- const absDelta = Math.abs(delta);
110
-
111
- // Zoom only if we are "pinching" more than we are moving the pointers
112
- if (absDelta > Math.abs(deltaCenterPoint.left) && absDelta > Math.abs(deltaCenterPoint.top)) {
113
- // Update scale on next frame (focused on the center point between the two pointers)
114
- const newScale = Math.exp(-delta / 100);
115
- updateScaleOnNextFrame(newScale, centerPoint);
116
- }
117
- }
118
-
119
- prevDistance = distance;
120
- }
121
-
122
- previousCenterPoint = centerPoint;
123
- }
124
- function onPointerUp(event: PointerEvent) {
125
- prevDistance = null;
126
- previousCenterPoint = null;
127
- delete activePointers[event.pointerId];
128
- }
129
-
130
- scrollArea.addEventListener('wheel', onWheel, { passive: false });
131
- const isMultiTouch = navigator.maxTouchPoints >= 2;
132
- if (isMultiTouch) {
133
- scrollArea.addEventListener('pointerdown', onPointerDown);
134
- scrollArea.addEventListener('pointermove', onPointerMove);
135
- scrollArea.addEventListener('pointerup', onPointerUp);
136
- }
137
- return () => {
138
- scrollArea.removeEventListener('wheel', onWheel);
139
- if (isMultiTouch) {
140
- scrollArea.removeEventListener('pointerdown', onPointerDown);
141
- scrollArea.removeEventListener('pointermove', onPointerMove);
142
- scrollArea.removeEventListener('pointerup', onPointerUp);
143
- }
144
- };
145
- }, [animateScroll, onScaleChange, scrollAreaRef]);
146
-
147
- return isPointerZooming;
148
- }
@@ -1,50 +0,0 @@
1
- import React from 'react';
2
-
3
- import type { IconButtonProps, LightboxProps, SlideshowProps, ThumbnailProps } from '@lumx/react';
4
- import type { HasClassName } from '@lumx/react/utils/type';
5
- import type { ImageCaptionMetadata } from '@lumx/react/components/image-block/ImageCaption';
6
-
7
- export type InheritedSlideShowProps = Pick<SlideshowProps, 'slideshowControlsProps' | 'slideGroupLabel'>;
8
-
9
- export interface ZoomButtonProps {
10
- /** Zoom in button props */
11
- zoomInButtonProps?: IconButtonProps;
12
- /** Zoom out button props */
13
- zoomOutButtonProps?: IconButtonProps;
14
- }
15
-
16
- export type InheritedThumbnailProps = Pick<
17
- ThumbnailProps,
18
- 'image' | 'alt' | 'imgProps' | 'imgRef' | 'loadingPlaceholderImageRef'
19
- >;
20
-
21
- export type InheritedImageMetadata = Pick<ImageCaptionMetadata, 'title' | 'description' | 'tags'>;
22
-
23
- export type ImageProps = InheritedThumbnailProps & InheritedImageMetadata;
24
-
25
- export interface ImagesProps {
26
- /** Index of the active image to show on open */
27
- activeImageIndex?: number;
28
- /** List of images to display */
29
- images: Array<ImageProps>;
30
- /** Ref of the active image when the lightbox is open */
31
- activeImageRef?: React.Ref<HTMLImageElement>;
32
- }
33
-
34
- export type InheritedLightboxProps = Pick<
35
- LightboxProps,
36
- 'isOpen' | 'parentElement' | 'onClose' | 'closeButtonProps' | 'aria-label' | 'aria-labelledby'
37
- >;
38
-
39
- export type ForwardedProps = React.ComponentPropsWithoutRef<'div'>;
40
-
41
- /**
42
- * ImageLightbox component props
43
- */
44
- export interface ImageLightboxProps
45
- extends HasClassName,
46
- ZoomButtonProps,
47
- ImagesProps,
48
- InheritedSlideShowProps,
49
- InheritedLightboxProps,
50
- ForwardedProps {}
@@ -1,141 +0,0 @@
1
- import React from 'react';
2
-
3
- import memoize from 'lodash/memoize';
4
-
5
- import { startViewTransition } from '@lumx/react/utils/browser/DOM/startViewTransition';
6
- import { findImage } from '@lumx/react/utils/browser/DOM/findImage';
7
-
8
- import type { ImageLightboxProps } from './types';
9
- import { CLASSNAME } from './constants';
10
-
11
- /** Subset of the ImageLightboxProps managed by the useImageLightbox hook */
12
- type ManagedProps = Pick<
13
- ImageLightboxProps,
14
- 'isOpen' | 'images' | 'parentElement' | 'activeImageRef' | 'onClose' | 'activeImageIndex'
15
- >;
16
-
17
- const EMPTY_PROPS: ManagedProps = { isOpen: false, images: [], parentElement: React.createRef() };
18
-
19
- type TriggerOptions = Pick<ImageLightboxProps, 'activeImageIndex'>;
20
-
21
- /**
22
- * Set up an ImageLightbox with images and triggers.
23
- *
24
- * - Associate a trigger with the lightbox to properly focus the trigger on close
25
- * - Associate a trigger with an image to display on open
26
- * - Automatically provide a view transition between an image trigger and the displayed image on open & close
27
- *
28
- * @param props Images to display in the image lightbox
29
- */
30
- export function useImageLightbox<P extends Partial<ImageLightboxProps>>(
31
- props: P,
32
- ): {
33
- /**
34
- * Generates trigger props
35
- * @param index Provide an index to choose which image to display when the image lightbox opens.
36
- * */
37
- getTriggerProps: (options?: TriggerOptions) => { onClick: React.MouseEventHandler; ref: React.Ref<any> };
38
- /** Props to forward to the ImageLightbox */
39
- imageLightboxProps: ManagedProps & P;
40
- } {
41
- const propsRef = React.useRef(props);
42
-
43
- React.useEffect(() => {
44
- propsRef.current = props;
45
- }, [props]);
46
-
47
- // Keep reference for each image elements
48
- const imageRefsRef = React.useRef<Array<React.RefObject<HTMLImageElement>>>([]);
49
-
50
- const currentImageRef = React.useRef<HTMLImageElement>(null);
51
- const [imageLightboxProps, setImageLightboxProps] = React.useState(
52
- () => ({ ...EMPTY_PROPS, ...props }) as ManagedProps & P,
53
- );
54
-
55
- const getTriggerProps = React.useMemo(() => {
56
- const triggerImageRefs: Record<number, React.RefObject<HTMLImageElement>> = {};
57
-
58
- async function close() {
59
- const currentImage = currentImageRef.current;
60
- if (!currentImage) {
61
- return;
62
- }
63
- const currentIndex = imageRefsRef.current.findIndex(
64
- (imageRef) => imageRef.current === currentImage,
65
- ) as number;
66
-
67
- await startViewTransition({
68
- changes() {
69
- // Close lightbox
70
- setImageLightboxProps((prevProps) => ({ ...prevProps, isOpen: false }));
71
- },
72
- // Morph from the image in lightbox to the image in trigger
73
- viewTransitionName: {
74
- source: currentImageRef,
75
- target: triggerImageRefs[currentIndex],
76
- name: CLASSNAME,
77
- },
78
- });
79
- }
80
-
81
- async function open(triggerElement: HTMLElement, { activeImageIndex }: TriggerOptions = {}) {
82
- // If we find an image inside the trigger, animate it in transition with the opening image
83
- const triggerImage = triggerImageRefs[activeImageIndex as any]?.current || findImage(triggerElement);
84
-
85
- // Inject refs to improve transition and loading style
86
- const images = propsRef.current?.images?.map((image, idx) => {
87
- // Get or create image reference
88
- let imgRef = imageRefsRef.current[idx];
89
- if (!imgRef) {
90
- imgRef = React.createRef();
91
- imageRefsRef.current[idx] = imgRef;
92
- }
93
-
94
- // Try to use the trigger image as the loading placeholder
95
- const loadingPlaceholderImageRef =
96
- triggerImage && idx === activeImageIndex ? { current: triggerImage } : undefined;
97
-
98
- return { loadingPlaceholderImageRef, ...image, imgRef };
99
- });
100
-
101
- await startViewTransition({
102
- changes: () => {
103
- // Open lightbox with setup props
104
- setImageLightboxProps((prevProps) => ({
105
- ...prevProps,
106
- ...propsRef.current,
107
- activeImageRef: currentImageRef,
108
- parentElement: { current: triggerElement },
109
- isOpen: true,
110
- onClose: () => {
111
- close();
112
- propsRef.current?.onClose?.();
113
- },
114
- images,
115
- activeImageIndex: activeImageIndex || 0,
116
- }));
117
- },
118
- // Morph from the image in trigger to the image in lightbox
119
- viewTransitionName: {
120
- source: triggerImage,
121
- target: currentImageRef,
122
- name: CLASSNAME,
123
- },
124
- });
125
- }
126
-
127
- return memoize((options?: TriggerOptions) => ({
128
- ref(element: HTMLElement | null) {
129
- // Track trigger image ref if any
130
- if (options?.activeImageIndex !== undefined && element) {
131
- triggerImageRefs[options.activeImageIndex] = { current: findImage(element) };
132
- }
133
- },
134
- onClick(e: React.MouseEvent) {
135
- open(e.target as HTMLElement, options);
136
- },
137
- }));
138
- }, []);
139
-
140
- return { getTriggerProps, imageLightboxProps };
141
- }
@@ -1,78 +0,0 @@
1
- import React from 'react';
2
- import { mdiEarth } from '@lumx/icons';
3
- import { Icon, Text } from '@lumx/react';
4
- import { withResizableBox } from '@lumx/react/stories/decorators/withResizableBox';
5
- import { allTypographyArgType } from '@lumx/react/stories/controls/typography';
6
- import { colorArgType, colorVariantArgType } from '@lumx/react/stories/controls/color';
7
- import { InlineList } from '.';
8
-
9
- export default {
10
- title: 'LumX components/inline-list/InlineList',
11
- component: InlineList,
12
- argTypes: {
13
- typography: allTypographyArgType,
14
- color: colorArgType,
15
- colorVariant: colorVariantArgType,
16
- children: { control: false },
17
- },
18
- };
19
-
20
- /**
21
- * Inline list with three simple text elements
22
- */
23
- export const WithElements = {
24
- args: {
25
- children: [
26
- <span key="1">Some text</span>,
27
- <span key="2">Some other text</span>,
28
- <span key="3">Some other other text</span>,
29
- ],
30
- },
31
- };
32
-
33
- /**
34
- * Using color, typography and more complex elements
35
- */
36
- export const MixedNoWrapAndTruncate = {
37
- args: {
38
- typography: 'body1',
39
- color: 'dark',
40
- colorVariant: 'L2',
41
- style: { width: '100%' },
42
- children: [
43
- <Text key="1" as="span" truncate>
44
- Very very very very very long text
45
- </Text>,
46
- <Text key="2" as="span" noWrap>
47
- <Icon icon={mdiEarth} />
48
- Some text
49
- </Text>,
50
- <Text key="3" as="span" truncate>
51
- Very very very very very long text
52
- </Text>,
53
- ],
54
- },
55
- decorators: [withResizableBox({ width: 400 })],
56
- };
57
-
58
- /**
59
- * Line wrap on overflow
60
- */
61
- export const Wrap = {
62
- args: {
63
- wrap: true,
64
- children: [
65
- <Text key="1" as="span">
66
- Very very very very very long text
67
- </Text>,
68
- <Text key="2" as="span">
69
- <Icon icon={mdiEarth} />
70
- Some text
71
- </Text>,
72
- <Text key="3" as="span">
73
- Very very very very very long text
74
- </Text>,
75
- ],
76
- },
77
- decorators: [withResizableBox({ width: 400 })],
78
- };
@@ -1,54 +0,0 @@
1
- import React from 'react';
2
-
3
- import { commonTestsSuiteRTL } from '@lumx/react/testing/utils';
4
- import { render, screen, within } from '@testing-library/react';
5
- import { queryByClassName } from '@lumx/react/testing/utils/queries';
6
- import { InlineList, InlineListProps } from '.';
7
-
8
- const CLASSNAME = InlineList.className as string;
9
-
10
- const setup = (props: Partial<InlineListProps> = {}) => {
11
- render(<InlineList {...props} />);
12
- const inlineList = queryByClassName(document.body, CLASSNAME);
13
- return { props, inlineList };
14
- };
15
-
16
- describe(`<${InlineList.displayName}>`, () => {
17
- describe('Snapshots and structure', () => {
18
- it('should render default', () => {
19
- const { inlineList } = setup({ children: ['Some text', 'Some other text'] });
20
-
21
- expect(inlineList).toBeInTheDocument();
22
-
23
- const list = screen.getByRole('list');
24
- expect(list).toBeInTheDocument();
25
-
26
- const listItems = within(list).queryAllByRole('listitem');
27
- expect(listItems.length).toBe(2);
28
- expect(listItems[0]).toHaveTextContent('Some text');
29
- expect(listItems[1]).toHaveTextContent('Some other text');
30
- });
31
-
32
- it('should render with typography', () => {
33
- const { inlineList } = setup({ typography: 'body2', children: 'Some text' });
34
- expect(inlineList).toHaveClass('lumx-typography-body2');
35
- });
36
-
37
- it('should render with color', () => {
38
- const { inlineList } = setup({ color: 'blue', children: 'Some text' });
39
- expect(inlineList).toHaveClass('lumx-color-font-blue-N');
40
- });
41
-
42
- it('should render with color and variant', () => {
43
- const { inlineList } = setup({ color: 'blue', colorVariant: 'D2', children: 'Some text' });
44
- expect(inlineList).toHaveClass('lumx-color-font-blue-D2');
45
- });
46
- });
47
-
48
- // Common tests suite.
49
- commonTestsSuiteRTL(setup, {
50
- baseClassName: CLASSNAME,
51
- forwardClassName: 'inlineList',
52
- forwardAttributes: 'inlineList',
53
- });
54
- });
@@ -1,96 +0,0 @@
1
- import React, { Children, isValidElement } from 'react';
2
-
3
- import classNames from 'classnames';
4
-
5
- import { ColorVariant, ColorWithVariants, Typography } from '@lumx/react';
6
- import { GenericProps } from '@lumx/react/utils/type';
7
- import { fontColorClass, getRootClassName, getTypographyClassName } from '@lumx/core/js/utils/className';
8
- import { forwardRef } from '@lumx/react/utils/react/forwardRef';
9
-
10
- /**
11
- * Defines the props of the component.
12
- */
13
- export interface InlineListProps extends GenericProps {
14
- /**
15
- * Text color.
16
- */
17
- color?: ColorWithVariants;
18
- /**
19
- * Lightened or darkened variant of the selected color.
20
- */
21
- colorVariant?: ColorVariant;
22
- /**
23
- * Typography variant.
24
- */
25
- typography?: Typography;
26
- /**
27
- * Activate line wrap on overflow.
28
- */
29
- wrap?: boolean;
30
- /**
31
- * Children
32
- */
33
- children?: React.ReactNode;
34
- }
35
-
36
- /**
37
- * Component display name.
38
- */
39
- const COMPONENT_NAME = 'InlineList';
40
-
41
- /**
42
- * Component default class name and class prefix.
43
- */
44
- const CLASSNAME = getRootClassName(COMPONENT_NAME);
45
-
46
- /**
47
- * Component default props.
48
- */
49
- const DEFAULT_PROPS = {} as const;
50
-
51
- /**
52
- * InlineList component.
53
- *
54
- * @param props Component props.
55
- * @param ref Component ref.
56
- * @return React element.
57
- */
58
- export const InlineList = forwardRef<InlineListProps>((props, ref) => {
59
- const { className, color, colorVariant, typography, children, wrap, ...forwardedProps } = props;
60
- const typographyClassName = typography && getTypographyClassName(typography);
61
- return (
62
- // eslint-disable-next-line jsx-a11y/no-redundant-roles
63
- <ul
64
- {...forwardedProps}
65
- ref={ref as any}
66
- className={classNames(
67
- className,
68
- CLASSNAME,
69
- wrap && `${CLASSNAME}--wrap`,
70
- fontColorClass(color, colorVariant),
71
- typographyClassName,
72
- )}
73
- // Lists with removed bullet style can lose their a11y list role on some browsers
74
- role="list"
75
- >
76
- {Children.toArray(children).map((child, index) => {
77
- const key = (isValidElement(child) && child.key) || index;
78
- return (
79
- // We need to item is set as display: contents which removes the semantic.
80
- // eslint-disable-next-line jsx-a11y/no-redundant-roles
81
- <li key={key} role="listitem" className={`${CLASSNAME}__item`}>
82
- {index !== 0 && (
83
- <span className={`${CLASSNAME}__item-separator`} aria-hidden="true">
84
- {'\u00A0•\u00A0'}
85
- </span>
86
- )}
87
- {child}
88
- </li>
89
- );
90
- })}
91
- </ul>
92
- );
93
- });
94
- InlineList.displayName = COMPONENT_NAME;
95
- InlineList.className = CLASSNAME;
96
- InlineList.defaultProps = DEFAULT_PROPS;
@@ -1 +0,0 @@
1
- export * from './InlineList';
@@ -1,35 +0,0 @@
1
- import { InputHelper, Kind } from '@lumx/react';
2
- import { getSelectArgType } from '@lumx/react/stories/controls/selectArgType';
3
- import { withCombinations } from '@lumx/react/stories/decorators/withCombinations';
4
- import { withUndefined } from '@lumx/react/stories/controls/withUndefined';
5
-
6
- export default {
7
- title: 'LumX components/input-helper/Input Helper',
8
- component: InputHelper,
9
- argTypes: {
10
- kind: getSelectArgType(Kind),
11
- },
12
- args: {
13
- ...InputHelper.defaultProps,
14
- children: 'Some helper text',
15
- },
16
- };
17
-
18
- /**
19
- * Default input helper
20
- */
21
- export const Default = {};
22
-
23
- /**
24
- * All `kind` variants
25
- */
26
- export const AllKinds = {
27
- argTypes: { kind: { control: false } },
28
- decorators: [
29
- withCombinations({
30
- combinations: {
31
- rows: { key: 'kind', options: withUndefined(Kind) },
32
- },
33
- }),
34
- ],
35
- };
@@ -1,57 +0,0 @@
1
- import React from 'react';
2
-
3
- import { Kind, Theme } from '@lumx/react';
4
- import { commonTestsSuiteRTL, SetupRenderOptions } from '@lumx/react/testing/utils';
5
- import { getByClassName } from '@lumx/react/testing/utils/queries';
6
- import { render } from '@testing-library/react';
7
- import { INPUT_HELPER_CONFIGURATION } from '@lumx/react/components/input-helper/constants';
8
- import { InputHelper, InputHelperProps } from './InputHelper';
9
-
10
- const CLASSNAME = InputHelper.className as string;
11
-
12
- type SetupProps = Partial<InputHelperProps>;
13
-
14
- /**
15
- * Mounts the component and returns common DOM elements / data needed in multiple tests further down.
16
- */
17
- const setup = (propsOverride: SetupProps = {}, { wrapper }: SetupRenderOptions = {}) => {
18
- const props: any = { ...propsOverride };
19
- render(<InputHelper {...props} />, { wrapper });
20
- const helper = getByClassName(document.body, CLASSNAME);
21
-
22
- return { helper, props };
23
- };
24
-
25
- describe(`<${InputHelper.displayName}>`, () => {
26
- describe('Props', () => {
27
- it('should render text', () => {
28
- const { props, helper } = setup({ children: 'helper text' });
29
-
30
- expect(helper).toHaveTextContent(props.children);
31
- expect(helper.className).toMatchInlineSnapshot('"lumx-input-helper lumx-input-helper--theme-light"');
32
- });
33
-
34
- it('should render dark theme', () => {
35
- const { helper } = setup({ theme: Theme.dark });
36
- expect(helper).toHaveClass('lumx-input-helper--theme-dark');
37
- });
38
-
39
- it.each(Object.values(Kind))('should render kind %s', (kind) => {
40
- const { helper } = setup({ kind });
41
- const { color } = INPUT_HELPER_CONFIGURATION[kind as any] || {};
42
- if (color) expect(helper).toHaveClass(`${CLASSNAME}--color-${color}`);
43
- });
44
- });
45
-
46
- commonTestsSuiteRTL(setup, {
47
- baseClassName: CLASSNAME,
48
- forwardClassName: 'helper',
49
- forwardAttributes: 'helper',
50
- applyTheme: {
51
- affects: [{ element: 'helper' }],
52
- viaProp: true,
53
- viaContext: true,
54
- defaultTheme: 'light',
55
- },
56
- });
57
- });