@lumx/react 3.20.1-alpha.13 → 3.20.1-alpha.14

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 (697) hide show
  1. package/_internal/Falsy.d.ts +7 -0
  2. package/_internal/index.js +236 -0
  3. package/_internal/index.js.map +1 -0
  4. package/index.d.ts +352 -7
  5. package/index.js +14486 -65
  6. package/index.js.map +1 -1
  7. package/package.json +11 -3
  8. package/src/components/alert-dialog/AlertDialog.stories.tsx +127 -0
  9. package/src/components/alert-dialog/AlertDialog.test.tsx +34 -0
  10. package/src/components/alert-dialog/AlertDialog.tsx +189 -0
  11. package/src/components/alert-dialog/index.ts +1 -0
  12. package/src/components/autocomplete/Autocomplete.stories.tsx +75 -0
  13. package/src/components/autocomplete/Autocomplete.test.tsx +99 -0
  14. package/src/components/autocomplete/Autocomplete.tsx +294 -0
  15. package/src/components/autocomplete/AutocompleteMultiple.stories.tsx +167 -0
  16. package/src/components/autocomplete/AutocompleteMultiple.test.tsx +61 -0
  17. package/src/components/autocomplete/AutocompleteMultiple.tsx +156 -0
  18. package/src/components/autocomplete/__mockData__/index.ts +39 -0
  19. package/src/components/autocomplete/index.ts +2 -0
  20. package/src/components/avatar/Avatar.stories.tsx +119 -0
  21. package/src/components/avatar/Avatar.test.tsx +32 -0
  22. package/src/components/avatar/Avatar.tsx +114 -0
  23. package/src/components/avatar/index.ts +1 -0
  24. package/src/components/badge/Badge.stories.tsx +69 -0
  25. package/src/components/badge/Badge.test.tsx +45 -0
  26. package/src/components/badge/Badge.tsx +58 -0
  27. package/src/components/badge/BadgeWrapper.stories.tsx +75 -0
  28. package/src/components/badge/BadgeWrapper.test.tsx +47 -0
  29. package/src/components/badge/BadgeWrapper.tsx +37 -0
  30. package/src/components/badge/index.ts +2 -0
  31. package/src/components/button/Button.stories.tsx +355 -0
  32. package/src/components/button/Button.test.tsx +125 -0
  33. package/src/components/button/Button.tsx +101 -0
  34. package/src/components/button/ButtonGroup.stories.tsx +52 -0
  35. package/src/components/button/ButtonGroup.test.tsx +41 -0
  36. package/src/components/button/ButtonGroup.tsx +50 -0
  37. package/src/components/button/ButtonRoot.tsx +163 -0
  38. package/src/components/button/IconButton.stories.tsx +52 -0
  39. package/src/components/button/IconButton.test.tsx +66 -0
  40. package/src/components/button/IconButton.tsx +91 -0
  41. package/src/components/button/index.ts +4 -0
  42. package/src/components/checkbox/Checkbox.stories.tsx +64 -0
  43. package/src/components/checkbox/Checkbox.test.tsx +154 -0
  44. package/src/components/checkbox/Checkbox.tsx +164 -0
  45. package/src/components/checkbox/index.ts +1 -0
  46. package/src/components/chip/Chip.stories.tsx +164 -0
  47. package/src/components/chip/Chip.test.tsx +243 -0
  48. package/src/components/chip/Chip.tsx +168 -0
  49. package/src/components/chip/ChipGroup.stories.tsx +47 -0
  50. package/src/components/chip/ChipGroup.test.tsx +37 -0
  51. package/src/components/chip/ChipGroup.tsx +60 -0
  52. package/src/components/chip/index.ts +2 -0
  53. package/src/components/comment-block/CommentBlock.stories.tsx +91 -0
  54. package/src/components/comment-block/CommentBlock.test.tsx +28 -0
  55. package/src/components/comment-block/CommentBlock.tsx +172 -0
  56. package/src/components/comment-block/index.ts +1 -0
  57. package/src/components/date-picker/DatePicker.stories.tsx +118 -0
  58. package/src/components/date-picker/DatePicker.test.tsx +34 -0
  59. package/src/components/date-picker/DatePicker.tsx +52 -0
  60. package/src/components/date-picker/DatePickerControlled.test.tsx +91 -0
  61. package/src/components/date-picker/DatePickerControlled.tsx +259 -0
  62. package/src/components/date-picker/DatePickerField.stories.tsx +100 -0
  63. package/src/components/date-picker/DatePickerField.test.tsx +70 -0
  64. package/src/components/date-picker/DatePickerField.tsx +135 -0
  65. package/src/components/date-picker/constants.ts +11 -0
  66. package/src/components/date-picker/index.ts +4 -0
  67. package/src/components/date-picker/types.ts +28 -0
  68. package/src/components/dialog/Dialog.stories.tsx +318 -0
  69. package/src/components/dialog/Dialog.test.tsx +97 -0
  70. package/src/components/dialog/Dialog.tsx +288 -0
  71. package/src/components/dialog/index.ts +1 -0
  72. package/src/components/divider/Divider.test.tsx +51 -0
  73. package/src/components/divider/Divider.tsx +50 -0
  74. package/src/components/divider/index.ts +1 -0
  75. package/src/components/drag-handle/DragHandle.test.tsx +36 -0
  76. package/src/components/drag-handle/DragHandle.tsx +51 -0
  77. package/src/components/drag-handle/index.ts +1 -0
  78. package/src/components/dropdown/Dropdown.stories.tsx +31 -0
  79. package/src/components/dropdown/Dropdown.test.tsx +66 -0
  80. package/src/components/dropdown/Dropdown.tsx +186 -0
  81. package/src/components/dropdown/index.ts +1 -0
  82. package/src/components/expansion-panel/ExpansionPanel.stories.tsx +91 -0
  83. package/src/components/expansion-panel/ExpansionPanel.test.tsx +185 -0
  84. package/src/components/expansion-panel/ExpansionPanel.tsx +195 -0
  85. package/src/components/expansion-panel/index.ts +1 -0
  86. package/src/components/flag/Flag.stories.tsx +48 -0
  87. package/src/components/flag/Flag.test.tsx +62 -0
  88. package/src/components/flag/Flag.tsx +52 -0
  89. package/src/components/flag/index.ts +1 -0
  90. package/src/components/flex-box/FlexBox.stories.tsx +156 -0
  91. package/src/components/flex-box/FlexBox.test.tsx +24 -0
  92. package/src/components/flex-box/FlexBox.tsx +100 -0
  93. package/src/components/flex-box/index.ts +1 -0
  94. package/src/components/generic-block/GenericBlock.stories.jsx +128 -0
  95. package/src/components/generic-block/GenericBlock.test.tsx +156 -0
  96. package/src/components/generic-block/GenericBlock.tsx +225 -0
  97. package/src/components/generic-block/constants.ts +9 -0
  98. package/src/components/generic-block/index.ts +2 -0
  99. package/src/components/grid/Grid.tsx +83 -0
  100. package/src/components/grid/GridItem.tsx +55 -0
  101. package/src/components/grid/index.ts +2 -0
  102. package/src/components/grid-column/GridColumn.stories.tsx +45 -0
  103. package/src/components/grid-column/GridColumn.test.jsx +56 -0
  104. package/src/components/grid-column/GridColumn.tsx +83 -0
  105. package/src/components/grid-column/index.ts +1 -0
  106. package/src/components/heading/Heading.stories.tsx +69 -0
  107. package/src/components/heading/Heading.test.tsx +82 -0
  108. package/src/components/heading/Heading.tsx +65 -0
  109. package/src/components/heading/HeadingLevelProvider.tsx +30 -0
  110. package/src/components/heading/constants.ts +16 -0
  111. package/src/components/heading/context.tsx +13 -0
  112. package/src/components/heading/index.ts +3 -0
  113. package/src/components/heading/useHeadingLevel.tsx +8 -0
  114. package/src/components/icon/Icon.stories.tsx +73 -0
  115. package/src/components/icon/Icon.test.tsx +125 -0
  116. package/src/components/icon/Icon.tsx +133 -0
  117. package/src/components/icon/index.ts +1 -0
  118. package/src/components/image-block/ImageBlock.stories.tsx +117 -0
  119. package/src/components/image-block/ImageBlock.test.tsx +58 -0
  120. package/src/components/image-block/ImageBlock.tsx +142 -0
  121. package/src/components/image-block/ImageCaption.tsx +115 -0
  122. package/src/components/image-block/index.ts +1 -0
  123. package/src/components/image-lightbox/ImageLightbox.stories.tsx +160 -0
  124. package/src/components/image-lightbox/ImageLightbox.test.tsx +254 -0
  125. package/src/components/image-lightbox/ImageLightbox.tsx +90 -0
  126. package/src/components/image-lightbox/constants.ts +11 -0
  127. package/src/components/image-lightbox/index.ts +2 -0
  128. package/src/components/image-lightbox/internal/ImageSlide.tsx +107 -0
  129. package/src/components/image-lightbox/internal/ImageSlideshow.tsx +164 -0
  130. package/src/components/image-lightbox/internal/useAnimateScroll.ts +55 -0
  131. package/src/components/image-lightbox/internal/usePointerZoom.ts +148 -0
  132. package/src/components/image-lightbox/types.ts +48 -0
  133. package/src/components/image-lightbox/useImageLightbox.tsx +141 -0
  134. package/src/components/inline-list/InlineList.stories.tsx +77 -0
  135. package/src/components/inline-list/InlineList.test.tsx +52 -0
  136. package/src/components/inline-list/InlineList.tsx +96 -0
  137. package/src/components/inline-list/index.ts +1 -0
  138. package/src/components/input-helper/InputHelper.stories.tsx +35 -0
  139. package/src/components/input-helper/InputHelper.test.tsx +55 -0
  140. package/src/components/input-helper/InputHelper.tsx +65 -0
  141. package/src/components/input-helper/constants.ts +11 -0
  142. package/src/components/input-helper/index.ts +1 -0
  143. package/src/components/input-label/InputLabel.stories.tsx +45 -0
  144. package/src/components/input-label/InputLabel.test.tsx +59 -0
  145. package/src/components/input-label/InputLabel.tsx +69 -0
  146. package/src/components/input-label/index.ts +1 -0
  147. package/src/components/lightbox/Lightbox.stories.tsx +101 -0
  148. package/src/components/lightbox/Lightbox.test.tsx +53 -0
  149. package/src/components/lightbox/Lightbox.tsx +180 -0
  150. package/src/components/lightbox/index.ts +1 -0
  151. package/src/components/link/Link.stories.tsx +195 -0
  152. package/src/components/link/Link.test.tsx +127 -0
  153. package/src/components/link/Link.tsx +106 -0
  154. package/src/components/link/index.ts +1 -0
  155. package/src/components/link-preview/LinkPreview.stories.tsx +61 -0
  156. package/src/components/link-preview/LinkPreview.test.tsx +105 -0
  157. package/src/components/link-preview/LinkPreview.tsx +158 -0
  158. package/src/components/link-preview/index.ts +1 -0
  159. package/src/components/list/List.stories.tsx +116 -0
  160. package/src/components/list/List.test.tsx +18 -0
  161. package/src/components/list/List.tsx +104 -0
  162. package/src/components/list/ListDivider.stories.tsx +12 -0
  163. package/src/components/list/ListDivider.test.tsx +22 -0
  164. package/src/components/list/ListDivider.tsx +35 -0
  165. package/src/components/list/ListItem.stories.tsx +66 -0
  166. package/src/components/list/ListItem.test.tsx +93 -0
  167. package/src/components/list/ListItem.tsx +157 -0
  168. package/src/components/list/ListSubheader.stories.tsx +11 -0
  169. package/src/components/list/ListSubheader.test.tsx +21 -0
  170. package/src/components/list/ListSubheader.tsx +44 -0
  171. package/src/components/list/index.ts +4 -0
  172. package/src/components/list/useInteractiveList.tsx +202 -0
  173. package/src/components/message/Message.stories.tsx +72 -0
  174. package/src/components/message/Message.test.tsx +76 -0
  175. package/src/components/message/Message.tsx +100 -0
  176. package/src/components/message/index.ts +1 -0
  177. package/src/components/mosaic/Mosaic.stories.tsx +89 -0
  178. package/src/components/mosaic/Mosaic.test.tsx +77 -0
  179. package/src/components/mosaic/Mosaic.tsx +98 -0
  180. package/src/components/mosaic/index.ts +1 -0
  181. package/src/components/navigation/Navigation.stories.tsx +234 -0
  182. package/src/components/navigation/Navigation.test.tsx +65 -0
  183. package/src/components/navigation/Navigation.tsx +79 -0
  184. package/src/components/navigation/NavigationItem.test.tsx +35 -0
  185. package/src/components/navigation/NavigationItem.tsx +82 -0
  186. package/src/components/navigation/NavigationSection.test.tsx +137 -0
  187. package/src/components/navigation/NavigationSection.tsx +108 -0
  188. package/src/components/navigation/context.tsx +7 -0
  189. package/src/components/navigation/index.ts +1 -0
  190. package/src/components/notification/Notification.test.tsx +94 -0
  191. package/src/components/notification/Notification.tsx +138 -0
  192. package/src/components/notification/Notifications.stories.tsx +92 -0
  193. package/src/components/notification/constants.ts +28 -0
  194. package/src/components/notification/index.ts +1 -0
  195. package/src/components/popover/Popover.stories.tsx +264 -0
  196. package/src/components/popover/Popover.test.tsx +62 -0
  197. package/src/components/popover/Popover.tsx +201 -0
  198. package/src/components/popover/constants.ts +62 -0
  199. package/src/components/popover/index.ts +3 -0
  200. package/src/components/popover/usePopoverStyle.tsx +184 -0
  201. package/src/components/popover/useRestoreFocusOnClose.tsx +47 -0
  202. package/src/components/popover-dialog/PopoverDialog.stories.tsx +64 -0
  203. package/src/components/popover-dialog/PopoverDialog.test.tsx +139 -0
  204. package/src/components/popover-dialog/PopoverDialog.tsx +74 -0
  205. package/src/components/popover-dialog/index.tsx +1 -0
  206. package/src/components/post-block/PostBlock.test.tsx +27 -0
  207. package/src/components/post-block/PostBlock.tsx +122 -0
  208. package/src/components/post-block/index.ts +1 -0
  209. package/src/components/progress/Progress.tsx +68 -0
  210. package/src/components/progress/ProgressCircular.stories.tsx +43 -0
  211. package/src/components/progress/ProgressCircular.test.tsx +46 -0
  212. package/src/components/progress/ProgressCircular.tsx +82 -0
  213. package/src/components/progress/ProgressLinear.stories.tsx +12 -0
  214. package/src/components/progress/ProgressLinear.test.tsx +30 -0
  215. package/src/components/progress/ProgressLinear.tsx +50 -0
  216. package/src/components/progress/index.ts +3 -0
  217. package/src/components/progress-tracker/ProgressTracker.stories.tsx +145 -0
  218. package/src/components/progress-tracker/ProgressTracker.test.tsx +42 -0
  219. package/src/components/progress-tracker/ProgressTracker.tsx +87 -0
  220. package/src/components/progress-tracker/ProgressTrackerProvider.test.tsx +65 -0
  221. package/src/components/progress-tracker/ProgressTrackerProvider.tsx +67 -0
  222. package/src/components/progress-tracker/ProgressTrackerStep.test.tsx +36 -0
  223. package/src/components/progress-tracker/ProgressTrackerStep.tsx +159 -0
  224. package/src/components/progress-tracker/ProgressTrackerStepPanel.test.tsx +34 -0
  225. package/src/components/progress-tracker/ProgressTrackerStepPanel.tsx +67 -0
  226. package/src/components/progress-tracker/index.ts +4 -0
  227. package/src/components/radio-button/RadioButton.stories.tsx +71 -0
  228. package/src/components/radio-button/RadioButton.test.tsx +143 -0
  229. package/src/components/radio-button/RadioButton.tsx +143 -0
  230. package/src/components/radio-button/RadioGroup.stories.tsx +39 -0
  231. package/src/components/radio-button/RadioGroup.test.tsx +29 -0
  232. package/src/components/radio-button/RadioGroup.tsx +44 -0
  233. package/src/components/radio-button/index.ts +2 -0
  234. package/src/components/select/Select.stories.tsx +385 -0
  235. package/src/components/select/Select.test.tsx +199 -0
  236. package/src/components/select/Select.tsx +199 -0
  237. package/src/components/select/SelectMultiple.stories.tsx +315 -0
  238. package/src/components/select/SelectMultiple.test.tsx +213 -0
  239. package/src/components/select/SelectMultiple.tsx +206 -0
  240. package/src/components/select/WithSelectContext.tsx +147 -0
  241. package/src/components/select/constants.ts +55 -0
  242. package/src/components/select/index.ts +2 -0
  243. package/src/components/side-navigation/SideNavigation.stories.tsx +191 -0
  244. package/src/components/side-navigation/SideNavigation.test.tsx +37 -0
  245. package/src/components/side-navigation/SideNavigation.tsx +52 -0
  246. package/src/components/side-navigation/SideNavigationItem.stories.tsx +133 -0
  247. package/src/components/side-navigation/SideNavigationItem.test.tsx +136 -0
  248. package/src/components/side-navigation/SideNavigationItem.tsx +165 -0
  249. package/src/components/side-navigation/index.ts +2 -0
  250. package/src/components/skeleton/SkeletonCircle.stories.tsx +41 -0
  251. package/src/components/skeleton/SkeletonCircle.test.tsx +27 -0
  252. package/src/components/skeleton/SkeletonCircle.tsx +52 -0
  253. package/src/components/skeleton/SkeletonRectangle.stories.tsx +82 -0
  254. package/src/components/skeleton/SkeletonRectangle.test.tsx +27 -0
  255. package/src/components/skeleton/SkeletonRectangle.tsx +88 -0
  256. package/src/components/skeleton/SkeletonTypography.stories.tsx +19 -0
  257. package/src/components/skeleton/SkeletonTypography.test.tsx +27 -0
  258. package/src/components/skeleton/SkeletonTypography.tsx +59 -0
  259. package/src/components/skeleton/index.ts +3 -0
  260. package/src/components/slider/Slider.stories.tsx +45 -0
  261. package/src/components/slider/Slider.test.tsx +29 -0
  262. package/src/components/slider/Slider.tsx +299 -0
  263. package/src/components/slider/index.ts +2 -0
  264. package/src/components/slideshow/Slides.tsx +130 -0
  265. package/src/components/slideshow/Slideshow.stories.tsx +179 -0
  266. package/src/components/slideshow/Slideshow.test.tsx +35 -0
  267. package/src/components/slideshow/Slideshow.tsx +173 -0
  268. package/src/components/slideshow/SlideshowControls.stories.tsx +100 -0
  269. package/src/components/slideshow/SlideshowControls.tsx +243 -0
  270. package/src/components/slideshow/SlideshowItem.tsx +44 -0
  271. package/src/components/slideshow/SlideshowItemGroup.tsx +60 -0
  272. package/src/components/slideshow/constants.ts +24 -0
  273. package/src/components/slideshow/index.ts +4 -0
  274. package/src/components/slideshow/useKeyNavigate.ts +28 -0
  275. package/src/components/slideshow/usePaginationVisibleRange.ts +37 -0
  276. package/src/components/slideshow/useSlideFocusManagement.tsx +92 -0
  277. package/src/components/slideshow/useSwipeNavigate.ts +18 -0
  278. package/src/components/switch/Switch.stories.tsx +49 -0
  279. package/src/components/switch/Switch.test.tsx +144 -0
  280. package/src/components/switch/Switch.tsx +145 -0
  281. package/src/components/switch/index.ts +1 -0
  282. package/src/components/table/Table.test.tsx +29 -0
  283. package/src/components/table/Table.tsx +59 -0
  284. package/src/components/table/TableBody.test.tsx +30 -0
  285. package/src/components/table/TableBody.tsx +42 -0
  286. package/src/components/table/TableCell.test.tsx +72 -0
  287. package/src/components/table/TableCell.tsx +130 -0
  288. package/src/components/table/TableHeader.test.tsx +30 -0
  289. package/src/components/table/TableHeader.tsx +48 -0
  290. package/src/components/table/TableRow.test.tsx +40 -0
  291. package/src/components/table/TableRow.tsx +71 -0
  292. package/src/components/table/index.ts +5 -0
  293. package/src/components/tabs/Tab.test.tsx +50 -0
  294. package/src/components/tabs/Tab.tsx +133 -0
  295. package/src/components/tabs/TabList.test.tsx +49 -0
  296. package/src/components/tabs/TabList.tsx +94 -0
  297. package/src/components/tabs/TabPanel.test.tsx +37 -0
  298. package/src/components/tabs/TabPanel.tsx +67 -0
  299. package/src/components/tabs/TabProvider.test.tsx +161 -0
  300. package/src/components/tabs/TabProvider.tsx +67 -0
  301. package/src/components/tabs/Tabs.stories.tsx +170 -0
  302. package/src/components/tabs/index.ts +4 -0
  303. package/src/components/tabs/state.ts +114 -0
  304. package/src/components/tabs/test-utils.ts +39 -0
  305. package/src/components/text/Text.stories.tsx +177 -0
  306. package/src/components/text/Text.test.tsx +92 -0
  307. package/src/components/text/Text.tsx +139 -0
  308. package/src/components/text/index.ts +1 -0
  309. package/src/components/text-field/TextField.stories.tsx +180 -0
  310. package/src/components/text-field/TextField.test.tsx +298 -0
  311. package/src/components/text-field/TextField.tsx +493 -0
  312. package/src/components/text-field/index.ts +1 -0
  313. package/src/components/thumbnail/Thumbnail.stories.tsx +448 -0
  314. package/src/components/thumbnail/Thumbnail.test.tsx +88 -0
  315. package/src/components/thumbnail/Thumbnail.tsx +248 -0
  316. package/src/components/thumbnail/index.ts +3 -0
  317. package/src/components/thumbnail/types.ts +48 -0
  318. package/src/components/thumbnail/useFocusPointStyle.test.ts +92 -0
  319. package/src/components/thumbnail/useFocusPointStyle.tsx +107 -0
  320. package/src/components/thumbnail/useImageLoad.ts +40 -0
  321. package/src/components/toolbar/Toolbar.tsx +68 -0
  322. package/src/components/toolbar/index.ts +1 -0
  323. package/src/components/tooltip/Tooltip.stories.tsx +118 -0
  324. package/src/components/tooltip/Tooltip.test.tsx +417 -0
  325. package/src/components/tooltip/Tooltip.tsx +165 -0
  326. package/src/components/tooltip/constants.ts +8 -0
  327. package/src/components/tooltip/context.tsx +17 -0
  328. package/src/components/tooltip/index.ts +1 -0
  329. package/src/components/tooltip/useInjectTooltipRef.tsx +55 -0
  330. package/src/components/tooltip/useTooltipOpen.tsx +143 -0
  331. package/src/components/uploader/Uploader.stories.tsx +109 -0
  332. package/src/components/uploader/Uploader.test.tsx +146 -0
  333. package/src/components/uploader/Uploader.tsx +177 -0
  334. package/src/components/uploader/index.ts +1 -0
  335. package/src/components/user-block/UserBlock.stories.tsx +133 -0
  336. package/src/components/user-block/UserBlock.test.tsx +106 -0
  337. package/src/components/user-block/UserBlock.tsx +193 -0
  338. package/src/components/user-block/index.ts +1 -0
  339. package/src/constants.ts +27 -0
  340. package/src/hooks/useBooleanState.tsx +13 -0
  341. package/src/hooks/useCallbackOnEscape.ts +34 -0
  342. package/src/hooks/useChipGroupNavigation.tsx +75 -0
  343. package/src/hooks/useClickAway.tsx +48 -0
  344. package/src/hooks/useDisableBodyScroll.ts +28 -0
  345. package/src/hooks/useEventCallback.tsx +17 -0
  346. package/src/hooks/useFocus.tsx +21 -0
  347. package/src/hooks/useFocusTrap.ts +93 -0
  348. package/src/hooks/useFocusWithin.ts +33 -0
  349. package/src/hooks/useId.test.tsx +22 -0
  350. package/src/hooks/useId.ts +15 -0
  351. package/src/hooks/useImageSize.ts +17 -0
  352. package/src/hooks/useInfiniteScroll.tsx +60 -0
  353. package/src/hooks/useIntersectionObserver.tsx +43 -0
  354. package/src/hooks/useInterval.tsx +31 -0
  355. package/src/hooks/useKeyboardListNavigation.tsx +204 -0
  356. package/src/hooks/useListenFocus.tsx +26 -0
  357. package/src/hooks/useOverflowTooltipLabel.tsx +32 -0
  358. package/src/hooks/usePopper.ts +12 -0
  359. package/src/hooks/usePreviousValue.ts +12 -0
  360. package/src/hooks/useRovingTabIndex.tsx +90 -0
  361. package/src/hooks/useSizeOnWindowResize.ts +30 -0
  362. package/src/hooks/useSlideshowControls.ts +246 -0
  363. package/src/hooks/useStopPropagation.ts +21 -0
  364. package/src/hooks/useTransitionVisibility.ts +48 -0
  365. package/src/index.ts +63 -0
  366. package/src/stories/controls/color.ts +7 -0
  367. package/src/stories/controls/element.ts +6 -0
  368. package/src/stories/controls/focusPoint.ts +1 -0
  369. package/src/stories/controls/icons.ts +126 -0
  370. package/src/stories/controls/image.ts +84 -0
  371. package/src/stories/controls/selectArgType.ts +8 -0
  372. package/src/stories/controls/theme.ts +3 -0
  373. package/src/stories/controls/typography.ts +5 -0
  374. package/src/stories/controls/withUndefined.ts +1 -0
  375. package/src/stories/decorators/withChromaticForceScreenSize.tsx +7 -0
  376. package/src/stories/decorators/withCombinations.tsx +132 -0
  377. package/src/stories/decorators/withNestedProps.tsx +22 -0
  378. package/src/stories/decorators/withResizableBox.tsx +21 -0
  379. package/src/stories/decorators/withThemedBackground.tsx +16 -0
  380. package/src/stories/decorators/withValueOnChange.tsx +18 -0
  381. package/src/stories/decorators/withWrapper.tsx +19 -0
  382. package/src/stories/generated/Autocomplete/Demos.stories.tsx +7 -0
  383. package/src/stories/generated/Avatar/Demos.stories.tsx +7 -0
  384. package/src/stories/generated/Badge/Demos.stories.tsx +9 -0
  385. package/src/stories/generated/Button/Demos.stories.tsx +11 -0
  386. package/src/stories/generated/Checkbox/Demos.stories.tsx +6 -0
  387. package/src/stories/generated/Chip/Demos.stories.tsx +11 -0
  388. package/src/stories/generated/CommentBlock/Demos.stories.tsx +8 -0
  389. package/src/stories/generated/DatePicker/Demos.stories.tsx +8 -0
  390. package/src/stories/generated/Dialog/Demos.stories.tsx +10 -0
  391. package/src/stories/generated/Divider/Demos.stories.tsx +6 -0
  392. package/src/stories/generated/Dropdown/Demos.stories.tsx +8 -0
  393. package/src/stories/generated/ExpansionPanel/Demos.stories.tsx +9 -0
  394. package/src/stories/generated/Flag/Demos.stories.tsx +6 -0
  395. package/src/stories/generated/GenericBlock/Demos.stories.tsx +8 -0
  396. package/src/stories/generated/Heading/Demos.stories.tsx +6 -0
  397. package/src/stories/generated/Icon/Demos.stories.tsx +8 -0
  398. package/src/stories/generated/ImageBlock/Demos.stories.tsx +9 -0
  399. package/src/stories/generated/ImageLightbox/Demos.stories.tsx +6 -0
  400. package/src/stories/generated/Lightbox/Demos.stories.tsx +6 -0
  401. package/src/stories/generated/LinkPreview/Demos.stories.tsx +7 -0
  402. package/src/stories/generated/List/Demos.stories.tsx +11 -0
  403. package/src/stories/generated/Message/Demos.stories.tsx +11 -0
  404. package/src/stories/generated/Mosaic/Demos.stories.tsx +10 -0
  405. package/src/stories/generated/Notification/Demos.stories.tsx +6 -0
  406. package/src/stories/generated/Popover/Demos.stories.tsx +11 -0
  407. package/src/stories/generated/PopoverDialog/Demos.stories.tsx +6 -0
  408. package/src/stories/generated/PostBlock/Demos.stories.tsx +6 -0
  409. package/src/stories/generated/Progress/Demos.stories.tsx +7 -0
  410. package/src/stories/generated/ProgressTracker/Demos.stories.tsx +9 -0
  411. package/src/stories/generated/RadioButton/Demos.stories.tsx +6 -0
  412. package/src/stories/generated/Select/Demos.stories.tsx +14 -0
  413. package/src/stories/generated/SideNavigation/Demos.stories.tsx +10 -0
  414. package/src/stories/generated/Skeleton/Demos.stories.tsx +9 -0
  415. package/src/stories/generated/Slider/Demos.stories.tsx +9 -0
  416. package/src/stories/generated/Slideshow/Demos.stories.tsx +8 -0
  417. package/src/stories/generated/Switch/Demos.stories.tsx +6 -0
  418. package/src/stories/generated/Table/Demos.stories.tsx +7 -0
  419. package/src/stories/generated/Tabs/Demos.stories.tsx +8 -0
  420. package/src/stories/generated/TextField/Demos.stories.tsx +20 -0
  421. package/src/stories/generated/Thumbnail/Demos.stories.tsx +12 -0
  422. package/src/stories/generated/Toolbar/Demos.stories.tsx +10 -0
  423. package/src/stories/generated/Tooltip/Demos.stories.tsx +8 -0
  424. package/src/stories/generated/Uploader/Demos.stories.tsx +8 -0
  425. package/src/stories/generated/UserBlock/Demos.stories.tsx +11 -0
  426. package/src/stories/utils/CustomLink.tsx +12 -0
  427. package/src/stories/utils/concatPath.tsx +17 -0
  428. package/src/stories/utils/disableArgTypes.ts +3 -0
  429. package/src/stories/utils/initDemoShadowDOMPortal.ts +10 -0
  430. package/src/stories/utils/lorem.ts +59 -0
  431. package/src/stories/utils/theming.tsx +166 -0
  432. package/src/stories/utils/toFlattenProps.ts +28 -0
  433. package/src/stories/utils/withCategory.ts +12 -0
  434. package/src/testing/utils/ThemeSentinel.tsx +10 -0
  435. package/src/testing/utils/commonTestsSuiteRTL.tsx +193 -0
  436. package/src/testing/utils/index.ts +1 -0
  437. package/src/testing/utils/queries.ts +19 -0
  438. package/src/untypped-modules.d.ts +9 -0
  439. package/src/utils/ClickAwayProvider/ClickAwayProvider.stories.jsx +70 -0
  440. package/src/utils/ClickAwayProvider/ClickAwayProvider.tsx +69 -0
  441. package/src/utils/ClickAwayProvider/index.ts +1 -0
  442. package/src/utils/MaterialThemeSwitcher/MaterialThemeSwitcher.tsx +54 -0
  443. package/src/utils/MaterialThemeSwitcher/index.ts +1 -0
  444. package/src/utils/Portal/Portal.test.tsx +31 -0
  445. package/src/utils/Portal/Portal.tsx +33 -0
  446. package/src/utils/Portal/PortalProvider.stories.jsx +22 -0
  447. package/src/utils/Portal/PortalProvider.test.tsx +72 -0
  448. package/src/utils/Portal/PortalProvider.tsx +24 -0
  449. package/src/utils/Portal/index.tsx +2 -0
  450. package/src/utils/browser/DOM/findImage.tsx +3 -0
  451. package/src/utils/browser/DOM/startViewTransition.ts +68 -0
  452. package/src/utils/browser/focus/constants.ts +7 -0
  453. package/src/utils/browser/focus/getFirstAndLastFocusable.test.ts +134 -0
  454. package/src/utils/browser/focus/getFirstAndLastFocusable.ts +21 -0
  455. package/src/utils/browser/focus/getFocusableElements.test.ts +151 -0
  456. package/src/utils/browser/focus/getFocusableElements.ts +7 -0
  457. package/src/utils/browser/isFocusVisible.ts +9 -0
  458. package/src/utils/browser/isHoverNotSupported.test.js +24 -0
  459. package/src/utils/browser/isHoverNotSupported.ts +2 -0
  460. package/src/utils/browser/isReducedMotion.ts +6 -0
  461. package/src/utils/date/addMonthResetDay.test.ts +13 -0
  462. package/src/utils/date/addMonthResetDay.ts +9 -0
  463. package/src/utils/date/formatDayNumber.test.ts +12 -0
  464. package/src/utils/date/formatDayNumber.ts +5 -0
  465. package/src/utils/date/getFirstDayOfWeek.test.ts +20 -0
  466. package/src/utils/date/getFirstDayOfWeek.ts +59 -0
  467. package/src/utils/date/getMonthCalendar.test.ts +127 -0
  468. package/src/utils/date/getMonthCalendar.ts +69 -0
  469. package/src/utils/date/getWeekDays.test.ts +48 -0
  470. package/src/utils/date/getWeekDays.ts +34 -0
  471. package/src/utils/date/getYearDisplayName.test.ts +20 -0
  472. package/src/utils/date/getYearDisplayName.ts +12 -0
  473. package/src/utils/date/isDateValid.test.ts +15 -0
  474. package/src/utils/date/isDateValid.ts +4 -0
  475. package/src/utils/date/isSameDay.test.ts +37 -0
  476. package/src/utils/date/isSameDay.ts +11 -0
  477. package/src/utils/disabled/DisabledStateContext.tsx +29 -0
  478. package/src/utils/disabled/DisabledStateProvider.stories.tsx +92 -0
  479. package/src/utils/disabled/index.ts +2 -0
  480. package/src/utils/disabled/useDisableStateProps.test.tsx +74 -0
  481. package/src/utils/disabled/useDisableStateProps.tsx +37 -0
  482. package/src/utils/function/makeListenerTowerContext.ts +32 -0
  483. package/src/utils/index.ts +7 -0
  484. package/src/utils/locale/getCurrentLocale.ts +4 -0
  485. package/src/utils/locale/parseLocale.test.ts +17 -0
  486. package/src/utils/locale/parseLocale.ts +23 -0
  487. package/src/utils/locale/types.ts +8 -0
  488. package/src/utils/number/clamp.ts +17 -0
  489. package/src/utils/object/isEqual.test.ts +25 -0
  490. package/src/utils/object/isEqual.ts +11 -0
  491. package/src/utils/partitionMulti.test.ts +27 -0
  492. package/{_internal/partitionMulti-4daccdd5.js → src/utils/partitionMulti.ts} +9 -5
  493. package/src/utils/react/OnBeforeUnmount.tsx +20 -0
  494. package/src/utils/react/RawClickable.test.tsx +153 -0
  495. package/src/utils/react/RawClickable.tsx +65 -0
  496. package/src/utils/react/flattenChildren.ts +32 -0
  497. package/src/utils/react/forwardRef.ts +11 -0
  498. package/src/utils/react/forwardRefPolymorphic.ts +9 -0
  499. package/src/utils/react/mergeRefs.ts +33 -0
  500. package/src/utils/react/renderLink.tsx +17 -0
  501. package/src/utils/react/skipRender.tsx +18 -0
  502. package/src/utils/react/unref.ts +7 -0
  503. package/src/utils/react/wrapChildrenIconWithSpaces.test.tsx +37 -0
  504. package/src/utils/react/wrapChildrenIconWithSpaces.tsx +22 -0
  505. package/src/utils/theme/ThemeContext.ts +16 -0
  506. package/src/utils/theme/invertTheme.ts +4 -0
  507. package/src/utils/type/Comp.ts +14 -0
  508. package/src/utils/type/ComponentRef.ts +16 -0
  509. package/src/utils/type/HasAriaDisabled.ts +6 -0
  510. package/src/utils/type/HasPolymorphicAs.ts +6 -0
  511. package/src/utils/type/HasRequiredLinkHref.ts +1 -0
  512. package/src/utils/type/MaybeElementOrRef.ts +6 -0
  513. package/src/utils/type/index.ts +9 -0
  514. package/src/utils/type/isComponent.ts +33 -0
  515. package/src/utils/type/isComponentType.ts +9 -0
  516. package/utils/index.d.ts +1 -1
  517. package/utils/index.js +1 -3
  518. package/utils/index.js.map +1 -1
  519. package/_internal/Button-f19e18df.js +0 -96
  520. package/_internal/Button-f19e18df.js.map +0 -1
  521. package/_internal/ButtonRoot-ab633b1d.js +0 -115
  522. package/_internal/ButtonRoot-ab633b1d.js.map +0 -1
  523. package/_internal/Chip-4c572eec.js +0 -149
  524. package/_internal/Chip-4c572eec.js.map +0 -1
  525. package/_internal/ClickAwayProvider-bcce6ceb.js +0 -93
  526. package/_internal/ClickAwayProvider-bcce6ceb.js.map +0 -1
  527. package/_internal/DisabledStateContext-077b7bef.js +0 -29
  528. package/_internal/DisabledStateContext-077b7bef.js.map +0 -1
  529. package/_internal/HeadingLevelProvider-e4817816.js +0 -59
  530. package/_internal/HeadingLevelProvider-e4817816.js.map +0 -1
  531. package/_internal/IconButton-10585058.js +0 -72
  532. package/_internal/IconButton-10585058.js.map +0 -1
  533. package/_internal/ImageCaption-4279b2b6.js +0 -65
  534. package/_internal/ImageCaption-4279b2b6.js.map +0 -1
  535. package/_internal/List-d5f5d465.js +0 -791
  536. package/_internal/List-d5f5d465.js.map +0 -1
  537. package/_internal/PopoverDialog-21e5c9dd.js +0 -647
  538. package/_internal/PopoverDialog-21e5c9dd.js.map +0 -1
  539. package/_internal/Portal-c43d098b.js +0 -42
  540. package/_internal/Portal-c43d098b.js.map +0 -1
  541. package/_internal/RawClickable-c76bbc4c.js +0 -50
  542. package/_internal/RawClickable-c76bbc4c.js.map +0 -1
  543. package/_internal/Slides-01f513ce.js +0 -675
  544. package/_internal/Slides-01f513ce.js.map +0 -1
  545. package/_internal/ThemeContext-3181f000.js +0 -14
  546. package/_internal/ThemeContext-3181f000.js.map +0 -1
  547. package/_internal/Thumbnail-30d2a781.js +0 -312
  548. package/_internal/Thumbnail-30d2a781.js.map +0 -1
  549. package/_internal/components/alert-dialog-8f1c163c.js +0 -147
  550. package/_internal/components/alert-dialog-8f1c163c.js.map +0 -1
  551. package/_internal/components/autocomplete-bfbdeb3c.js +0 -264
  552. package/_internal/components/autocomplete-bfbdeb3c.js.map +0 -1
  553. package/_internal/components/avatar-6990e3e9.js +0 -87
  554. package/_internal/components/avatar-6990e3e9.js.map +0 -1
  555. package/_internal/components/badge-81543bc7.js +0 -81
  556. package/_internal/components/badge-81543bc7.js.map +0 -1
  557. package/_internal/components/button-927abe71.js +0 -49
  558. package/_internal/components/button-927abe71.js.map +0 -1
  559. package/_internal/components/checkbox-dc4caec8.js +0 -131
  560. package/_internal/components/checkbox-dc4caec8.js.map +0 -1
  561. package/_internal/components/chip-fb3d0c76.js +0 -104
  562. package/_internal/components/chip-fb3d0c76.js.map +0 -1
  563. package/_internal/components/comment-block-b84c4694.js +0 -121
  564. package/_internal/components/comment-block-b84c4694.js.map +0 -1
  565. package/_internal/components/date-picker-a425534c.js +0 -2
  566. package/_internal/components/date-picker-a425534c.js.map +0 -1
  567. package/_internal/components/dialog-7dbcb485.js +0 -226
  568. package/_internal/components/dialog-7dbcb485.js.map +0 -1
  569. package/_internal/components/divider-12e9b6a0.js +0 -53
  570. package/_internal/components/divider-12e9b6a0.js.map +0 -1
  571. package/_internal/components/drag-handle-a38ff757.js +0 -53
  572. package/_internal/components/drag-handle-a38ff757.js.map +0 -1
  573. package/_internal/components/dropdown-38b0b6a0.js +0 -148
  574. package/_internal/components/dropdown-38b0b6a0.js.map +0 -1
  575. package/_internal/components/expansion-panel-c4b93653.js +0 -158
  576. package/_internal/components/expansion-panel-c4b93653.js.map +0 -1
  577. package/_internal/components/flag-c5e2f5f0.js +0 -55
  578. package/_internal/components/flag-c5e2f5f0.js.map +0 -1
  579. package/_internal/components/flex-box-c8701a85.js +0 -58
  580. package/_internal/components/flex-box-c8701a85.js.map +0 -1
  581. package/_internal/components/generic-block-0d6ad5a6.js +0 -115
  582. package/_internal/components/generic-block-0d6ad5a6.js.map +0 -1
  583. package/_internal/components/grid-3b194fe8.js +0 -109
  584. package/_internal/components/grid-3b194fe8.js.map +0 -1
  585. package/_internal/components/grid-column-985b9327.js +0 -60
  586. package/_internal/components/grid-column-985b9327.js.map +0 -1
  587. package/_internal/components/heading-5e954dfc.js +0 -54
  588. package/_internal/components/heading-5e954dfc.js.map +0 -1
  589. package/_internal/components/icon-2e7345ad.js +0 -103
  590. package/_internal/components/icon-2e7345ad.js.map +0 -1
  591. package/_internal/components/image-block-8d21dd7e.js +0 -109
  592. package/_internal/components/image-block-8d21dd7e.js.map +0 -1
  593. package/_internal/components/image-lightbox-4a5ab962.js +0 -743
  594. package/_internal/components/image-lightbox-4a5ab962.js.map +0 -1
  595. package/_internal/components/inline-list-4884f004.js +0 -74
  596. package/_internal/components/inline-list-4884f004.js.map +0 -1
  597. package/_internal/components/input-helper-e644e05e.js +0 -73
  598. package/_internal/components/input-helper-e644e05e.js.map +0 -1
  599. package/_internal/components/input-label-5e509a1b.js +0 -61
  600. package/_internal/components/input-label-5e509a1b.js.map +0 -1
  601. package/_internal/components/lightbox-bec1b95f.js +0 -149
  602. package/_internal/components/lightbox-bec1b95f.js.map +0 -1
  603. package/_internal/components/link-9637b9e4.js +0 -70
  604. package/_internal/components/link-9637b9e4.js.map +0 -1
  605. package/_internal/components/link-preview-7a4a6e4b.js +0 -108
  606. package/_internal/components/link-preview-7a4a6e4b.js.map +0 -1
  607. package/_internal/components/list-5c8f7122.js +0 -77
  608. package/_internal/components/list-5c8f7122.js.map +0 -1
  609. package/_internal/components/message-a67067d9.js +0 -96
  610. package/_internal/components/message-a67067d9.js.map +0 -1
  611. package/_internal/components/mosaic-92b66c80.js +0 -92
  612. package/_internal/components/mosaic-92b66c80.js.map +0 -1
  613. package/_internal/components/navigation-4fd3917d.js +0 -210
  614. package/_internal/components/navigation-4fd3917d.js.map +0 -1
  615. package/_internal/components/notification-9063c963.js +0 -140
  616. package/_internal/components/notification-9063c963.js.map +0 -1
  617. package/_internal/components/popover-3c4c54bd.js +0 -3
  618. package/_internal/components/popover-3c4c54bd.js.map +0 -1
  619. package/_internal/components/post-block-0cfc2206.js +0 -99
  620. package/_internal/components/post-block-0cfc2206.js.map +0 -1
  621. package/_internal/components/progress-eaf5b33d.js +0 -188
  622. package/_internal/components/progress-eaf5b33d.js.map +0 -1
  623. package/_internal/components/progress-tracker-4a65718d.js +0 -309
  624. package/_internal/components/progress-tracker-4a65718d.js.map +0 -1
  625. package/_internal/components/radio-button-3ef8a325.js +0 -148
  626. package/_internal/components/radio-button-3ef8a325.js.map +0 -1
  627. package/_internal/components/select-d46cfe35.js +0 -404
  628. package/_internal/components/select-d46cfe35.js.map +0 -1
  629. package/_internal/components/side-navigation-75b22f19.js +0 -159
  630. package/_internal/components/side-navigation-75b22f19.js.map +0 -1
  631. package/_internal/components/skeleton-361ce335.js +0 -174
  632. package/_internal/components/skeleton-361ce335.js.map +0 -1
  633. package/_internal/components/slider-8094cb5c.js +0 -305
  634. package/_internal/components/slider-8094cb5c.js.map +0 -1
  635. package/_internal/components/slideshow-2e8cd372.js +0 -150
  636. package/_internal/components/slideshow-2e8cd372.js.map +0 -1
  637. package/_internal/components/switch-5516949b.js +0 -118
  638. package/_internal/components/switch-5516949b.js.map +0 -1
  639. package/_internal/components/table-fa198ee6.js +0 -299
  640. package/_internal/components/table-fa198ee6.js.map +0 -1
  641. package/_internal/components/tabs-bb9bc2a5.js +0 -298
  642. package/_internal/components/tabs-bb9bc2a5.js.map +0 -1
  643. package/_internal/components/text-289c0526.js +0 -2
  644. package/_internal/components/text-289c0526.js.map +0 -1
  645. package/_internal/components/text-field-82733568.js +0 -346
  646. package/_internal/components/text-field-82733568.js.map +0 -1
  647. package/_internal/components/thumbnail-e3acff82.js +0 -42
  648. package/_internal/components/thumbnail-e3acff82.js.map +0 -1
  649. package/_internal/components/toolbar-155562be.js +0 -60
  650. package/_internal/components/toolbar-155562be.js.map +0 -1
  651. package/_internal/components/tooltip-84ffb4f9.js +0 -318
  652. package/_internal/components/tooltip-84ffb4f9.js.map +0 -1
  653. package/_internal/components/uploader-896a1d89.js +0 -150
  654. package/_internal/components/uploader-896a1d89.js.map +0 -1
  655. package/_internal/components/user-block-8fd15895.js +0 -143
  656. package/_internal/components/user-block-8fd15895.js.map +0 -1
  657. package/_internal/constants-b9e57936.js +0 -2155
  658. package/_internal/constants-b9e57936.js.map +0 -1
  659. package/_internal/constants-d0e3f49e.js +0 -24
  660. package/_internal/constants-d0e3f49e.js.map +0 -1
  661. package/_internal/context-21aeb1c7.js +0 -19
  662. package/_internal/context-21aeb1c7.js.map +0 -1
  663. package/_internal/forwardRef-49d2bb84.js +0 -80
  664. package/_internal/forwardRef-49d2bb84.js.map +0 -1
  665. package/_internal/getFocusableElements-230173a8.js +0 -13
  666. package/_internal/getFocusableElements-230173a8.js.map +0 -1
  667. package/_internal/index-b4d256e7.js +0 -118
  668. package/_internal/index-b4d256e7.js.map +0 -1
  669. package/_internal/index-f415b08e.js +0 -430
  670. package/_internal/index-f415b08e.js.map +0 -1
  671. package/_internal/isComponent-78df9309.js +0 -20
  672. package/_internal/isComponent-78df9309.js.map +0 -1
  673. package/_internal/isComponentType-e806b848.js +0 -9
  674. package/_internal/isComponentType-e806b848.js.map +0 -1
  675. package/_internal/mergeRefs-f0d7d6ea.js +0 -30
  676. package/_internal/mergeRefs-f0d7d6ea.js.map +0 -1
  677. package/_internal/partitionMulti-4daccdd5.js.map +0 -1
  678. package/_internal/state-db358714.js +0 -130
  679. package/_internal/state-db358714.js.map +0 -1
  680. package/_internal/useBooleanState-2a3d237c.js +0 -12
  681. package/_internal/useBooleanState-2a3d237c.js.map +0 -1
  682. package/_internal/useCallbackOnEscape-ea4d9eb4.js +0 -62
  683. package/_internal/useCallbackOnEscape-ea4d9eb4.js.map +0 -1
  684. package/_internal/useDisableBodyScroll-36bd7352.js +0 -219
  685. package/_internal/useDisableBodyScroll-36bd7352.js.map +0 -1
  686. package/_internal/useDisableStateProps-fffc365f.js +0 -36
  687. package/_internal/useDisableStateProps-fffc365f.js.map +0 -1
  688. package/_internal/useFocusTrap-c3c6378b.js +0 -112
  689. package/_internal/useFocusTrap-c3c6378b.js.map +0 -1
  690. package/_internal/useId-3a1facc0.js +0 -18
  691. package/_internal/useId-3a1facc0.js.map +0 -1
  692. package/_internal/useRovingTabIndex-7daf0f24.js +0 -77
  693. package/_internal/useRovingTabIndex-7daf0f24.js.map +0 -1
  694. package/_internal/useTransitionVisibility-321fdbfa.js +0 -50
  695. package/_internal/useTransitionVisibility-321fdbfa.js.map +0 -1
  696. package/_internal/wrapChildrenIconWithSpaces-f86106ce.js +0 -20
  697. package/_internal/wrapChildrenIconWithSpaces-f86106ce.js.map +0 -1
@@ -0,0 +1,22 @@
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
+ }
@@ -0,0 +1,16 @@
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
+ }
@@ -0,0 +1,4 @@
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');
@@ -0,0 +1,14 @@
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
+ };
@@ -0,0 +1,16 @@
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;
@@ -0,0 +1,6 @@
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
+ }
@@ -0,0 +1,6 @@
1
+ export type HasPolymorphicAs<E extends React.ElementType> = React.ComponentPropsWithoutRef<E> & {
2
+ /**
3
+ * Customize the rendered component.
4
+ */
5
+ as?: E;
6
+ };
@@ -0,0 +1 @@
1
+ export type HasRequiredLinkHref<E> = E extends 'a' ? { href: string } : Record<string, unknown>;
@@ -0,0 +1,6 @@
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;
@@ -0,0 +1,9 @@
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';
9
+ export type { HasRequiredLinkHref } from './HasRequiredLinkHref';
@@ -0,0 +1,33 @@
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
+ };
@@ -0,0 +1,9 @@
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;
package/utils/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import React__default, { RefObject } from 'react';
2
- import { Falsy } from '@lumx/core/js/types';
2
+ import { F as Falsy } from '../_internal/Falsy.js';
3
3
 
4
4
  interface ClickAwayParameters {
5
5
  /**
package/utils/index.js CHANGED
@@ -1,4 +1,2 @@
1
- export { C as ClickAwayProvider } from '../_internal/ClickAwayProvider-bcce6ceb.js';
2
- export { P as Portal, a as PortalProvider } from '../_internal/Portal-c43d098b.js';
3
- export { D as DisabledStateProvider, u as useDisabledStateContext } from '../_internal/DisabledStateContext-077b7bef.js';
1
+ export { C as ClickAwayProvider, D as DisabledStateProvider, P as Portal, c as PortalProvider, u as useDisabledStateContext } from '../_internal/index.js';
4
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,96 +0,0 @@
1
- import { f as forwardRef, c as classNames, _ as _extends } from './forwardRef-49d2bb84.js';
2
- import isEmpty from 'lodash/isEmpty';
3
- import { i as isComponent } from './isComponent-78df9309.js';
4
- import { getRootClassName, getBasicClass } from '@lumx/core/js/utils/className';
5
- import { u as useTheme, T as ThemeProvider } from './ThemeContext-3181f000.js';
6
- import { B as ButtonRoot } from './ButtonRoot-ab633b1d.js';
7
- import { T as Text } from './index-b4d256e7.js';
8
- import { Emphasis, Size, Theme } from '@lumx/core/js/constants';
9
- import { Icon } from './components/icon-2e7345ad.js';
10
-
11
- /**
12
- * Button emphasis definition.
13
- * @deprecated Use Emphasis instead.
14
- */
15
- const ButtonEmphasis = Emphasis;
16
-
17
- /**
18
- * Defines the props of the component.
19
- */
20
-
21
- /**
22
- * Component display name.
23
- */
24
- const COMPONENT_NAME = 'Button';
25
-
26
- /**
27
- * Component default class name and class prefix.
28
- */
29
- const CLASSNAME = getRootClassName(COMPONENT_NAME);
30
-
31
- /**
32
- * Component default props.
33
- */
34
- const DEFAULT_PROPS = {
35
- emphasis: Emphasis.high,
36
- size: Size.m
37
- };
38
-
39
- /**
40
- * Button component.
41
- *
42
- * @param props Component props.
43
- * @param ref Component ref.
44
- * @return React element.
45
- */
46
- const Button = forwardRef((props, ref) => {
47
- const defaultTheme = useTheme() || Theme.light;
48
- const {
49
- children,
50
- className,
51
- emphasis = DEFAULT_PROPS.emphasis,
52
- leftIcon,
53
- rightIcon,
54
- size = DEFAULT_PROPS.size,
55
- theme = defaultTheme,
56
- ...forwardedProps
57
- } = props;
58
- const buttonClassName = classNames(className, getBasicClass({
59
- prefix: CLASSNAME,
60
- type: 'hasLeftIcon',
61
- value: !isEmpty(leftIcon)
62
- }), getBasicClass({
63
- prefix: CLASSNAME,
64
- type: 'hasRightIcon',
65
- value: !isEmpty(rightIcon)
66
- }));
67
- return /*#__PURE__*/React.createElement(ButtonRoot, _extends({
68
- ref: ref,
69
- emphasis,
70
- size,
71
- theme
72
- }, forwardedProps, {
73
- className: buttonClassName,
74
- variant: "button"
75
- }), leftIcon && !isEmpty(leftIcon) &&
76
- /*#__PURE__*/
77
- // Theme is handled in the button scss
78
- React.createElement(ThemeProvider, {
79
- value: undefined
80
- }, /*#__PURE__*/React.createElement(Icon, {
81
- icon: leftIcon
82
- })), children && (isComponent(Text)(children) ? children : /*#__PURE__*/React.createElement("span", null, children)), rightIcon && !isEmpty(rightIcon) &&
83
- /*#__PURE__*/
84
- // Theme is handled in the button scss
85
- React.createElement(ThemeProvider, {
86
- value: undefined
87
- }, /*#__PURE__*/React.createElement(Icon, {
88
- icon: rightIcon
89
- })));
90
- });
91
- Button.displayName = COMPONENT_NAME;
92
- Button.className = CLASSNAME;
93
- Button.defaultProps = DEFAULT_PROPS;
94
-
95
- export { ButtonEmphasis as B, Button as a };
96
- //# sourceMappingURL=Button-f19e18df.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Button-f19e18df.js","sources":["../../src/components/button/Button.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { Emphasis, Icon, Size, Theme, Text, ThemeProvider } from '@lumx/react';\nimport { isComponent } from '@lumx/react/utils/type';\nimport { getBasicClass, getRootClassName } from '@lumx/core/js/utils/className';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { BaseButtonProps, ButtonRoot } from './ButtonRoot';\n\n/**\n * Button emphasis definition.\n * @deprecated Use Emphasis instead.\n */\nexport const ButtonEmphasis = Emphasis;\n\n/**\n * Defines the props of the component.\n */\nexport interface ButtonProps extends BaseButtonProps {\n /** Left icon (SVG path). */\n leftIcon?: string;\n /** Right icon (SVG path). */\n rightIcon?: string;\n /** When `true`, the button gets as large as possible. */\n fullWidth?: boolean;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Button';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<ButtonProps> = {\n emphasis: Emphasis.high,\n size: Size.m,\n};\n\n/**\n * Button component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Button = forwardRef<ButtonProps, HTMLButtonElement | HTMLAnchorElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n children,\n className,\n emphasis = DEFAULT_PROPS.emphasis,\n leftIcon,\n rightIcon,\n size = DEFAULT_PROPS.size,\n theme = defaultTheme,\n ...forwardedProps\n } = props;\n\n const buttonClassName = classNames(\n className,\n getBasicClass({ prefix: CLASSNAME, type: 'hasLeftIcon', value: !isEmpty(leftIcon) }),\n getBasicClass({ prefix: CLASSNAME, type: 'hasRightIcon', value: !isEmpty(rightIcon) }),\n );\n\n return (\n <ButtonRoot\n ref={ref}\n {...{ emphasis, size, theme, ...forwardedProps }}\n className={buttonClassName}\n variant=\"button\"\n >\n {leftIcon && !isEmpty(leftIcon) && (\n // Theme is handled in the button scss\n <ThemeProvider value={undefined}>\n <Icon icon={leftIcon} />\n </ThemeProvider>\n )}\n {children && (isComponent(Text)(children) ? children : <span>{children}</span>)}\n {rightIcon && !isEmpty(rightIcon) && (\n // Theme is handled in the button scss\n <ThemeProvider value={undefined}>\n <Icon icon={rightIcon} />\n </ThemeProvider>\n )}\n </ButtonRoot>\n );\n});\nButton.displayName = COMPONENT_NAME;\nButton.className = CLASSNAME;\nButton.defaultProps = DEFAULT_PROPS;\n"],"names":["ButtonEmphasis","Emphasis","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","emphasis","high","size","Size","m","Button","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","children","className","leftIcon","rightIcon","theme","forwardedProps","buttonClassName","classNames","getBasicClass","prefix","type","value","isEmpty","React","createElement","ButtonRoot","_extends","variant","ThemeProvider","undefined","Icon","icon","isComponent","Text","displayName","defaultProps"],"mappings":";;;;;;;;;;AAWA;AACA;AACA;AACA;AACO,MAAMA,cAAc,GAAGC,SAAQ;;AAEtC;AACA;AACA;;AAYA;AACA;AACA;AACA,MAAMC,cAAc,GAAG,QAAQ,CAAA;;AAE/B;AACA;AACA;AACA,MAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAc,CAAC,CAAA;;AAElD;AACA;AACA;AACA,MAAMG,aAAmC,GAAG;EACxCC,QAAQ,EAAEL,QAAQ,CAACM,IAAI;EACvBC,IAAI,EAAEC,IAAI,CAACC,CAAAA;AACf,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,MAAM,GAAGC,UAAU,CAAqD,CAACC,KAAK,EAAEC,GAAG,KAAK;EACjG,MAAMC,YAAY,GAAGC,QAAQ,EAAE,IAAIC,KAAK,CAACC,KAAK,CAAA;EAC9C,MAAM;IACFC,QAAQ;IACRC,SAAS;IACTd,QAAQ,GAAGD,aAAa,CAACC,QAAQ;IACjCe,QAAQ;IACRC,SAAS;IACTd,IAAI,GAAGH,aAAa,CAACG,IAAI;AACzBe,IAAAA,KAAK,GAAGR,YAAY;IACpB,GAAGS,cAAAA;AACP,GAAC,GAAGX,KAAK,CAAA;AAET,EAAA,MAAMY,eAAe,GAAGC,UAAU,CAC9BN,SAAS,EACTO,aAAa,CAAC;AAAEC,IAAAA,MAAM,EAAEzB,SAAS;AAAE0B,IAAAA,IAAI,EAAE,aAAa;AAAEC,IAAAA,KAAK,EAAE,CAACC,OAAO,CAACV,QAAQ,CAAA;GAAG,CAAC,EACpFM,aAAa,CAAC;AAAEC,IAAAA,MAAM,EAAEzB,SAAS;AAAE0B,IAAAA,IAAI,EAAE,cAAc;AAAEC,IAAAA,KAAK,EAAE,CAACC,OAAO,CAACT,SAAS,CAAA;AAAE,GAAC,CACzF,CAAC,CAAA;AAED,EAAA,oBACIU,KAAA,CAAAC,aAAA,CAACC,UAAU,EAAAC,QAAA,CAAA;AACPrB,IAAAA,GAAG,EAAEA,GAAI;IACHR,QAAQ;IAAEE,IAAI;AAAEe,IAAAA,KAAAA;AAAK,GAAA,EAAKC,cAAc,EAAA;AAC9CJ,IAAAA,SAAS,EAAEK,eAAgB;AAC3BW,IAAAA,OAAO,EAAC,QAAA;AAAQ,GAAA,CAAA,EAEff,QAAQ,IAAI,CAACU,OAAO,CAACV,QAAQ,CAAC;AAAA;AAC3B;EACAW,KAAA,CAAAC,aAAA,CAACI,aAAa,EAAA;AAACP,IAAAA,KAAK,EAAEQ,SAAAA;AAAU,GAAA,eAC5BN,KAAA,CAAAC,aAAA,CAACM,IAAI,EAAA;AAACC,IAAAA,IAAI,EAAEnB,QAAAA;AAAS,GAAE,CACZ,CAClB,EACAF,QAAQ,KAAKsB,WAAW,CAACC,IAAI,CAAC,CAACvB,QAAQ,CAAC,GAAGA,QAAQ,gBAAGa,KAAA,CAAAC,aAAA,CAAOd,MAAAA,EAAAA,IAAAA,EAAAA,QAAe,CAAC,CAAC,EAC9EG,SAAS,IAAI,CAACS,OAAO,CAACT,SAAS,CAAC;AAAA;AAC7B;EACAU,KAAA,CAAAC,aAAA,CAACI,aAAa,EAAA;AAACP,IAAAA,KAAK,EAAEQ,SAAAA;AAAU,GAAA,eAC5BN,KAAA,CAAAC,aAAA,CAACM,IAAI,EAAA;AAACC,IAAAA,IAAI,EAAElB,SAAAA;GAAY,CACb,CAEX,CAAC,CAAA;AAErB,CAAC,EAAC;AACFX,MAAM,CAACgC,WAAW,GAAGzC,cAAc,CAAA;AACnCS,MAAM,CAACS,SAAS,GAAGjB,SAAS,CAAA;AAC5BQ,MAAM,CAACiC,YAAY,GAAGvC,aAAa;;;;"}
@@ -1,115 +0,0 @@
1
- import { f as forwardRef, c as classNames, _ as _extends } from './forwardRef-49d2bb84.js';
2
- import './constants-d0e3f49e.js';
3
- import { handleBasicClasses } from '@lumx/core/js/utils/className';
4
- import { R as RawClickable } from './RawClickable-c76bbc4c.js';
5
- import { u as useDisableStateProps } from './useDisableStateProps-fffc365f.js';
6
- import { Emphasis, Theme, ColorPalette, CSS_PREFIX } from '@lumx/core/js/constants';
7
-
8
- /**
9
- * Button size definition.
10
- */
11
-
12
- /**
13
- * Component display name.
14
- */
15
- const COMPONENT_NAME = 'ButtonRoot';
16
- const BUTTON_WRAPPER_CLASSNAME = `${CSS_PREFIX}-button-wrapper`;
17
- const BUTTON_CLASSNAME = `${CSS_PREFIX}-button`;
18
-
19
- /**
20
- * Render a button wrapper with the ButtonRoot inside.
21
- *
22
- * @param props Component props.
23
- * @return React element.
24
- */
25
- const renderButtonWrapper = props => {
26
- const {
27
- color,
28
- emphasis,
29
- variant,
30
- fullWidth
31
- } = props;
32
- const adaptedColor = emphasis === Emphasis.low && (color === ColorPalette.light ? ColorPalette.dark : ColorPalette.light);
33
- const wrapperClassName = classNames(handleBasicClasses({
34
- color: adaptedColor,
35
- prefix: BUTTON_WRAPPER_CLASSNAME,
36
- variant,
37
- fullWidth
38
- }));
39
- const buttonProps = {
40
- ...props,
41
- hasBackground: false
42
- };
43
- return /*#__PURE__*/React.createElement("div", {
44
- className: wrapperClassName
45
- }, /*#__PURE__*/React.createElement(ButtonRoot, buttonProps));
46
- };
47
-
48
- /**
49
- * ButtonRoot component.
50
- *
51
- * @param props Component props.
52
- * @param ref Component ref.
53
- * @return React element.
54
- */
55
- const ButtonRoot = forwardRef((props, ref) => {
56
- const {
57
- isAnyDisabled,
58
- disabledStateProps,
59
- otherProps
60
- } = useDisableStateProps(props);
61
- const {
62
- 'aria-label': ariaLabel,
63
- children,
64
- className,
65
- color,
66
- emphasis,
67
- hasBackground,
68
- isSelected,
69
- isActive,
70
- isFocused,
71
- isHovered,
72
- linkAs,
73
- size,
74
- theme,
75
- variant,
76
- fullWidth,
77
- ...forwardedProps
78
- } = otherProps;
79
- const adaptedColor = color || emphasis !== Emphasis.high && theme === Theme.dark && ColorPalette.light || emphasis === Emphasis.high && ColorPalette.primary || ColorPalette.dark;
80
- if (hasBackground) {
81
- return renderButtonWrapper({
82
- ...props,
83
- ref,
84
- variant,
85
- color: adaptedColor
86
- });
87
- }
88
- const buttonClassName = classNames(className, handleBasicClasses({
89
- color: adaptedColor,
90
- emphasis,
91
- isSelected,
92
- isDisabled: props.isDisabled || props['aria-disabled'],
93
- isActive,
94
- isFocused,
95
- isHovered,
96
- prefix: BUTTON_CLASSNAME,
97
- size,
98
- theme: emphasis === Emphasis.high && theme,
99
- variant,
100
- fullWidth
101
- }));
102
- return /*#__PURE__*/React.createElement(RawClickable, _extends({
103
- as: linkAs || (forwardedProps.href ? 'a' : 'button')
104
- }, forwardedProps, disabledStateProps, {
105
- "aria-disabled": isAnyDisabled,
106
- "aria-label": ariaLabel,
107
- ref: ref,
108
- className: buttonClassName
109
- }), children);
110
- });
111
- ButtonRoot.displayName = COMPONENT_NAME;
112
- ButtonRoot.defaultProps = {};
113
-
114
- export { ButtonRoot as B };
115
- //# sourceMappingURL=ButtonRoot-ab633b1d.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ButtonRoot-ab633b1d.js","sources":["../../src/components/button/ButtonRoot.tsx"],"sourcesContent":["import { AriaAttributes, ButtonHTMLAttributes, DetailedHTMLProps, RefObject } from 'react';\n\nimport classNames from 'classnames';\n\nimport { ColorPalette, Emphasis, Size, Theme } from '@lumx/react';\nimport { CSS_PREFIX } from '@lumx/react/constants';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { HasAriaDisabled } from '@lumx/react/utils/type/HasAriaDisabled';\nimport { RawClickable } from '@lumx/react/utils/react/RawClickable';\nimport { useDisableStateProps } from '@lumx/react/utils/disabled';\n\ntype HTMLButtonProps = DetailedHTMLProps<ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>;\n\n/**\n * Button size definition.\n */\nexport type ButtonSize = Extract<Size, 's' | 'm'>;\n\nexport interface BaseButtonProps\n extends GenericProps,\n Pick<AriaAttributes, 'aria-expanded' | 'aria-haspopup' | 'aria-pressed' | 'aria-label'>,\n HasTheme,\n HasAriaDisabled {\n /** Color variant. */\n color?: ColorPalette;\n /** Emphasis variant. */\n emphasis?: Emphasis;\n /** Whether or not the button has a background color in low emphasis. */\n hasBackground?: boolean;\n /** Native anchor href property. It determines whether the Button will be a <button> or an <a>. */\n href?: string;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Whether the component is selected or not (unsupported in `high` emphasis). */\n isSelected?: boolean;\n /** Native button name property. */\n name?: string;\n /** Size variant. */\n size?: ButtonSize;\n /** Native anchor target property. */\n target?: '_self' | '_blank' | '_parent' | '_top';\n /** Native button type. */\n type?: HTMLButtonProps['type'];\n /** Custom react component for the link (can be used to inject react router Link). */\n linkAs?: 'a' | any;\n}\n\nexport interface ButtonRootProps extends BaseButtonProps {\n variant: 'button' | 'icon';\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'ButtonRoot';\n\nexport const BUTTON_WRAPPER_CLASSNAME = `${CSS_PREFIX}-button-wrapper`;\nexport const BUTTON_CLASSNAME = `${CSS_PREFIX}-button`;\n\n/**\n * Render a button wrapper with the ButtonRoot inside.\n *\n * @param props Component props.\n * @return React element.\n */\nconst renderButtonWrapper: React.FC<ButtonRootProps> = (props) => {\n const { color, emphasis, variant, fullWidth } = props;\n\n const adaptedColor =\n emphasis === Emphasis.low && (color === ColorPalette.light ? ColorPalette.dark : ColorPalette.light);\n\n const wrapperClassName = classNames(\n handleBasicClasses({\n color: adaptedColor,\n prefix: BUTTON_WRAPPER_CLASSNAME,\n variant,\n fullWidth,\n }),\n );\n const buttonProps = { ...props, hasBackground: false };\n\n return (\n <div className={wrapperClassName}>\n {/* eslint-disable-next-line @typescript-eslint/no-use-before-define */}\n <ButtonRoot {...buttonProps} />\n </div>\n );\n};\n\n/**\n * ButtonRoot component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const ButtonRoot = forwardRef<ButtonRootProps, HTMLButtonElement | HTMLAnchorElement>((props, ref) => {\n const { isAnyDisabled, disabledStateProps, otherProps } = useDisableStateProps(props);\n const {\n 'aria-label': ariaLabel,\n children,\n className,\n color,\n emphasis,\n hasBackground,\n isSelected,\n isActive,\n isFocused,\n isHovered,\n linkAs,\n size,\n theme,\n variant,\n fullWidth,\n ...forwardedProps\n } = otherProps;\n\n const adaptedColor =\n color ||\n (emphasis !== Emphasis.high && theme === Theme.dark && ColorPalette.light) ||\n (emphasis === Emphasis.high && ColorPalette.primary) ||\n ColorPalette.dark;\n\n if (hasBackground) {\n return renderButtonWrapper({ ...props, ref, variant, color: adaptedColor });\n }\n\n const buttonClassName = classNames(\n className,\n handleBasicClasses({\n color: adaptedColor,\n emphasis,\n isSelected,\n isDisabled: props.isDisabled || props['aria-disabled'],\n isActive,\n isFocused,\n isHovered,\n prefix: BUTTON_CLASSNAME,\n size,\n theme: emphasis === Emphasis.high && theme,\n variant,\n fullWidth,\n }),\n );\n\n return (\n <RawClickable\n as={linkAs || (forwardedProps.href ? 'a' : 'button')}\n {...forwardedProps}\n {...disabledStateProps}\n aria-disabled={isAnyDisabled}\n aria-label={ariaLabel}\n ref={ref as RefObject<HTMLButtonElement>}\n className={buttonClassName}\n >\n {children}\n </RawClickable>\n );\n});\nButtonRoot.displayName = COMPONENT_NAME;\nButtonRoot.defaultProps = {};\n"],"names":["COMPONENT_NAME","BUTTON_WRAPPER_CLASSNAME","CSS_PREFIX","BUTTON_CLASSNAME","renderButtonWrapper","props","color","emphasis","variant","fullWidth","adaptedColor","Emphasis","low","ColorPalette","light","dark","wrapperClassName","classNames","handleBasicClasses","prefix","buttonProps","hasBackground","React","createElement","className","ButtonRoot","forwardRef","ref","isAnyDisabled","disabledStateProps","otherProps","useDisableStateProps","ariaLabel","children","isSelected","isActive","isFocused","isHovered","linkAs","size","theme","forwardedProps","high","Theme","primary","buttonClassName","isDisabled","RawClickable","_extends","as","href","displayName","defaultProps"],"mappings":"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"}
@@ -1,149 +0,0 @@
1
- import { f as forwardRef, _ as _extends, c as classNames } from './forwardRef-49d2bb84.js';
2
- import isFunction from 'lodash/isFunction';
3
- import { useCallback } from 'react';
4
- import { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';
5
- import { onEnterPressed } from '@lumx/core/js/utils';
6
- import { u as useTheme } from './ThemeContext-3181f000.js';
7
- import { u as useDisableStateProps } from './useDisableStateProps-fffc365f.js';
8
- import { Size, Theme, ColorPalette } from '@lumx/core/js/constants';
9
-
10
- /**
11
- * Wrap mouse event handler to stop event propagation.
12
- *
13
- * @param handler The mouse handler to wrap.
14
- * @return Mouse handler stopping propagation.
15
- */
16
- function useStopPropagation(handler) {
17
- return useCallback(evt => {
18
- if (!evt || !isFunction(handler)) {
19
- return;
20
- }
21
- handler(evt);
22
- evt.stopPropagation();
23
- }, [handler]);
24
- }
25
-
26
- /**
27
- * Chip sizes.
28
- */
29
-
30
- /**
31
- * Defines the props of the component.
32
- */
33
-
34
- /**
35
- * Component display name.
36
- */
37
- const COMPONENT_NAME = 'Chip';
38
-
39
- /**
40
- * Component default class name and class prefix.
41
- */
42
- const CLASSNAME = getRootClassName(COMPONENT_NAME);
43
-
44
- /**
45
- * Component default props.
46
- */
47
- const DEFAULT_PROPS = {
48
- size: Size.m
49
- };
50
-
51
- /**
52
- * Chip component.
53
- *
54
- * @param props Component props.
55
- * @param ref Component ref.
56
- * @return React element.
57
- */
58
- const Chip = forwardRef((props, ref) => {
59
- const defaultTheme = useTheme() || Theme.light;
60
- const {
61
- isAnyDisabled,
62
- disabledStateProps,
63
- otherProps
64
- } = useDisableStateProps(props);
65
- const {
66
- after,
67
- before,
68
- children,
69
- className,
70
- color,
71
- isClickable: propIsClickable,
72
- isHighlighted,
73
- isSelected,
74
- onAfterClick,
75
- onBeforeClick,
76
- onClick,
77
- size = DEFAULT_PROPS.size,
78
- theme = defaultTheme,
79
- href,
80
- onKeyDown,
81
- ...forwardedProps
82
- } = otherProps;
83
- const hasAfterClick = isFunction(onAfterClick);
84
- const hasBeforeClick = isFunction(onBeforeClick);
85
- const hasOnClick = isFunction(props.onClick);
86
- const isButton = hasOnClick && !href;
87
- const isClickable = Boolean(hasOnClick) || Boolean(href) || propIsClickable;
88
-
89
- // Adapt color to the theme.
90
- const chipColor = color || (theme === Theme.light ? ColorPalette.dark : ColorPalette.light);
91
- const handleOnBeforeClick = useStopPropagation(onBeforeClick);
92
- const handleOnAfterClick = useStopPropagation(onAfterClick);
93
- const handleKeyDown = evt => {
94
- onKeyDown?.(evt);
95
- if (hasOnClick) {
96
- onEnterPressed(onClick)(evt);
97
- }
98
- };
99
- return (
100
- /*#__PURE__*/
101
- // eslint-disable-next-line jsx-a11y/no-static-element-interactions
102
- React.createElement("a", _extends({
103
- role: isButton ? 'button' : undefined,
104
- tabIndex: isClickable && !disabledStateProps.disabled ? 0 : undefined
105
- }, forwardedProps, {
106
- href: !disabledStateProps.disabled ? href : undefined,
107
- ref: ref,
108
- className: classNames(className, handleBasicClasses({
109
- clickable: isClickable,
110
- color: chipColor,
111
- isDisabled: isAnyDisabled,
112
- hasAfter: Boolean(after),
113
- hasBefore: Boolean(before),
114
- highlighted: Boolean(isHighlighted),
115
- prefix: CLASSNAME,
116
- selected: Boolean(isSelected),
117
- size,
118
- unselected: Boolean(!isSelected)
119
- })),
120
- "aria-disabled": isClickable && isAnyDisabled || undefined,
121
- onClick: hasOnClick ? onClick : undefined,
122
- onKeyDown: handleKeyDown
123
- }), before &&
124
- /*#__PURE__*/
125
- // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
126
- React.createElement("div", {
127
- className: classNames(`${CLASSNAME}__before`, {
128
- [`${CLASSNAME}__before--is-clickable`]: hasBeforeClick
129
- }),
130
- onClick: handleOnBeforeClick
131
- }, before), /*#__PURE__*/React.createElement("div", {
132
- className: `${CLASSNAME}__label`
133
- }, children), after &&
134
- /*#__PURE__*/
135
- // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
136
- React.createElement("div", {
137
- className: classNames(`${CLASSNAME}__after`, {
138
- [`${CLASSNAME}__after--is-clickable`]: hasAfterClick
139
- }),
140
- onClick: handleOnAfterClick
141
- }, after))
142
- );
143
- });
144
- Chip.displayName = COMPONENT_NAME;
145
- Chip.className = CLASSNAME;
146
- Chip.defaultProps = DEFAULT_PROPS;
147
-
148
- export { Chip as C };
149
- //# sourceMappingURL=Chip-4c572eec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Chip-4c572eec.js","sources":["../../src/hooks/useStopPropagation.ts","../../src/components/chip/Chip.tsx"],"sourcesContent":["import isFunction from 'lodash/isFunction';\nimport { MouseEventHandler, useCallback } from 'react';\n\n/**\n * Wrap mouse event handler to stop event propagation.\n *\n * @param handler The mouse handler to wrap.\n * @return Mouse handler stopping propagation.\n */\nexport function useStopPropagation(handler?: MouseEventHandler): MouseEventHandler {\n return useCallback(\n (evt) => {\n if (!evt || !isFunction(handler)) {\n return;\n }\n handler(evt);\n evt.stopPropagation();\n },\n [handler],\n );\n}\n","import { MouseEventHandler, ReactNode } from 'react';\n\nimport classNames from 'classnames';\nimport isFunction from 'lodash/isFunction';\n\nimport { ColorPalette, Size, Theme } from '@lumx/react';\nimport { useStopPropagation } from '@lumx/react/hooks/useStopPropagation';\n\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { onEnterPressed } from '@lumx/core/js/utils';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { useDisableStateProps } from '@lumx/react/utils/disabled/useDisableStateProps';\nimport { HasAriaDisabled } from '@lumx/react/utils/type/HasAriaDisabled';\n\n/**\n * Chip sizes.\n */\ntype ChipSize = Extract<Size, 's' | 'm'>;\n\n/**\n * Defines the props of the component.\n */\nexport interface ChipProps extends GenericProps, HasTheme, HasAriaDisabled {\n /** A component to be rendered after the content. */\n after?: ReactNode;\n /** A component to be rendered before the content. */\n before?: ReactNode;\n /** Color variant. */\n color?: ColorPalette;\n /** Whether the component is clickable or not. */\n isClickable?: boolean;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Whether the chip is currently in a highlighted state or not. */\n isHighlighted?: boolean;\n /** Whether the component is selected or not. */\n isSelected?: boolean;\n /** Size variant. */\n size?: ChipSize;\n /** On \"after\" element clicked callback. */\n onAfterClick?: MouseEventHandler;\n /** On \"before\" element clicked callback. */\n onBeforeClick?: MouseEventHandler;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Chip';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<ChipProps> = {\n size: Size.m,\n};\n\n/**\n * Chip component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Chip = forwardRef<ChipProps, HTMLAnchorElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const { isAnyDisabled, disabledStateProps, otherProps } = useDisableStateProps(props);\n const {\n after,\n before,\n children,\n className,\n color,\n isClickable: propIsClickable,\n isHighlighted,\n isSelected,\n onAfterClick,\n onBeforeClick,\n onClick,\n size = DEFAULT_PROPS.size,\n theme = defaultTheme,\n href,\n onKeyDown,\n ...forwardedProps\n } = otherProps;\n const hasAfterClick = isFunction(onAfterClick);\n const hasBeforeClick = isFunction(onBeforeClick);\n const hasOnClick = isFunction(props.onClick);\n const isButton = hasOnClick && !href;\n const isClickable = Boolean(hasOnClick) || Boolean(href) || propIsClickable;\n\n // Adapt color to the theme.\n const chipColor = color || (theme === Theme.light ? ColorPalette.dark : ColorPalette.light);\n\n const handleOnBeforeClick = useStopPropagation(onBeforeClick);\n const handleOnAfterClick = useStopPropagation(onAfterClick);\n const handleKeyDown = (evt: React.KeyboardEvent) => {\n onKeyDown?.(evt);\n if (hasOnClick) {\n onEnterPressed(onClick)(evt);\n }\n };\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <a\n role={isButton ? 'button' : undefined}\n tabIndex={isClickable && !disabledStateProps.disabled ? 0 : undefined}\n {...forwardedProps}\n href={!disabledStateProps.disabled ? href : undefined}\n ref={ref}\n className={classNames(\n className,\n handleBasicClasses({\n clickable: isClickable,\n color: chipColor,\n isDisabled: isAnyDisabled,\n hasAfter: Boolean(after),\n hasBefore: Boolean(before),\n highlighted: Boolean(isHighlighted),\n prefix: CLASSNAME,\n selected: Boolean(isSelected),\n size,\n unselected: Boolean(!isSelected),\n }),\n )}\n aria-disabled={(isClickable && isAnyDisabled) || undefined}\n onClick={hasOnClick ? onClick : undefined}\n onKeyDown={handleKeyDown}\n >\n {before && (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n <div\n className={classNames(`${CLASSNAME}__before`, {\n [`${CLASSNAME}__before--is-clickable`]: hasBeforeClick,\n })}\n onClick={handleOnBeforeClick}\n >\n {before}\n </div>\n )}\n <div className={`${CLASSNAME}__label`}>{children}</div>\n {after && (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n <div\n className={classNames(`${CLASSNAME}__after`, {\n [`${CLASSNAME}__after--is-clickable`]: hasAfterClick,\n })}\n onClick={handleOnAfterClick}\n >\n {after}\n </div>\n )}\n </a>\n );\n});\nChip.displayName = COMPONENT_NAME;\nChip.className = CLASSNAME;\nChip.defaultProps = DEFAULT_PROPS;\n"],"names":["useStopPropagation","handler","useCallback","evt","isFunction","stopPropagation","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","size","Size","m","Chip","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","isAnyDisabled","disabledStateProps","otherProps","useDisableStateProps","after","before","children","className","color","isClickable","propIsClickable","isHighlighted","isSelected","onAfterClick","onBeforeClick","onClick","theme","href","onKeyDown","forwardedProps","hasAfterClick","hasBeforeClick","hasOnClick","isButton","Boolean","chipColor","ColorPalette","dark","handleOnBeforeClick","handleOnAfterClick","handleKeyDown","onEnterPressed","React","createElement","_extends","role","undefined","tabIndex","disabled","classNames","handleBasicClasses","clickable","isDisabled","hasAfter","hasBefore","highlighted","prefix","selected","unselected","displayName","defaultProps"],"mappings":"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"}