@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,114 +0,0 @@
1
- import { Dispatch, createContext, useCallback, useContext, useEffect, useMemo } from 'react';
2
- import { useId } from '@lumx/react/hooks/useId';
3
-
4
- type TabType = 'tab' | 'tabPanel';
5
-
6
- export interface State {
7
- isLazy: boolean;
8
- shouldActivateOnFocus: boolean;
9
- activeTabIndex: number;
10
- ids: Record<TabType, string[]>;
11
- }
12
-
13
- export const INIT_STATE: State = {
14
- isLazy: true,
15
- shouldActivateOnFocus: false,
16
- activeTabIndex: 0,
17
- ids: { tab: [], tabPanel: [] },
18
- };
19
-
20
- export type Action =
21
- | { type: 'update'; payload: Partial<State> }
22
- | { type: 'setActiveTabIndex'; payload: number }
23
- | { type: 'register'; payload: { type: TabType; id: string } }
24
- | { type: 'unregister'; payload: { type: TabType; id: string } };
25
-
26
- export const reducer = (state: State, action: Action): State => {
27
- switch (action.type) {
28
- case 'update':
29
- return { ...state, ...action.payload };
30
- case 'setActiveTabIndex': {
31
- if (state.activeTabIndex === action.payload) {
32
- return state;
33
- }
34
- // Change active tab index.
35
- return { ...state, activeTabIndex: action.payload };
36
- }
37
- case 'register': {
38
- const { type, id } = action.payload;
39
- // Append tab/tabPanel id in state.
40
- return { ...state, ids: { ...state.ids, [type]: [...state.ids[type], id] } };
41
- }
42
- case 'unregister': {
43
- const { type, id } = action.payload;
44
- const index = state.ids[type].indexOf(id);
45
- if (index === -1) return state;
46
- // Remove tab & tab panel at index.
47
- const tabIds = [...state.ids.tab];
48
- tabIds.splice(index, 1);
49
- const tabPanelIds = [...state.ids.tabPanel];
50
- tabPanelIds.splice(index, 1);
51
- return {
52
- ...state,
53
- ids: { tab: tabIds, tabPanel: tabPanelIds },
54
- };
55
- }
56
- default:
57
- return state;
58
- }
59
- };
60
-
61
- export const TabProviderContext = createContext<[State, Dispatch<Action>] | null>(null);
62
-
63
- export type TabState = Pick<Required<State>, 'isLazy' | 'shouldActivateOnFocus'> & {
64
- isActive: boolean;
65
- tabId: string;
66
- tabPanelId: string;
67
- changeToTab(): void;
68
- };
69
-
70
- /* eslint-disable react-hooks/rules-of-hooks */
71
- export const useTabProviderContext = (type: TabType, originalId?: string): undefined | TabState => {
72
- const context = useContext(TabProviderContext);
73
- if (!context) {
74
- return undefined;
75
- }
76
- const [state, dispatch] = context;
77
-
78
- // Current tab or tab panel id.
79
- const generatedId = useId();
80
- const id = originalId || generatedId;
81
-
82
- useEffect(
83
- () => {
84
- // On mount: register tab or tab panel id.
85
- dispatch({ type: 'register', payload: { type, id } });
86
- return () => {
87
- // On unmount: unregister tab or tab panel id.
88
- dispatch({ type: 'unregister', payload: { type, id } });
89
- };
90
- },
91
- // eslint-disable-next-line react-hooks/exhaustive-deps
92
- [],
93
- );
94
-
95
- // Find tab/tabPanel index using it's id.
96
- const index = useMemo(() => state.ids[type].indexOf(id), [state.ids, type, id]);
97
- const tabId = useMemo(() => state.ids.tab[index] || '', [state, index]);
98
- const tabPanelId = useMemo(() => state.ids.tabPanel[index] || '', [state, index]);
99
- const isActive = useMemo(() => state.activeTabIndex === index, [state, index]);
100
- const changeToTab = useCallback(() => dispatch({ type: 'setActiveTabIndex', payload: index }), [dispatch, index]);
101
- return {
102
- isLazy: state.isLazy,
103
- shouldActivateOnFocus: state.shouldActivateOnFocus,
104
- tabId,
105
- tabPanelId,
106
- isActive,
107
- changeToTab,
108
- };
109
- };
110
-
111
- export const useTabProviderContextState = (): State | undefined => {
112
- const context = useContext(TabProviderContext);
113
- return context?.[0];
114
- };
@@ -1,39 +0,0 @@
1
- /* istanbul ignore file */
2
-
3
- /**
4
- * Test util module. Do not import in production code !
5
- */
6
-
7
- // eslint-disable-next-line import/no-extraneous-dependencies
8
- import { screen, within } from '@testing-library/react';
9
-
10
- /** RTL queries for tabs */
11
- export const query = {
12
- tabList: (name: string) => screen.getByRole('tablist', { name }),
13
- tabs: (tabList?: any) => (tabList ? within(tabList) : screen).getAllByRole('tab'),
14
- tab: (name: string, tabList?: any) => (tabList ? within(tabList) : screen).getByRole('tab', { name }),
15
- tabPanel: (name: string) => screen.getByRole('tabpanel', { name }),
16
- };
17
-
18
- /** Assert that the given tab is active */
19
- export const checkTabActive = (activeTabName: string, { isLazy = true } = {}) => {
20
- for (const tab of query.tabs()) {
21
- const isTabActive = tab.textContent === activeTabName;
22
-
23
- // Tab state
24
- expect(tab).toHaveAttribute('aria-selected', String(isTabActive));
25
- expect(tab).toHaveAttribute('tabindex', isTabActive ? '0' : '-1');
26
-
27
- const tabPanel = query.tabPanel(tab.textContent as string);
28
-
29
- // Tab panel state
30
- expect(tabPanel).toHaveAttribute('tabindex', isTabActive ? '0' : '-1');
31
-
32
- if (!isTabActive && isLazy) {
33
- // Tab panel content not rendered when isLazy and not active
34
- expect(tabPanel).toBeEmptyDOMElement();
35
- } else {
36
- expect(tabPanel).not.toBeEmptyDOMElement();
37
- }
38
- }
39
- };
@@ -1,177 +0,0 @@
1
- import { ALL_TYPOGRAPHY, allTypographyArgType } from '@lumx/react/stories/controls/typography';
2
- import React from 'react';
3
-
4
- import { colorArgType, colorVariantArgType } from '@lumx/react/stories/controls/color';
5
- import { textElementArgType } from '@lumx/react/stories/controls/element';
6
- import { withUndefined } from '@lumx/react/stories/controls/withUndefined';
7
- import { loremIpsum } from '@lumx/react/stories/utils/lorem';
8
- import { withCombinations } from '@lumx/react/stories/decorators/withCombinations';
9
- import { Button, ColorPalette, ColorVariant, Icon, WhiteSpace } from '@lumx/react';
10
- import { mdiEarth, mdiHeart } from '@lumx/icons';
11
- import { withResizableBox } from '@lumx/react/stories/decorators/withResizableBox';
12
- import { getSelectArgType } from '@lumx/react/stories/controls/selectArgType';
13
-
14
- import { Text } from './Text';
15
-
16
- export default {
17
- title: 'LumX components/text/Text',
18
- component: Text,
19
- args: Text.defaultProps,
20
- argTypes: {
21
- children: { control: false },
22
- as: textElementArgType,
23
- typography: allTypographyArgType,
24
- color: colorArgType,
25
- colorVariant: colorVariantArgType,
26
- whiteSpace: getSelectArgType(WhiteSpace),
27
- },
28
- };
29
-
30
- /**
31
- * Default text component as a paragraph
32
- */
33
- export const Default = {
34
- args: {
35
- as: 'p',
36
- children: 'Some text',
37
- },
38
- };
39
-
40
- /**
41
- * Text containing icons (should match font size)
42
- */
43
- export const WithIcon = {
44
- args: {
45
- ...Default.args,
46
- children: (
47
- <>
48
- Some text <Icon icon={mdiHeart} /> with icons <Icon icon={mdiEarth} />
49
- </>
50
- ),
51
- },
52
- };
53
-
54
- /**
55
- * Long text should wrap by default
56
- */
57
- export const LongText = {
58
- args: {
59
- ...Default.args,
60
- children: loremIpsum('tiny'),
61
- },
62
- decorators: [withResizableBox()],
63
- };
64
-
65
- /**
66
- * Long text without wrapping
67
- */
68
- export const NoWrap = {
69
- ...LongText,
70
- args: {
71
- ...LongText.args,
72
- noWrap: true,
73
- },
74
- };
75
-
76
- /**
77
- * Long text with line breaks
78
- */
79
- export const AllWhiteSpace = {
80
- args: {
81
- ...Default.args,
82
- children: `
83
- But ere she from the church-door stepped She smiled and told us why: 'It was a wicked woman's curse,' Quoth she,
84
- 'and what care I?' She smiled, and smiled, and passed it off Ere from the door she stept—
85
- `,
86
- },
87
- decorators: [
88
- withCombinations({
89
- combinations: {
90
- rows: { key: 'whiteSpace', options: Object.values(WhiteSpace) },
91
- },
92
- tableStyle: { width: 500, tableLayout: 'fixed' },
93
- firstColStyle: { width: 100 },
94
- cellStyle: { border: '1px solid #000', width: '100%' },
95
- }),
96
- ],
97
- };
98
-
99
- /**
100
- * Long text with single line truncate ellipsis
101
- */
102
- export const Truncate = {
103
- ...LongText,
104
- args: {
105
- ...LongText.args,
106
- truncate: true,
107
- },
108
- };
109
-
110
- /**
111
- * Test the update of the `title` attribute when text overflows
112
- */
113
- export const TestUpdateTruncateTitleLabel = {
114
- render(args: any) {
115
- // eslint-disable-next-line react-hooks/rules-of-hooks
116
- const [content, setContent] = React.useState<string>('Some text');
117
- // eslint-disable-next-line react-hooks/rules-of-hooks
118
- const lengthen = React.useCallback(() => setContent((prevContent) => `${prevContent} ${prevContent}`), []);
119
- return (
120
- <>
121
- <Button onClick={lengthen}>Lengthen text</Button>
122
- <Text as="p" truncate style={{ maxWidth: 300 }} {...args}>
123
- {content}
124
- </Text>
125
- </>
126
- );
127
- },
128
- // Disables Chromatic snapshot (not relevant for this story).
129
- parameters: { chromatic: { disable: true } },
130
- };
131
-
132
- /**
133
- * Long text with multi line truncate ellipsis
134
- */
135
- export const TruncateMultiline = {
136
- ...LongText,
137
- args: {
138
- ...LongText.args,
139
- truncate: { lines: 2 },
140
- },
141
- };
142
-
143
- /**
144
- * All typographies
145
- */
146
- export const AllTypography = {
147
- ...WithIcon,
148
- argTypes: {
149
- typography: { control: false },
150
- },
151
- decorators: [
152
- withCombinations({
153
- combinations: {
154
- rows: { key: 'typography', options: withUndefined(ALL_TYPOGRAPHY) },
155
- },
156
- }),
157
- ],
158
- };
159
-
160
- /**
161
- * All combinations of color and color variants
162
- */
163
- export const AllColors = {
164
- ...WithIcon,
165
- argTypes: {
166
- color: { control: false },
167
- colorVariant: { control: false },
168
- },
169
- decorators: [
170
- withCombinations({
171
- combinations: {
172
- rows: { key: 'color', options: withUndefined(ColorPalette) },
173
- cols: { key: 'colorVariant', options: withUndefined(ColorVariant) },
174
- },
175
- }),
176
- ],
177
- };
@@ -1,94 +0,0 @@
1
- import React from 'react';
2
-
3
- import { commonTestsSuiteRTL } from '@lumx/react/testing/utils';
4
- import { mdiEarth } from '@lumx/icons';
5
- import { Icon } from '@lumx/react';
6
- import { render } from '@testing-library/react';
7
- import { getByClassName, queryAllByClassName } from '@lumx/react/testing/utils/queries';
8
- import { Text, TextProps } from '.';
9
-
10
- const setup = (props: Partial<TextProps> = {}) => {
11
- const { container } = render(<Text as="span" {...props} />);
12
- const element = getByClassName(container, Text.className as string);
13
- return { props, container, element };
14
- };
15
-
16
- describe(`<${Text.displayName}>`, () => {
17
- describe('Render', () => {
18
- it('should render default', () => {
19
- const { element } = setup({ children: 'Some text' });
20
- expect(element.tagName).toBe('SPAN');
21
- });
22
-
23
- it('should render with as', () => {
24
- const { element } = setup({ children: 'Some text', as: 'p' });
25
- expect(element.tagName).toBe('P');
26
- });
27
-
28
- it('should render with typography', () => {
29
- const { element } = setup({ typography: 'body2', children: 'Some text' });
30
- expect(element.tagName).toBe('SPAN');
31
- expect(element).toHaveClass('lumx-typography-body2');
32
- });
33
-
34
- it('should render with color', () => {
35
- const { element } = setup({ color: 'blue', children: 'Some text' });
36
- expect(element.tagName).toBe('SPAN');
37
- expect(element).toHaveClass('lumx-color-font-blue-N');
38
- });
39
-
40
- it('should render with color and variant', () => {
41
- const { element } = setup({ color: 'blue', colorVariant: 'D2', children: 'Some text' });
42
- expect(element.tagName).toBe('SPAN');
43
- expect(element).toHaveClass('lumx-color-font-blue-D2');
44
- });
45
-
46
- it('should render truncated', () => {
47
- const { element } = setup({ truncate: true });
48
- expect(element.tagName).toBe('SPAN');
49
- expect(element).toHaveClass('lumx-text--is-truncated');
50
- });
51
-
52
- it('should render truncated multiline', () => {
53
- const { element } = setup({ truncate: { lines: 2 } });
54
- expect(element.tagName).toBe('SPAN');
55
- expect(element).toHaveClass('lumx-text--is-truncated-multiline');
56
- });
57
-
58
- it('should render noWrap', () => {
59
- const { element } = setup({ noWrap: true });
60
- expect(element.tagName).toBe('SPAN');
61
- expect(element).toHaveClass('lumx-text--no-wrap');
62
- });
63
-
64
- it('should render with custom whiteSpace', () => {
65
- const { element } = setup({ whiteSpace: 'pre-wrap' });
66
- expect(element.tagName).toBe('SPAN');
67
- expect(element).toHaveStyle({ '--lumx-text-white-space': 'pre-wrap' });
68
- });
69
-
70
- it('should wrap icons with spaces', () => {
71
- const { element } = setup({ children: ['Some text', <Icon key="icon" icon={mdiEarth} />, 'with icon'] });
72
- const icons = queryAllByClassName(element, Icon.className as string);
73
- expect(icons).toHaveLength(1);
74
-
75
- // Icons are all wrapped with spaces
76
- for (const icon of icons) {
77
- expect((icon.previousSibling as any).textContent).toEqual(' ');
78
- expect((icon.nextSibling as any).textContent).toEqual(' ');
79
- }
80
- });
81
-
82
- it('should render dangerouslySetInnerHTML', () => {
83
- const { element } = setup({ dangerouslySetInnerHTML: { __html: '<strong>HTML text</strong>' } });
84
- expect(element).toHaveTextContent('HTML text');
85
- });
86
- });
87
-
88
- // Common tests suite.
89
- commonTestsSuiteRTL(setup, {
90
- baseClassName: Text.className as string,
91
- forwardClassName: 'element',
92
- forwardAttributes: 'element',
93
- });
94
- });
@@ -1,141 +0,0 @@
1
- import React from 'react';
2
-
3
- import classNames from 'classnames';
4
-
5
- import { ColorWithVariants, ColorVariant, Typography, WhiteSpace } from '@lumx/react';
6
- import { GenericProps, TextElement } from '@lumx/react/utils/type';
7
- import {
8
- fontColorClass,
9
- getRootClassName,
10
- handleBasicClasses,
11
- getTypographyClassName,
12
- } from '@lumx/core/js/utils/className';
13
- import { useOverflowTooltipLabel } from '@lumx/react/hooks/useOverflowTooltipLabel';
14
- import { useMergeRefs } from '@lumx/react/utils/react/mergeRefs';
15
- import { forwardRef } from '@lumx/react/utils/react/forwardRef';
16
- import { wrapChildrenIconWithSpaces } from '@lumx/react/utils/react/wrapChildrenIconWithSpaces';
17
-
18
- /**
19
- * Defines the props of the component.
20
- */
21
- export interface TextProps extends GenericProps {
22
- /**
23
- * Color variant.
24
- */
25
- color?: ColorWithVariants;
26
- /**
27
- * Lightened or darkened variant of the selected color.
28
- */
29
- colorVariant?: ColorVariant;
30
- /**
31
- * Typography variant.
32
- */
33
- typography?: Typography;
34
- /**
35
- * Custom component to render the text.
36
- */
37
- as: TextElement;
38
- /**
39
- * Control whether the text should truncate or not.
40
- * Setting as `true` will make the text truncate on a single line.
41
- * Setting as `{ lines: number }` will make the text truncate on a multiple lines.
42
- */
43
- truncate?: boolean | { lines: number };
44
- /**
45
- * Prevents text to wrap on multiple lines
46
- * (automatically activated when single line text truncate is activated).
47
- */
48
- noWrap?: boolean;
49
- /**
50
- * WhiteSpace variant
51
- * Ignored when `noWrap` is set to true
52
- * Ignored when `truncate` is set to true or lines: 1
53
- * */
54
- whiteSpace?: WhiteSpace;
55
- /**
56
- * Children
57
- */
58
- children?: React.ReactNode;
59
- }
60
-
61
- /**
62
- * Component display name.
63
- */
64
- const COMPONENT_NAME = 'Text';
65
-
66
- /**
67
- * Component default class name and class prefix.
68
- */
69
- const CLASSNAME = getRootClassName(COMPONENT_NAME);
70
-
71
- /**
72
- * Component default props.
73
- */
74
- const DEFAULT_PROPS = {} as const;
75
-
76
- /**
77
- * Text component.
78
- *
79
- * @param props Component props.
80
- * @param ref Component ref.
81
- * @return React element.
82
- */
83
- export const Text = forwardRef<TextProps>((props, ref) => {
84
- const {
85
- as: Component,
86
- children,
87
- className,
88
- color,
89
- colorVariant,
90
- noWrap,
91
- typography,
92
- truncate,
93
- whiteSpace,
94
- style,
95
- ...forwardedProps
96
- } = props;
97
-
98
- const typographyClass = typography && getTypographyClassName(typography);
99
-
100
- // Truncate mode
101
- const truncateLinesStyle = typeof truncate === 'object' &&
102
- truncate.lines > 1 && { '--lumx-text-truncate-lines': truncate.lines };
103
- const isTruncatedMultiline = !!truncateLinesStyle;
104
- const isTruncated = !!truncate;
105
-
106
- /**
107
- * Add custom white-space style if specified
108
- * Disabled if noWrap is specified
109
- * Disabled if truncated on one-line
110
- * */
111
- const whiteSpaceStyle = !noWrap &&
112
- !(isTruncated && !isTruncatedMultiline) &&
113
- whiteSpace && { '--lumx-text-white-space': whiteSpace };
114
-
115
- const { tooltipLabel, labelRef } = useOverflowTooltipLabel(children);
116
-
117
- return (
118
- <Component
119
- ref={useMergeRefs(ref as React.Ref<any>, labelRef)}
120
- className={classNames(
121
- className,
122
- handleBasicClasses({
123
- prefix: CLASSNAME,
124
- isTruncated: isTruncated && !isTruncatedMultiline,
125
- isTruncatedMultiline,
126
- }),
127
- typographyClass,
128
- fontColorClass(color, colorVariant),
129
- noWrap && `${CLASSNAME}--no-wrap`,
130
- )}
131
- title={tooltipLabel}
132
- style={{ ...truncateLinesStyle, ...whiteSpaceStyle, ...style }}
133
- {...forwardedProps}
134
- >
135
- {wrapChildrenIconWithSpaces(children)}
136
- </Component>
137
- );
138
- });
139
- Text.displayName = COMPONENT_NAME;
140
- Text.className = CLASSNAME;
141
- Text.defaultProps = DEFAULT_PROPS;
@@ -1 +0,0 @@
1
- export * from './Text';