@basic-ui/core 0.0.39 → 0.0.42

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 (383) hide show
  1. package/build/cjs/index.js +1312 -464
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/esm/Accordion/Accordion.d.ts +7 -7
  4. package/build/esm/Accordion/Accordion.js +4 -4
  5. package/build/esm/Accordion/Accordion.js.map +1 -1
  6. package/build/esm/Accordion/AccordionBody.d.ts +5 -5
  7. package/build/esm/Accordion/AccordionBody.js +4 -4
  8. package/build/esm/Accordion/AccordionBody.js.map +1 -1
  9. package/build/esm/Accordion/AccordionHeader.d.ts +6 -6
  10. package/build/esm/Accordion/AccordionHeader.js +4 -4
  11. package/build/esm/Accordion/AccordionHeader.js.map +1 -1
  12. package/build/esm/Accordion/AccordionItem.d.ts +7 -7
  13. package/build/esm/Accordion/AccordionItem.js +2 -2
  14. package/build/esm/Accordion/AccordionItem.js.map +1 -1
  15. package/build/esm/Accordion/context.d.ts +3 -3
  16. package/build/esm/Accordion/context.js +0 -0
  17. package/build/esm/Accordion/context.js.map +1 -1
  18. package/build/esm/Accordion/index.d.ts +0 -0
  19. package/build/esm/Accordion/index.js +0 -0
  20. package/build/esm/Accordion/index.js.map +1 -1
  21. package/build/esm/Accordion/scopeQuery.d.ts +0 -0
  22. package/build/esm/Accordion/scopeQuery.js +0 -0
  23. package/build/esm/Accordion/scopeQuery.js.map +1 -1
  24. package/build/esm/CheckBox/CheckBox.d.ts +6 -6
  25. package/build/esm/CheckBox/CheckBox.js +2 -2
  26. package/build/esm/CheckBox/CheckBox.js.map +1 -1
  27. package/build/esm/CheckBox/index.d.ts +0 -0
  28. package/build/esm/CheckBox/index.js +0 -0
  29. package/build/esm/CheckBox/index.js.map +1 -1
  30. package/build/esm/ComboBox/Combobox.d.ts +10 -10
  31. package/build/esm/ComboBox/Combobox.js +3 -3
  32. package/build/esm/ComboBox/Combobox.js.map +1 -1
  33. package/build/esm/ComboBox/ComboboxButton.d.ts +8 -8
  34. package/build/esm/ComboBox/ComboboxButton.js +4 -4
  35. package/build/esm/ComboBox/ComboboxButton.js.map +1 -1
  36. package/build/esm/ComboBox/ComboboxInput.d.ts +10 -10
  37. package/build/esm/ComboBox/ComboboxInput.js +3 -3
  38. package/build/esm/ComboBox/ComboboxInput.js.map +1 -1
  39. package/build/esm/ComboBox/ComboboxLabel.d.ts +5 -5
  40. package/build/esm/ComboBox/ComboboxLabel.js +2 -2
  41. package/build/esm/ComboBox/ComboboxLabel.js.map +1 -1
  42. package/build/esm/ComboBox/ComboboxList.d.ts +6 -6
  43. package/build/esm/ComboBox/ComboboxList.js +3 -3
  44. package/build/esm/ComboBox/ComboboxList.js.map +1 -1
  45. package/build/esm/ComboBox/ComboboxOption.d.ts +7 -7
  46. package/build/esm/ComboBox/ComboboxOption.js +4 -4
  47. package/build/esm/ComboBox/ComboboxOption.js.map +1 -1
  48. package/build/esm/ComboBox/ComboboxPopover.d.ts +8 -8
  49. package/build/esm/ComboBox/ComboboxPopover.js +5 -5
  50. package/build/esm/ComboBox/ComboboxPopover.js.map +1 -1
  51. package/build/esm/ComboBox/cities.d.ts +0 -0
  52. package/build/esm/ComboBox/cities.js +0 -0
  53. package/build/esm/ComboBox/cities.js.map +1 -1
  54. package/build/esm/ComboBox/context.d.ts +10 -10
  55. package/build/esm/ComboBox/context.js +0 -0
  56. package/build/esm/ComboBox/context.js.map +1 -1
  57. package/build/esm/ComboBox/hooks.d.ts +3 -3
  58. package/build/esm/ComboBox/hooks.js +11 -11
  59. package/build/esm/ComboBox/hooks.js.map +1 -1
  60. package/build/esm/ComboBox/index.d.ts +0 -0
  61. package/build/esm/ComboBox/index.js +0 -0
  62. package/build/esm/ComboBox/index.js.map +1 -1
  63. package/build/esm/ComboBox/makeHash.d.ts +0 -0
  64. package/build/esm/ComboBox/makeHash.js +0 -0
  65. package/build/esm/ComboBox/makeHash.js.map +1 -1
  66. package/build/esm/ComboBox/scopeQuery.d.ts +0 -0
  67. package/build/esm/ComboBox/scopeQuery.js +0 -0
  68. package/build/esm/ComboBox/scopeQuery.js.map +1 -1
  69. package/build/esm/FocusLock/FocusLock.d.ts +7 -7
  70. package/build/esm/FocusLock/FocusLock.js +2 -2
  71. package/build/esm/FocusLock/FocusLock.js.map +1 -1
  72. package/build/esm/FocusLock/index.d.ts +0 -0
  73. package/build/esm/FocusLock/index.js +0 -0
  74. package/build/esm/FocusLock/index.js.map +1 -1
  75. package/build/esm/FocusLock/tabUtils.d.ts +0 -0
  76. package/build/esm/FocusLock/tabUtils.js +0 -0
  77. package/build/esm/FocusLock/tabUtils.js.map +1 -1
  78. package/build/esm/FocusLock/useFocusLock.d.ts +4 -4
  79. package/build/esm/FocusLock/useFocusLock.js +0 -0
  80. package/build/esm/FocusLock/useFocusLock.js.map +1 -1
  81. package/build/esm/List/List.d.ts +6 -6
  82. package/build/esm/List/List.js +2 -2
  83. package/build/esm/List/List.js.map +1 -1
  84. package/build/esm/List/ListItem.d.ts +6 -6
  85. package/build/esm/List/ListItem.js +2 -2
  86. package/build/esm/List/ListItem.js.map +1 -1
  87. package/build/esm/List/context.d.ts +0 -0
  88. package/build/esm/List/context.js +0 -0
  89. package/build/esm/List/context.js.map +1 -1
  90. package/build/esm/List/index.d.ts +0 -0
  91. package/build/esm/List/index.js +0 -0
  92. package/build/esm/List/index.js.map +1 -1
  93. package/build/esm/Menu/Menu.d.ts +6 -6
  94. package/build/esm/Menu/Menu.js +2 -2
  95. package/build/esm/Menu/Menu.js.map +1 -1
  96. package/build/esm/Menu/MenuButton.d.ts +10 -10
  97. package/build/esm/Menu/MenuButton.js +3 -3
  98. package/build/esm/Menu/MenuButton.js.map +1 -1
  99. package/build/esm/Menu/MenuItem.d.ts +6 -6
  100. package/build/esm/Menu/MenuItem.js +4 -4
  101. package/build/esm/Menu/MenuItem.js.map +1 -1
  102. package/build/esm/Menu/MenuList.d.ts +5 -5
  103. package/build/esm/Menu/MenuList.js +6 -6
  104. package/build/esm/Menu/MenuList.js.map +1 -1
  105. package/build/esm/Menu/MenuPopover.d.ts +5 -5
  106. package/build/esm/Menu/MenuPopover.js +2 -2
  107. package/build/esm/Menu/MenuPopover.js.map +1 -1
  108. package/build/esm/Menu/context.d.ts +2 -2
  109. package/build/esm/Menu/context.js +0 -0
  110. package/build/esm/Menu/context.js.map +1 -1
  111. package/build/esm/Menu/index.d.ts +0 -0
  112. package/build/esm/Menu/index.js +0 -0
  113. package/build/esm/Menu/index.js.map +1 -1
  114. package/build/esm/Menu/scope.d.ts +0 -0
  115. package/build/esm/Menu/scope.js +0 -0
  116. package/build/esm/Menu/scope.js.map +1 -1
  117. package/build/esm/Modal/Modal.d.ts +6 -7
  118. package/build/esm/Modal/Modal.js +5 -5
  119. package/build/esm/Modal/Modal.js.map +1 -1
  120. package/build/esm/Modal/ModalBackdrop.d.ts +6 -6
  121. package/build/esm/Modal/ModalBackdrop.js +6 -6
  122. package/build/esm/Modal/ModalBackdrop.js.map +1 -1
  123. package/build/esm/Modal/index.d.ts +0 -0
  124. package/build/esm/Modal/index.js +0 -0
  125. package/build/esm/Modal/index.js.map +1 -1
  126. package/build/esm/Popper/Popper.d.ts +7 -7
  127. package/build/esm/Popper/Popper.js +6 -6
  128. package/build/esm/Popper/Popper.js.map +1 -1
  129. package/build/esm/Popper/PopperArrow.d.ts +5 -5
  130. package/build/esm/Popper/PopperArrow.js +5 -6
  131. package/build/esm/Popper/PopperArrow.js.map +1 -1
  132. package/build/esm/Popper/context.d.ts +0 -0
  133. package/build/esm/Popper/context.js +0 -0
  134. package/build/esm/Popper/context.js.map +1 -1
  135. package/build/esm/Popper/index.d.ts +0 -0
  136. package/build/esm/Popper/index.js +0 -0
  137. package/build/esm/Popper/index.js.map +1 -1
  138. package/build/esm/Portal/Portal.d.ts +0 -0
  139. package/build/esm/Portal/Portal.js +0 -0
  140. package/build/esm/Portal/Portal.js.map +1 -1
  141. package/build/esm/Portal/index.d.ts +0 -0
  142. package/build/esm/Portal/index.js +0 -0
  143. package/build/esm/Portal/index.js.map +1 -1
  144. package/build/esm/RadioButton/RadioButton.d.ts +6 -6
  145. package/build/esm/RadioButton/RadioButton.js +5 -3
  146. package/build/esm/RadioButton/RadioButton.js.map +1 -1
  147. package/build/esm/RadioButton/RadioGroup.d.ts +7 -7
  148. package/build/esm/RadioButton/RadioGroup.js +2 -2
  149. package/build/esm/RadioButton/RadioGroup.js.map +1 -1
  150. package/build/esm/RadioButton/context.d.ts +2 -2
  151. package/build/esm/RadioButton/context.js +0 -0
  152. package/build/esm/RadioButton/context.js.map +1 -1
  153. package/build/esm/RadioButton/index.d.ts +0 -0
  154. package/build/esm/RadioButton/index.js +0 -0
  155. package/build/esm/RadioButton/index.js.map +1 -1
  156. package/build/esm/SkipNav/SkipNav.d.ts +6 -6
  157. package/build/esm/SkipNav/SkipNav.js +2 -2
  158. package/build/esm/SkipNav/SkipNav.js.map +1 -1
  159. package/build/esm/SkipNav/index.d.ts +0 -0
  160. package/build/esm/SkipNav/index.js +0 -0
  161. package/build/esm/SkipNav/index.js.map +1 -1
  162. package/build/esm/Slider/Slider.d.ts +218 -0
  163. package/build/esm/Slider/Slider.js +842 -0
  164. package/build/esm/Slider/Slider.js.map +1 -0
  165. package/build/esm/Slider/index.d.ts +1 -0
  166. package/build/esm/Slider/index.js +2 -0
  167. package/build/esm/Slider/index.js.map +1 -0
  168. package/build/esm/Spinner/Spinner.d.ts +7 -7
  169. package/build/esm/Spinner/Spinner.js +2 -2
  170. package/build/esm/Spinner/Spinner.js.map +1 -1
  171. package/build/esm/Spinner/SpinnerButton.d.ts +6 -6
  172. package/build/esm/Spinner/SpinnerButton.js +3 -3
  173. package/build/esm/Spinner/SpinnerButton.js.map +1 -1
  174. package/build/esm/Spinner/context.d.ts +2 -2
  175. package/build/esm/Spinner/context.js +0 -0
  176. package/build/esm/Spinner/context.js.map +1 -1
  177. package/build/esm/Spinner/index.d.ts +0 -0
  178. package/build/esm/Spinner/index.js +0 -0
  179. package/build/esm/Spinner/index.js.map +1 -1
  180. package/build/esm/Tabs/Tab.d.ts +6 -6
  181. package/build/esm/Tabs/Tab.js +3 -3
  182. package/build/esm/Tabs/Tab.js.map +1 -1
  183. package/build/esm/Tabs/TabList.d.ts +6 -6
  184. package/build/esm/Tabs/TabList.js +4 -4
  185. package/build/esm/Tabs/TabList.js.map +1 -1
  186. package/build/esm/Tabs/TabPanel.d.ts +6 -6
  187. package/build/esm/Tabs/TabPanel.js +4 -4
  188. package/build/esm/Tabs/TabPanel.js.map +1 -1
  189. package/build/esm/Tabs/TabPanels.d.ts +5 -5
  190. package/build/esm/Tabs/TabPanels.js +4 -4
  191. package/build/esm/Tabs/TabPanels.js.map +1 -1
  192. package/build/esm/Tabs/Tabs.d.ts +6 -6
  193. package/build/esm/Tabs/Tabs.js +2 -2
  194. package/build/esm/Tabs/Tabs.js.map +1 -1
  195. package/build/esm/Tabs/context.d.ts +2 -2
  196. package/build/esm/Tabs/context.js +0 -0
  197. package/build/esm/Tabs/context.js.map +1 -1
  198. package/build/esm/Tabs/index.d.ts +0 -0
  199. package/build/esm/Tabs/index.js +0 -0
  200. package/build/esm/Tabs/index.js.map +1 -1
  201. package/build/esm/Tabs/scopeQuery.d.ts +0 -0
  202. package/build/esm/Tabs/scopeQuery.js +0 -0
  203. package/build/esm/Tabs/scopeQuery.js.map +1 -1
  204. package/build/esm/Tooltip/Tooltip.d.ts +7 -8
  205. package/build/esm/Tooltip/Tooltip.js +5 -3
  206. package/build/esm/Tooltip/Tooltip.js.map +1 -1
  207. package/build/esm/Tooltip/index.d.ts +0 -0
  208. package/build/esm/Tooltip/index.js +0 -0
  209. package/build/esm/Tooltip/index.js.map +1 -1
  210. package/build/esm/Tooltip/stateMachine.d.ts +0 -0
  211. package/build/esm/Tooltip/stateMachine.js +9 -9
  212. package/build/esm/Tooltip/stateMachine.js.map +1 -1
  213. package/build/esm/Tooltip/useTooltip.d.ts +7 -7
  214. package/build/esm/Tooltip/useTooltip.js +7 -6
  215. package/build/esm/Tooltip/useTooltip.js.map +1 -1
  216. package/build/esm/hooks/index.d.ts +0 -0
  217. package/build/esm/hooks/index.js +0 -0
  218. package/build/esm/hooks/index.js.map +1 -1
  219. package/build/esm/hooks/useAutoFocus.d.ts +2 -2
  220. package/build/esm/hooks/useAutoFocus.js +0 -0
  221. package/build/esm/hooks/useAutoFocus.js.map +1 -1
  222. package/build/esm/hooks/useChildrenCounter.d.ts +0 -0
  223. package/build/esm/hooks/useChildrenCounter.js +0 -0
  224. package/build/esm/hooks/useChildrenCounter.js.map +1 -1
  225. package/build/esm/hooks/useControlledState.d.ts +2 -6
  226. package/build/esm/hooks/useControlledState.js +8 -7
  227. package/build/esm/hooks/useControlledState.js.map +1 -1
  228. package/build/esm/hooks/useFocusReturn.d.ts +0 -0
  229. package/build/esm/hooks/useFocusReturn.js +2 -2
  230. package/build/esm/hooks/useFocusReturn.js.map +1 -1
  231. package/build/esm/hooks/useFocusState.d.ts +5 -5
  232. package/build/esm/hooks/useFocusState.js +1 -1
  233. package/build/esm/hooks/useFocusState.js.map +1 -1
  234. package/build/esm/hooks/useGestureHandlers.d.ts +5 -5
  235. package/build/esm/hooks/useGestureHandlers.js +23 -15
  236. package/build/esm/hooks/useGestureHandlers.js.map +1 -1
  237. package/build/esm/hooks/useMeasure.d.ts +2 -2
  238. package/build/esm/hooks/useMeasure.js +0 -1
  239. package/build/esm/hooks/useMeasure.js.map +1 -1
  240. package/build/esm/hooks/useOnClickOutside.d.ts +2 -2
  241. package/build/esm/hooks/useOnClickOutside.js +0 -0
  242. package/build/esm/hooks/useOnClickOutside.js.map +1 -1
  243. package/build/esm/hooks/useOnKeyDown.d.ts +1 -1
  244. package/build/esm/hooks/useOnKeyDown.js +5 -5
  245. package/build/esm/hooks/useOnKeyDown.js.map +1 -1
  246. package/build/esm/hooks/useReducerMachine.d.ts +0 -0
  247. package/build/esm/hooks/useReducerMachine.js +2 -1
  248. package/build/esm/hooks/useReducerMachine.js.map +1 -1
  249. package/build/esm/hooks/useRemoveBodyScroll.d.ts +2 -1
  250. package/build/esm/hooks/useRemoveBodyScroll.js +12 -8
  251. package/build/esm/hooks/useRemoveBodyScroll.js.map +1 -1
  252. package/build/esm/hooks/useScope.d.ts +0 -0
  253. package/build/esm/hooks/useScope.js +0 -0
  254. package/build/esm/hooks/useScope.js.map +1 -1
  255. package/build/esm/hooks/useThrottle.d.ts +0 -0
  256. package/build/esm/hooks/useThrottle.js +0 -0
  257. package/build/esm/hooks/useThrottle.js.map +1 -1
  258. package/build/esm/index.d.ts +1 -0
  259. package/build/esm/index.js +1 -0
  260. package/build/esm/index.js.map +1 -1
  261. package/build/esm/utils/assign-ref.d.ts +3 -0
  262. package/build/esm/utils/{assignRef.js → assign-ref.js} +1 -1
  263. package/build/esm/utils/assign-ref.js.map +1 -0
  264. package/build/esm/utils/can-use-dom.d.ts +1 -0
  265. package/build/esm/utils/can-use-dom.js +4 -0
  266. package/build/esm/utils/can-use-dom.js.map +1 -0
  267. package/build/esm/utils/clamp.d.ts +0 -0
  268. package/build/esm/utils/clamp.js +0 -0
  269. package/build/esm/utils/clamp.js.map +1 -1
  270. package/build/esm/utils/context.d.ts +7 -0
  271. package/build/esm/utils/context.js +41 -0
  272. package/build/esm/utils/context.js.map +1 -0
  273. package/build/esm/utils/{createSubscription.d.ts → create-subscription.d.ts} +0 -0
  274. package/build/esm/utils/{createSubscription.js → create-subscription.js} +1 -1
  275. package/build/esm/utils/create-subscription.js.map +1 -0
  276. package/build/esm/utils/{getCircularIndex.d.ts → get-circular-index.d.ts} +0 -0
  277. package/build/esm/utils/{getCircularIndex.js → get-circular-index.js} +1 -1
  278. package/build/esm/utils/get-circular-index.js.map +1 -0
  279. package/build/esm/utils/index.d.ts +10 -4
  280. package/build/esm/utils/index.js +10 -4
  281. package/build/esm/utils/index.js.map +1 -1
  282. package/build/esm/utils/is-right-click.d.ts +6 -0
  283. package/build/esm/utils/is-right-click.js +9 -0
  284. package/build/esm/utils/is-right-click.js.map +1 -0
  285. package/build/esm/utils/owner-document.d.ts +7 -0
  286. package/build/esm/utils/owner-document.js +12 -0
  287. package/build/esm/utils/owner-document.js.map +1 -0
  288. package/build/esm/utils/polymorphic.d.ts +32 -0
  289. package/build/esm/utils/polymorphic.js +2 -0
  290. package/build/esm/utils/polymorphic.js.map +1 -0
  291. package/build/esm/utils/{rubberBandClamp.d.ts → rubber-band-clamp.d.ts} +0 -0
  292. package/build/esm/utils/{rubberBandClamp.js → rubber-band-clamp.js} +1 -1
  293. package/build/esm/utils/rubber-band-clamp.js.map +1 -0
  294. package/build/esm/utils/use-stable-callback.d.ts +16 -0
  295. package/build/esm/utils/use-stable-callback.js +43 -0
  296. package/build/esm/utils/use-stable-callback.js.map +1 -0
  297. package/build/esm/utils/wrap-event.d.ts +3 -0
  298. package/build/esm/utils/{wrapEvent.js → wrap-event.js} +1 -1
  299. package/build/esm/utils/wrap-event.js.map +1 -0
  300. package/build/tsconfig-build.tsbuildinfo +1 -0
  301. package/package.json +4 -5
  302. package/src/Accordion/Accordion.tsx +12 -6
  303. package/src/Accordion/AccordionBody.tsx +4 -5
  304. package/src/Accordion/AccordionHeader.tsx +30 -27
  305. package/src/Accordion/AccordionItem.tsx +12 -6
  306. package/src/Accordion/context.ts +3 -2
  307. package/src/CheckBox/CheckBox.tsx +5 -6
  308. package/src/ComboBox/ComboBox.story.tsx +3 -3
  309. package/src/ComboBox/Combobox.tsx +5 -8
  310. package/src/ComboBox/ComboboxButton.tsx +15 -9
  311. package/src/ComboBox/ComboboxInput.tsx +18 -10
  312. package/src/ComboBox/ComboboxLabel.tsx +4 -4
  313. package/src/ComboBox/ComboboxList.tsx +5 -6
  314. package/src/ComboBox/ComboboxOption.tsx +12 -8
  315. package/src/ComboBox/ComboboxPopover.tsx +15 -10
  316. package/src/ComboBox/context.ts +10 -9
  317. package/src/ComboBox/hooks.tsx +4 -3
  318. package/src/FocusLock/FocusLock.tsx +13 -7
  319. package/src/FocusLock/useFocusLock.ts +4 -3
  320. package/src/List/List.tsx +5 -5
  321. package/src/List/ListItem.tsx +5 -5
  322. package/src/Menu/Menu.story.tsx +2 -2
  323. package/src/Menu/Menu.tsx +13 -7
  324. package/src/Menu/MenuButton.tsx +13 -10
  325. package/src/Menu/MenuItem.tsx +15 -11
  326. package/src/Menu/MenuList.tsx +6 -6
  327. package/src/Menu/MenuPopover.tsx +4 -4
  328. package/src/Menu/context.ts +9 -4
  329. package/src/Modal/Modal.tsx +11 -7
  330. package/src/Modal/ModalBackdrop.tsx +16 -11
  331. package/src/Popper/Popper.tsx +7 -7
  332. package/src/Popper/PopperArrow.tsx +6 -8
  333. package/src/RadioButton/RadioButton.tsx +11 -6
  334. package/src/RadioButton/RadioGroup.tsx +11 -9
  335. package/src/RadioButton/context.ts +2 -4
  336. package/src/SkipNav/SkipNav.tsx +5 -5
  337. package/src/Slider/Slider.story.tsx +45 -0
  338. package/src/Slider/Slider.tsx +1106 -0
  339. package/src/Slider/index.ts +1 -0
  340. package/src/Slider/styles.css +131 -0
  341. package/src/Spinner/Spinner.tsx +13 -9
  342. package/src/Spinner/SpinnerButton.tsx +11 -6
  343. package/src/Spinner/context.ts +2 -3
  344. package/src/Tabs/Tab.tsx +13 -8
  345. package/src/Tabs/TabList.tsx +5 -5
  346. package/src/Tabs/TabPanel.tsx +5 -5
  347. package/src/Tabs/TabPanels.tsx +4 -4
  348. package/src/Tabs/Tabs.tsx +5 -7
  349. package/src/Tabs/context.ts +2 -3
  350. package/src/Tooltip/Tooltip.story.tsx +3 -3
  351. package/src/Tooltip/Tooltip.tsx +13 -7
  352. package/src/Tooltip/stateMachine.ts +9 -13
  353. package/src/Tooltip/useTooltip.ts +19 -12
  354. package/src/hooks/useAutoFocus.ts +2 -1
  355. package/src/hooks/useControlledState.ts +14 -14
  356. package/src/hooks/useFocusState.ts +4 -3
  357. package/src/hooks/useGestureHandlers.ts +33 -19
  358. package/src/hooks/useMeasure.ts +2 -2
  359. package/src/hooks/useOnClickOutside.ts +2 -2
  360. package/src/hooks/useOnKeyDown.ts +4 -3
  361. package/src/hooks/useRemoveBodyScroll.ts +18 -8
  362. package/src/index.ts +1 -0
  363. package/src/utils/{assignRef.ts → assign-ref.ts} +4 -4
  364. package/src/utils/can-use-dom.ts +7 -0
  365. package/src/utils/context.tsx +48 -0
  366. package/src/utils/{createSubscription.ts → create-subscription.ts} +0 -0
  367. package/src/utils/{getCircularIndex.ts → get-circular-index.ts} +0 -0
  368. package/src/utils/index.ts +10 -4
  369. package/src/utils/is-right-click.ts +14 -0
  370. package/src/utils/owner-document.ts +13 -0
  371. package/src/utils/polymorphic.ts +72 -0
  372. package/src/utils/{rubberBandClamp.ts → rubber-band-clamp.ts} +0 -0
  373. package/src/utils/use-stable-callback.ts +58 -0
  374. package/src/utils/wrap-event.ts +22 -0
  375. package/build/esm/utils/assignRef.d.ts +0 -3
  376. package/build/esm/utils/assignRef.js.map +0 -1
  377. package/build/esm/utils/createSubscription.js.map +0 -1
  378. package/build/esm/utils/getCircularIndex.js.map +0 -1
  379. package/build/esm/utils/rubberBandClamp.js.map +0 -1
  380. package/build/esm/utils/wrapEvent.d.ts +0 -3
  381. package/build/esm/utils/wrapEvent.js.map +0 -1
  382. package/build/tsconfig.tsbuildinfo +0 -1
  383. package/src/utils/wrapEvent.ts +0 -20
@@ -1,15 +1,21 @@
1
+ import type {
2
+ HTMLAttributes,
3
+ ElementType,
4
+ ReactNode,
5
+ MouseEvent,
6
+ KeyboardEvent,
7
+ FocusEvent,
8
+ } from 'react';
1
9
  import { forwardRef, useRef, useState, useEffect } from 'react';
2
- import * as React from 'react';
3
10
 
4
11
  import { wrapEvent, assignMultipleRefs, getCircularIndex } from '../utils';
5
12
  import { useAccordionContext, useAccordionItemContext } from './context';
6
13
  import { headerScopeQuery as scopeQuery } from './scopeQuery';
7
14
 
8
- export interface AccordionHeaderProps
9
- extends React.HTMLAttributes<HTMLDivElement> {
10
- as?: React.ElementType<any>;
11
- innerAs?: React.ElementType<any>;
12
- children?: React.ReactNode;
15
+ export interface AccordionHeaderProps extends HTMLAttributes<HTMLDivElement> {
16
+ as?: ElementType<any>;
17
+ innerAs?: ElementType<any>;
18
+ children?: ReactNode;
13
19
  }
14
20
 
15
21
  export const AccordionHeader = forwardRef<HTMLDivElement, AccordionHeaderProps>(
@@ -41,33 +47,30 @@ export const AccordionHeader = forwardRef<HTMLDivElement, AccordionHeaderProps>(
41
47
  }
42
48
  }, [accordionContext]);
43
49
 
44
- const onClick = wrapEvent(
45
- onClickProp,
46
- (e: React.MouseEvent<HTMLDivElement>) => {
47
- let index = 0;
48
- if (accordionItemContext.expanded) {
49
- index = -1;
50
- } else if (accordionContext) {
51
- const allHeaders =
52
- accordionContext.scope.current.queryAllNodes(scopeQuery) || [];
50
+ const onClick = wrapEvent(onClickProp, (e: MouseEvent<HTMLDivElement>) => {
51
+ let index = 0;
52
+ if (accordionItemContext.expanded) {
53
+ index = -1;
54
+ } else if (accordionContext) {
55
+ const allHeaders =
56
+ accordionContext.scope.current.queryAllNodes(scopeQuery) || [];
53
57
 
54
- index = allHeaders.findIndex((e) => e === ref.current);
55
- if (index === accordionContext.expandedIndex) {
56
- index = -1;
57
- }
58
- accordionContext.onChange && accordionContext.onChange(e, index);
58
+ index = allHeaders.findIndex((e) => e === ref.current);
59
+ if (index === accordionContext.expandedIndex) {
60
+ index = -1;
59
61
  }
60
-
61
- accordionItemContext.onChange &&
62
- accordionItemContext.onChange(e, index >= 0);
62
+ accordionContext.onChange && accordionContext.onChange(e, index);
63
63
  }
64
- );
65
64
 
66
- const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {
65
+ accordionItemContext.onChange &&
66
+ accordionItemContext.onChange(e, index >= 0);
67
+ });
68
+
69
+ const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {
67
70
  switch (e.key) {
68
71
  case 'Enter':
69
72
  case ' ': {
70
- onClick(e as unknown as React.MouseEvent<HTMLDivElement>);
73
+ onClick(e as unknown as MouseEvent<HTMLDivElement>);
71
74
  e.preventDefault();
72
75
  break;
73
76
  }
@@ -124,7 +127,7 @@ export const AccordionHeader = forwardRef<HTMLDivElement, AccordionHeaderProps>(
124
127
  }
125
128
  };
126
129
 
127
- const handleBlur = (e: React.FocusEvent<HTMLDivElement>) => {
130
+ const handleBlur = (e: FocusEvent<HTMLDivElement>) => {
128
131
  if (accordionContext) {
129
132
  const allHeaders =
130
133
  accordionContext.scope.current.queryAllNodes(scopeQuery);
@@ -1,17 +1,23 @@
1
+ import type {
2
+ HTMLAttributes,
3
+ ElementType,
4
+ ReactNode,
5
+ KeyboardEvent,
6
+ MouseEvent,
7
+ } from 'react';
1
8
  import { Fragment, forwardRef, useId } from 'react';
2
- import * as React from 'react';
3
9
 
4
10
  import type { AccordionItemContextProps } from './context';
5
11
  import { AccordionItemProvider } from './context';
6
12
 
7
13
  export interface AccordionItemProps
8
- extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
9
- as?: React.ElementType<any>;
10
- innerAs?: React.ElementType<any>;
11
- children?: React.ReactNode;
14
+ extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
15
+ as?: ElementType<any>;
16
+ innerAs?: ElementType<any>;
17
+ children?: ReactNode;
12
18
  expanded?: boolean;
13
19
  onChange?: (
14
- e: React.KeyboardEvent<HTMLDivElement> | React.MouseEvent<HTMLDivElement>,
20
+ e: KeyboardEvent<HTMLDivElement> | MouseEvent<HTMLDivElement>,
15
21
  value: boolean
16
22
  ) => void;
17
23
  }
@@ -1,3 +1,4 @@
1
+ import type { KeyboardEvent, MouseEvent } from 'react';
1
2
  import { useContext, createContext } from 'react';
2
3
 
3
4
  import type { Scope } from '../hooks/useScope';
@@ -9,7 +10,7 @@ export interface AccordionContextProps {
9
10
  scope: Scope<HTMLElement>;
10
11
  expandedIndex: number;
11
12
  onChange?: (
12
- e: React.KeyboardEvent<HTMLDivElement> | React.MouseEvent<HTMLDivElement>,
13
+ e: KeyboardEvent<HTMLDivElement> | MouseEvent<HTMLDivElement>,
13
14
  index: number
14
15
  ) => void;
15
16
  }
@@ -24,7 +25,7 @@ export interface AccordionItemContextProps {
24
25
  bodyId: string | undefined;
25
26
  expanded: boolean;
26
27
  onChange?: (
27
- e: React.KeyboardEvent<HTMLDivElement> | React.MouseEvent<HTMLDivElement>,
28
+ e: KeyboardEvent<HTMLDivElement> | MouseEvent<HTMLDivElement>,
28
29
  value: boolean
29
30
  ) => void;
30
31
  }
@@ -1,13 +1,12 @@
1
+ import type { ElementType, InputHTMLAttributes, ReactNode } from 'react';
1
2
  import { forwardRef } from 'react';
2
- import * as React from 'react';
3
3
 
4
4
  import { useControlledState } from '../hooks';
5
5
 
6
- export interface CheckBoxProps
7
- extends React.InputHTMLAttributes<HTMLInputElement> {
8
- as?: React.ElementType<any>;
9
- innerAs?: React.ElementType<any>;
10
- children?: React.ReactNode;
6
+ export interface CheckBoxProps extends InputHTMLAttributes<HTMLInputElement> {
7
+ as?: ElementType<any>;
8
+ innerAs?: ElementType<any>;
9
+ children?: ReactNode;
11
10
  }
12
11
 
13
12
  export const CheckBox = forwardRef<HTMLInputElement, CheckBoxProps>(
@@ -1,5 +1,5 @@
1
+ import type { ChangeEvent } from 'react';
1
2
  import { useMemo, useState } from 'react';
2
- import * as React from 'react';
3
3
 
4
4
  import { ComboboxOption } from './ComboboxOption';
5
5
  import { ComboboxList } from './ComboboxList';
@@ -32,7 +32,7 @@ export function UncontrolledClientSideExample({ initialValue = '' }) {
32
32
  const [selected, setSelected] = useState(initialValue);
33
33
  const results = useCityMatch(term);
34
34
 
35
- const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
35
+ const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
36
36
  setTerm(event.target.value);
37
37
  };
38
38
 
@@ -73,7 +73,7 @@ export function ControlledClientSideExample({ initialValue = '' }) {
73
73
  const [selected, setSelected] = useState(initialValue);
74
74
  const results = useCityMatch(term);
75
75
 
76
- const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
76
+ const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
77
77
  setTerm(event.target.value);
78
78
  setSelected('');
79
79
  };
@@ -1,5 +1,5 @@
1
+ import type { HTMLAttributes, ReactNode, ElementType } from 'react';
1
2
  import { forwardRef, useRef, useMemo, useId } from 'react';
2
- import * as React from 'react';
3
3
 
4
4
  import type { ActionTypes } from './hooks';
5
5
  import { stateChart, comboboxReducer, isVisible, INIT } from './hooks';
@@ -15,16 +15,13 @@ export type SelectEventHandler = (
15
15
  obj: any
16
16
  ) => void;
17
17
 
18
- export type ComboboxProps = Omit<
19
- React.HTMLAttributes<HTMLDivElement>,
20
- 'onSelect'
21
- > & {
18
+ export type ComboboxProps = Omit<HTMLAttributes<HTMLDivElement>, 'onSelect'> & {
22
19
  onSelect?: SelectEventHandler;
23
20
  openOnFocus?: boolean;
24
21
  selectOnBlur?: boolean;
25
- children?: React.ReactNode;
26
- as?: React.ElementType<any>;
27
- innerAs?: React.ElementType<any>;
22
+ children?: ReactNode;
23
+ as?: ElementType<any>;
24
+ innerAs?: ElementType<any>;
28
25
  };
29
26
 
30
27
  export const Combobox = forwardRef<HTMLDivElement, ComboboxProps>(
@@ -1,18 +1,24 @@
1
+ import type {
2
+ ButtonHTMLAttributes,
3
+ ElementType,
4
+ KeyboardEventHandler,
5
+ MouseEventHandler,
6
+ ReactNode,
7
+ } from 'react';
1
8
  import { forwardRef } from 'react';
2
- import * as React from 'react';
3
9
 
4
10
  import { useComboBoxContext } from './context';
5
11
  import { useKeyDown, IDLE, OPEN_WITH_BUTTON, CLOSE_WITH_BUTTON } from './hooks';
6
- import { wrapEvent } from '../utils/wrapEvent';
7
- import { assignMultipleRefs } from '../utils/assignRef';
12
+ import { wrapEvent } from '../utils/wrap-event';
13
+ import { assignMultipleRefs } from '../utils/assign-ref';
8
14
 
9
15
  export interface ComboboxButtonProps
10
- extends React.ButtonHTMLAttributes<HTMLButtonElement> {
11
- as?: React.ElementType<any>;
12
- innerAs?: React.ElementType<any>;
13
- onClick?: React.MouseEventHandler<HTMLButtonElement>;
14
- onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;
15
- children?: React.ReactNode;
16
+ extends ButtonHTMLAttributes<HTMLButtonElement> {
17
+ as?: ElementType<any>;
18
+ innerAs?: ElementType<any>;
19
+ onClick?: MouseEventHandler<HTMLButtonElement>;
20
+ onKeyDown?: KeyboardEventHandler<HTMLButtonElement>;
21
+ children?: ReactNode;
16
22
  }
17
23
 
18
24
  export const ComboboxButton = forwardRef<
@@ -1,5 +1,13 @@
1
+ import type {
2
+ ChangeEvent,
3
+ ChangeEventHandler,
4
+ ElementType,
5
+ FocusEventHandler,
6
+ InputHTMLAttributes,
7
+ KeyboardEventHandler,
8
+ MouseEventHandler,
9
+ } from 'react';
1
10
  import { forwardRef, useEffect, useRef } from 'react';
2
- import * as React from 'react';
3
11
 
4
12
  import {
5
13
  useBlur,
@@ -16,7 +24,7 @@ import { assignMultipleRefs, wrapEvent } from '../utils';
16
24
  import { useComboBoxContext } from './context';
17
25
 
18
26
  export interface ComboboxInputProps
19
- extends React.InputHTMLAttributes<HTMLInputElement> {
27
+ extends InputHTMLAttributes<HTMLInputElement> {
20
28
  // clear on ESC
21
29
  clearOnEscape?: boolean;
22
30
  // highlights all the text in the box on click when true
@@ -27,13 +35,13 @@ export interface ComboboxInputProps
27
35
  defaultValue?: string;
28
36
  // value for controlled mode
29
37
  value?: string;
30
- onClick?: React.MouseEventHandler<HTMLInputElement>;
31
- onChange?: React.ChangeEventHandler<HTMLInputElement>;
32
- onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>;
33
- onBlur?: React.FocusEventHandler<HTMLInputElement>;
34
- onFocus?: React.FocusEventHandler<HTMLInputElement>;
35
- as?: React.ElementType<any>;
36
- innerAs?: React.ElementType<any>;
38
+ onClick?: MouseEventHandler<HTMLInputElement>;
39
+ onChange?: ChangeEventHandler<HTMLInputElement>;
40
+ onKeyDown?: KeyboardEventHandler<HTMLInputElement>;
41
+ onBlur?: FocusEventHandler<HTMLInputElement>;
42
+ onFocus?: FocusEventHandler<HTMLInputElement>;
43
+ as?: ElementType<any>;
44
+ innerAs?: ElementType<any>;
37
45
  id?: string;
38
46
  }
39
47
 
@@ -96,7 +104,7 @@ export const ComboboxInput = forwardRef<HTMLInputElement, ComboboxInputProps>(
96
104
  // [*]... and when controlled, we don't trigger handleValueChange as the user
97
105
  // types, instead the developer controls it with the normal input onChange
98
106
  // prop
99
- const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
107
+ const handleChange = (e: ChangeEvent<HTMLInputElement>) => {
100
108
  // After the user started typing, lets forget the defaultValue
101
109
  hasStartedInteracting.current = true;
102
110
 
@@ -1,12 +1,12 @@
1
+ import type { ElementType, LabelHTMLAttributes } from 'react';
1
2
  import { forwardRef } from 'react';
2
- import * as React from 'react';
3
3
 
4
4
  import { useComboBoxContext } from './context';
5
5
 
6
6
  export interface ComboboxLabelProps
7
- extends React.LabelHTMLAttributes<HTMLLabelElement> {
8
- as?: React.ElementType<any>;
9
- innerAs?: React.ElementType<any>;
7
+ extends LabelHTMLAttributes<HTMLLabelElement> {
8
+ as?: ElementType<any>;
9
+ innerAs?: ElementType<any>;
10
10
  id?: string;
11
11
  }
12
12
 
@@ -1,16 +1,15 @@
1
+ import type { HTMLAttributes, ElementType, ReactNode } from 'react';
1
2
  import { forwardRef, useRef, useEffect } from 'react';
2
- import * as React from 'react';
3
3
 
4
4
  import { useComboBoxContext } from './context';
5
5
  import { getScope } from '../hooks';
6
6
  import { assignMultipleRefs } from '../utils';
7
7
 
8
- export interface ComboboxListProps
9
- extends React.HTMLAttributes<HTMLUListElement> {
10
- as?: React.ElementType<any>;
11
- innerAs?: React.ElementType<any>;
8
+ export interface ComboboxListProps extends HTMLAttributes<HTMLUListElement> {
9
+ as?: ElementType<any>;
10
+ innerAs?: ElementType<any>;
12
11
  persistSelection?: boolean;
13
- children?: React.ReactNode;
12
+ children?: ReactNode;
14
13
  }
15
14
 
16
15
  export const ComboboxList = forwardRef<HTMLUListElement, ComboboxListProps>(
@@ -1,21 +1,25 @@
1
1
  /* eslint-disable @typescript-eslint/no-use-before-define */
2
+ import type {
3
+ ElementType,
4
+ LiHTMLAttributes,
5
+ MouseEventHandler,
6
+ ReactNode,
7
+ } from 'react';
2
8
  import { forwardRef, useEffect, useRef } from 'react';
3
- import * as React from 'react';
4
9
 
5
10
  import { SELECT_WITH_CLICK, CLEAR_SELECTION } from './hooks';
6
- import { wrapEvent } from '../utils/wrapEvent';
11
+ import { wrapEvent } from '../utils/wrap-event';
7
12
  import { useComboBoxContext } from './context';
8
13
  import { makeHash } from './makeHash';
9
14
 
10
- export interface ComboboxOptionProps
11
- extends React.LiHTMLAttributes<HTMLLIElement> {
12
- as?: React.ElementType<any>;
13
- innerAs?: React.ElementType<any>;
15
+ export interface ComboboxOptionProps extends LiHTMLAttributes<HTMLLIElement> {
16
+ as?: ElementType<any>;
17
+ innerAs?: ElementType<any>;
14
18
  id: string;
15
19
  value: any;
16
20
  text?: string;
17
- onClick?: React.MouseEventHandler<HTMLLIElement>;
18
- children?: React.ReactNode;
21
+ onClick?: MouseEventHandler<HTMLLIElement>;
22
+ children?: ReactNode;
19
23
  }
20
24
 
21
25
  export const ComboboxOption = forwardRef<HTMLLIElement, ComboboxOptionProps>(
@@ -1,18 +1,23 @@
1
+ import type {
2
+ ElementType,
3
+ FocusEventHandler,
4
+ HTMLAttributes,
5
+ KeyboardEventHandler,
6
+ ReactNode,
7
+ } from 'react';
1
8
  import { forwardRef } from 'react';
2
- import * as React from 'react';
3
9
 
4
10
  import { useKeyDown, useBlur } from './hooks';
5
- import { wrapEvent } from '../utils/wrapEvent';
6
- import { assignMultipleRefs } from '../utils/assignRef';
11
+ import { wrapEvent } from '../utils/wrap-event';
12
+ import { assignMultipleRefs } from '../utils/assign-ref';
7
13
  import { useComboBoxContext } from './context';
8
14
 
9
- export interface ComboboxPopoverProps
10
- extends React.HTMLAttributes<HTMLDivElement> {
11
- as?: React.ElementType<any>;
12
- innerAs?: React.ElementType<any>;
13
- onBlur?: React.FocusEventHandler<HTMLDivElement>;
14
- onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>;
15
- children?: React.ReactNode;
15
+ export interface ComboboxPopoverProps extends HTMLAttributes<HTMLDivElement> {
16
+ as?: ElementType<any>;
17
+ innerAs?: ElementType<any>;
18
+ onBlur?: FocusEventHandler<HTMLDivElement>;
19
+ onKeyDown?: KeyboardEventHandler<HTMLDivElement>;
20
+ children?: ReactNode;
16
21
  }
17
22
 
18
23
  export const ComboboxPopover = forwardRef<HTMLDivElement, ComboboxPopoverProps>(
@@ -1,3 +1,4 @@
1
+ import type { MutableRefObject } from 'react';
1
2
  import { createContext, useContext } from 'react';
2
3
 
3
4
  import type { ActionTypes, StateTypes, ReducerState } from './hooks';
@@ -6,11 +7,11 @@ import type { Scope } from '../hooks';
6
7
 
7
8
  export interface ComboBoxContextProps {
8
9
  data: Omit<ReducerState, 'state'>;
9
- inputRef: React.MutableRefObject<HTMLInputElement | null>;
10
- popoverRef: React.MutableRefObject<HTMLDivElement | null>;
11
- buttonRef: React.MutableRefObject<HTMLButtonElement | null>;
10
+ inputRef: MutableRefObject<HTMLInputElement | null>;
11
+ popoverRef: MutableRefObject<HTMLDivElement | null>;
12
+ buttonRef: MutableRefObject<HTMLButtonElement | null>;
12
13
  onSelect?: SelectEventHandler;
13
- optionsRef: React.MutableRefObject<{
14
+ optionsRef: MutableRefObject<{
14
15
  [itemId: string]: {
15
16
  value: string | unknown;
16
17
  text: string;
@@ -19,11 +20,11 @@ export interface ComboBoxContextProps {
19
20
  listScope: Scope<HTMLElement>;
20
21
  state: StateTypes;
21
22
  transition: (action: ActionTypes, payload?: any) => void;
22
- listboxIdRef: React.MutableRefObject<string | undefined>;
23
- labelIdRef: React.MutableRefObject<string | undefined>;
24
- autocompletePropRef: React.MutableRefObject<boolean>;
25
- persistSelectionRef: React.MutableRefObject<boolean>;
26
- clearOnEscapeRef: React.MutableRefObject<boolean>;
23
+ listboxIdRef: MutableRefObject<string | undefined>;
24
+ labelIdRef: MutableRefObject<string | undefined>;
25
+ autocompletePropRef: MutableRefObject<boolean>;
26
+ persistSelectionRef: MutableRefObject<boolean>;
27
+ clearOnEscapeRef: MutableRefObject<boolean>;
27
28
  isVisible: boolean;
28
29
  openOnFocus: boolean;
29
30
  selectOnBlur: boolean;
@@ -1,12 +1,13 @@
1
1
  /* eslint-disable @typescript-eslint/no-use-before-define */
2
2
  /* eslint-disable default-case */
3
+ import type { KeyboardEvent, MutableRefObject } from 'react';
3
4
  import { useEffect } from 'react';
4
5
 
5
6
  import type {
6
7
  StateChart as GenericStateChart,
7
8
  StateMachineState,
8
9
  } from '../hooks/useReducerMachine';
9
- import { getCircularIndex } from '../utils/getCircularIndex';
10
+ import { getCircularIndex } from '../utils/get-circular-index';
10
11
  import { useComboBoxContext } from './context';
11
12
  import { scopeQuery } from './scopeQuery';
12
13
 
@@ -221,7 +222,7 @@ export const isVisible = (state: any) => visibleStates.indexOf(state) >= 0;
221
222
  // the popup.
222
223
  export function useFocusManagement(
223
224
  lastActionType: ActionTypes,
224
- inputRef: React.MutableRefObject<HTMLInputElement | null>
225
+ inputRef: MutableRefObject<HTMLInputElement | null>
225
226
  ) {
226
227
  // useEffect so that the cursor goes to the end of the input instead
227
228
  // of awkwardly at the beginning, unclear to me why ...
@@ -289,7 +290,7 @@ export function useKeyDown() {
289
290
  listScope,
290
291
  } = useComboBoxContext();
291
292
 
292
- return function handleKeyDown(event: React.KeyboardEvent<any>) {
293
+ return function handleKeyDown(event: KeyboardEvent<any>) {
293
294
  const optionNodes = listScope.current.queryAllNodes(scopeQuery);
294
295
 
295
296
  switch (event.key) {
@@ -1,17 +1,23 @@
1
+ import type {
2
+ ElementType,
3
+ FC,
4
+ HTMLAttributes,
5
+ MutableRefObject,
6
+ ReactNode,
7
+ } from 'react';
1
8
  import { useRef } from 'react';
2
- import * as React from 'react';
3
9
 
4
10
  import { useFocusLock } from './useFocusLock';
5
11
 
6
- export interface FocusLockProps extends React.HTMLAttributes<HTMLDivElement> {
7
- as?: React.ElementType<any>;
8
- innerAs?: React.ElementType<any>;
9
- children?: React.ReactNode;
10
- childRef: React.MutableRefObject<HTMLElement | null>;
12
+ export interface FocusLockProps extends HTMLAttributes<HTMLDivElement> {
13
+ as?: ElementType<any>;
14
+ innerAs?: ElementType<any>;
15
+ children?: ReactNode;
16
+ childRef: MutableRefObject<HTMLElement | null>;
11
17
  enabled?: boolean;
12
18
  }
13
19
 
14
- export const FocusLock: React.FC<FocusLockProps> = function FocusLock(props) {
20
+ export const FocusLock: FC<FocusLockProps> = function FocusLock(props) {
15
21
  const {
16
22
  as: Comp = 'div',
17
23
  childRef,
@@ -1,16 +1,17 @@
1
+ import type { MutableRefObject } from 'react';
1
2
  import { useEffect } from 'react';
2
3
 
3
4
  import { focusOnChildNode } from './tabUtils';
4
5
 
5
6
  export interface FocusLockOptions {
6
7
  enabled: boolean;
7
- lockStartRef: React.MutableRefObject<HTMLElement | null>;
8
- lockEndRef: React.MutableRefObject<HTMLElement | null>;
8
+ lockStartRef: MutableRefObject<HTMLElement | null>;
9
+ lockEndRef: MutableRefObject<HTMLElement | null>;
9
10
  }
10
11
 
11
12
  const focusLockStack: HTMLElement[] = [];
12
13
  export function useFocusLock(
13
- ref: React.MutableRefObject<HTMLElement | null>,
14
+ ref: MutableRefObject<HTMLElement | null>,
14
15
  opts: FocusLockOptions
15
16
  ) {
16
17
  const { enabled = true, lockStartRef, lockEndRef } = opts;
package/src/List/List.tsx CHANGED
@@ -1,10 +1,10 @@
1
+ import type { ElementType, HTMLAttributes, ReactNode } from 'react';
1
2
  import { forwardRef } from 'react';
2
- import * as React from 'react';
3
3
 
4
- export interface ListProps extends React.HTMLAttributes<HTMLUListElement> {
5
- as?: React.ElementType<any>;
6
- innerAs?: React.ElementType<any>;
7
- children?: React.ReactNode;
4
+ export interface ListProps extends HTMLAttributes<HTMLUListElement> {
5
+ as?: ElementType<any>;
6
+ innerAs?: ElementType<any>;
7
+ children?: ReactNode;
8
8
  }
9
9
 
10
10
  export const List = forwardRef<HTMLUListElement, ListProps>(function List(
@@ -1,10 +1,10 @@
1
+ import type { ElementType, HTMLAttributes, ReactNode } from 'react';
1
2
  import { forwardRef } from 'react';
2
- import * as React from 'react';
3
3
 
4
- export interface ListItemProps extends React.HTMLAttributes<HTMLLIElement> {
5
- as?: React.ElementType<any>;
6
- innerAs?: React.ElementType<any>;
7
- children?: React.ReactNode;
4
+ export interface ListItemProps extends HTMLAttributes<HTMLLIElement> {
5
+ as?: ElementType<any>;
6
+ innerAs?: ElementType<any>;
7
+ children?: ReactNode;
8
8
  }
9
9
 
10
10
  export const ListItem = forwardRef<HTMLLIElement, ListItemProps>(
@@ -1,5 +1,5 @@
1
+ import type { MouseEvent } from 'react';
1
2
  import { useState } from 'react';
2
- import * as React from 'react';
3
3
  import { animated, useSpring } from 'react-spring';
4
4
 
5
5
  import { Menu, MenuButton, MenuItem, MenuList, MenuPopover } from './';
@@ -14,7 +14,7 @@ const noop = () => {
14
14
  };
15
15
 
16
16
  const Wrapper = ({ children }) => {
17
- const handleLinkClick = (e: React.MouseEvent<HTMLAnchorElement>) => {
17
+ const handleLinkClick = (e: MouseEvent<HTMLAnchorElement>) => {
18
18
  console.log('Clicked ' + e.currentTarget.innerText);
19
19
  e.preventDefault();
20
20
  };
package/src/Menu/Menu.tsx CHANGED
@@ -1,19 +1,25 @@
1
+ import type {
2
+ KeyboardEvent,
3
+ MouseEvent,
4
+ PointerEvent,
5
+ ReactNode,
6
+ ElementType,
7
+ } from 'react';
1
8
  import { forwardRef, useRef, Fragment, useId } from 'react';
2
- import * as React from 'react';
3
9
 
4
10
  import type { MenuContextProps } from './context';
5
11
  import { MenuProvider } from './context';
6
12
  import { useControlledState } from '../hooks';
7
13
 
8
14
  export interface MenuProps {
9
- as?: React.ElementType<any>;
10
- innerAs?: React.ElementType<any>;
11
- children?: React.ReactNode;
15
+ as?: ElementType<any>;
16
+ innerAs?: ElementType<any>;
17
+ children?: ReactNode;
12
18
  onChange?: (
13
19
  e:
14
- | React.KeyboardEvent<HTMLElement>
15
- | React.MouseEvent<HTMLElement>
16
- | React.PointerEvent<HTMLElement>,
20
+ | KeyboardEvent<HTMLElement>
21
+ | MouseEvent<HTMLElement>
22
+ | PointerEvent<HTMLElement>,
17
23
  isOpen: boolean
18
24
  ) => void;
19
25
  open?: boolean;