@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,192 +1,192 @@
1
- import { createSubscription } from '../utils/create-subscription';
2
- import type { StateChart as GenericStateChart } from '../hooks/useReducerMachine';
3
-
4
- ////////////////////////////////////////////////////////////////////////////////
5
- // Timeouts:
6
-
7
- // Manages when the user "rests" on an element. Keeps the interface from being
8
- // flashing tooltips all the time as the user moves the mouse around the screen.
9
- let restTimeout: NodeJS.Timeout;
10
- function startRestTimer() {
11
- clearTimeout(restTimeout);
12
- restTimeout = setTimeout(() => {
13
- send(Rest, undefined);
14
- }, 200);
15
- }
16
-
17
- function clearRestTimer() {
18
- clearTimeout(restTimeout);
19
- }
20
-
21
- // Manages the delay to hide the tooltip after rest leaves.
22
- let leavingVisibleTimer: NodeJS.Timeout;
23
- function startLeavingVisibleTimer() {
24
- clearTimeout(leavingVisibleTimer);
25
- leavingVisibleTimer = setTimeout(() => send(TimeComplete, undefined), 100);
26
- }
27
-
28
- function clearLeavingVisibleTimer() {
29
- clearTimeout(leavingVisibleTimer);
30
- }
31
-
32
- ////////////////////////////////////////////////////////////////////////////////
33
- // State machine
34
-
35
- export type TooltipStates =
36
- | 'IDLE'
37
- | 'FOCUSED'
38
- | 'VISIBLE'
39
- | 'LEAVING_VISIBLE'
40
- | 'DISMISSED';
41
-
42
- // Nothing goin' on
43
- export const Idle = 'IDLE' as const;
44
- // We're considering showing the tooltip, but we're gonna wait a sec
45
- export const Focused = 'FOCUSED' as const;
46
- // It's on!
47
- export const Visible = 'VISIBLE' as const;
48
- // Focus has left, but we want to keep it visible for a sec
49
- export const LeavingVisible = 'LEAVING_VISIBLE' as const;
50
- // The user clicked the tool, so we want to hide the thing, we can't just use
51
- // IDLE because we need to ignore mousemove, etc.
52
- export const Dismissed = 'DISMISSED' as const;
53
-
54
- export type TooltipEventTypes =
55
- | 'BLUR'
56
- | 'FOCUS'
57
- | 'GLOBAL_MOUSE_MOVE'
58
- | 'MOUSE_DOWN'
59
- | 'MOUSE_ENTER'
60
- | 'MOUSE_LEAVE'
61
- | 'MOUSE_MOVE'
62
- | 'REST'
63
- | 'SELECT_WITH_KEYBOARD'
64
- | 'TIME_COMPLETE';
65
-
66
- export const Blur = 'BLUR' as const;
67
- export const Focus = 'FOCUS' as const;
68
- export const GlobalMouseMove = 'GLOBAL_MOUSE_MOVE' as const;
69
- export const MouseDown = 'MOUSE_DOWN' as const;
70
- export const MouseEnter = 'MOUSE_ENTER' as const;
71
- export const MouseLeave = 'MOUSE_LEAVE' as const;
72
- export const MouseMove = 'MOUSE_MOVE' as const;
73
- export const Rest = 'REST' as const;
74
- export const SelectWithKeyboard = 'SELECT_WITH_KEYBOARD' as const;
75
- export const TimeComplete = 'TIME_COMPLETE' as const;
76
-
77
- export const subscription = createSubscription();
78
- export const state = {
79
- current: {
80
- state: Idle as TooltipStates,
81
- id: '',
82
- },
83
- };
84
-
85
- function clearContextId() {
86
- state.current.id = '';
87
- }
88
-
89
- const chart: GenericStateChart<TooltipStates, TooltipEventTypes> = {
90
- initial: Idle,
91
- states: {
92
- [Idle]: {
93
- enter: () => {
94
- clearContextId();
95
- },
96
- on: {
97
- [MouseEnter]: Focused,
98
- [Focus]: Visible,
99
- },
100
- },
101
- [Focused]: {
102
- enter: startRestTimer,
103
- leave: clearRestTimer,
104
- on: {
105
- [MouseMove]: Focused,
106
- [MouseLeave]: Idle,
107
- [MouseDown]: Dismissed,
108
- [Blur]: Idle,
109
- [Rest]: Visible,
110
- },
111
- },
112
- [Visible]: {
113
- on: {
114
- [Focus]: Focused,
115
- [MouseEnter]: Focused,
116
- [MouseLeave]: LeavingVisible,
117
- [Blur]: LeavingVisible,
118
- [MouseDown]: Dismissed,
119
- [SelectWithKeyboard]: Dismissed,
120
- [GlobalMouseMove]: LeavingVisible,
121
- },
122
- },
123
- [LeavingVisible]: {
124
- enter: () => {
125
- startLeavingVisibleTimer();
126
- },
127
- leave: () => {
128
- clearLeavingVisibleTimer();
129
- clearContextId();
130
- },
131
- on: {
132
- [MouseEnter]: Visible,
133
- [Focus]: Visible,
134
- [TimeComplete]: Idle,
135
- },
136
- },
137
- [Dismissed]: {
138
- leave: () => {
139
- clearContextId();
140
- },
141
- on: {
142
- [MouseLeave]: Idle,
143
- [Blur]: Idle,
144
- },
145
- },
146
- },
147
- };
148
-
149
- function transition(
150
- currentState: typeof state['current'],
151
- event: TooltipEventTypes,
152
- payload?: Omit<typeof state['current'], 'state'>
153
- ): typeof state['current'] {
154
- const currentStateValue = currentState.state;
155
- const stateDef = chart.states[currentState.state];
156
- const nextState = stateDef?.on?.[event];
157
-
158
- // Really useful for debugging
159
- // console.log({
160
- // event,
161
- // state: state.current.state,
162
- // id: state.current.id,
163
- // nextState,
164
- // });
165
-
166
- if (!nextState) {
167
- return currentState;
168
- }
169
-
170
- if (stateDef && stateDef.leave) {
171
- stateDef.leave(currentStateValue, payload);
172
- }
173
-
174
- const nextStateValue = nextState;
175
- const nextDef = chart.states[nextStateValue];
176
- if (nextDef && nextDef.enter) {
177
- nextDef.enter(nextStateValue, payload);
178
- }
179
-
180
- return { ...currentState, ...payload, state: nextStateValue };
181
- }
182
-
183
- export function send<T extends TooltipEventTypes>(
184
- event: T,
185
- payload?: Omit<typeof state['current'], 'state'>
186
- ) {
187
- const nextState = transition(state.current, event, payload);
188
- if (state.current !== nextState) {
189
- state.current = nextState;
190
- subscription.notify();
191
- }
192
- }
1
+ import { createSubscription } from '../utils/create-subscription';
2
+ import type { StateChart as GenericStateChart } from '../hooks/useReducerMachine';
3
+
4
+ ////////////////////////////////////////////////////////////////////////////////
5
+ // Timeouts:
6
+
7
+ // Manages when the user "rests" on an element. Keeps the interface from being
8
+ // flashing tooltips all the time as the user moves the mouse around the screen.
9
+ let restTimeout: NodeJS.Timeout;
10
+ function startRestTimer() {
11
+ clearTimeout(restTimeout);
12
+ restTimeout = setTimeout(() => {
13
+ send(Rest, undefined);
14
+ }, 200);
15
+ }
16
+
17
+ function clearRestTimer() {
18
+ clearTimeout(restTimeout);
19
+ }
20
+
21
+ // Manages the delay to hide the tooltip after rest leaves.
22
+ let leavingVisibleTimer: NodeJS.Timeout;
23
+ function startLeavingVisibleTimer() {
24
+ clearTimeout(leavingVisibleTimer);
25
+ leavingVisibleTimer = setTimeout(() => send(TimeComplete, undefined), 100);
26
+ }
27
+
28
+ function clearLeavingVisibleTimer() {
29
+ clearTimeout(leavingVisibleTimer);
30
+ }
31
+
32
+ ////////////////////////////////////////////////////////////////////////////////
33
+ // State machine
34
+
35
+ export type TooltipStates =
36
+ | 'IDLE'
37
+ | 'FOCUSED'
38
+ | 'VISIBLE'
39
+ | 'LEAVING_VISIBLE'
40
+ | 'DISMISSED';
41
+
42
+ // Nothing goin' on
43
+ export const Idle = 'IDLE' as const;
44
+ // We're considering showing the tooltip, but we're gonna wait a sec
45
+ export const Focused = 'FOCUSED' as const;
46
+ // It's on!
47
+ export const Visible = 'VISIBLE' as const;
48
+ // Focus has left, but we want to keep it visible for a sec
49
+ export const LeavingVisible = 'LEAVING_VISIBLE' as const;
50
+ // The user clicked the tool, so we want to hide the thing, we can't just use
51
+ // IDLE because we need to ignore mousemove, etc.
52
+ export const Dismissed = 'DISMISSED' as const;
53
+
54
+ export type TooltipEventTypes =
55
+ | 'BLUR'
56
+ | 'FOCUS'
57
+ | 'GLOBAL_MOUSE_MOVE'
58
+ | 'MOUSE_DOWN'
59
+ | 'MOUSE_ENTER'
60
+ | 'MOUSE_LEAVE'
61
+ | 'MOUSE_MOVE'
62
+ | 'REST'
63
+ | 'SELECT_WITH_KEYBOARD'
64
+ | 'TIME_COMPLETE';
65
+
66
+ export const Blur = 'BLUR' as const;
67
+ export const Focus = 'FOCUS' as const;
68
+ export const GlobalMouseMove = 'GLOBAL_MOUSE_MOVE' as const;
69
+ export const MouseDown = 'MOUSE_DOWN' as const;
70
+ export const MouseEnter = 'MOUSE_ENTER' as const;
71
+ export const MouseLeave = 'MOUSE_LEAVE' as const;
72
+ export const MouseMove = 'MOUSE_MOVE' as const;
73
+ export const Rest = 'REST' as const;
74
+ export const SelectWithKeyboard = 'SELECT_WITH_KEYBOARD' as const;
75
+ export const TimeComplete = 'TIME_COMPLETE' as const;
76
+
77
+ export const subscription = createSubscription();
78
+ export const state = {
79
+ current: {
80
+ state: Idle as TooltipStates,
81
+ id: '',
82
+ },
83
+ };
84
+
85
+ function clearContextId() {
86
+ state.current.id = '';
87
+ }
88
+
89
+ const chart: GenericStateChart<TooltipStates, TooltipEventTypes> = {
90
+ initial: Idle,
91
+ states: {
92
+ [Idle]: {
93
+ enter: () => {
94
+ clearContextId();
95
+ },
96
+ on: {
97
+ [MouseEnter]: Focused,
98
+ [Focus]: Visible,
99
+ },
100
+ },
101
+ [Focused]: {
102
+ enter: startRestTimer,
103
+ leave: clearRestTimer,
104
+ on: {
105
+ [MouseMove]: Focused,
106
+ [MouseLeave]: Idle,
107
+ [MouseDown]: Dismissed,
108
+ [Blur]: Idle,
109
+ [Rest]: Visible,
110
+ },
111
+ },
112
+ [Visible]: {
113
+ on: {
114
+ [Focus]: Focused,
115
+ [MouseEnter]: Focused,
116
+ [MouseLeave]: LeavingVisible,
117
+ [Blur]: LeavingVisible,
118
+ [MouseDown]: Dismissed,
119
+ [SelectWithKeyboard]: Dismissed,
120
+ [GlobalMouseMove]: LeavingVisible,
121
+ },
122
+ },
123
+ [LeavingVisible]: {
124
+ enter: () => {
125
+ startLeavingVisibleTimer();
126
+ },
127
+ leave: () => {
128
+ clearLeavingVisibleTimer();
129
+ clearContextId();
130
+ },
131
+ on: {
132
+ [MouseEnter]: Visible,
133
+ [Focus]: Visible,
134
+ [TimeComplete]: Idle,
135
+ },
136
+ },
137
+ [Dismissed]: {
138
+ leave: () => {
139
+ clearContextId();
140
+ },
141
+ on: {
142
+ [MouseLeave]: Idle,
143
+ [Blur]: Idle,
144
+ },
145
+ },
146
+ },
147
+ };
148
+
149
+ function transition(
150
+ currentState: typeof state['current'],
151
+ event: TooltipEventTypes,
152
+ payload?: Omit<typeof state['current'], 'state'>
153
+ ): typeof state['current'] {
154
+ const currentStateValue = currentState.state;
155
+ const stateDef = chart.states[currentState.state];
156
+ const nextState = stateDef?.on?.[event];
157
+
158
+ // Really useful for debugging
159
+ // console.log({
160
+ // event,
161
+ // state: state.current.state,
162
+ // id: state.current.id,
163
+ // nextState,
164
+ // });
165
+
166
+ if (!nextState) {
167
+ return currentState;
168
+ }
169
+
170
+ if (stateDef && stateDef.leave) {
171
+ stateDef.leave(currentStateValue, payload);
172
+ }
173
+
174
+ const nextStateValue = nextState;
175
+ const nextDef = chart.states[nextStateValue];
176
+ if (nextDef && nextDef.enter) {
177
+ nextDef.enter(nextStateValue, payload);
178
+ }
179
+
180
+ return { ...currentState, ...payload, state: nextStateValue };
181
+ }
182
+
183
+ export function send<T extends TooltipEventTypes>(
184
+ event: T,
185
+ payload?: Omit<typeof state['current'], 'state'>
186
+ ) {
187
+ const nextState = transition(state.current, event, payload);
188
+ if (state.current !== nextState) {
189
+ state.current = nextState;
190
+ subscription.notify();
191
+ }
192
+ }
@@ -1,17 +1,17 @@
1
- [data-hide-child-buttons=""] {
2
- background-color: #ddd;
3
- display: flex;
4
- padding: 20px;
5
- min-height: 62px;
6
- box-sizing: border-box;
7
- border-bottom: 1px solid #aaa;
8
- justify-content: flex-end;
9
- }
10
-
11
- [data-hide-child-buttons=""] button {
12
- display: none;
13
- }
14
-
15
- [data-hide-child-buttons=""]:hover button {
16
- display: block;
17
- }
1
+ [data-hide-child-buttons=""] {
2
+ background-color: #ddd;
3
+ display: flex;
4
+ padding: 20px;
5
+ min-height: 62px;
6
+ box-sizing: border-box;
7
+ border-bottom: 1px solid #aaa;
8
+ justify-content: flex-end;
9
+ }
10
+
11
+ [data-hide-child-buttons=""] button {
12
+ display: none;
13
+ }
14
+
15
+ [data-hide-child-buttons=""]:hover button {
16
+ display: block;
17
+ }