@basic-ui/core 0.0.50 → 0.0.52

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 (337) hide show
  1. package/README.md +3 -3
  2. package/build/cjs/index.js +106 -92
  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.map +1 -1
  6. package/build/esm/Accordion/AccordionBody.d.ts +6 -6
  7. package/build/esm/Accordion/AccordionBody.js.map +1 -1
  8. package/build/esm/Accordion/AccordionHeader.d.ts +7 -7
  9. package/build/esm/Accordion/AccordionHeader.js.map +1 -1
  10. package/build/esm/Accordion/AccordionItem.d.ts +9 -9
  11. package/build/esm/Accordion/AccordionItem.js.map +1 -1
  12. package/build/esm/Accordion/context.d.ts +19 -19
  13. package/build/esm/Accordion/context.js.map +1 -1
  14. package/build/esm/Accordion/index.d.ts +4 -4
  15. package/build/esm/Accordion/index.js.map +1 -1
  16. package/build/esm/Accordion/scopeQuery.d.ts +2 -2
  17. package/build/esm/Accordion/scopeQuery.js.map +1 -1
  18. package/build/esm/CheckBox/CheckBox.d.ts +7 -7
  19. package/build/esm/CheckBox/CheckBox.js.map +1 -1
  20. package/build/esm/CheckBox/index.d.ts +1 -1
  21. package/build/esm/CheckBox/index.js.map +1 -1
  22. package/build/esm/ComboBox/Combobox.d.ts +18 -18
  23. package/build/esm/ComboBox/Combobox.js.map +1 -1
  24. package/build/esm/ComboBox/ComboboxButton.d.ts +9 -9
  25. package/build/esm/ComboBox/ComboboxButton.js.map +1 -1
  26. package/build/esm/ComboBox/ComboboxInput.d.ts +17 -17
  27. package/build/esm/ComboBox/ComboboxInput.js.map +1 -1
  28. package/build/esm/ComboBox/ComboboxLabel.d.ts +7 -7
  29. package/build/esm/ComboBox/ComboboxLabel.js.map +1 -1
  30. package/build/esm/ComboBox/ComboboxList.d.ts +8 -8
  31. package/build/esm/ComboBox/ComboboxList.js.map +1 -1
  32. package/build/esm/ComboBox/ComboboxOption.d.ts +11 -11
  33. package/build/esm/ComboBox/ComboboxOption.js.map +1 -1
  34. package/build/esm/ComboBox/ComboboxPopover.d.ts +9 -9
  35. package/build/esm/ComboBox/ComboboxPopover.js.map +1 -1
  36. package/build/esm/ComboBox/cities.d.ts +5 -5
  37. package/build/esm/ComboBox/cities.js.map +1 -1
  38. package/build/esm/ComboBox/context.d.ts +30 -30
  39. package/build/esm/ComboBox/context.js.map +1 -1
  40. package/build/esm/ComboBox/hooks.d.ts +37 -37
  41. package/build/esm/ComboBox/hooks.js.map +1 -1
  42. package/build/esm/ComboBox/index.d.ts +8 -8
  43. package/build/esm/ComboBox/index.js.map +1 -1
  44. package/build/esm/ComboBox/makeHash.d.ts +1 -1
  45. package/build/esm/ComboBox/makeHash.js.map +1 -1
  46. package/build/esm/ComboBox/scopeQuery.d.ts +1 -1
  47. package/build/esm/ComboBox/scopeQuery.js.map +1 -1
  48. package/build/esm/FocusLock/FocusLock.d.ts +9 -9
  49. package/build/esm/FocusLock/FocusLock.js.map +1 -1
  50. package/build/esm/FocusLock/index.d.ts +1 -1
  51. package/build/esm/FocusLock/index.js.map +1 -1
  52. package/build/esm/FocusLock/tabUtils.d.ts +3 -3
  53. package/build/esm/FocusLock/tabUtils.js.map +1 -1
  54. package/build/esm/FocusLock/useFocusLock.d.ts +7 -7
  55. package/build/esm/FocusLock/useFocusLock.js.map +1 -1
  56. package/build/esm/List/List.d.ts +7 -7
  57. package/build/esm/List/List.js.map +1 -1
  58. package/build/esm/List/ListItem.d.ts +7 -7
  59. package/build/esm/List/ListItem.js.map +1 -1
  60. package/build/esm/List/context.d.ts +4 -4
  61. package/build/esm/List/context.js.map +1 -1
  62. package/build/esm/List/index.d.ts +2 -2
  63. package/build/esm/List/index.js.map +1 -1
  64. package/build/esm/Menu/ContextMenuTrigger.d.ts +11 -11
  65. package/build/esm/Menu/ContextMenuTrigger.js.map +1 -1
  66. package/build/esm/Menu/Menu.d.ts +10 -10
  67. package/build/esm/Menu/Menu.js.map +1 -1
  68. package/build/esm/Menu/MenuButton.d.ts +11 -11
  69. package/build/esm/Menu/MenuButton.js.map +1 -1
  70. package/build/esm/Menu/MenuItem.d.ts +8 -8
  71. package/build/esm/Menu/MenuItem.js +1 -0
  72. package/build/esm/Menu/MenuItem.js.map +1 -1
  73. package/build/esm/Menu/MenuList.d.ts +7 -7
  74. package/build/esm/Menu/MenuList.js +17 -4
  75. package/build/esm/Menu/MenuList.js.map +1 -1
  76. package/build/esm/Menu/MenuPopover.d.ts +8 -8
  77. package/build/esm/Menu/MenuPopover.js.map +1 -1
  78. package/build/esm/Menu/context.d.ts +25 -25
  79. package/build/esm/Menu/context.js.map +1 -1
  80. package/build/esm/Menu/fixtures/countryList.d.ts +1 -1
  81. package/build/esm/Menu/fixtures/countryList.js.map +1 -1
  82. package/build/esm/Menu/index.d.ts +6 -6
  83. package/build/esm/Menu/index.js.map +1 -1
  84. package/build/esm/Menu/scope.d.ts +1 -1
  85. package/build/esm/Menu/scope.js.map +1 -1
  86. package/build/esm/Modal/Modal.d.ts +9 -9
  87. package/build/esm/Modal/Modal.js.map +1 -1
  88. package/build/esm/Modal/ModalBackdrop.d.ts +10 -10
  89. package/build/esm/Modal/ModalBackdrop.js.map +1 -1
  90. package/build/esm/Modal/index.d.ts +2 -2
  91. package/build/esm/Modal/index.js.map +1 -1
  92. package/build/esm/Popper/Popper.d.ts +35 -35
  93. package/build/esm/Popper/Popper.js.map +1 -1
  94. package/build/esm/Popper/PopperArrow.d.ts +6 -6
  95. package/build/esm/Popper/PopperArrow.js.map +1 -1
  96. package/build/esm/Popper/context.d.ts +6 -6
  97. package/build/esm/Popper/context.js.map +1 -1
  98. package/build/esm/Popper/index.d.ts +3 -3
  99. package/build/esm/Popper/index.js.map +1 -1
  100. package/build/esm/Portal/Portal.d.ts +6 -6
  101. package/build/esm/Portal/Portal.js.map +1 -1
  102. package/build/esm/Portal/index.d.ts +1 -1
  103. package/build/esm/Portal/index.js.map +1 -1
  104. package/build/esm/RadioButton/RadioButton.d.ts +10 -10
  105. package/build/esm/RadioButton/RadioButton.js.map +1 -1
  106. package/build/esm/RadioButton/RadioGroup.d.ts +12 -12
  107. package/build/esm/RadioButton/RadioGroup.js.map +1 -1
  108. package/build/esm/RadioButton/context.d.ts +9 -9
  109. package/build/esm/RadioButton/context.js.map +1 -1
  110. package/build/esm/RadioButton/index.d.ts +2 -2
  111. package/build/esm/RadioButton/index.js.map +1 -1
  112. package/build/esm/SkipNav/SkipNav.d.ts +7 -7
  113. package/build/esm/SkipNav/SkipNav.js.map +1 -1
  114. package/build/esm/SkipNav/index.d.ts +1 -1
  115. package/build/esm/SkipNav/index.js.map +1 -1
  116. package/build/esm/Slider/Slider.d.ts +197 -197
  117. package/build/esm/Slider/Slider.js +82 -82
  118. package/build/esm/Slider/Slider.js.map +1 -1
  119. package/build/esm/Slider/index.d.ts +1 -1
  120. package/build/esm/Slider/index.js.map +1 -1
  121. package/build/esm/Spinner/Spinner.d.ts +12 -12
  122. package/build/esm/Spinner/Spinner.js.map +1 -1
  123. package/build/esm/Spinner/SpinnerButton.d.ts +8 -8
  124. package/build/esm/Spinner/SpinnerButton.js.map +1 -1
  125. package/build/esm/Spinner/context.d.ts +12 -12
  126. package/build/esm/Spinner/context.js.map +1 -1
  127. package/build/esm/Spinner/index.d.ts +2 -2
  128. package/build/esm/Spinner/index.js.map +1 -1
  129. package/build/esm/Tabs/Tab.d.ts +7 -7
  130. package/build/esm/Tabs/Tab.js.map +1 -1
  131. package/build/esm/Tabs/TabList.d.ts +9 -9
  132. package/build/esm/Tabs/TabList.js.map +1 -1
  133. package/build/esm/Tabs/TabPanel.d.ts +8 -8
  134. package/build/esm/Tabs/TabPanel.js.map +1 -1
  135. package/build/esm/Tabs/TabPanels.d.ts +8 -8
  136. package/build/esm/Tabs/TabPanels.js.map +1 -1
  137. package/build/esm/Tabs/Tabs.d.ts +10 -10
  138. package/build/esm/Tabs/Tabs.js.map +1 -1
  139. package/build/esm/Tabs/context.d.ts +17 -17
  140. package/build/esm/Tabs/context.js.map +1 -1
  141. package/build/esm/Tabs/index.d.ts +5 -5
  142. package/build/esm/Tabs/index.js.map +1 -1
  143. package/build/esm/Tabs/scopeQuery.d.ts +1 -1
  144. package/build/esm/Tabs/scopeQuery.js.map +1 -1
  145. package/build/esm/Tooltip/Tooltip.d.ts +10 -10
  146. package/build/esm/Tooltip/Tooltip.js.map +1 -1
  147. package/build/esm/Tooltip/index.d.ts +1 -1
  148. package/build/esm/Tooltip/index.js.map +1 -1
  149. package/build/esm/Tooltip/stateMachine.d.ts +28 -28
  150. package/build/esm/Tooltip/stateMachine.js.map +1 -1
  151. package/build/esm/Tooltip/useTooltip.d.ts +10 -10
  152. package/build/esm/Tooltip/useTooltip.js.map +1 -1
  153. package/build/esm/hooks/index.d.ts +13 -13
  154. package/build/esm/hooks/index.js.map +1 -1
  155. package/build/esm/hooks/useAutoFocus.d.ts +2 -2
  156. package/build/esm/hooks/useAutoFocus.js.map +1 -1
  157. package/build/esm/hooks/useChildrenCounter.d.ts +7 -7
  158. package/build/esm/hooks/useChildrenCounter.js.map +1 -1
  159. package/build/esm/hooks/useControlledState.d.ts +3 -3
  160. package/build/esm/hooks/useControlledState.js +1 -1
  161. package/build/esm/hooks/useControlledState.js.map +1 -1
  162. package/build/esm/hooks/useFocusReturn.d.ts +2 -2
  163. package/build/esm/hooks/useFocusReturn.js.map +1 -1
  164. package/build/esm/hooks/useFocusState.d.ts +11 -11
  165. package/build/esm/hooks/useFocusState.js.map +1 -1
  166. package/build/esm/hooks/useGestureHandlers.d.ts +52 -52
  167. package/build/esm/hooks/useGestureHandlers.js.map +1 -1
  168. package/build/esm/hooks/useMeasure.d.ts +7 -7
  169. package/build/esm/hooks/useMeasure.js.map +1 -1
  170. package/build/esm/hooks/useOnClickOutside.d.ts +2 -2
  171. package/build/esm/hooks/useOnClickOutside.js.map +1 -1
  172. package/build/esm/hooks/useOnKeyDown.d.ts +1 -1
  173. package/build/esm/hooks/useOnKeyDown.js.map +1 -1
  174. package/build/esm/hooks/useReducerMachine.d.ts +24 -24
  175. package/build/esm/hooks/useReducerMachine.js.map +1 -1
  176. package/build/esm/hooks/useRemoveBodyScroll.d.ts +2 -2
  177. package/build/esm/hooks/useRemoveBodyScroll.js.map +1 -1
  178. package/build/esm/hooks/useScope.d.ts +11 -11
  179. package/build/esm/hooks/useScope.js.map +1 -1
  180. package/build/esm/hooks/useThrottle.d.ts +1 -1
  181. package/build/esm/hooks/useThrottle.js.map +1 -1
  182. package/build/esm/index.d.ts +15 -15
  183. package/build/esm/index.js.map +1 -1
  184. package/build/esm/utils/assign-ref.d.ts +3 -3
  185. package/build/esm/utils/assign-ref.js.map +1 -1
  186. package/build/esm/utils/can-use-dom.d.ts +1 -1
  187. package/build/esm/utils/can-use-dom.js.map +1 -1
  188. package/build/esm/utils/clamp.d.ts +1 -1
  189. package/build/esm/utils/clamp.js.map +1 -1
  190. package/build/esm/utils/context.d.ts +7 -7
  191. package/build/esm/utils/context.js.map +1 -1
  192. package/build/esm/utils/create-subscription.d.ts +4 -4
  193. package/build/esm/utils/create-subscription.js.map +1 -1
  194. package/build/esm/utils/get-circular-index.d.ts +1 -1
  195. package/build/esm/utils/get-circular-index.js.map +1 -1
  196. package/build/esm/utils/index.d.ts +10 -10
  197. package/build/esm/utils/index.js.map +1 -1
  198. package/build/esm/utils/is-right-click.d.ts +6 -6
  199. package/build/esm/utils/is-right-click.js +4 -4
  200. package/build/esm/utils/is-right-click.js.map +1 -1
  201. package/build/esm/utils/owner-document.d.ts +7 -7
  202. package/build/esm/utils/owner-document.js +5 -5
  203. package/build/esm/utils/owner-document.js.map +1 -1
  204. package/build/esm/utils/polymorphic.d.ts +39 -39
  205. package/build/esm/utils/polymorphic.js.map +1 -1
  206. package/build/esm/utils/rubber-band-clamp.d.ts +2 -2
  207. package/build/esm/utils/rubber-band-clamp.js.map +1 -1
  208. package/build/esm/utils/use-stable-callback.d.ts +16 -16
  209. package/build/esm/utils/use-stable-callback.js +16 -16
  210. package/build/esm/utils/use-stable-callback.js.map +1 -1
  211. package/build/esm/utils/wrap-event.d.ts +3 -3
  212. package/build/esm/utils/wrap-event.js.map +1 -1
  213. package/build/tsconfig-build.tsbuildinfo +1 -1
  214. package/package.json +2 -2
  215. package/src/Accordion/Accordion.story.tsx +74 -74
  216. package/src/Accordion/Accordion.tsx +59 -59
  217. package/src/Accordion/AccordionBody.tsx +52 -52
  218. package/src/Accordion/AccordionHeader.tsx +167 -167
  219. package/src/Accordion/AccordionItem.tsx +50 -50
  220. package/src/Accordion/context.ts +37 -37
  221. package/src/Accordion/index.ts +4 -4
  222. package/src/Accordion/scopeQuery.ts +7 -7
  223. package/src/Accordion/styles.css +21 -21
  224. package/src/CheckBox/CheckBox.tsx +41 -41
  225. package/src/CheckBox/index.ts +1 -1
  226. package/src/ComboBox/ComboBox.story.tsx +120 -120
  227. package/src/ComboBox/Combobox.tsx +148 -148
  228. package/src/ComboBox/ComboboxButton.tsx +61 -61
  229. package/src/ComboBox/ComboboxInput.tsx +187 -187
  230. package/src/ComboBox/ComboboxLabel.tsx +33 -33
  231. package/src/ComboBox/ComboboxList.tsx +47 -47
  232. package/src/ComboBox/ComboboxOption.tsx +111 -111
  233. package/src/ComboBox/ComboboxPopover.tsx +64 -64
  234. package/src/ComboBox/cities.ts +23194 -23194
  235. package/src/ComboBox/context.ts +35 -35
  236. package/src/ComboBox/hooks.tsx +451 -451
  237. package/src/ComboBox/index.ts +8 -8
  238. package/src/ComboBox/makeHash.ts +19 -19
  239. package/src/ComboBox/scopeQuery.ts +6 -6
  240. package/src/ComboBox/styles.css +32 -32
  241. package/src/FocusLock/FocusLock.tsx +66 -66
  242. package/src/FocusLock/index.ts +1 -1
  243. package/src/FocusLock/tabUtils.ts +40 -40
  244. package/src/FocusLock/useFocusLock.ts +56 -56
  245. package/src/List/List.story.tsx +18 -18
  246. package/src/List/List.tsx +17 -17
  247. package/src/List/ListItem.tsx +23 -23
  248. package/src/List/context.ts +19 -19
  249. package/src/List/index.ts +2 -2
  250. package/src/Menu/ContextMenu.story.tsx +73 -73
  251. package/src/Menu/ContextMenuTrigger.tsx +76 -76
  252. package/src/Menu/Menu.story.tsx +160 -160
  253. package/src/Menu/Menu.tsx +83 -83
  254. package/src/Menu/MenuButton.tsx +83 -83
  255. package/src/Menu/MenuComplex.story.tsx +58 -58
  256. package/src/Menu/MenuItem.tsx +88 -87
  257. package/src/Menu/MenuList.tsx +254 -243
  258. package/src/Menu/MenuPopover.tsx +35 -35
  259. package/src/Menu/context.ts +44 -44
  260. package/src/Menu/fixtures/countryList.ts +198 -198
  261. package/src/Menu/index.ts +6 -6
  262. package/src/Menu/scope.ts +7 -7
  263. package/src/Menu/styles.css +42 -42
  264. package/src/Modal/Modal.story.tsx +258 -258
  265. package/src/Modal/Modal.tsx +48 -48
  266. package/src/Modal/ModalBackdrop.tsx +78 -78
  267. package/src/Modal/NavDrawer.story.tsx +158 -158
  268. package/src/Modal/index.ts +2 -2
  269. package/src/Modal/styles.css +46 -46
  270. package/src/Popper/Popper.story.tsx +263 -263
  271. package/src/Popper/Popper.tsx +154 -154
  272. package/src/Popper/PopperArrow.tsx +35 -35
  273. package/src/Popper/context.ts +10 -10
  274. package/src/Popper/index.ts +3 -3
  275. package/src/Popper/styles.css +60 -60
  276. package/src/Portal/Portal.tsx +20 -20
  277. package/src/Portal/index.ts +1 -1
  278. package/src/RadioButton/RadioButton.story.tsx +77 -77
  279. package/src/RadioButton/RadioButton.tsx +55 -55
  280. package/src/RadioButton/RadioGroup.tsx +60 -60
  281. package/src/RadioButton/context.ts +17 -17
  282. package/src/RadioButton/index.ts +2 -2
  283. package/src/SkipNav/SkipNav.tsx +16 -16
  284. package/src/SkipNav/index.tsx +1 -1
  285. package/src/Slider/Slider.story.tsx +45 -45
  286. package/src/Slider/Slider.tsx +1120 -1120
  287. package/src/Slider/index.ts +1 -1
  288. package/src/Slider/styles.css +131 -131
  289. package/src/Spinner/Spinner.story.tsx +31 -31
  290. package/src/Spinner/Spinner.tsx +117 -117
  291. package/src/Spinner/SpinnerButton.tsx +54 -54
  292. package/src/Spinner/context.ts +20 -20
  293. package/src/Spinner/index.ts +2 -2
  294. package/src/Spinner/styles.css +23 -23
  295. package/src/Tabs/Tab.story.tsx +80 -80
  296. package/src/Tabs/Tab.tsx +136 -136
  297. package/src/Tabs/TabList.tsx +71 -71
  298. package/src/Tabs/TabPanel.tsx +53 -53
  299. package/src/Tabs/TabPanels.tsx +30 -30
  300. package/src/Tabs/Tabs.tsx +46 -46
  301. package/src/Tabs/context.ts +30 -30
  302. package/src/Tabs/index.tsx +5 -5
  303. package/src/Tabs/scopeQuery.ts +6 -6
  304. package/src/Tooltip/Tooltip.story.tsx +61 -61
  305. package/src/Tooltip/Tooltip.tsx +50 -50
  306. package/src/Tooltip/index.ts +1 -1
  307. package/src/Tooltip/stateMachine.ts +192 -192
  308. package/src/Tooltip/styles.css +17 -17
  309. package/src/Tooltip/useTooltip.ts +136 -136
  310. package/src/hooks/index.ts +13 -13
  311. package/src/hooks/useAutoFocus.ts +22 -22
  312. package/src/hooks/useChildrenCounter.ts +51 -51
  313. package/src/hooks/useControlledState.ts +3 -3
  314. package/src/hooks/useFocusReturn.ts +43 -43
  315. package/src/hooks/useFocusState.ts +30 -30
  316. package/src/hooks/useGestureHandlers.ts +286 -286
  317. package/src/hooks/useMeasure.ts +33 -33
  318. package/src/hooks/useOnClickOutside.ts +32 -32
  319. package/src/hooks/useOnKeyDown.ts +19 -19
  320. package/src/hooks/useReducerMachine.ts +60 -60
  321. package/src/hooks/useRemoveBodyScroll.ts +39 -39
  322. package/src/hooks/useScope.ts +52 -52
  323. package/src/hooks/useThrottle.ts +19 -19
  324. package/src/index.ts +20 -20
  325. package/src/utils/assign-ref.ts +27 -27
  326. package/src/utils/can-use-dom.ts +7 -7
  327. package/src/utils/clamp.ts +3 -3
  328. package/src/utils/context.tsx +48 -48
  329. package/src/utils/create-subscription.ts +16 -16
  330. package/src/utils/get-circular-index.ts +7 -7
  331. package/src/utils/index.ts +10 -10
  332. package/src/utils/is-right-click.ts +14 -14
  333. package/src/utils/owner-document.ts +13 -13
  334. package/src/utils/polymorphic.ts +78 -78
  335. package/src/utils/rubber-band-clamp.ts +25 -25
  336. package/src/utils/use-stable-callback.ts +58 -58
  337. package/src/utils/wrap-event.ts +22 -22
@@ -1,37 +1,37 @@
1
- import type { KeyboardEvent, MouseEvent } from 'react';
2
- import { useContext, createContext } from 'react';
3
-
4
- import type { Scope } from '../hooks/useScope';
5
-
6
- // AccordionGroup Component
7
- export interface AccordionContextProps {
8
- childrenHeaderHasFocus: boolean;
9
- setChildrenHeaderHasFocus: (value: boolean) => void;
10
- scope: Scope<HTMLElement>;
11
- expandedIndex: number;
12
- onChange?: (
13
- e: KeyboardEvent<HTMLDivElement> | MouseEvent<HTMLDivElement>,
14
- index: number
15
- ) => void;
16
- }
17
-
18
- const accordionContext = createContext<AccordionContextProps | null>(null);
19
- export const { Provider: AccordionProvider } = accordionContext;
20
- export const useAccordionContext = () => useContext(accordionContext);
21
-
22
- // Accordion Component
23
- export interface AccordionItemContextProps {
24
- headerId: string | undefined;
25
- bodyId: string | undefined;
26
- expanded: boolean;
27
- onChange?: (
28
- e: KeyboardEvent<HTMLDivElement> | MouseEvent<HTMLDivElement>,
29
- value: boolean
30
- ) => void;
31
- }
32
-
33
- const accordionItemContext = createContext<AccordionItemContextProps | null>(
34
- null
35
- );
36
- export const { Provider: AccordionItemProvider } = accordionItemContext;
37
- export const useAccordionItemContext = () => useContext(accordionItemContext);
1
+ import type { KeyboardEvent, MouseEvent } from 'react';
2
+ import { useContext, createContext } from 'react';
3
+
4
+ import type { Scope } from '../hooks/useScope';
5
+
6
+ // AccordionGroup Component
7
+ export interface AccordionContextProps {
8
+ childrenHeaderHasFocus: boolean;
9
+ setChildrenHeaderHasFocus: (value: boolean) => void;
10
+ scope: Scope<HTMLElement>;
11
+ expandedIndex: number;
12
+ onChange?: (
13
+ e: KeyboardEvent<HTMLDivElement> | MouseEvent<HTMLDivElement>,
14
+ index: number
15
+ ) => void;
16
+ }
17
+
18
+ const accordionContext = createContext<AccordionContextProps | null>(null);
19
+ export const { Provider: AccordionProvider } = accordionContext;
20
+ export const useAccordionContext = () => useContext(accordionContext);
21
+
22
+ // Accordion Component
23
+ export interface AccordionItemContextProps {
24
+ headerId: string | undefined;
25
+ bodyId: string | undefined;
26
+ expanded: boolean;
27
+ onChange?: (
28
+ e: KeyboardEvent<HTMLDivElement> | MouseEvent<HTMLDivElement>,
29
+ value: boolean
30
+ ) => void;
31
+ }
32
+
33
+ const accordionItemContext = createContext<AccordionItemContextProps | null>(
34
+ null
35
+ );
36
+ export const { Provider: AccordionItemProvider } = accordionItemContext;
37
+ export const useAccordionItemContext = () => useContext(accordionItemContext);
@@ -1,4 +1,4 @@
1
- export * from './Accordion';
2
- export * from './AccordionItem';
3
- export * from './AccordionHeader';
4
- export * from './AccordionBody';
1
+ export * from './Accordion';
2
+ export * from './AccordionItem';
3
+ export * from './AccordionHeader';
4
+ export * from './AccordionBody';
@@ -1,7 +1,7 @@
1
- export function headerScopeQuery(type: string, props: Record<string, unknown>) {
2
- return props['data-accordion-header'] === '';
3
- }
4
-
5
- export function bodyScopeQuery(type: string, props: Record<string, unknown>) {
6
- return props['data-accordion-body'] === '';
7
- }
1
+ export function headerScopeQuery(type: string, props: Record<string, unknown>) {
2
+ return props['data-accordion-header'] === '';
3
+ }
4
+
5
+ export function bodyScopeQuery(type: string, props: Record<string, unknown>) {
6
+ return props['data-accordion-body'] === '';
7
+ }
@@ -1,21 +1,21 @@
1
- [data-accordion-root] {
2
- box-sizing: border-box;
3
- max-width: 300px;
4
- padding: 32px;
5
- border: solid 1px #aaa;
6
- margin: 32px;
7
- }
8
- [data-accordion-root][data-children-has-focus='true'] {
9
- border-color: red;
10
- }
11
-
12
- [data-accordion-body]:not([hidden]) {
13
- box-sizing: border-box;
14
- padding: 16px 0;
15
- display: flex;
16
- flex-direction: column;
17
- }
18
-
19
- [data-accordion-header] {
20
- cursor: pointer;
21
- }
1
+ [data-accordion-root] {
2
+ box-sizing: border-box;
3
+ max-width: 300px;
4
+ padding: 32px;
5
+ border: solid 1px #aaa;
6
+ margin: 32px;
7
+ }
8
+ [data-accordion-root][data-children-has-focus='true'] {
9
+ border-color: red;
10
+ }
11
+
12
+ [data-accordion-body]:not([hidden]) {
13
+ box-sizing: border-box;
14
+ padding: 16px 0;
15
+ display: flex;
16
+ flex-direction: column;
17
+ }
18
+
19
+ [data-accordion-header] {
20
+ cursor: pointer;
21
+ }
@@ -1,41 +1,41 @@
1
- import type { ElementType, InputHTMLAttributes, ReactNode } from 'react';
2
- import { forwardRef } from 'react';
3
-
4
- import { useControlledState } from '../hooks';
5
-
6
- export interface CheckBoxProps extends InputHTMLAttributes<HTMLInputElement> {
7
- as?: ElementType<any>;
8
- innerAs?: ElementType<any>;
9
- children?: ReactNode;
10
- }
11
-
12
- export const CheckBox = forwardRef<HTMLInputElement, CheckBoxProps>(
13
- function CheckBox(props, forwardedRef) {
14
- const {
15
- as: Comp = 'input',
16
- checked: checkedProp,
17
- defaultChecked = false,
18
- onChange: onChangeProp,
19
- ...otherProps
20
- } = props;
21
- const [checked, onChange] = useControlledState(
22
- checkedProp,
23
- onChangeProp,
24
- defaultChecked,
25
- (setValue) => (e) => {
26
- setValue(e.target.checked);
27
- }
28
- );
29
-
30
- return (
31
- <Comp
32
- ref={forwardedRef}
33
- type="checkbox"
34
- checked={checked}
35
- aria-checked={checked}
36
- onChange={onChange}
37
- {...otherProps}
38
- />
39
- );
40
- }
41
- );
1
+ import type { ElementType, InputHTMLAttributes, ReactNode } from 'react';
2
+ import { forwardRef } from 'react';
3
+
4
+ import { useControlledState } from '../hooks';
5
+
6
+ export interface CheckBoxProps extends InputHTMLAttributes<HTMLInputElement> {
7
+ as?: ElementType<any>;
8
+ innerAs?: ElementType<any>;
9
+ children?: ReactNode;
10
+ }
11
+
12
+ export const CheckBox = forwardRef<HTMLInputElement, CheckBoxProps>(
13
+ function CheckBox(props, forwardedRef) {
14
+ const {
15
+ as: Comp = 'input',
16
+ checked: checkedProp,
17
+ defaultChecked = false,
18
+ onChange: onChangeProp,
19
+ ...otherProps
20
+ } = props;
21
+ const [checked, onChange] = useControlledState(
22
+ checkedProp,
23
+ onChangeProp,
24
+ defaultChecked,
25
+ (setValue) => (e) => {
26
+ setValue(e.target.checked);
27
+ }
28
+ );
29
+
30
+ return (
31
+ <Comp
32
+ ref={forwardedRef}
33
+ type="checkbox"
34
+ checked={checked}
35
+ aria-checked={checked}
36
+ onChange={onChange}
37
+ {...otherProps}
38
+ />
39
+ );
40
+ }
41
+ );
@@ -1 +1 @@
1
- export * from './CheckBox';
1
+ export * from './CheckBox';
@@ -1,120 +1,120 @@
1
- import type { ChangeEvent } from 'react';
2
- import { useMemo, useState } from 'react';
3
-
4
- import { ComboboxOption } from './ComboboxOption';
5
- import { ComboboxList } from './ComboboxList';
6
- import { ComboboxPopover } from './ComboboxPopover';
7
- import { ComboboxInput } from './ComboboxInput';
8
- import { ComboboxLabel } from './ComboboxLabel';
9
- import { Combobox } from './Combobox';
10
- import cities from './cities';
11
- import './styles.css';
12
-
13
- export default {
14
- title: 'components/Combobox',
15
- };
16
-
17
- function useCityMatch(searchTerm: string) {
18
- return useMemo(() => {
19
- const term = searchTerm.trim().toLowerCase();
20
- return term === ''
21
- ? []
22
- : cities.filter(
23
- (city) =>
24
- city.city.toLowerCase().indexOf(term) !== -1 ||
25
- city.state.toLowerCase().indexOf(term) !== -1
26
- );
27
- }, [searchTerm]);
28
- }
29
-
30
- export function UncontrolledClientSideExample({ initialValue = '' }) {
31
- const [term, setTerm] = useState(initialValue);
32
- const [selected, setSelected] = useState(initialValue);
33
- const results = useCityMatch(term);
34
-
35
- const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
36
- setTerm(event.target.value);
37
- };
38
-
39
- const handleSelect = (value: string) => {
40
- setSelected(value);
41
- };
42
-
43
- return (
44
- <div>
45
- <h2>Clientside Search</h2>
46
- <p>Selection: {selected}</p>
47
- <p>Term: {term}</p>
48
- <Combobox onSelect={handleSelect} selectOnBlur>
49
- <ComboboxLabel>Enter a city name</ComboboxLabel>
50
- <br />
51
- <ComboboxInput onChange={handleChange} defaultValue={initialValue} />
52
- {results.length > 0 && (
53
- <ComboboxPopover>
54
- <ComboboxList persistSelection={true}>
55
- {results.slice(0, 100).map((result, index) => (
56
- <ComboboxOption
57
- key={`${result.city}, ${result.state}, ${index}`}
58
- id={`${result.city}, ${result.state}, ${index}`}
59
- text={`${result.city}, ${result.state}`}
60
- value={result}
61
- />
62
- ))}
63
- </ComboboxList>
64
- </ComboboxPopover>
65
- )}
66
- </Combobox>
67
- </div>
68
- );
69
- }
70
-
71
- export function ControlledClientSideExample({ initialValue = '' }) {
72
- const [term, setTerm] = useState(initialValue);
73
- const [selected, setSelected] = useState(initialValue);
74
- const results = useCityMatch(term);
75
-
76
- const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
77
- setTerm(event.target.value);
78
- setSelected('');
79
- };
80
-
81
- const handleSelect = (value: string) => {
82
- setSelected(value);
83
- };
84
-
85
- return (
86
- <div>
87
- <h2>Clientside Search</h2>
88
- <p>Selection: {selected}</p>
89
- <p>Term: {term}</p>
90
- <Combobox onSelect={handleSelect} selectOnBlur>
91
- <ComboboxLabel>Enter a city name</ComboboxLabel>
92
- <br />
93
- <ComboboxInput onChange={handleChange} value={selected || term} />
94
- {results.length > 0 && (
95
- <ComboboxPopover>
96
- <ComboboxList persistSelection={true}>
97
- {results.slice(0, 10).map((result, index) => (
98
- <ComboboxOption
99
- key={`${result.city}, ${result.state}, ${index}`}
100
- id={`${result.city}, ${result.state}, ${index}`}
101
- text={`${result.city}, ${result.state}`}
102
- value={result}
103
- />
104
- ))}
105
- </ComboboxList>
106
- </ComboboxPopover>
107
- )}
108
- </Combobox>
109
- </div>
110
- );
111
- }
112
-
113
- export const UncontrolledClientSide = () => <UncontrolledClientSideExample />;
114
- export const UncontrolledClientSideInitial = () => (
115
- <UncontrolledClientSideExample initialValue="Aberdeen" />
116
- );
117
- export const ControlledClientSide = () => <ControlledClientSideExample />;
118
- export const ControlledClientsideInitial = () => (
119
- <ControlledClientSideExample initialValue="Aberdeen" />
120
- );
1
+ import type { ChangeEvent } from 'react';
2
+ import { useMemo, useState } from 'react';
3
+
4
+ import { ComboboxOption } from './ComboboxOption';
5
+ import { ComboboxList } from './ComboboxList';
6
+ import { ComboboxPopover } from './ComboboxPopover';
7
+ import { ComboboxInput } from './ComboboxInput';
8
+ import { ComboboxLabel } from './ComboboxLabel';
9
+ import { Combobox } from './Combobox';
10
+ import cities from './cities';
11
+ import './styles.css';
12
+
13
+ export default {
14
+ title: 'components/Combobox',
15
+ };
16
+
17
+ function useCityMatch(searchTerm: string) {
18
+ return useMemo(() => {
19
+ const term = searchTerm.trim().toLowerCase();
20
+ return term === ''
21
+ ? []
22
+ : cities.filter(
23
+ (city) =>
24
+ city.city.toLowerCase().indexOf(term) !== -1 ||
25
+ city.state.toLowerCase().indexOf(term) !== -1
26
+ );
27
+ }, [searchTerm]);
28
+ }
29
+
30
+ export function UncontrolledClientSideExample({ initialValue = '' }) {
31
+ const [term, setTerm] = useState(initialValue);
32
+ const [selected, setSelected] = useState(initialValue);
33
+ const results = useCityMatch(term);
34
+
35
+ const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
36
+ setTerm(event.target.value);
37
+ };
38
+
39
+ const handleSelect = (value: string) => {
40
+ setSelected(value);
41
+ };
42
+
43
+ return (
44
+ <div>
45
+ <h2>Clientside Search</h2>
46
+ <p>Selection: {selected}</p>
47
+ <p>Term: {term}</p>
48
+ <Combobox onSelect={handleSelect} selectOnBlur>
49
+ <ComboboxLabel>Enter a city name</ComboboxLabel>
50
+ <br />
51
+ <ComboboxInput onChange={handleChange} defaultValue={initialValue} />
52
+ {results.length > 0 && (
53
+ <ComboboxPopover>
54
+ <ComboboxList persistSelection={true}>
55
+ {results.slice(0, 100).map((result, index) => (
56
+ <ComboboxOption
57
+ key={`${result.city}, ${result.state}, ${index}`}
58
+ id={`${result.city}, ${result.state}, ${index}`}
59
+ text={`${result.city}, ${result.state}`}
60
+ value={result}
61
+ />
62
+ ))}
63
+ </ComboboxList>
64
+ </ComboboxPopover>
65
+ )}
66
+ </Combobox>
67
+ </div>
68
+ );
69
+ }
70
+
71
+ export function ControlledClientSideExample({ initialValue = '' }) {
72
+ const [term, setTerm] = useState(initialValue);
73
+ const [selected, setSelected] = useState(initialValue);
74
+ const results = useCityMatch(term);
75
+
76
+ const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
77
+ setTerm(event.target.value);
78
+ setSelected('');
79
+ };
80
+
81
+ const handleSelect = (value: string) => {
82
+ setSelected(value);
83
+ };
84
+
85
+ return (
86
+ <div>
87
+ <h2>Clientside Search</h2>
88
+ <p>Selection: {selected}</p>
89
+ <p>Term: {term}</p>
90
+ <Combobox onSelect={handleSelect} selectOnBlur>
91
+ <ComboboxLabel>Enter a city name</ComboboxLabel>
92
+ <br />
93
+ <ComboboxInput onChange={handleChange} value={selected || term} />
94
+ {results.length > 0 && (
95
+ <ComboboxPopover>
96
+ <ComboboxList persistSelection={true}>
97
+ {results.slice(0, 10).map((result, index) => (
98
+ <ComboboxOption
99
+ key={`${result.city}, ${result.state}, ${index}`}
100
+ id={`${result.city}, ${result.state}, ${index}`}
101
+ text={`${result.city}, ${result.state}`}
102
+ value={result}
103
+ />
104
+ ))}
105
+ </ComboboxList>
106
+ </ComboboxPopover>
107
+ )}
108
+ </Combobox>
109
+ </div>
110
+ );
111
+ }
112
+
113
+ export const UncontrolledClientSide = () => <UncontrolledClientSideExample />;
114
+ export const UncontrolledClientSideInitial = () => (
115
+ <UncontrolledClientSideExample initialValue="Aberdeen" />
116
+ );
117
+ export const ControlledClientSide = () => <ControlledClientSideExample />;
118
+ export const ControlledClientsideInitial = () => (
119
+ <ControlledClientSideExample initialValue="Aberdeen" />
120
+ );