@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,4 +0,0 @@
1
- /**
2
- * Get current browser locale.
3
- */
4
- export const getCurrentLocale = (): string => navigator.languages?.[0] || navigator.language;
@@ -1,17 +0,0 @@
1
- import { parseLocale } from '@lumx/react/utils/locale/parseLocale';
2
-
3
- describe(parseLocale.name, () => {
4
- it('should parse various locale formats', () => {
5
- expect(parseLocale('en')).toEqual({ code: 'en', language: 'en' });
6
- expect(parseLocale('EN')).toEqual({ code: 'en', language: 'en' });
7
- expect(parseLocale('en-US')).toEqual({ code: 'en-US', language: 'en', region: 'US' });
8
- expect(parseLocale('en-us')).toEqual({ code: 'en-US', language: 'en', region: 'US' });
9
- expect(parseLocale('en_us')).toEqual({ code: 'en-US', language: 'en', region: 'US' });
10
- expect(parseLocale('EN-US')).toEqual({ code: 'en-US', language: 'en', region: 'US' });
11
- });
12
-
13
- it('should fail on invalid locale', () => {
14
- expect(parseLocale('-')).toBe(undefined);
15
- expect(parseLocale('-foo')).toBe(undefined);
16
- });
17
- });
@@ -1,23 +0,0 @@
1
- import { Locale } from '@lumx/react/utils/locale/types';
2
-
3
- /**
4
- * Parse locale code
5
- * @example
6
- * parseLocale('EN') // => { code: 'en', language: 'en' }
7
- * parseLocale('en_us') // => { code: 'en-US', language: 'en', region: 'US' }
8
- * parseLocale('EN-US') // => { code: 'en-US', language: 'en', region: 'US' }
9
- */
10
- export function parseLocale(locale: string): Locale | undefined {
11
- const [rawLanguage, rawRegion] = locale.split(/[-_]/);
12
- if (!rawLanguage) {
13
- return undefined;
14
- }
15
- const language = rawLanguage.toLowerCase();
16
- let region: string | undefined;
17
- let code = language;
18
- if (rawRegion) {
19
- region = rawRegion.toUpperCase();
20
- code += `-${region}`;
21
- }
22
- return { code, region, language };
23
- }
@@ -1,8 +0,0 @@
1
- export interface Locale {
2
- /** ISO locale code `lang-REGION` (ex: `en-US`) */
3
- code: string;
4
- /** ISO locale language code (ex: `en`) */
5
- language: string;
6
- /** ISO locale region code (ex: `US`) */
7
- region?: string;
8
- }
@@ -1,17 +0,0 @@
1
- /**
2
- * Clamp value in range.
3
- *
4
- * @param value Value to clamp.
5
- * @param min Minimum value.
6
- * @param max Maximum value.
7
- * @return Clamped value.
8
- */
9
- export const clamp = (value: number, min: number, max: number): number => {
10
- if (value < min) {
11
- return min;
12
- }
13
- if (value > max) {
14
- return max;
15
- }
16
- return value;
17
- };
@@ -1,25 +0,0 @@
1
- import { isEqual } from './isEqual';
2
-
3
- test(isEqual.name, () => {
4
- expect(isEqual('', '')).toBe(true);
5
- expect(isEqual(0, 0)).toBe(true);
6
- expect(isEqual(Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY)).toBe(true);
7
-
8
- expect(isEqual('', 0)).toBe(false);
9
-
10
- expect(isEqual({}, {})).toBe(true);
11
- expect(isEqual({ a: 1 }, { a: 1 })).toBe(true);
12
- expect(isEqual({ a: { a: 1 } }, { a: { a: 1 } })).toBe(true);
13
-
14
- expect(isEqual([], [])).toBe(true);
15
-
16
- expect(isEqual([1], [2])).toBe(false);
17
- expect(isEqual([1], [1, 2])).toBe(false);
18
- expect(isEqual([1, 2], [2, 1])).toBe(false);
19
-
20
- expect(isEqual({ a: 1 }, { a: 2 })).toBe(false);
21
- expect(isEqual({ a: 1 }, {})).toBe(false);
22
- expect(isEqual({}, { a: 1 })).toBe(false);
23
- expect(isEqual({ a: { a: 1 } }, { a: { a: 2 } })).toBe(false);
24
- expect(isEqual({ a: 1 }, { a: 1, b: 1 })).toBe(false);
25
- });
@@ -1,11 +0,0 @@
1
- /** Minimal recursive deep equal of JS values */
2
- export function isEqual(obj1: any, obj2: any): boolean {
3
- if (obj1 === obj2) return true;
4
- if (typeof obj1 === 'object' && typeof obj2 === 'object') {
5
- const keys1 = Object.keys(obj1);
6
- const keys2 = Object.keys(obj2);
7
- if (keys1.length !== keys2.length) return false;
8
- return keys1.every((key1) => isEqual(obj1[key1], obj2[key1]));
9
- }
10
- return false;
11
- }
@@ -1,27 +0,0 @@
1
- import partition from 'lodash/partition';
2
- import { partitionMulti } from './partitionMulti';
3
-
4
- describe('partitionMulti', () => {
5
- it('should act like partition for single predicate', () => {
6
- const data = [0, 1, 2, 3, 4, 5];
7
- const isEven = (n: number): boolean => n % 2 === 0;
8
-
9
- const expected = partition(data, isEven);
10
- const actual = partitionMulti(data, [isEven]);
11
-
12
- expect(actual).toEqual(expected);
13
- });
14
-
15
- it('should partition on multiple predicates', () => {
16
- type T = string | number | boolean;
17
- const data: T[] = ['a', 1, 'b', false, true];
18
- const isString = (s: T): boolean => typeof s === 'string';
19
- const isNumber = (s: T): boolean => typeof s === 'number';
20
-
21
- const [strings, numbers, others] = partitionMulti(data, [isString, isNumber]);
22
-
23
- expect(strings).toEqual(['a', 'b']);
24
- expect(numbers).toEqual([1]);
25
- expect(others).toEqual([false, true]);
26
- });
27
- });
@@ -1,29 +0,0 @@
1
- import concat from 'lodash/concat';
2
- import dropRight from 'lodash/dropRight';
3
- import last from 'lodash/last';
4
- import partition from 'lodash/partition';
5
- import reduce from 'lodash/reduce';
6
-
7
- import { Predicate } from '@lumx/core/js/types';
8
-
9
- /**
10
- * Similar to lodash `partition` function but working with multiple predicates.
11
- *
12
- * @example
13
- * const isString = (s) => typeof s === 'string'
14
- * const isNumber = (s) => typeof s === 'number'
15
- * const [strings, numbers, others] = partitionMulti(['a', 1, 'b', false], [isString, isNumber])
16
- * //=> [['a', 'b'], [1], [false]]
17
- *
18
- * @param elements array of elements
19
- * @param predicates array of predicates to apply on elements
20
- * @return partitioned elements by the given predicates
21
- */
22
- export function partitionMulti<T>(elements: T[], predicates: Array<Predicate<T>>): T[][] {
23
- return reduce(
24
- predicates,
25
- (partitioned: T[][], predicate: Predicate<T>) =>
26
- concat(dropRight(partitioned), partition(last(partitioned), predicate)),
27
- [elements],
28
- );
29
- }
@@ -1,20 +0,0 @@
1
- import React, { useLayoutEffect } from 'react';
2
-
3
- /**
4
- * Helper component using useLayoutEffect to trigger a callback on before unmount.
5
- *
6
- * The callback must be wrapped in a React ref to avoid updating the `useLayoutEffect` before the un-mount
7
- */
8
- export const OnBeforeUnmount = ({ callbackRef }: { callbackRef: React.RefObject<(() => void) | undefined> }) => {
9
- useLayoutEffect(
10
- () => {
11
- return () => {
12
- // On unmount
13
- // eslint-disable-next-line react-hooks/exhaustive-deps
14
- callbackRef.current?.();
15
- };
16
- }, // eslint-disable-next-line react-hooks/exhaustive-deps
17
- [],
18
- );
19
- return null;
20
- };
@@ -1,32 +0,0 @@
1
- import get from 'lodash/get';
2
- import { Children, Key, ReactChild, ReactNode, cloneElement, isValidElement } from 'react';
3
- import { isFragment } from 'react-is';
4
-
5
- /**
6
- * Flatten list of react nodes removing fragments and adding keys.
7
- * based on: https://github.com/grrowl/react-keyed-flatten-children/blob/5d421644a449765ddd62b659946196b4b5d7b135/index.ts
8
- *
9
- * @param children React nodes to flatten.
10
- * @return Flattened react nodes.
11
- * @deprecated This function was used to develop keyboard navigation in the List component,
12
- * but we will replace this with a better method that does not require to hack the children inspection
13
- *
14
- * TODO: remove List keyboard navigation once we have provided alternative component (Menu, Combobox, etc.),
15
- * remove this function and then remove react-is from the dependencies
16
- */
17
- export function flattenChildren(children: ReactNode) {
18
- function recur(nodes: ReactNode, keys: Key[] = []) {
19
- return Children.toArray(nodes).reduce((acc: ReactChild[], node, index) => {
20
- const nodeKeys = keys.concat(get(node, 'key') ?? index);
21
- if (isFragment(node)) {
22
- acc.push(...recur(node.props.children, nodeKeys));
23
- } else if (isValidElement(node)) {
24
- acc.push(cloneElement(node, { key: nodeKeys.join('.') }));
25
- } else if (typeof node === 'string' || typeof node === 'number') {
26
- acc.push(node);
27
- }
28
- return acc;
29
- }, []);
30
- }
31
- return recur(children);
32
- }
@@ -1,11 +0,0 @@
1
- import React, { type ReactNode, type ForwardedRef } from 'react';
2
- import type { Comp } from '../type';
3
-
4
- type ForwardRef = <P, T = HTMLElement, A = unknown>(
5
- render: (props: P, ref: ForwardedRef<T>) => ReactNode,
6
- ) => Comp<P, T> & A;
7
-
8
- /**
9
- * React.forwardRef but re-typed to attach some custom metadata on our components.
10
- */
11
- export const forwardRef = React.forwardRef as ForwardRef;
@@ -1,9 +0,0 @@
1
- import React, { type ElementType } from 'react';
2
- import type { ComponentRef } from '@lumx/react/utils/type';
3
-
4
- type ForwardRefPolymorphic = <E extends ElementType, P extends { as?: E }>(
5
- render: (props: P, ref: ComponentRef<E>) => React.ReactNode,
6
- ) => (props: P & React.ComponentProps<E> & { ref?: ComponentRef<E> }) => React.JSX.Element;
7
-
8
- /** Same as `React.forwardRef` but inferring Ref type from the `as` prop. */
9
- export const forwardRefPolymorphic = React.forwardRef as ForwardRefPolymorphic;
@@ -1,33 +0,0 @@
1
- import { Falsy } from '@lumx/react/utils/type';
2
- import { MutableRefObject, useMemo } from 'react';
3
-
4
- type FnRef<T> = (value: T) => void;
5
-
6
- /**
7
- * Merge refs into a single function ref.
8
- *
9
- * @param refs React references to merge.
10
- * @return the merged ref.
11
- */
12
- export function mergeRefs<T>(...refs: Array<MutableRefObject<T | null> | FnRef<T> | Falsy>): FnRef<T> {
13
- return (value) =>
14
- refs.forEach((ref) => {
15
- if (typeof ref === 'function') {
16
- ref(value);
17
- } else if (ref) {
18
- // eslint-disable-next-line no-param-reassign
19
- (ref as MutableRefObject<T>).current = value;
20
- }
21
- });
22
- }
23
-
24
- /**
25
- * Same as `mergeRefs` but memoized
26
- */
27
- export const useMergeRefs = <T>(...refs: Array<MutableRefObject<T | null> | FnRef<T> | Falsy>) => {
28
- return useMemo(
29
- () => mergeRefs(...refs),
30
- // eslint-disable-next-line react-hooks/exhaustive-deps
31
- refs,
32
- );
33
- };
@@ -1,16 +0,0 @@
1
- import React, { ReactElement, ReactNode } from 'react';
2
- import { renderLink } from './renderLink';
3
-
4
- interface Props {
5
- linkAs?: any;
6
- href?: any;
7
- }
8
-
9
- /**
10
- * Render <button> HTML component, fallbacks to `<a>` when a `href` is provided or a custom component with `linkAs`.
11
- */
12
- export const renderButtonOrLink = <P extends Props>(props: P, ...children: ReactNode[]): ReactElement => {
13
- const { linkAs, href, ...forwardedProps } = props;
14
- if (linkAs || href) return renderLink(props, ...children);
15
- return React.createElement('button', { type: 'button', ...forwardedProps }, ...children);
16
- };
@@ -1,17 +0,0 @@
1
- import React, { ReactElement, ReactNode } from 'react';
2
-
3
- interface Props {
4
- linkAs?: any;
5
- }
6
-
7
- /**
8
- * Render link with default <a> HTML component or a custom one provided by `linkAs`.
9
- *
10
- * Can be used to inject the `Link` component from `react-router` and provide better a11y on LumX components.
11
- *
12
- * @param linkAs Custom link component.
13
- * @param children Link children.
14
- * @return A link.
15
- */
16
- export const renderLink = <P extends Props>({ linkAs, ...forwardedProps }: P, ...children: ReactNode[]): ReactElement =>
17
- React.createElement(linkAs || 'a', forwardedProps, ...children);
@@ -1,18 +0,0 @@
1
- import { DOCUMENT } from '@lumx/react/constants';
2
- import type { Comp } from '@lumx/react/utils/type';
3
- import React from 'react';
4
-
5
- /**
6
- * HOC component wrapping a component to skip render if predicate return falsy
7
- */
8
- export const skipRender = <P, T>(predicate: (props: P) => any, Component: Comp<P, T>) => {
9
- const Wrapper = React.forwardRef<T, P>((props, ref) => {
10
- if (!DOCUMENT) {
11
- // Can't render in SSR.
12
- return null;
13
- }
14
- return <Component ref={ref} {...props} />;
15
- });
16
- Wrapper.displayName = Component.displayName;
17
- return Wrapper;
18
- };
@@ -1,7 +0,0 @@
1
- import { MaybeElementOrRef } from '@lumx/react/utils/type';
2
-
3
- /** Unref a react ref or element */
4
- export function unref(maybeElement: MaybeElementOrRef<HTMLElement>) {
5
- if (maybeElement instanceof HTMLElement) return maybeElement;
6
- return maybeElement?.current;
7
- }
@@ -1,37 +0,0 @@
1
- import React, { Fragment } from 'react';
2
-
3
- import { Icon } from '@lumx/react';
4
- import { mdiEarth, mdiFoodApple, mdiPencil } from '@lumx/icons';
5
- import { wrapChildrenIconWithSpaces } from './wrapChildrenIconWithSpaces';
6
-
7
- describe(wrapChildrenIconWithSpaces, () => {
8
- it('should ignore null or undefined children', () => {
9
- expect(wrapChildrenIconWithSpaces(undefined)).toBeUndefined();
10
- expect(wrapChildrenIconWithSpaces(null)).toBeUndefined();
11
- });
12
-
13
- it('should wrap icons with spaces', () => {
14
- expect(
15
- wrapChildrenIconWithSpaces(
16
- <>
17
- <Icon icon={mdiEarth} />a string
18
- <>
19
- some more string with
20
- <Icon icon={mdiFoodApple} />
21
- </>
22
- {['array with', <Icon key="custom-key" icon={mdiPencil} />]}
23
- </>,
24
- ),
25
- ).toEqual([
26
- // prettier-ignore
27
- <Fragment key=".0">
28
- {' '}
29
- <Icon key=".0" icon={mdiEarth} />{' '}a string
30
- <Fragment key=".2">
31
- some more string with{' '}<Icon key=".1" icon={mdiFoodApple} />{' '}
32
- </Fragment>
33
- array with{' '}<Icon key=".3:$custom-key" icon={mdiPencil} />{' '}
34
- </Fragment>,
35
- ]);
36
- });
37
- });
@@ -1,22 +0,0 @@
1
- import React, { Children } from 'react';
2
- import { isComponentType } from '@lumx/react/utils/type';
3
- import { Icon } from '@lumx/react';
4
-
5
- /** Force wrap spaces around icons to make sure they are never stuck against text. */
6
- export function wrapChildrenIconWithSpaces(children: React.ReactNode): React.ReactNode {
7
- if (children === null || children === undefined) return undefined;
8
- return Children.toArray(children).flatMap((child) => {
9
- if (isComponentType(Icon)(child)) {
10
- return [' ', child, ' '];
11
- }
12
- if (
13
- React.isValidElement(child) &&
14
- child.props &&
15
- typeof child.props === 'object' &&
16
- 'children' in child.props
17
- ) {
18
- return React.cloneElement(child, undefined, wrapChildrenIconWithSpaces(child.props.children));
19
- }
20
- return child;
21
- });
22
- }
@@ -1,16 +0,0 @@
1
- import React from 'react';
2
- import type { Theme } from '@lumx/react';
3
-
4
- type ThemeContextValue = Theme | undefined;
5
- export const ThemeContext = React.createContext<ThemeContextValue>(undefined);
6
-
7
- /** Provide a theme context to all children. */
8
- export const ThemeProvider = ThemeContext.Provider as React.FC<{
9
- value: ThemeContextValue;
10
- children?: React.ReactNode;
11
- }>;
12
-
13
- /** Get the theme in the current context. */
14
- export function useTheme(): ThemeContextValue {
15
- return React.useContext(ThemeContext);
16
- }
@@ -1,4 +0,0 @@
1
- import type { Theme } from '@lumx/react';
2
-
3
- /** Invert the color of the given theme. */
4
- export const invertTheme = (theme: Theme): Theme => (theme === 'light' ? 'dark' : 'light');
@@ -1,14 +0,0 @@
1
- import type { ReactElement, Ref } from 'react';
2
-
3
- /** LumX Component Type. */
4
- export type Comp<P, T = HTMLElement> = {
5
- (props: P & { ref?: Ref<T> }): ReactElement | null;
6
- /** React component type. */
7
- readonly $$typeof: symbol;
8
- /** Component default props. */
9
- defaultProps?: Partial<P>;
10
- /** Component name. */
11
- displayName?: string;
12
- /** Component base class name. */
13
- className?: string;
14
- };
@@ -1,16 +0,0 @@
1
- import type React from 'react';
2
- import type { Comp } from './Comp';
3
-
4
- /**
5
- * Extract ref type for a component or JSX intrinsic element
6
- *
7
- * @example ComponentRef<'div'> => React.Ref<HTMLDivElement>
8
- * @example ComponentRef<Button> => React.Ref<HTMLButtonElement
9
- */
10
- export type ComponentRef<C> = C extends keyof JSX.IntrinsicElements
11
- ? JSX.IntrinsicElements[C]['ref']
12
- : C extends Comp<any, infer T>
13
- ? React.Ref<T>
14
- : C extends React.JSXElementConstructor<{ ref?: infer R }>
15
- ? R
16
- : never;
@@ -1,6 +0,0 @@
1
- import type { AriaAttributes } from 'react';
2
-
3
- export interface HasAriaDisabled {
4
- /** Similar to `disabled` but does not block pointer events or focus */
5
- 'aria-disabled'?: AriaAttributes['aria-disabled'];
6
- }
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
-
3
- export type HasPolymorphicAs<E extends React.ElementType> = React.ComponentPropsWithoutRef<E> & {
4
- /**
5
- * Customize the rendered component.
6
- */
7
- as?: E;
8
- };
@@ -1,6 +0,0 @@
1
- import type React from 'react';
2
-
3
- /**
4
- * Maybe a HTMLElement or a React ref of a HTMLElement
5
- */
6
- export type MaybeElementOrRef<E extends HTMLElement> = E | React.RefObject<E | null> | null | undefined;
@@ -1,8 +0,0 @@
1
- export type * from '@lumx/core/js/types';
2
-
3
- export type { Comp } from './Comp';
4
- export type { ComponentRef } from './ComponentRef';
5
- export type { HasPolymorphicAs } from './HasPolymorphicAs';
6
- export { isComponent } from './isComponent';
7
- export { isComponentType } from './isComponentType';
8
- export type { MaybeElementOrRef } from './MaybeElementOrRef';
@@ -1,33 +0,0 @@
1
- import type { ReactElement, ReactNode } from 'react';
2
- import get from 'lodash/get';
3
- import type { Comp } from './Comp';
4
-
5
- /**
6
- * Properties of a component to use to determine it's name.
7
- * In the order of preference.
8
- */
9
- const NAME_PROPERTIES: string[] = [
10
- 'type',
11
- 'type.displayName',
12
- 'displayName',
13
- 'name',
14
- 'type.name',
15
- 'props.mdxType',
16
- '_reactInternalFiber.elementType.name',
17
- ];
18
- /**
19
- * Create a predicate function that checks if a ReactNode is a react element from the given component.
20
- *
21
- * @param component React function component or the component name
22
- * @return predicate returning true if value is instance of the component
23
- */
24
- export const isComponent =
25
- <C>(component: Comp<C, any> | string) =>
26
- (instance: ReactNode): instance is ReactElement => {
27
- const componentName = typeof component === 'string' ? component : component.displayName;
28
-
29
- return (
30
- !!get(instance, '$$typeof') &&
31
- NAME_PROPERTIES.some((nameProperty: string): boolean => get(instance, nameProperty) === componentName)
32
- );
33
- };
@@ -1,9 +0,0 @@
1
- import React, { ReactElement, ReactNode } from 'react';
2
-
3
- /**
4
- * Similar to `isComponent` but more precise as it's not based on the component `displayName` but on the component function reference.
5
- */
6
- export const isComponentType =
7
- (type: ReactElement['type']) =>
8
- (node: ReactNode): node is ReactElement =>
9
- React.isValidElement(node) && node.type === type;