@basic-ui/core 0.0.37 → 0.0.40

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 (324) hide show
  1. package/build/cjs/index.js +85 -84
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/esm/Accordion/Accordion.d.ts +1 -1
  4. package/build/esm/Accordion/Accordion.js +23 -17
  5. package/build/esm/Accordion/Accordion.js.map +1 -1
  6. package/build/esm/Accordion/AccordionBody.d.ts +1 -1
  7. package/build/esm/Accordion/AccordionBody.js +24 -15
  8. package/build/esm/Accordion/AccordionBody.js.map +1 -1
  9. package/build/esm/Accordion/AccordionHeader.d.ts +1 -1
  10. package/build/esm/Accordion/AccordionHeader.js +46 -31
  11. package/build/esm/Accordion/AccordionHeader.js.map +1 -1
  12. package/build/esm/Accordion/AccordionItem.d.ts +1 -1
  13. package/build/esm/Accordion/AccordionItem.js +18 -18
  14. package/build/esm/Accordion/AccordionItem.js.map +1 -1
  15. package/build/esm/Accordion/context.d.ts +1 -1
  16. package/build/esm/Accordion/context.js +12 -10
  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.map +0 -0
  20. package/build/esm/Accordion/scopeQuery.d.ts +0 -0
  21. package/build/esm/Accordion/scopeQuery.js.map +0 -0
  22. package/build/esm/CheckBox/CheckBox.d.ts +1 -1
  23. package/build/esm/CheckBox/CheckBox.js +20 -12
  24. package/build/esm/CheckBox/CheckBox.js.map +1 -1
  25. package/build/esm/CheckBox/index.d.ts +0 -0
  26. package/build/esm/CheckBox/index.js.map +0 -0
  27. package/build/esm/ComboBox/Combobox.d.ts +1 -1
  28. package/build/esm/ComboBox/Combobox.js +55 -48
  29. package/build/esm/ComboBox/Combobox.js.map +1 -1
  30. package/build/esm/ComboBox/ComboboxButton.d.ts +1 -1
  31. package/build/esm/ComboBox/ComboboxButton.js +20 -20
  32. package/build/esm/ComboBox/ComboboxButton.js.map +1 -1
  33. package/build/esm/ComboBox/ComboboxInput.d.ts +1 -1
  34. package/build/esm/ComboBox/ComboboxInput.js +53 -50
  35. package/build/esm/ComboBox/ComboboxInput.js.map +1 -1
  36. package/build/esm/ComboBox/ComboboxLabel.d.ts +1 -1
  37. package/build/esm/ComboBox/ComboboxLabel.js +12 -12
  38. package/build/esm/ComboBox/ComboboxLabel.js.map +1 -1
  39. package/build/esm/ComboBox/ComboboxList.d.ts +1 -1
  40. package/build/esm/ComboBox/ComboboxList.js +16 -17
  41. package/build/esm/ComboBox/ComboboxList.js.map +1 -1
  42. package/build/esm/ComboBox/ComboboxOption.d.ts +1 -1
  43. package/build/esm/ComboBox/ComboboxOption.js +32 -34
  44. package/build/esm/ComboBox/ComboboxOption.js.map +1 -1
  45. package/build/esm/ComboBox/ComboboxPopover.d.ts +1 -1
  46. package/build/esm/ComboBox/ComboboxPopover.js +16 -17
  47. package/build/esm/ComboBox/ComboboxPopover.js.map +1 -1
  48. package/build/esm/ComboBox/cities.d.ts +0 -0
  49. package/build/esm/ComboBox/cities.js.map +0 -0
  50. package/build/esm/ComboBox/context.d.ts +3 -3
  51. package/build/esm/ComboBox/context.js +6 -5
  52. package/build/esm/ComboBox/context.js.map +1 -1
  53. package/build/esm/ComboBox/hooks.d.ts +1 -1
  54. package/build/esm/ComboBox/hooks.js +82 -115
  55. package/build/esm/ComboBox/hooks.js.map +1 -1
  56. package/build/esm/ComboBox/index.d.ts +0 -0
  57. package/build/esm/ComboBox/index.js.map +0 -0
  58. package/build/esm/ComboBox/makeHash.d.ts +0 -0
  59. package/build/esm/ComboBox/makeHash.js +3 -3
  60. package/build/esm/ComboBox/makeHash.js.map +1 -1
  61. package/build/esm/ComboBox/scopeQuery.d.ts +0 -0
  62. package/build/esm/ComboBox/scopeQuery.js.map +0 -0
  63. package/build/esm/FocusLock/FocusLock.d.ts +1 -1
  64. package/build/esm/FocusLock/FocusLock.js +18 -16
  65. package/build/esm/FocusLock/FocusLock.js.map +1 -1
  66. package/build/esm/FocusLock/index.d.ts +0 -0
  67. package/build/esm/FocusLock/index.js.map +0 -0
  68. package/build/esm/FocusLock/tabUtils.d.ts +1 -0
  69. package/build/esm/FocusLock/tabUtils.js +14 -2
  70. package/build/esm/FocusLock/tabUtils.js.map +1 -1
  71. package/build/esm/FocusLock/useFocusLock.d.ts +0 -0
  72. package/build/esm/FocusLock/useFocusLock.js +14 -22
  73. package/build/esm/FocusLock/useFocusLock.js.map +1 -1
  74. package/build/esm/List/List.d.ts +1 -1
  75. package/build/esm/List/List.js +6 -6
  76. package/build/esm/List/List.js.map +1 -1
  77. package/build/esm/List/ListItem.d.ts +1 -1
  78. package/build/esm/List/ListItem.js +6 -6
  79. package/build/esm/List/ListItem.js.map +1 -1
  80. package/build/esm/List/context.d.ts +0 -0
  81. package/build/esm/List/context.js +3 -3
  82. package/build/esm/List/context.js.map +1 -1
  83. package/build/esm/List/index.d.ts +0 -0
  84. package/build/esm/List/index.js.map +0 -0
  85. package/build/esm/Menu/Menu.d.ts +1 -1
  86. package/build/esm/Menu/Menu.js +31 -23
  87. package/build/esm/Menu/Menu.js.map +1 -1
  88. package/build/esm/Menu/MenuButton.d.ts +1 -1
  89. package/build/esm/Menu/MenuButton.js +29 -25
  90. package/build/esm/Menu/MenuButton.js.map +1 -1
  91. package/build/esm/Menu/MenuItem.d.ts +1 -1
  92. package/build/esm/Menu/MenuItem.js +26 -27
  93. package/build/esm/Menu/MenuItem.js.map +1 -1
  94. package/build/esm/Menu/MenuList.d.ts +1 -1
  95. package/build/esm/Menu/MenuList.js +62 -45
  96. package/build/esm/Menu/MenuList.js.map +1 -1
  97. package/build/esm/Menu/MenuPopover.d.ts +2 -2
  98. package/build/esm/Menu/MenuPopover.js +9 -10
  99. package/build/esm/Menu/MenuPopover.js.map +1 -1
  100. package/build/esm/Menu/context.d.ts +1 -1
  101. package/build/esm/Menu/context.js +11 -8
  102. package/build/esm/Menu/context.js.map +1 -1
  103. package/build/esm/Menu/index.d.ts +0 -0
  104. package/build/esm/Menu/index.js.map +0 -0
  105. package/build/esm/Menu/scope.d.ts +0 -0
  106. package/build/esm/Menu/scope.js.map +0 -0
  107. package/build/esm/Modal/Modal.d.ts +2 -2
  108. package/build/esm/Modal/Modal.js +14 -12
  109. package/build/esm/Modal/Modal.js.map +1 -1
  110. package/build/esm/Modal/ModalBackdrop.d.ts +1 -1
  111. package/build/esm/Modal/ModalBackdrop.js +21 -19
  112. package/build/esm/Modal/ModalBackdrop.js.map +1 -1
  113. package/build/esm/Modal/index.d.ts +0 -0
  114. package/build/esm/Modal/index.js.map +0 -0
  115. package/build/esm/Popper/Popper.d.ts +2 -2
  116. package/build/esm/Popper/Popper.js +51 -36
  117. package/build/esm/Popper/Popper.js.map +1 -1
  118. package/build/esm/Popper/PopperArrow.d.ts +1 -1
  119. package/build/esm/Popper/PopperArrow.js +9 -9
  120. package/build/esm/Popper/PopperArrow.js.map +1 -1
  121. package/build/esm/Popper/context.d.ts +1 -1
  122. package/build/esm/Popper/context.js +5 -3
  123. package/build/esm/Popper/context.js.map +1 -1
  124. package/build/esm/Popper/index.d.ts +0 -0
  125. package/build/esm/Popper/index.js.map +0 -0
  126. package/build/esm/Portal/Portal.d.ts +1 -1
  127. package/build/esm/Portal/Portal.js +6 -5
  128. package/build/esm/Portal/Portal.js.map +1 -1
  129. package/build/esm/Portal/index.d.ts +0 -0
  130. package/build/esm/Portal/index.js.map +0 -0
  131. package/build/esm/RadioButton/RadioButton.d.ts +2 -2
  132. package/build/esm/RadioButton/RadioButton.js +13 -13
  133. package/build/esm/RadioButton/RadioButton.js.map +1 -1
  134. package/build/esm/RadioButton/RadioGroup.d.ts +2 -2
  135. package/build/esm/RadioButton/RadioGroup.js +25 -18
  136. package/build/esm/RadioButton/RadioGroup.js.map +1 -1
  137. package/build/esm/RadioButton/context.d.ts +0 -0
  138. package/build/esm/RadioButton/context.js +6 -5
  139. package/build/esm/RadioButton/context.js.map +1 -1
  140. package/build/esm/RadioButton/index.d.ts +0 -0
  141. package/build/esm/RadioButton/index.js.map +0 -0
  142. package/build/esm/SkipNav/SkipNav.d.ts +1 -1
  143. package/build/esm/SkipNav/SkipNav.js +6 -6
  144. package/build/esm/SkipNav/SkipNav.js.map +1 -1
  145. package/build/esm/SkipNav/index.d.ts +0 -0
  146. package/build/esm/SkipNav/index.js.map +0 -0
  147. package/build/esm/Spinner/Spinner.d.ts +1 -1
  148. package/build/esm/Spinner/Spinner.js +42 -31
  149. package/build/esm/Spinner/Spinner.js.map +1 -1
  150. package/build/esm/Spinner/SpinnerButton.d.ts +1 -1
  151. package/build/esm/Spinner/SpinnerButton.js +12 -12
  152. package/build/esm/Spinner/SpinnerButton.js.map +1 -1
  153. package/build/esm/Spinner/context.d.ts +0 -0
  154. package/build/esm/Spinner/context.js +6 -5
  155. package/build/esm/Spinner/context.js.map +1 -1
  156. package/build/esm/Spinner/index.d.ts +0 -0
  157. package/build/esm/Spinner/index.js.map +0 -0
  158. package/build/esm/Tabs/Tab.d.ts +1 -1
  159. package/build/esm/Tabs/Tab.js +30 -29
  160. package/build/esm/Tabs/Tab.js.map +1 -1
  161. package/build/esm/Tabs/TabList.d.ts +1 -1
  162. package/build/esm/Tabs/TabList.js +27 -23
  163. package/build/esm/Tabs/TabList.js.map +1 -1
  164. package/build/esm/Tabs/TabPanel.d.ts +1 -1
  165. package/build/esm/Tabs/TabPanel.js +13 -12
  166. package/build/esm/Tabs/TabPanel.js.map +1 -1
  167. package/build/esm/Tabs/TabPanels.d.ts +1 -1
  168. package/build/esm/Tabs/TabPanels.js +14 -12
  169. package/build/esm/Tabs/TabPanels.js.map +1 -1
  170. package/build/esm/Tabs/Tabs.d.ts +1 -1
  171. package/build/esm/Tabs/Tabs.js +28 -14
  172. package/build/esm/Tabs/Tabs.js.map +1 -1
  173. package/build/esm/Tabs/context.d.ts +1 -1
  174. package/build/esm/Tabs/context.js +12 -10
  175. package/build/esm/Tabs/context.js.map +1 -1
  176. package/build/esm/Tabs/index.d.ts +0 -0
  177. package/build/esm/Tabs/index.js.map +0 -0
  178. package/build/esm/Tabs/scopeQuery.d.ts +0 -0
  179. package/build/esm/Tabs/scopeQuery.js.map +0 -0
  180. package/build/esm/Tooltip/Tooltip.d.ts +2 -1
  181. package/build/esm/Tooltip/Tooltip.js +17 -15
  182. package/build/esm/Tooltip/Tooltip.js.map +1 -1
  183. package/build/esm/Tooltip/index.d.ts +0 -0
  184. package/build/esm/Tooltip/index.js.map +0 -0
  185. package/build/esm/Tooltip/stateMachine.d.ts +0 -0
  186. package/build/esm/Tooltip/stateMachine.js +56 -80
  187. package/build/esm/Tooltip/stateMachine.js.map +1 -1
  188. package/build/esm/Tooltip/useTooltip.d.ts +1 -1
  189. package/build/esm/Tooltip/useTooltip.js +33 -32
  190. package/build/esm/Tooltip/useTooltip.js.map +1 -1
  191. package/build/esm/hooks/index.d.ts +0 -1
  192. package/build/esm/hooks/index.js +0 -1
  193. package/build/esm/hooks/index.js.map +1 -1
  194. package/build/esm/hooks/useAutoFocus.d.ts +0 -0
  195. package/build/esm/hooks/useAutoFocus.js +6 -2
  196. package/build/esm/hooks/useAutoFocus.js.map +1 -1
  197. package/build/esm/hooks/useChildrenCounter.d.ts +1 -1
  198. package/build/esm/hooks/useChildrenCounter.js +6 -4
  199. package/build/esm/hooks/useChildrenCounter.js.map +1 -1
  200. package/build/esm/hooks/useControlledState.d.ts +1 -1
  201. package/build/esm/hooks/useControlledState.js +7 -2
  202. package/build/esm/hooks/useControlledState.js.map +1 -1
  203. package/build/esm/hooks/useFocusReturn.d.ts +2 -1
  204. package/build/esm/hooks/useFocusReturn.js +25 -14
  205. package/build/esm/hooks/useFocusReturn.js.map +1 -1
  206. package/build/esm/hooks/useFocusState.d.ts +0 -0
  207. package/build/esm/hooks/useFocusState.js +13 -9
  208. package/build/esm/hooks/useFocusState.js.map +1 -1
  209. package/build/esm/hooks/useGestureHandlers.d.ts +0 -0
  210. package/build/esm/hooks/useGestureHandlers.js +59 -63
  211. package/build/esm/hooks/useGestureHandlers.js.map +1 -1
  212. package/build/esm/hooks/useId.d.ts +0 -0
  213. package/build/esm/hooks/useId.js +0 -0
  214. package/build/esm/hooks/useId.js.map +0 -0
  215. package/build/esm/hooks/useMeasure.d.ts +0 -0
  216. package/build/esm/hooks/useMeasure.js +13 -7
  217. package/build/esm/hooks/useMeasure.js.map +1 -1
  218. package/build/esm/hooks/useOnClickOutside.d.ts +0 -0
  219. package/build/esm/hooks/useOnClickOutside.js +5 -4
  220. package/build/esm/hooks/useOnClickOutside.js.map +1 -1
  221. package/build/esm/hooks/useOnKeyDown.d.ts +0 -0
  222. package/build/esm/hooks/useOnKeyDown.js +4 -3
  223. package/build/esm/hooks/useOnKeyDown.js.map +1 -1
  224. package/build/esm/hooks/useReducerMachine.d.ts +1 -1
  225. package/build/esm/hooks/useReducerMachine.js +13 -10
  226. package/build/esm/hooks/useReducerMachine.js.map +1 -1
  227. package/build/esm/hooks/useRemoveBodyScroll.d.ts +0 -0
  228. package/build/esm/hooks/useRemoveBodyScroll.js +14 -21
  229. package/build/esm/hooks/useRemoveBodyScroll.js.map +1 -1
  230. package/build/esm/hooks/useScope.d.ts +1 -1
  231. package/build/esm/hooks/useScope.js +10 -12
  232. package/build/esm/hooks/useScope.js.map +1 -1
  233. package/build/esm/hooks/useThrottle.d.ts +0 -0
  234. package/build/esm/hooks/useThrottle.js +10 -5
  235. package/build/esm/hooks/useThrottle.js.map +1 -1
  236. package/build/esm/index.d.ts +0 -0
  237. package/build/esm/index.js.map +0 -0
  238. package/build/esm/utils/assignRef.d.ts +1 -1
  239. package/build/esm/utils/assignRef.js +7 -3
  240. package/build/esm/utils/assignRef.js.map +1 -1
  241. package/build/esm/utils/clamp.d.ts +0 -0
  242. package/build/esm/utils/clamp.js.map +0 -0
  243. package/build/esm/utils/createSubscription.d.ts +0 -0
  244. package/build/esm/utils/createSubscription.js +7 -5
  245. package/build/esm/utils/createSubscription.js.map +1 -1
  246. package/build/esm/utils/getCircularIndex.d.ts +0 -0
  247. package/build/esm/utils/getCircularIndex.js.map +0 -0
  248. package/build/esm/utils/index.d.ts +0 -0
  249. package/build/esm/utils/index.js.map +0 -0
  250. package/build/esm/utils/rubberBandClamp.d.ts +0 -0
  251. package/build/esm/utils/rubberBandClamp.js +5 -2
  252. package/build/esm/utils/rubberBandClamp.js.map +1 -1
  253. package/build/esm/utils/wrapEvent.d.ts +0 -0
  254. package/build/esm/utils/wrapEvent.js +7 -3
  255. package/build/esm/utils/wrapEvent.js.map +1 -1
  256. package/build/tsconfig.tsbuildinfo +1 -7069
  257. package/package.json +13 -13
  258. package/src/Accordion/Accordion.story.tsx +1 -0
  259. package/src/Accordion/Accordion.tsx +4 -2
  260. package/src/Accordion/AccordionBody.tsx +4 -4
  261. package/src/Accordion/AccordionHeader.tsx +7 -8
  262. package/src/Accordion/AccordionItem.tsx +5 -4
  263. package/src/Accordion/context.ts +2 -1
  264. package/src/CheckBox/CheckBox.tsx +2 -1
  265. package/src/ComboBox/ComboBox.story.tsx +2 -1
  266. package/src/ComboBox/Combobox.tsx +9 -11
  267. package/src/ComboBox/ComboboxButton.tsx +4 -9
  268. package/src/ComboBox/ComboboxInput.tsx +2 -1
  269. package/src/ComboBox/ComboboxLabel.tsx +2 -1
  270. package/src/ComboBox/ComboboxList.tsx +2 -1
  271. package/src/ComboBox/ComboboxOption.tsx +1 -1
  272. package/src/ComboBox/ComboboxPopover.tsx +2 -1
  273. package/src/ComboBox/context.ts +4 -3
  274. package/src/ComboBox/hooks.tsx +6 -9
  275. package/src/FocusLock/FocusLock.tsx +2 -1
  276. package/src/FocusLock/tabUtils.ts +12 -0
  277. package/src/FocusLock/useFocusLock.ts +5 -11
  278. package/src/List/List.tsx +1 -1
  279. package/src/List/ListItem.tsx +1 -1
  280. package/src/Menu/Menu.story.tsx +6 -5
  281. package/src/Menu/Menu.tsx +5 -4
  282. package/src/Menu/MenuButton.tsx +7 -11
  283. package/src/Menu/MenuItem.tsx +6 -7
  284. package/src/Menu/MenuList.tsx +4 -8
  285. package/src/Menu/MenuPopover.tsx +4 -2
  286. package/src/Menu/context.ts +2 -1
  287. package/src/Modal/Modal.story.tsx +20 -5
  288. package/src/Modal/Modal.tsx +6 -4
  289. package/src/Modal/ModalBackdrop.tsx +2 -1
  290. package/src/Modal/NavDrawer.story.tsx +3 -3
  291. package/src/Popper/Popper.story.tsx +3 -4
  292. package/src/Popper/Popper.tsx +12 -7
  293. package/src/Popper/PopperArrow.tsx +2 -1
  294. package/src/Popper/context.ts +2 -1
  295. package/src/Portal/Portal.tsx +1 -1
  296. package/src/RadioButton/RadioButton.story.tsx +1 -0
  297. package/src/RadioButton/RadioButton.tsx +4 -2
  298. package/src/RadioButton/RadioGroup.tsx +6 -4
  299. package/src/SkipNav/SkipNav.tsx +1 -1
  300. package/src/Spinner/Spinner.story.tsx +1 -0
  301. package/src/Spinner/Spinner.tsx +2 -1
  302. package/src/Spinner/SpinnerButton.tsx +2 -1
  303. package/src/Tabs/Tab.story.tsx +1 -0
  304. package/src/Tabs/Tab.tsx +4 -4
  305. package/src/Tabs/TabList.tsx +11 -3
  306. package/src/Tabs/TabPanel.tsx +2 -1
  307. package/src/Tabs/TabPanels.tsx +1 -1
  308. package/src/Tabs/Tabs.tsx +2 -1
  309. package/src/Tabs/context.ts +2 -1
  310. package/src/Tooltip/Tooltip.story.tsx +2 -1
  311. package/src/Tooltip/Tooltip.tsx +3 -7
  312. package/src/Tooltip/stateMachine.ts +1 -1
  313. package/src/Tooltip/useTooltip.ts +6 -4
  314. package/src/hooks/index.ts +0 -1
  315. package/src/hooks/useAutoFocus.ts +9 -1
  316. package/src/hooks/useChildrenCounter.ts +2 -1
  317. package/src/hooks/useControlledState.ts +3 -1
  318. package/src/hooks/useFocusReturn.ts +33 -13
  319. package/src/hooks/useFocusState.ts +1 -0
  320. package/src/hooks/useReducerMachine.ts +2 -1
  321. package/src/hooks/useRemoveBodyScroll.ts +10 -18
  322. package/src/hooks/useScope.ts +2 -1
  323. package/src/utils/assignRef.ts +1 -1
  324. package/src/hooks/useId.ts +0 -18
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@basic-ui/core",
3
- "version": "0.0.37",
3
+ "version": "0.0.40",
4
4
  "description": "Accessible React Components used as building blocks for UI patterns",
5
5
  "author": "Lucas Terra <lucasterra7@gmail.com>",
6
6
  "license": "MIT",
@@ -15,20 +15,20 @@
15
15
  "sideEffects": false,
16
16
  "scripts": {
17
17
  "build": "run -T concurrently \"yarn:build:*\"",
18
- "build:dts": "tsc -p ./tsconfig.json --isolatedModules false --declaration --emitDeclarationOnly",
19
- "build:cjs": "rollup -c ../../rollup.config.js",
20
- "build:esm": "cross-env NODE_ENV=production BABEL_ENV=esm babel --config-file ../../babel.config.js ./src --extensions \".ts,.tsx,.js,.jsx\" --source-maps --out-dir ./build/esm --ignore \"**/*.story.tsx,**/*.story.ts,**/*.test.tsx,**/*.test.ts\"",
21
- "build-storybook": "build-storybook -c ../../scripts/storybook -o .out",
22
- "storybook": "yarn run -T start-storybook -p 9001 -c ../../scripts/storybook",
23
- "start": "yarn run storybook",
24
- "serve": "http-server .out",
25
- "lint": "eslint 'src/**/*.{js,jsx,ts,tsx}' --fix",
26
- "typecheck": "tsc --noEmit -p ./tsconfig.json",
27
- "test": "jest --config ../../jest.config.js",
18
+ "build:dts": "run -T tsc -p ./tsconfig.json --isolatedModules false --declaration --emitDeclarationOnly",
19
+ "build:cjs": "run -T rollup -c ../../rollup.config.js",
20
+ "build:esm": "run -T cross-env NODE_ENV=production BABEL_ENV=esm babel --config-file ../../babel.config.js ./src --extensions \".ts,.tsx,.js,.jsx\" --source-maps --out-dir ./build/esm --ignore \"**/*.story.tsx,**/*.story.ts,**/*.test.tsx,**/*.test.ts\"",
21
+ "build-storybook": "run -T build-storybook -c ../../scripts/storybook -o .out",
22
+ "storybook": "run -T start-storybook -p 9001 -c ../../scripts/storybook",
23
+ "start": "run storybook",
24
+ "serve": "run -T http-server .out",
25
+ "lint": "run -T eslint 'src/**/*.{js,jsx,ts,tsx}' --fix",
26
+ "typecheck": "run -T tsc --noEmit -p ./tsconfig.json",
27
+ "test": "run -T jest --config ../../jest.config.js",
28
28
  "test:watch": "yarn test --watch"
29
29
  },
30
30
  "dependencies": {
31
- "@popperjs/core": "^2.9.2",
31
+ "@popperjs/core": "^2.11.5",
32
32
  "resize-observer-polyfill": "^1.5.1"
33
33
  },
34
34
  "peerDependencies": {
@@ -36,5 +36,5 @@
36
36
  "react": "^16.14.0 || ^17.0.0 || ^18.0.0",
37
37
  "react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0"
38
38
  },
39
- "gitHead": "78b668ff80ce86a4672b3f34ca2c1aaaf79c56eb"
39
+ "gitHead": "b1023e3a84f2f7d55b59cd2b30326c782393c1de"
40
40
  }
@@ -1,4 +1,5 @@
1
1
  import { useState } from 'react';
2
+
2
3
  import { Accordion, AccordionBody, AccordionHeader, AccordionItem } from './';
3
4
  import './styles.css';
4
5
 
@@ -1,6 +1,8 @@
1
1
  import { forwardRef, useRef, useState } from 'react';
2
- import type * as React from 'react';
3
- import { AccordionContextProps, AccordionProvider } from './context';
2
+ import * as React from 'react';
3
+
4
+ import type { AccordionContextProps } from './context';
5
+ import { AccordionProvider } from './context';
4
6
  import { useScope } from '../hooks';
5
7
  import { assignMultipleRefs } from '../utils';
6
8
 
@@ -1,5 +1,6 @@
1
1
  import { forwardRef, useState, useEffect, useRef } from 'react';
2
- import type * as React from 'react';
2
+ import * as React from 'react';
3
+
3
4
  import { useAccordionItemContext, useAccordionContext } from './context';
4
5
  import { bodyScopeQuery as scopeQuery } from './scopeQuery';
5
6
  import { assignMultipleRefs } from '../utils';
@@ -24,9 +25,8 @@ export const AccordionBody = forwardRef<HTMLDivElement, AccordionBodyProps>(
24
25
 
25
26
  useEffect(() => {
26
27
  if (accordionContext) {
27
- const allHeaders = accordionContext.scope.current.queryAllNodes(
28
- scopeQuery
29
- );
28
+ const allHeaders =
29
+ accordionContext.scope.current.queryAllNodes(scopeQuery);
30
30
 
31
31
  const index = allHeaders.findIndex((e) => e === ref.current);
32
32
  setIndex(index);
@@ -1,5 +1,6 @@
1
1
  import { forwardRef, useRef, useState, useEffect } from 'react';
2
- import type * as React from 'react';
2
+ import * as React from 'react';
3
+
3
4
  import { wrapEvent, assignMultipleRefs, getCircularIndex } from '../utils';
4
5
  import { useAccordionContext, useAccordionItemContext } from './context';
5
6
  import { headerScopeQuery as scopeQuery } from './scopeQuery';
@@ -66,7 +67,7 @@ export const AccordionHeader = forwardRef<HTMLDivElement, AccordionHeaderProps>(
66
67
  switch (e.key) {
67
68
  case 'Enter':
68
69
  case ' ': {
69
- onClick((e as unknown) as React.MouseEvent<HTMLDivElement>);
70
+ onClick(e as unknown as React.MouseEvent<HTMLDivElement>);
70
71
  e.preventDefault();
71
72
  break;
72
73
  }
@@ -77,9 +78,8 @@ export const AccordionHeader = forwardRef<HTMLDivElement, AccordionHeaderProps>(
77
78
  if (!accordionContext) {
78
79
  return;
79
80
  }
80
- const allHeaders = accordionContext.scope.current.queryAllNodes(
81
- scopeQuery
82
- );
81
+ const allHeaders =
82
+ accordionContext.scope.current.queryAllNodes(scopeQuery);
83
83
 
84
84
  e.preventDefault();
85
85
 
@@ -126,9 +126,8 @@ export const AccordionHeader = forwardRef<HTMLDivElement, AccordionHeaderProps>(
126
126
 
127
127
  const handleBlur = (e: React.FocusEvent<HTMLDivElement>) => {
128
128
  if (accordionContext) {
129
- const allHeaders = accordionContext.scope.current.queryAllNodes(
130
- scopeQuery
131
- );
129
+ const allHeaders =
130
+ accordionContext.scope.current.queryAllNodes(scopeQuery);
132
131
  const newFocusIsHeader =
133
132
  allHeaders.findIndex((header) => header === e.relatedTarget) >= 0;
134
133
 
@@ -1,7 +1,8 @@
1
- import { Fragment, forwardRef } from 'react';
2
- import type * as React from 'react';
3
- import { AccordionItemContextProps, AccordionItemProvider } from './context';
4
- import { useId } from '../hooks';
1
+ import { Fragment, forwardRef, useId } from 'react';
2
+ import * as React from 'react';
3
+
4
+ import type { AccordionItemContextProps } from './context';
5
+ import { AccordionItemProvider } from './context';
5
6
 
6
7
  export interface AccordionItemProps
7
8
  extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
@@ -1,5 +1,6 @@
1
1
  import { useContext, createContext } from 'react';
2
- import { Scope } from '../hooks/useScope';
2
+
3
+ import type { Scope } from '../hooks/useScope';
3
4
 
4
5
  // AccordionGroup Component
5
6
  export interface AccordionContextProps {
@@ -1,5 +1,6 @@
1
1
  import { forwardRef } from 'react';
2
- import type * as React from 'react';
2
+ import * as React from 'react';
3
+
3
4
  import { useControlledState } from '../hooks';
4
5
 
5
6
  export interface CheckBoxProps
@@ -1,5 +1,6 @@
1
1
  import { useMemo, useState } from 'react';
2
- import type * as React from 'react';
2
+ import * as React from 'react';
3
+
3
4
  import { ComboboxOption } from './ComboboxOption';
4
5
  import { ComboboxList } from './ComboboxList';
5
6
  import { ComboboxPopover } from './ComboboxPopover';
@@ -1,15 +1,13 @@
1
- import { forwardRef, useRef, useMemo } from 'react';
2
- import type * as React from 'react';
3
- import {
4
- stateChart,
5
- comboboxReducer,
6
- isVisible,
7
- INIT,
8
- ActionTypes,
9
- } from './hooks';
10
- import { ComboBoxProvider, ComboBoxContextProps } from './context';
1
+ import { forwardRef, useRef, useMemo, useId } from 'react';
2
+ import * as React from 'react';
3
+
4
+ import type { ActionTypes } from './hooks';
5
+ import { stateChart, comboboxReducer, isVisible, INIT } from './hooks';
6
+ import type { ComboBoxContextProps } from './context';
7
+ import { ComboBoxProvider } from './context';
11
8
  import { useReducerMachine } from '../hooks/useReducerMachine';
12
- import { useId, Scope, getScope } from '../hooks';
9
+ import type { Scope } from '../hooks';
10
+ import { getScope } from '../hooks';
13
11
 
14
12
  export type SelectEventHandler = (
15
13
  text: string,
@@ -1,5 +1,6 @@
1
1
  import { forwardRef } from 'react';
2
- import type * as React from 'react';
2
+ import * as React from 'react';
3
+
3
4
  import { useComboBoxContext } from './context';
4
5
  import { useKeyDown, IDLE, OPEN_WITH_BUTTON, CLOSE_WITH_BUTTON } from './hooks';
5
6
  import { wrapEvent } from '../utils/wrapEvent';
@@ -21,14 +22,8 @@ export const ComboboxButton = forwardRef<
21
22
  { as: Comp = 'button', innerAs, onClick, onKeyDown, ...props },
22
23
  ref
23
24
  ) {
24
- const {
25
- transition,
26
- data,
27
- state,
28
- buttonRef,
29
- listboxIdRef,
30
- isVisible,
31
- } = useComboBoxContext();
25
+ const { transition, data, state, buttonRef, listboxIdRef, isVisible } =
26
+ useComboBoxContext();
32
27
 
33
28
  const handleKeyDown = useKeyDown();
34
29
 
@@ -1,5 +1,6 @@
1
1
  import { forwardRef, useEffect, useRef } from 'react';
2
- import type * as React from 'react';
2
+ import * as React from 'react';
3
+
3
4
  import {
4
5
  useBlur,
5
6
  CLEAR,
@@ -1,5 +1,6 @@
1
1
  import { forwardRef } from 'react';
2
- import type * as React from 'react';
2
+ import * as React from 'react';
3
+
3
4
  import { useComboBoxContext } from './context';
4
5
 
5
6
  export interface ComboboxLabelProps
@@ -1,5 +1,6 @@
1
1
  import { forwardRef, useRef, useEffect } from 'react';
2
- import type * as React from 'react';
2
+ import * as React from 'react';
3
+
3
4
  import { useComboBoxContext } from './context';
4
5
  import { getScope } from '../hooks';
5
6
  import { assignMultipleRefs } from '../utils';
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable @typescript-eslint/no-use-before-define */
2
2
  import { forwardRef, useEffect, useRef } from 'react';
3
+ import * as React from 'react';
3
4
 
4
- import type * as React from 'react';
5
5
  import { SELECT_WITH_CLICK, CLEAR_SELECTION } from './hooks';
6
6
  import { wrapEvent } from '../utils/wrapEvent';
7
7
  import { useComboBoxContext } from './context';
@@ -1,5 +1,6 @@
1
1
  import { forwardRef } from 'react';
2
- import type * as React from 'react';
2
+ import * as React from 'react';
3
+
3
4
  import { useKeyDown, useBlur } from './hooks';
4
5
  import { wrapEvent } from '../utils/wrapEvent';
5
6
  import { assignMultipleRefs } from '../utils/assignRef';
@@ -1,7 +1,8 @@
1
1
  import { createContext, useContext } from 'react';
2
- import { ActionTypes, StateTypes, ReducerState } from './hooks';
3
- import { SelectEventHandler } from './Combobox';
4
- import { Scope } from '../hooks';
2
+
3
+ import type { ActionTypes, StateTypes, ReducerState } from './hooks';
4
+ import type { SelectEventHandler } from './Combobox';
5
+ import type { Scope } from '../hooks';
5
6
 
6
7
  export interface ComboBoxContextProps {
7
8
  data: Omit<ReducerState, 'state'>;
@@ -1,7 +1,8 @@
1
1
  /* eslint-disable @typescript-eslint/no-use-before-define */
2
2
  /* eslint-disable default-case */
3
3
  import { useEffect } from 'react';
4
- import {
4
+
5
+ import type {
5
6
  StateChart as GenericStateChart,
6
7
  StateMachineState,
7
8
  } from '../hooks/useReducerMachine';
@@ -357,10 +358,8 @@ export function useKeyDown() {
357
358
  }
358
359
  case 'Enter': {
359
360
  if (state === NAVIGATING && navigationItem !== '') {
360
- const {
361
- value: navigationValue,
362
- text: navigationText,
363
- } = optionsRef.current[navigationItem];
361
+ const { value: navigationValue, text: navigationText } =
362
+ optionsRef.current[navigationItem];
364
363
 
365
364
  // don't want to submit forms
366
365
  event.preventDefault();
@@ -408,10 +407,8 @@ export function useBlur() {
408
407
  transition(BLUR, { text: stateText, item: '' });
409
408
  } else {
410
409
  // select the currently selected item
411
- const {
412
- value: navigationValue,
413
- text: navigationText,
414
- } = optionsRef.current[navigationItem];
410
+ const { value: navigationValue, text: navigationText } =
411
+ optionsRef.current[navigationItem];
415
412
 
416
413
  onSelect &&
417
414
  onSelect(navigationText, navigationItem, navigationValue);
@@ -1,5 +1,6 @@
1
1
  import { useRef } from 'react';
2
- import type * as React from 'react';
2
+ import * as React from 'react';
3
+
3
4
  import { useFocusLock } from './useFocusLock';
4
5
 
5
6
  export interface FocusLockProps extends React.HTMLAttributes<HTMLDivElement> {
@@ -26,3 +26,15 @@ export const getTabblableNodes = (
26
26
 
27
27
  return Array.from(parentNode.querySelectorAll(tabblable));
28
28
  };
29
+
30
+ export function focusOnChildNode(parentNode: HTMLElement, itemIndex: 0 | -1) {
31
+ const elements = getTabblableNodes(parentNode);
32
+ if (elements.length > 0) {
33
+ elements[itemIndex === -1 ? elements.length - 1 : 0].focus();
34
+ } else {
35
+ const currentTabIndex = parentNode.tabIndex;
36
+ parentNode.tabIndex = 0;
37
+ parentNode.focus();
38
+ parentNode.tabIndex = currentTabIndex;
39
+ }
40
+ }
@@ -1,5 +1,6 @@
1
1
  import { useEffect } from 'react';
2
- import { getTabblableNodes } from './tabUtils';
2
+
3
+ import { focusOnChildNode } from './tabUtils';
3
4
 
4
5
  export interface FocusLockOptions {
5
6
  enabled: boolean;
@@ -28,23 +29,16 @@ export function useFocusLock(
28
29
  }
29
30
 
30
31
  if (event.target === lockEndRef.current) {
31
- rootEl.focus();
32
+ focusOnChildNode(rootEl, 0);
32
33
  } else if (event.target === lockStartRef.current) {
33
- const nodes = getTabblableNodes(rootEl);
34
-
35
- if (nodes.length > 0) {
36
- const nodeToFocus = nodes.length - 1;
37
- nodes[nodeToFocus].focus();
38
- } else {
39
- rootEl.focus();
40
- }
34
+ focusOnChildNode(rootEl, -1);
41
35
  } else if (
42
36
  document !== event.target &&
43
37
  rootEl !== event.target &&
44
38
  !rootEl.contains(event.target as any)
45
39
  ) {
46
40
  event.preventDefault();
47
- rootEl.focus();
41
+ focusOnChildNode(rootEl, 0);
48
42
  }
49
43
  };
50
44
 
package/src/List/List.tsx CHANGED
@@ -1,5 +1,5 @@
1
1
  import { forwardRef } from 'react';
2
- import type * as React from 'react';
2
+ import * as React from 'react';
3
3
 
4
4
  export interface ListProps extends React.HTMLAttributes<HTMLUListElement> {
5
5
  as?: React.ElementType<any>;
@@ -1,5 +1,5 @@
1
1
  import { forwardRef } from 'react';
2
- import type * as React from 'react';
2
+ import * as React from 'react';
3
3
 
4
4
  export interface ListItemProps extends React.HTMLAttributes<HTMLLIElement> {
5
5
  as?: React.ElementType<any>;
@@ -1,7 +1,8 @@
1
1
  import { useState } from 'react';
2
- import type * as React from 'react';
3
- import { Menu, MenuButton, MenuItem, MenuList, MenuPopover } from './';
2
+ import * as React from 'react';
4
3
  import { animated, useSpring } from 'react-spring';
4
+
5
+ import { Menu, MenuButton, MenuItem, MenuList, MenuPopover } from './';
5
6
  import './styles.css';
6
7
 
7
8
  export default {
@@ -91,10 +92,10 @@ const MenuControlledWithAnimation = () => {
91
92
  <MenuList
92
93
  as={animated.ul}
93
94
  style={{
94
- opacity: (opacity as unknown) as number,
95
- transform: (scale.to(
95
+ opacity: opacity as unknown as number,
96
+ transform: scale.to(
96
97
  (x) => `scale(${x}, ${x * x})`
97
- ) as unknown) as string,
98
+ ) as unknown as string,
98
99
  }}
99
100
  >
100
101
  <MenuItem>Dog</MenuItem>
package/src/Menu/Menu.tsx CHANGED
@@ -1,7 +1,8 @@
1
- import { forwardRef, useRef, Fragment } from 'react';
2
- import type * as React from 'react';
3
- import { MenuProvider, MenuContextProps } from './context';
4
- import { useId } from '../hooks/useId';
1
+ import { forwardRef, useRef, Fragment, useId } from 'react';
2
+ import * as React from 'react';
3
+
4
+ import type { MenuContextProps } from './context';
5
+ import { MenuProvider } from './context';
5
6
  import { useControlledState } from '../hooks';
6
7
 
7
8
  export interface MenuProps {
@@ -1,8 +1,8 @@
1
- import { forwardRef } from 'react';
2
- import type * as React from 'react';
1
+ import { forwardRef, useId } from 'react';
2
+ import * as React from 'react';
3
+
3
4
  import { useMenuContext } from './context';
4
5
  import { wrapEvent } from '../utils/wrapEvent';
5
- import { useId } from '../hooks';
6
6
 
7
7
  export type MenuButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {
8
8
  as?: React.ElementType<any>;
@@ -24,15 +24,11 @@ export const MenuButton = forwardRef<HTMLButtonElement, MenuButtonProps>(
24
24
  disabled,
25
25
  ...otherProps
26
26
  } = props;
27
- const {
28
- menuListIdRef,
29
- openWithArrowKeyRef,
30
- open,
31
- buttonRef,
32
- onChange,
33
- } = useMenuContext();
27
+ const { menuListIdRef, openWithArrowKeyRef, open, buttonRef, onChange } =
28
+ useMenuContext();
34
29
 
35
- const buttonId = useId(preferredId);
30
+ const buttonIdGenerated = useId();
31
+ const buttonId = preferredId || buttonIdGenerated;
36
32
 
37
33
  const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {
38
34
  if (disabled) {
@@ -1,5 +1,6 @@
1
- import { forwardRef, useRef } from 'react';
2
- import type * as React from 'react';
1
+ import { forwardRef, useRef, useId } from 'react';
2
+ import * as React from 'react';
3
+
3
4
  import { useMenuContext, useMenuListContext } from './context';
4
5
  import { assignMultipleRefs } from '../utils/assignRef';
5
6
  import { wrapEvent } from '../utils';
@@ -25,10 +26,10 @@ export const MenuItem = forwardRef<any, MenuItemProps>(function MenuItem(
25
26
  onKeyDown,
26
27
  ...otherProps
27
28
  } = props;
28
- const { menuListIdRef, onChange, buttonRef } = useMenuContext();
29
+ const { onChange, buttonRef } = useMenuContext();
29
30
  const { navigationItem, onNavigate } = useMenuListContext();
30
31
  const ref = useRef<HTMLLIElement>();
31
- const itemIndex = useRef(-1);
32
+ const itemId = useId();
32
33
 
33
34
  const isActive = ref.current && ref.current === navigationItem;
34
35
 
@@ -65,9 +66,7 @@ export const MenuItem = forwardRef<any, MenuItemProps>(function MenuItem(
65
66
  return (
66
67
  <Comp
67
68
  ref={assignMultipleRefs(ref, forwardedRef)}
68
- id={
69
- disabled ? undefined : `${menuListIdRef.current}_${itemIndex.current}`
70
- }
69
+ id={disabled ? undefined : itemId}
71
70
  data-menu-item=""
72
71
  data-highlighted={isActive ? '' : undefined}
73
72
  role="menuitem"
@@ -5,7 +5,8 @@ import {
5
5
  useState,
6
6
  useLayoutEffect,
7
7
  } from 'react';
8
- import type * as React from 'react';
8
+ import * as React from 'react';
9
+
9
10
  import { useMenuContext, MenuListProvider } from './context';
10
11
  import { assignMultipleRefs } from '../utils/assignRef';
11
12
  import { useOnClickOutside } from '../hooks/useOnClickOutside';
@@ -32,13 +33,8 @@ export const MenuList = forwardRef<HTMLUListElement, MenuListProps>(
32
33
  ...otherProps
33
34
  } = props;
34
35
 
35
- const {
36
- menuListIdRef,
37
- buttonRef,
38
- onChange,
39
- openWithArrowKeyRef,
40
- open,
41
- } = useMenuContext();
36
+ const { menuListIdRef, buttonRef, onChange, openWithArrowKeyRef, open } =
37
+ useMenuContext();
42
38
 
43
39
  const [navigationItem, setNavigationItem] = useState<
44
40
  HTMLElement | undefined
@@ -1,6 +1,8 @@
1
1
  import { forwardRef } from 'react';
2
- import type * as React from 'react';
3
- import { Popper, PopperProps } from '../Popper';
2
+ import * as React from 'react';
3
+
4
+ import type { PopperProps } from '../Popper';
5
+ import { Popper } from '../Popper';
4
6
  import { useMenuContext } from './context';
5
7
 
6
8
  export interface MenuPopoverProps extends Omit<PopperProps, 'anchorEl'> {
@@ -1,4 +1,5 @@
1
- import { createContext, useContext, MutableRefObject } from 'react';
1
+ import type { MutableRefObject } from 'react';
2
+ import { createContext, useContext } from 'react';
2
3
 
3
4
  export type ItemObject = { text: string; value: any; id: string | undefined };
4
5
 
@@ -1,5 +1,6 @@
1
1
  import { useState } from 'react';
2
2
  import { useSpring, animated } from 'react-spring';
3
+
3
4
  import { Modal, ModalBackdrop } from './';
4
5
  import { Portal } from '../Portal';
5
6
  import './styles.css';
@@ -91,7 +92,9 @@ const SimpleModalControlledExample = () => {
91
92
 
92
93
  return (
93
94
  <>
94
- <button onClick={() => setOpen(!open)}>Open modal</button>
95
+ <button id="open-modal" onClick={() => setOpen(!open)}>
96
+ Open modal
97
+ </button>
95
98
  {open && (
96
99
  <Portal>
97
100
  <ModalBackdrop onClose={handleClose}>
@@ -113,12 +116,16 @@ const NestedModalControlledExample = () => {
113
116
 
114
117
  return (
115
118
  <>
116
- <button onClick={() => setOpen(!open)}>Open modal</button>
119
+ <button id="open-modal" onClick={() => setOpen(!open)}>
120
+ Open modal
121
+ </button>
117
122
  {open && (
118
123
  <Portal>
119
124
  <ModalBackdrop onClose={() => setOpen(false)}>
120
125
  <Modal trapFocus={true}>
121
- <button onClick={() => setOpen2(true)}>Open another modal</button>
126
+ <button id="open-another-modal" onClick={() => setOpen2(true)}>
127
+ Open another modal
128
+ </button>
122
129
  {open2 && (
123
130
  <Portal>
124
131
  <ModalBackdrop onClose={() => setOpen2(false)}>
@@ -130,7 +137,13 @@ const NestedModalControlledExample = () => {
130
137
  </Portal>
131
138
  )}
132
139
  <LoremIpsum numOfParagraphs={1} />
133
- <button onClick={() => setOpen(false)}>Close</button>
140
+ <button
141
+ autoFocus
142
+ id="close-button"
143
+ onClick={() => setOpen(false)}
144
+ >
145
+ Close
146
+ </button>
134
147
  </Modal>
135
148
  </ModalBackdrop>
136
149
  </Portal>
@@ -187,7 +200,9 @@ const SimpleModalControlledAnimatedExample = () => {
187
200
 
188
201
  return (
189
202
  <>
190
- <button onClick={handleOpen}>Open modal</button>
203
+ <button id="open-modal" onClick={handleOpen}>
204
+ Open modal
205
+ </button>
191
206
  {open && (
192
207
  <Portal>
193
208
  <animated.div
@@ -1,5 +1,7 @@
1
- import { ReactNode, forwardRef, useRef } from 'react';
2
- import type * as React from 'react';
1
+ import type { ReactNode } from 'react';
2
+ import { forwardRef, useRef } from 'react';
3
+ import * as React from 'react';
4
+
3
5
  import { useAutoFocus, useFocusReturn, useRemoveBodyScroll } from '../hooks';
4
6
  import { FocusLock } from '../FocusLock';
5
7
  import { assignMultipleRefs } from '../utils';
@@ -19,7 +21,7 @@ export const Modal = forwardRef<HTMLDivElement, ModalProps>(
19
21
  ) => {
20
22
  const modalRef = useRef<HTMLDivElement>(null);
21
23
 
22
- useFocusReturn(trapFocus);
24
+ useFocusReturn(trapFocus, modalRef);
23
25
  useRemoveBodyScroll(trapFocus);
24
26
  useAutoFocus(trapFocus, modalRef);
25
27
 
@@ -31,7 +33,7 @@ export const Modal = forwardRef<HTMLDivElement, ModalProps>(
31
33
  role="dialog"
32
34
  aria-modal="true"
33
35
  style={style}
34
- tabIndex={0}
36
+ tabIndex={-1}
35
37
  {...otherProps}
36
38
  >
37
39
  {children}
@@ -1,5 +1,6 @@
1
1
  import { useRef, forwardRef } from 'react';
2
- import type * as React from 'react';
2
+ import * as React from 'react';
3
+
3
4
  import { assignMultipleRefs } from '../utils/assignRef';
4
5
  import { wrapEvent } from '../utils/wrapEvent';
5
6