@basic-ui/core 0.0.54 → 0.0.57

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 (410) hide show
  1. package/README.md +3 -3
  2. package/build/cjs/index.js +364 -591
  3. package/build/cjs/index.js.map +1 -1
  4. package/build/esm/Accordion/Accordion.d.ts +9 -9
  5. package/build/esm/Accordion/Accordion.js +20 -29
  6. package/build/esm/Accordion/Accordion.js.map +1 -1
  7. package/build/esm/Accordion/AccordionBody.d.ts +6 -6
  8. package/build/esm/Accordion/AccordionBody.js +18 -32
  9. package/build/esm/Accordion/AccordionBody.js.map +1 -1
  10. package/build/esm/Accordion/AccordionHeader.d.ts +7 -7
  11. package/build/esm/Accordion/AccordionHeader.js +37 -74
  12. package/build/esm/Accordion/AccordionHeader.js.map +1 -1
  13. package/build/esm/Accordion/AccordionItem.d.ts +9 -9
  14. package/build/esm/Accordion/AccordionItem.js +19 -22
  15. package/build/esm/Accordion/AccordionItem.js.map +1 -1
  16. package/build/esm/Accordion/context.d.ts +19 -19
  17. package/build/esm/Accordion/context.js +16 -13
  18. package/build/esm/Accordion/context.js.map +1 -1
  19. package/build/esm/Accordion/index.d.ts +4 -4
  20. package/build/esm/Accordion/index.js.map +1 -1
  21. package/build/esm/Accordion/scopeQuery.d.ts +2 -2
  22. package/build/esm/Accordion/scopeQuery.js.map +1 -1
  23. package/build/esm/CheckBox/CheckBox.d.ts +7 -7
  24. package/build/esm/CheckBox/CheckBox.js +15 -25
  25. package/build/esm/CheckBox/CheckBox.js.map +1 -1
  26. package/build/esm/CheckBox/index.d.ts +1 -1
  27. package/build/esm/CheckBox/index.js.map +1 -1
  28. package/build/esm/ComboBox/Combobox.d.ts +18 -18
  29. package/build/esm/ComboBox/Combobox.js +52 -59
  30. package/build/esm/ComboBox/Combobox.js.map +1 -1
  31. package/build/esm/ComboBox/ComboboxButton.d.ts +9 -9
  32. package/build/esm/ComboBox/ComboboxButton.js +23 -28
  33. package/build/esm/ComboBox/ComboboxButton.js.map +1 -1
  34. package/build/esm/ComboBox/ComboboxInput.d.ts +17 -17
  35. package/build/esm/ComboBox/ComboboxInput.js +67 -70
  36. package/build/esm/ComboBox/ComboboxInput.js.map +1 -1
  37. package/build/esm/ComboBox/ComboboxLabel.d.ts +7 -7
  38. package/build/esm/ComboBox/ComboboxLabel.js +15 -17
  39. package/build/esm/ComboBox/ComboboxLabel.js.map +1 -1
  40. package/build/esm/ComboBox/ComboboxList.d.ts +8 -8
  41. package/build/esm/ComboBox/ComboboxList.js +19 -20
  42. package/build/esm/ComboBox/ComboboxList.js.map +1 -1
  43. package/build/esm/ComboBox/ComboboxOption.d.ts +11 -11
  44. package/build/esm/ComboBox/ComboboxOption.js +41 -45
  45. package/build/esm/ComboBox/ComboboxOption.js.map +1 -1
  46. package/build/esm/ComboBox/ComboboxPopover.d.ts +9 -9
  47. package/build/esm/ComboBox/ComboboxPopover.js +22 -21
  48. package/build/esm/ComboBox/ComboboxPopover.js.map +1 -1
  49. package/build/esm/ComboBox/cities.d.ts +5 -5
  50. package/build/esm/ComboBox/cities.js.map +1 -1
  51. package/build/esm/ComboBox/context.d.ts +30 -30
  52. package/build/esm/ComboBox/context.js +5 -6
  53. package/build/esm/ComboBox/context.js.map +1 -1
  54. package/build/esm/ComboBox/hooks.d.ts +37 -37
  55. package/build/esm/ComboBox/hooks.js +175 -148
  56. package/build/esm/ComboBox/hooks.js.map +1 -1
  57. package/build/esm/ComboBox/index.d.ts +8 -8
  58. package/build/esm/ComboBox/index.js.map +1 -1
  59. package/build/esm/ComboBox/makeHash.d.ts +1 -1
  60. package/build/esm/ComboBox/makeHash.js +3 -6
  61. package/build/esm/ComboBox/makeHash.js.map +1 -1
  62. package/build/esm/ComboBox/scopeQuery.d.ts +1 -1
  63. package/build/esm/ComboBox/scopeQuery.js.map +1 -1
  64. package/build/esm/FocusLock/FocusLock.d.ts +9 -9
  65. package/build/esm/FocusLock/FocusLock.js +26 -32
  66. package/build/esm/FocusLock/FocusLock.js.map +1 -1
  67. package/build/esm/FocusLock/index.d.ts +1 -1
  68. package/build/esm/FocusLock/index.js.map +1 -1
  69. package/build/esm/FocusLock/tabUtils.d.ts +3 -3
  70. package/build/esm/FocusLock/tabUtils.js +5 -7
  71. package/build/esm/FocusLock/tabUtils.js.map +1 -1
  72. package/build/esm/FocusLock/useFocusLock.d.ts +7 -7
  73. package/build/esm/FocusLock/useFocusLock.js +14 -19
  74. package/build/esm/FocusLock/useFocusLock.js.map +1 -1
  75. package/build/esm/List/List.d.ts +7 -7
  76. package/build/esm/List/List.js +9 -11
  77. package/build/esm/List/List.js.map +1 -1
  78. package/build/esm/List/ListItem.d.ts +7 -7
  79. package/build/esm/List/ListItem.js +9 -11
  80. package/build/esm/List/ListItem.js.map +1 -1
  81. package/build/esm/List/context.d.ts +4 -4
  82. package/build/esm/List/context.js +6 -6
  83. package/build/esm/List/context.js.map +1 -1
  84. package/build/esm/List/index.d.ts +2 -2
  85. package/build/esm/List/index.js.map +1 -1
  86. package/build/esm/Menu/ContextMenuTrigger.d.ts +11 -11
  87. package/build/esm/Menu/ContextMenuTrigger.js +32 -37
  88. package/build/esm/Menu/ContextMenuTrigger.js.map +1 -1
  89. package/build/esm/Menu/Menu.d.ts +10 -10
  90. package/build/esm/Menu/Menu.js +33 -49
  91. package/build/esm/Menu/Menu.js.map +1 -1
  92. package/build/esm/Menu/MenuButton.d.ts +11 -11
  93. package/build/esm/Menu/MenuButton.js +28 -44
  94. package/build/esm/Menu/MenuButton.js.map +1 -1
  95. package/build/esm/Menu/MenuItem.d.ts +8 -8
  96. package/build/esm/Menu/MenuItem.js +29 -38
  97. package/build/esm/Menu/MenuItem.js.map +1 -1
  98. package/build/esm/Menu/MenuList.d.ts +7 -7
  99. package/build/esm/Menu/MenuList.js +61 -116
  100. package/build/esm/Menu/MenuList.js.map +1 -1
  101. package/build/esm/Menu/MenuPopover.d.ts +8 -8
  102. package/build/esm/Menu/MenuPopover.js +16 -19
  103. package/build/esm/Menu/MenuPopover.js.map +1 -1
  104. package/build/esm/Menu/context.d.ts +25 -25
  105. package/build/esm/Menu/context.js +14 -12
  106. package/build/esm/Menu/context.js.map +1 -1
  107. package/build/esm/Menu/fixtures/countryList.d.ts +1 -1
  108. package/build/esm/Menu/fixtures/countryList.js +1 -1
  109. package/build/esm/Menu/fixtures/countryList.js.map +1 -1
  110. package/build/esm/Menu/index.d.ts +6 -6
  111. package/build/esm/Menu/index.js.map +1 -1
  112. package/build/esm/Menu/scope.d.ts +1 -1
  113. package/build/esm/Menu/scope.js.map +1 -1
  114. package/build/esm/Modal/Modal.d.ts +9 -9
  115. package/build/esm/Modal/Modal.js +13 -18
  116. package/build/esm/Modal/Modal.js.map +1 -1
  117. package/build/esm/Modal/ModalBackdrop.d.ts +10 -10
  118. package/build/esm/Modal/ModalBackdrop.js +24 -33
  119. package/build/esm/Modal/ModalBackdrop.js.map +1 -1
  120. package/build/esm/Modal/index.d.ts +2 -2
  121. package/build/esm/Modal/index.js.map +1 -1
  122. package/build/esm/Popper/Popper.d.ts +35 -35
  123. package/build/esm/Popper/Popper.js +44 -60
  124. package/build/esm/Popper/Popper.js.map +1 -1
  125. package/build/esm/Popper/PopperArrow.d.ts +6 -6
  126. package/build/esm/Popper/PopperArrow.js +11 -16
  127. package/build/esm/Popper/PopperArrow.js.map +1 -1
  128. package/build/esm/Popper/context.d.ts +6 -6
  129. package/build/esm/Popper/context.js +3 -5
  130. package/build/esm/Popper/context.js.map +1 -1
  131. package/build/esm/Popper/index.d.ts +3 -3
  132. package/build/esm/Popper/index.js.map +1 -1
  133. package/build/esm/Portal/Portal.d.ts +7 -7
  134. package/build/esm/Portal/Portal.js +9 -11
  135. package/build/esm/Portal/Portal.js.map +1 -1
  136. package/build/esm/Portal/PortalSelectorProvider.d.ts +8 -8
  137. package/build/esm/Portal/PortalSelectorProvider.js +6 -4
  138. package/build/esm/Portal/PortalSelectorProvider.js.map +1 -1
  139. package/build/esm/Portal/index.d.ts +2 -2
  140. package/build/esm/Portal/index.js.map +1 -1
  141. package/build/esm/RadioButton/RadioButton.d.ts +10 -10
  142. package/build/esm/RadioButton/RadioButton.js +17 -23
  143. package/build/esm/RadioButton/RadioButton.js.map +1 -1
  144. package/build/esm/RadioButton/RadioGroup.d.ts +12 -12
  145. package/build/esm/RadioButton/RadioGroup.js +19 -28
  146. package/build/esm/RadioButton/RadioGroup.js.map +1 -1
  147. package/build/esm/RadioButton/context.d.ts +9 -9
  148. package/build/esm/RadioButton/context.js +8 -6
  149. package/build/esm/RadioButton/context.js.map +1 -1
  150. package/build/esm/RadioButton/index.d.ts +2 -2
  151. package/build/esm/RadioButton/index.js.map +1 -1
  152. package/build/esm/SkipNav/SkipNav.d.ts +7 -7
  153. package/build/esm/SkipNav/SkipNav.js +9 -11
  154. package/build/esm/SkipNav/SkipNav.js.map +1 -1
  155. package/build/esm/SkipNav/index.d.ts +1 -1
  156. package/build/esm/SkipNav/index.js.map +1 -1
  157. package/build/esm/Slider/Slider.d.ts +197 -197
  158. package/build/esm/Slider/Slider.js +422 -489
  159. package/build/esm/Slider/Slider.js.map +1 -1
  160. package/build/esm/Slider/index.d.ts +1 -1
  161. package/build/esm/Slider/index.js.map +1 -1
  162. package/build/esm/Spinner/Spinner.d.ts +12 -12
  163. package/build/esm/Spinner/Spinner.js +31 -59
  164. package/build/esm/Spinner/Spinner.js.map +1 -1
  165. package/build/esm/Spinner/SpinnerButton.d.ts +8 -8
  166. package/build/esm/Spinner/SpinnerButton.js +14 -19
  167. package/build/esm/Spinner/SpinnerButton.js.map +1 -1
  168. package/build/esm/Spinner/context.d.ts +12 -12
  169. package/build/esm/Spinner/context.js +8 -7
  170. package/build/esm/Spinner/context.js.map +1 -1
  171. package/build/esm/Spinner/index.d.ts +2 -2
  172. package/build/esm/Spinner/index.js.map +1 -1
  173. package/build/esm/Tabs/Tab.d.ts +7 -7
  174. package/build/esm/Tabs/Tab.js +32 -50
  175. package/build/esm/Tabs/Tab.js.map +1 -1
  176. package/build/esm/Tabs/TabList.d.ts +9 -9
  177. package/build/esm/Tabs/TabList.js +24 -34
  178. package/build/esm/Tabs/TabList.js.map +1 -1
  179. package/build/esm/Tabs/TabPanel.d.ts +8 -8
  180. package/build/esm/Tabs/TabPanel.js +16 -23
  181. package/build/esm/Tabs/TabPanel.js.map +1 -1
  182. package/build/esm/Tabs/TabPanels.d.ts +8 -8
  183. package/build/esm/Tabs/TabPanels.js +15 -20
  184. package/build/esm/Tabs/TabPanels.js.map +1 -1
  185. package/build/esm/Tabs/Tabs.d.ts +10 -10
  186. package/build/esm/Tabs/Tabs.js +17 -33
  187. package/build/esm/Tabs/Tabs.js.map +1 -1
  188. package/build/esm/Tabs/context.d.ts +17 -17
  189. package/build/esm/Tabs/context.js +16 -13
  190. package/build/esm/Tabs/context.js.map +1 -1
  191. package/build/esm/Tabs/index.d.ts +5 -5
  192. package/build/esm/Tabs/index.js.map +1 -1
  193. package/build/esm/Tabs/scopeQuery.d.ts +1 -1
  194. package/build/esm/Tabs/scopeQuery.js.map +1 -1
  195. package/build/esm/Tooltip/Tooltip.d.ts +10 -10
  196. package/build/esm/Tooltip/Tooltip.js +20 -30
  197. package/build/esm/Tooltip/Tooltip.js.map +1 -1
  198. package/build/esm/Tooltip/index.d.ts +1 -1
  199. package/build/esm/Tooltip/index.js.map +1 -1
  200. package/build/esm/Tooltip/stateMachine.d.ts +28 -28
  201. package/build/esm/Tooltip/stateMachine.js +95 -81
  202. package/build/esm/Tooltip/stateMachine.js.map +1 -1
  203. package/build/esm/Tooltip/useTooltip.d.ts +10 -10
  204. package/build/esm/Tooltip/useTooltip.js +38 -50
  205. package/build/esm/Tooltip/useTooltip.js.map +1 -1
  206. package/build/esm/hooks/index.d.ts +13 -13
  207. package/build/esm/hooks/index.js.map +1 -1
  208. package/build/esm/hooks/useAutoFocus.d.ts +2 -2
  209. package/build/esm/hooks/useAutoFocus.js +3 -3
  210. package/build/esm/hooks/useAutoFocus.js.map +1 -1
  211. package/build/esm/hooks/useChildrenCounter.d.ts +7 -7
  212. package/build/esm/hooks/useChildrenCounter.js +6 -8
  213. package/build/esm/hooks/useChildrenCounter.js.map +1 -1
  214. package/build/esm/hooks/useControlledState.d.ts +3 -3
  215. package/build/esm/hooks/useControlledState.js +6 -16
  216. package/build/esm/hooks/useControlledState.js.map +1 -1
  217. package/build/esm/hooks/useFocusReturn.d.ts +2 -2
  218. package/build/esm/hooks/useFocusReturn.js +8 -12
  219. package/build/esm/hooks/useFocusReturn.js.map +1 -1
  220. package/build/esm/hooks/useFocusState.d.ts +11 -11
  221. package/build/esm/hooks/useFocusState.js +9 -15
  222. package/build/esm/hooks/useFocusState.js.map +1 -1
  223. package/build/esm/hooks/useGestureHandlers.d.ts +52 -52
  224. package/build/esm/hooks/useGestureHandlers.js +80 -100
  225. package/build/esm/hooks/useGestureHandlers.js.map +1 -1
  226. package/build/esm/hooks/useMeasure.d.ts +7 -7
  227. package/build/esm/hooks/useMeasure.js +7 -15
  228. package/build/esm/hooks/useMeasure.js.map +1 -1
  229. package/build/esm/hooks/useOnClickOutside.d.ts +2 -2
  230. package/build/esm/hooks/useOnClickOutside.js +4 -6
  231. package/build/esm/hooks/useOnClickOutside.js.map +1 -1
  232. package/build/esm/hooks/useOnKeyDown.d.ts +1 -1
  233. package/build/esm/hooks/useOnKeyDown.js +3 -4
  234. package/build/esm/hooks/useOnKeyDown.js.map +1 -1
  235. package/build/esm/hooks/useReducerMachine.d.ts +24 -24
  236. package/build/esm/hooks/useReducerMachine.js +15 -26
  237. package/build/esm/hooks/useReducerMachine.js.map +1 -1
  238. package/build/esm/hooks/useRemoveBodyScroll.d.ts +2 -2
  239. package/build/esm/hooks/useRemoveBodyScroll.js +9 -14
  240. package/build/esm/hooks/useRemoveBodyScroll.js.map +1 -1
  241. package/build/esm/hooks/useScope.d.ts +11 -11
  242. package/build/esm/hooks/useScope.js +12 -14
  243. package/build/esm/hooks/useScope.js.map +1 -1
  244. package/build/esm/hooks/useThrottle.d.ts +1 -1
  245. package/build/esm/hooks/useThrottle.js +5 -10
  246. package/build/esm/hooks/useThrottle.js.map +1 -1
  247. package/build/esm/index.d.ts +15 -15
  248. package/build/esm/index.js +4 -2
  249. package/build/esm/index.js.map +1 -1
  250. package/build/esm/styles.d.js +2 -0
  251. package/build/esm/styles.d.js.map +1 -0
  252. package/build/esm/utils/assign-ref.d.ts +3 -3
  253. package/build/esm/utils/assign-ref.js +3 -5
  254. package/build/esm/utils/assign-ref.js.map +1 -1
  255. package/build/esm/utils/can-use-dom.d.ts +1 -1
  256. package/build/esm/utils/can-use-dom.js.map +1 -1
  257. package/build/esm/utils/clamp.d.ts +1 -1
  258. package/build/esm/utils/clamp.js.map +1 -1
  259. package/build/esm/utils/context.d.ts +7 -7
  260. package/build/esm/utils/context.js +13 -20
  261. package/build/esm/utils/context.js.map +1 -1
  262. package/build/esm/utils/create-subscription.d.ts +4 -4
  263. package/build/esm/utils/create-subscription.js +5 -10
  264. package/build/esm/utils/create-subscription.js.map +1 -1
  265. package/build/esm/utils/get-circular-index.d.ts +1 -1
  266. package/build/esm/utils/get-circular-index.js +0 -1
  267. package/build/esm/utils/get-circular-index.js.map +1 -1
  268. package/build/esm/utils/index.d.ts +10 -10
  269. package/build/esm/utils/index.js.map +1 -1
  270. package/build/esm/utils/is-right-click.d.ts +6 -6
  271. package/build/esm/utils/is-right-click.js +4 -4
  272. package/build/esm/utils/is-right-click.js.map +1 -1
  273. package/build/esm/utils/owner-document.d.ts +7 -7
  274. package/build/esm/utils/owner-document.js +6 -6
  275. package/build/esm/utils/owner-document.js.map +1 -1
  276. package/build/esm/utils/polymorphic.d.ts +39 -39
  277. package/build/esm/utils/polymorphic.js.map +1 -1
  278. package/build/esm/utils/rubber-band-clamp.d.ts +2 -2
  279. package/build/esm/utils/rubber-band-clamp.js +2 -5
  280. package/build/esm/utils/rubber-band-clamp.js.map +1 -1
  281. package/build/esm/utils/use-stable-callback.d.ts +16 -16
  282. package/build/esm/utils/use-stable-callback.js +24 -26
  283. package/build/esm/utils/use-stable-callback.js.map +1 -1
  284. package/build/esm/utils/wrap-event.d.ts +3 -3
  285. package/build/esm/utils/wrap-event.js +2 -5
  286. package/build/esm/utils/wrap-event.js.map +1 -1
  287. package/build/tsconfig-build.tsbuildinfo +1 -1
  288. package/package.json +7 -11
  289. package/src/Accordion/Accordion.story.tsx +74 -74
  290. package/src/Accordion/Accordion.tsx +59 -59
  291. package/src/Accordion/AccordionBody.tsx +52 -52
  292. package/src/Accordion/AccordionHeader.tsx +166 -167
  293. package/src/Accordion/AccordionItem.tsx +50 -50
  294. package/src/Accordion/context.ts +37 -37
  295. package/src/Accordion/index.ts +4 -4
  296. package/src/Accordion/scopeQuery.ts +7 -7
  297. package/src/Accordion/styles.css +21 -21
  298. package/src/CheckBox/CheckBox.tsx +41 -41
  299. package/src/CheckBox/index.ts +1 -1
  300. package/src/ComboBox/ComboBox.story.tsx +120 -120
  301. package/src/ComboBox/Combobox.tsx +148 -148
  302. package/src/ComboBox/ComboboxButton.tsx +61 -61
  303. package/src/ComboBox/ComboboxInput.tsx +187 -187
  304. package/src/ComboBox/ComboboxLabel.tsx +33 -33
  305. package/src/ComboBox/ComboboxList.tsx +47 -47
  306. package/src/ComboBox/ComboboxOption.tsx +110 -111
  307. package/src/ComboBox/ComboboxPopover.tsx +64 -64
  308. package/src/ComboBox/cities.ts +23194 -23194
  309. package/src/ComboBox/context.ts +35 -35
  310. package/src/ComboBox/hooks.tsx +448 -451
  311. package/src/ComboBox/index.ts +8 -8
  312. package/src/ComboBox/makeHash.ts +19 -19
  313. package/src/ComboBox/scopeQuery.ts +6 -6
  314. package/src/ComboBox/styles.css +32 -32
  315. package/src/FocusLock/FocusLock.tsx +66 -66
  316. package/src/FocusLock/index.ts +1 -1
  317. package/src/FocusLock/tabUtils.ts +40 -40
  318. package/src/FocusLock/useFocusLock.ts +55 -56
  319. package/src/List/List.story.tsx +18 -18
  320. package/src/List/List.tsx +17 -17
  321. package/src/List/ListItem.tsx +23 -23
  322. package/src/List/context.ts +19 -19
  323. package/src/List/index.ts +2 -2
  324. package/src/Menu/ContextMenu.story.tsx +73 -73
  325. package/src/Menu/ContextMenuTrigger.tsx +76 -76
  326. package/src/Menu/Menu.story.tsx +160 -160
  327. package/src/Menu/Menu.tsx +82 -83
  328. package/src/Menu/MenuButton.tsx +83 -83
  329. package/src/Menu/MenuComplex.story.tsx +58 -58
  330. package/src/Menu/MenuItem.tsx +87 -88
  331. package/src/Menu/MenuList.tsx +254 -254
  332. package/src/Menu/MenuPopover.tsx +35 -35
  333. package/src/Menu/context.ts +44 -44
  334. package/src/Menu/fixtures/countryList.ts +198 -198
  335. package/src/Menu/index.ts +6 -6
  336. package/src/Menu/scope.ts +7 -7
  337. package/src/Menu/styles.css +42 -42
  338. package/src/Modal/Modal.story.tsx +262 -258
  339. package/src/Modal/Modal.tsx +48 -48
  340. package/src/Modal/ModalBackdrop.tsx +78 -78
  341. package/src/Modal/NavDrawer.story.tsx +161 -158
  342. package/src/Modal/index.ts +2 -2
  343. package/src/Modal/styles.css +46 -46
  344. package/src/Popper/Popper.story.tsx +279 -263
  345. package/src/Popper/Popper.tsx +1 -1
  346. package/src/Popper/PopperArrow.tsx +35 -35
  347. package/src/Popper/context.ts +10 -10
  348. package/src/Popper/index.ts +3 -3
  349. package/src/Popper/styles.css +60 -60
  350. package/src/RadioButton/RadioButton.story.tsx +78 -77
  351. package/src/RadioButton/RadioButton.tsx +55 -55
  352. package/src/RadioButton/RadioGroup.tsx +60 -60
  353. package/src/RadioButton/context.ts +17 -17
  354. package/src/RadioButton/index.ts +2 -2
  355. package/src/SkipNav/SkipNav.tsx +16 -16
  356. package/src/SkipNav/index.tsx +1 -1
  357. package/src/Slider/Slider.story.tsx +45 -45
  358. package/src/Slider/Slider.tsx +1115 -1120
  359. package/src/Slider/index.ts +1 -1
  360. package/src/Slider/styles.css +131 -131
  361. package/src/Spinner/Spinner.story.tsx +31 -31
  362. package/src/Spinner/Spinner.tsx +117 -117
  363. package/src/Spinner/SpinnerButton.tsx +54 -54
  364. package/src/Spinner/context.ts +20 -20
  365. package/src/Spinner/index.ts +2 -2
  366. package/src/Spinner/styles.css +23 -23
  367. package/src/Tabs/Tab.story.tsx +80 -80
  368. package/src/Tabs/Tab.tsx +136 -136
  369. package/src/Tabs/TabList.tsx +71 -71
  370. package/src/Tabs/TabPanel.tsx +53 -53
  371. package/src/Tabs/TabPanels.tsx +30 -30
  372. package/src/Tabs/Tabs.tsx +46 -46
  373. package/src/Tabs/context.ts +30 -30
  374. package/src/Tabs/index.tsx +5 -5
  375. package/src/Tabs/scopeQuery.ts +6 -6
  376. package/src/Tooltip/Tooltip.story.tsx +61 -61
  377. package/src/Tooltip/Tooltip.tsx +53 -50
  378. package/src/Tooltip/index.ts +1 -1
  379. package/src/Tooltip/stateMachine.ts +192 -192
  380. package/src/Tooltip/styles.css +17 -17
  381. package/src/Tooltip/useTooltip.ts +136 -136
  382. package/src/hooks/index.ts +13 -13
  383. package/src/hooks/useAutoFocus.ts +22 -22
  384. package/src/hooks/useChildrenCounter.ts +51 -51
  385. package/src/hooks/useControlledState.ts +1 -6
  386. package/src/hooks/useFocusReturn.ts +43 -43
  387. package/src/hooks/useFocusState.ts +30 -30
  388. package/src/hooks/useGestureHandlers.ts +282 -286
  389. package/src/hooks/useMeasure.ts +33 -33
  390. package/src/hooks/useOnClickOutside.ts +32 -32
  391. package/src/hooks/useOnKeyDown.ts +19 -19
  392. package/src/hooks/useReducerMachine.ts +60 -60
  393. package/src/hooks/useRemoveBodyScroll.ts +38 -39
  394. package/src/hooks/useScope.ts +52 -52
  395. package/src/hooks/useThrottle.ts +19 -19
  396. package/src/index.ts +20 -20
  397. package/src/styles.d.ts +1 -0
  398. package/src/utils/assign-ref.ts +27 -27
  399. package/src/utils/can-use-dom.ts +7 -7
  400. package/src/utils/clamp.ts +3 -3
  401. package/src/utils/context.tsx +48 -48
  402. package/src/utils/create-subscription.ts +16 -16
  403. package/src/utils/get-circular-index.ts +7 -7
  404. package/src/utils/index.ts +10 -10
  405. package/src/utils/is-right-click.ts +14 -14
  406. package/src/utils/owner-document.ts +13 -13
  407. package/src/utils/polymorphic.ts +82 -78
  408. package/src/utils/rubber-band-clamp.ts +25 -25
  409. package/src/utils/use-stable-callback.ts +57 -58
  410. package/src/utils/wrap-event.ts +22 -22
@@ -1,148 +1,148 @@
1
- import type { HTMLAttributes, ReactNode, ElementType } from 'react';
2
- import { forwardRef, useRef, useMemo, useId } 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';
8
- import { useReducerMachine } from '../hooks/useReducerMachine';
9
- import type { Scope } from '../hooks';
10
- import { getScope } from '../hooks';
11
-
12
- export type SelectEventHandler = (
13
- text: string,
14
- itemId: string,
15
- obj: any
16
- ) => void;
17
-
18
- export type ComboboxProps = Omit<HTMLAttributes<HTMLDivElement>, 'onSelect'> & {
19
- onSelect?: SelectEventHandler;
20
- openOnFocus?: boolean;
21
- selectOnBlur?: boolean;
22
- children?: ReactNode;
23
- as?: ElementType<any>;
24
- innerAs?: ElementType<any>;
25
- };
26
-
27
- export const Combobox = forwardRef<HTMLDivElement, ComboboxProps>(
28
- function Combobox(
29
- {
30
- // Called whenever the user selects an item from the list
31
- onSelect,
32
-
33
- // opens the list when the input receives focused (but only if there are
34
- // items in the list)
35
- openOnFocus = false,
36
-
37
- // if set to true, it will select an item after blurring
38
- selectOnBlur = false,
39
-
40
- children,
41
- as: Comp = 'div',
42
- innerAs,
43
- ...rest
44
- }: ComboboxProps,
45
- ref
46
- ) {
47
- // We store the values of all the ComboboxOptions on this ref. This makes it
48
- // possible to perform the keyboard navigation from the input on the list. We
49
- // manipulate this array through context so that we don't have to enforce a
50
- // parent/child relationship between ComboboxList and ComboboxOption.
51
- const optionsRef = useRef<{
52
- [itemId: string]: {
53
- value: string | unknown;
54
- text: string;
55
- };
56
- }>({});
57
-
58
- const listScope: Scope<HTMLElement> = useRef(getScope({ current: null }));
59
-
60
- // Need this to focus it
61
- const inputRef = useRef<HTMLInputElement>(null);
62
-
63
- const popoverRef = useRef<HTMLDivElement>(null);
64
-
65
- const buttonRef = useRef<HTMLButtonElement>(null);
66
-
67
- // When <ComboboxInput autocomplete={false} /> we don't want cycle back to
68
- // the user's value while navigating (because it's always the user's value),
69
- // but we need to know this in useKeyDown which is far away from the prop
70
- // here, so we do something sneaky and write it to this ref on context so we
71
- // can use it anywhere else 😛. Another new trick for me and I'm excited
72
- // about this one too!
73
- const autocompletePropRef = useRef<boolean>(false);
74
-
75
- const persistSelectionRef = useRef<boolean>(false);
76
-
77
- const clearOnEscapeRef = useRef<boolean>(false);
78
-
79
- const listboxIdRef = useRef<string | undefined>();
80
-
81
- const labelIdRef = useRef<string | undefined>();
82
-
83
- const defaultData = {
84
- // initial state
85
- state: stateChart.initial,
86
- // the value the user has typed, we derived this also when the developer is
87
- // controlling the value of ComboboxInput
88
- text: '',
89
- // the index the user has typed, we derived this also when the developer is
90
- // controlling the value of ComboboxInput
91
- item: '',
92
- // the hash of the currently navigated item
93
- navigationItem: '',
94
- // the last submitted action
95
- lastActionType: INIT as ActionTypes,
96
- };
97
-
98
- const [state, data, transition] = useReducerMachine(
99
- stateChart,
100
- comboboxReducer,
101
- defaultData
102
- );
103
-
104
- listboxIdRef.current = useId();
105
-
106
- labelIdRef.current = useId();
107
-
108
- const context = useMemo(
109
- (): ComboBoxContextProps => ({
110
- data,
111
- inputRef,
112
- popoverRef,
113
- buttonRef,
114
- onSelect,
115
- optionsRef,
116
- listScope,
117
- state,
118
- transition,
119
- listboxIdRef,
120
- labelIdRef,
121
- autocompletePropRef,
122
- persistSelectionRef,
123
- clearOnEscapeRef,
124
- isVisible: isVisible(state),
125
- openOnFocus,
126
- selectOnBlur,
127
- }),
128
- [data, onSelect, listScope, state, transition, openOnFocus, selectOnBlur]
129
- );
130
-
131
- return (
132
- <ComboBoxProvider value={context}>
133
- <Comp
134
- {...rest}
135
- as={innerAs}
136
- data-reach-combobox=""
137
- ref={ref}
138
- role="combobox"
139
- aria-haspopup="listbox"
140
- aria-owns={listboxIdRef.current}
141
- aria-expanded={context.isVisible}
142
- >
143
- {children}
144
- </Comp>
145
- </ComboBoxProvider>
146
- );
147
- }
148
- );
1
+ import type { HTMLAttributes, ReactNode, ElementType } from 'react';
2
+ import { forwardRef, useRef, useMemo, useId } 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';
8
+ import { useReducerMachine } from '../hooks/useReducerMachine';
9
+ import type { Scope } from '../hooks';
10
+ import { getScope } from '../hooks';
11
+
12
+ export type SelectEventHandler = (
13
+ text: string,
14
+ itemId: string,
15
+ obj: any
16
+ ) => void;
17
+
18
+ export type ComboboxProps = Omit<HTMLAttributes<HTMLDivElement>, 'onSelect'> & {
19
+ onSelect?: SelectEventHandler;
20
+ openOnFocus?: boolean;
21
+ selectOnBlur?: boolean;
22
+ children?: ReactNode;
23
+ as?: ElementType<any>;
24
+ innerAs?: ElementType<any>;
25
+ };
26
+
27
+ export const Combobox = forwardRef<HTMLDivElement, ComboboxProps>(
28
+ function Combobox(
29
+ {
30
+ // Called whenever the user selects an item from the list
31
+ onSelect,
32
+
33
+ // opens the list when the input receives focused (but only if there are
34
+ // items in the list)
35
+ openOnFocus = false,
36
+
37
+ // if set to true, it will select an item after blurring
38
+ selectOnBlur = false,
39
+
40
+ children,
41
+ as: Comp = 'div',
42
+ innerAs,
43
+ ...rest
44
+ }: ComboboxProps,
45
+ ref
46
+ ) {
47
+ // We store the values of all the ComboboxOptions on this ref. This makes it
48
+ // possible to perform the keyboard navigation from the input on the list. We
49
+ // manipulate this array through context so that we don't have to enforce a
50
+ // parent/child relationship between ComboboxList and ComboboxOption.
51
+ const optionsRef = useRef<{
52
+ [itemId: string]: {
53
+ value: string | unknown;
54
+ text: string;
55
+ };
56
+ }>({});
57
+
58
+ const listScope: Scope<HTMLElement> = useRef(getScope({ current: null }));
59
+
60
+ // Need this to focus it
61
+ const inputRef = useRef<HTMLInputElement>(null);
62
+
63
+ const popoverRef = useRef<HTMLDivElement>(null);
64
+
65
+ const buttonRef = useRef<HTMLButtonElement>(null);
66
+
67
+ // When <ComboboxInput autocomplete={false} /> we don't want cycle back to
68
+ // the user's value while navigating (because it's always the user's value),
69
+ // but we need to know this in useKeyDown which is far away from the prop
70
+ // here, so we do something sneaky and write it to this ref on context so we
71
+ // can use it anywhere else 😛. Another new trick for me and I'm excited
72
+ // about this one too!
73
+ const autocompletePropRef = useRef<boolean>(false);
74
+
75
+ const persistSelectionRef = useRef<boolean>(false);
76
+
77
+ const clearOnEscapeRef = useRef<boolean>(false);
78
+
79
+ const listboxIdRef = useRef<string | undefined>(undefined);
80
+
81
+ const labelIdRef = useRef<string | undefined>(undefined);
82
+
83
+ const defaultData = {
84
+ // initial state
85
+ state: stateChart.initial,
86
+ // the value the user has typed, we derived this also when the developer is
87
+ // controlling the value of ComboboxInput
88
+ text: '',
89
+ // the index the user has typed, we derived this also when the developer is
90
+ // controlling the value of ComboboxInput
91
+ item: '',
92
+ // the hash of the currently navigated item
93
+ navigationItem: '',
94
+ // the last submitted action
95
+ lastActionType: INIT as ActionTypes,
96
+ };
97
+
98
+ const [state, data, transition] = useReducerMachine(
99
+ stateChart,
100
+ comboboxReducer,
101
+ defaultData
102
+ );
103
+
104
+ listboxIdRef.current = useId();
105
+
106
+ labelIdRef.current = useId();
107
+
108
+ const context = useMemo(
109
+ (): ComboBoxContextProps => ({
110
+ data,
111
+ inputRef,
112
+ popoverRef,
113
+ buttonRef,
114
+ onSelect,
115
+ optionsRef,
116
+ listScope,
117
+ state,
118
+ transition,
119
+ listboxIdRef,
120
+ labelIdRef,
121
+ autocompletePropRef,
122
+ persistSelectionRef,
123
+ clearOnEscapeRef,
124
+ isVisible: isVisible(state),
125
+ openOnFocus,
126
+ selectOnBlur,
127
+ }),
128
+ [data, onSelect, listScope, state, transition, openOnFocus, selectOnBlur]
129
+ );
130
+
131
+ return (
132
+ <ComboBoxProvider value={context}>
133
+ <Comp
134
+ {...rest}
135
+ as={innerAs}
136
+ data-reach-combobox=""
137
+ ref={ref}
138
+ role="combobox"
139
+ aria-haspopup="listbox"
140
+ aria-owns={listboxIdRef.current}
141
+ aria-expanded={context.isVisible}
142
+ >
143
+ {children}
144
+ </Comp>
145
+ </ComboBoxProvider>
146
+ );
147
+ }
148
+ );
@@ -1,61 +1,61 @@
1
- import type {
2
- ButtonHTMLAttributes,
3
- ElementType,
4
- KeyboardEventHandler,
5
- MouseEventHandler,
6
- ReactNode,
7
- } from 'react';
8
- import { forwardRef } from 'react';
9
-
10
- import { useComboBoxContext } from './context';
11
- import { useKeyDown, IDLE, OPEN_WITH_BUTTON, CLOSE_WITH_BUTTON } from './hooks';
12
- import { wrapEvent } from '../utils/wrap-event';
13
- import { assignMultipleRefs } from '../utils/assign-ref';
14
-
15
- export interface ComboboxButtonProps
16
- extends ButtonHTMLAttributes<HTMLButtonElement> {
17
- as?: ElementType<any>;
18
- innerAs?: ElementType<any>;
19
- onClick?: MouseEventHandler<HTMLButtonElement>;
20
- onKeyDown?: KeyboardEventHandler<HTMLButtonElement>;
21
- children?: ReactNode;
22
- }
23
-
24
- export const ComboboxButton = forwardRef<
25
- HTMLButtonElement,
26
- ComboboxButtonProps
27
- >(function ComboboxButton(
28
- { as: Comp = 'button', innerAs, onClick, onKeyDown, ...props },
29
- ref
30
- ) {
31
- const { transition, data, state, buttonRef, listboxIdRef, isVisible } =
32
- useComboBoxContext();
33
-
34
- const handleKeyDown = useKeyDown();
35
-
36
- const handleClick = () => {
37
- const payload = {
38
- item: data.navigationItem,
39
- };
40
-
41
- if (state === IDLE) {
42
- transition(OPEN_WITH_BUTTON, payload);
43
- } else {
44
- transition(CLOSE_WITH_BUTTON, payload);
45
- }
46
- };
47
-
48
- return (
49
- <Comp
50
- as={innerAs}
51
- data-reach-combobox-button=""
52
- aria-controls={listboxIdRef.current}
53
- aria-haspopup="listbox"
54
- aria-expanded={isVisible}
55
- ref={assignMultipleRefs(ref, buttonRef)}
56
- onClick={wrapEvent(onClick, handleClick)}
57
- onKeyDown={wrapEvent(onKeyDown, handleKeyDown)}
58
- {...props}
59
- />
60
- );
61
- });
1
+ import type {
2
+ ButtonHTMLAttributes,
3
+ ElementType,
4
+ KeyboardEventHandler,
5
+ MouseEventHandler,
6
+ ReactNode,
7
+ } from 'react';
8
+ import { forwardRef } from 'react';
9
+
10
+ import { useComboBoxContext } from './context';
11
+ import { useKeyDown, IDLE, OPEN_WITH_BUTTON, CLOSE_WITH_BUTTON } from './hooks';
12
+ import { wrapEvent } from '../utils/wrap-event';
13
+ import { assignMultipleRefs } from '../utils/assign-ref';
14
+
15
+ export interface ComboboxButtonProps
16
+ extends ButtonHTMLAttributes<HTMLButtonElement> {
17
+ as?: ElementType<any>;
18
+ innerAs?: ElementType<any>;
19
+ onClick?: MouseEventHandler<HTMLButtonElement>;
20
+ onKeyDown?: KeyboardEventHandler<HTMLButtonElement>;
21
+ children?: ReactNode;
22
+ }
23
+
24
+ export const ComboboxButton = forwardRef<
25
+ HTMLButtonElement,
26
+ ComboboxButtonProps
27
+ >(function ComboboxButton(
28
+ { as: Comp = 'button', innerAs, onClick, onKeyDown, ...props },
29
+ ref
30
+ ) {
31
+ const { transition, data, state, buttonRef, listboxIdRef, isVisible } =
32
+ useComboBoxContext();
33
+
34
+ const handleKeyDown = useKeyDown();
35
+
36
+ const handleClick = () => {
37
+ const payload = {
38
+ item: data.navigationItem,
39
+ };
40
+
41
+ if (state === IDLE) {
42
+ transition(OPEN_WITH_BUTTON, payload);
43
+ } else {
44
+ transition(CLOSE_WITH_BUTTON, payload);
45
+ }
46
+ };
47
+
48
+ return (
49
+ <Comp
50
+ as={innerAs}
51
+ data-reach-combobox-button=""
52
+ aria-controls={listboxIdRef.current}
53
+ aria-haspopup="listbox"
54
+ aria-expanded={isVisible}
55
+ ref={assignMultipleRefs(ref, buttonRef)}
56
+ onClick={wrapEvent(onClick, handleClick)}
57
+ onKeyDown={wrapEvent(onKeyDown, handleKeyDown)}
58
+ {...props}
59
+ />
60
+ );
61
+ });