@primitiv-ui/react 0.1.38 → 0.1.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1495) hide show
  1. package/README.md +24 -2
  2. package/dist/AccessibleIcon/AccessibleIcon.d.ts +51 -0
  3. package/dist/AccessibleIcon/AccessibleIcon.js +55 -0
  4. package/dist/AccessibleIcon/index.d.ts +2 -0
  5. package/dist/AccessibleIcon/index.js +2 -0
  6. package/dist/AccessibleIcon/types.d.ts +24 -0
  7. package/dist/AccessibleIcon/types.js +1 -0
  8. package/dist/Accordion/Accordion.d.ts +287 -0
  9. package/dist/Accordion/Accordion.js +330 -0
  10. package/dist/Accordion/AccordionContext.d.ts +3 -0
  11. package/dist/Accordion/AccordionContext.js +4 -0
  12. package/dist/Accordion/hooks/index.d.ts +6 -0
  13. package/dist/Accordion/hooks/index.js +6 -0
  14. package/dist/Accordion/hooks/useAccordionContext.d.ts +1 -0
  15. package/dist/Accordion/hooks/useAccordionContext.js +1 -0
  16. package/dist/Accordion/hooks/useAccordionHeaderContext.d.ts +1 -0
  17. package/dist/Accordion/hooks/useAccordionHeaderContext.js +10 -0
  18. package/dist/Accordion/hooks/useAccordionItem.d.ts +8 -0
  19. package/dist/Accordion/hooks/useAccordionItem.js +15 -0
  20. package/dist/Accordion/hooks/useAccordionItemContext.d.ts +1 -0
  21. package/dist/Accordion/hooks/useAccordionItemContext.js +1 -0
  22. package/dist/Accordion/hooks/useAccordionRoot.d.ts +16 -0
  23. package/dist/Accordion/hooks/useAccordionRoot.js +133 -0
  24. package/dist/Accordion/hooks/useAccordionTrigger.d.ts +298 -0
  25. package/dist/Accordion/hooks/useAccordionTrigger.js +73 -0
  26. package/dist/Accordion/index.d.ts +2 -0
  27. package/dist/Accordion/index.js +2 -0
  28. package/dist/Accordion/types.d.ts +152 -0
  29. package/dist/Accordion/types.js +1 -0
  30. package/dist/Alert/Alert.d.ts +64 -0
  31. package/dist/Alert/Alert.js +70 -0
  32. package/dist/Alert/index.d.ts +2 -0
  33. package/dist/Alert/index.js +2 -0
  34. package/dist/Alert/types.d.ts +21 -0
  35. package/dist/Alert/types.js +1 -0
  36. package/dist/Avatar/Avatar.d.ts +144 -0
  37. package/dist/Avatar/Avatar.js +187 -0
  38. package/dist/Avatar/AvatarContext.d.ts +16 -0
  39. package/dist/Avatar/AvatarContext.js +7 -0
  40. package/dist/Avatar/hooks/index.d.ts +2 -0
  41. package/dist/Avatar/hooks/index.js +2 -0
  42. package/dist/Avatar/hooks/useAvatarContext.d.ts +1 -0
  43. package/dist/Avatar/hooks/useAvatarContext.js +1 -0
  44. package/dist/Avatar/hooks/useAvatarImage.d.ts +21 -0
  45. package/dist/Avatar/hooks/useAvatarImage.js +47 -0
  46. package/dist/Avatar/index.d.ts +3 -0
  47. package/dist/Avatar/index.js +3 -0
  48. package/dist/Avatar/types.d.ts +52 -0
  49. package/dist/Avatar/types.js +1 -0
  50. package/dist/Breadcrumb/Breadcrumb.d.ts +280 -0
  51. package/dist/Breadcrumb/Breadcrumb.js +299 -0
  52. package/dist/Breadcrumb/index.d.ts +2 -0
  53. package/dist/Breadcrumb/index.js +2 -0
  54. package/dist/Breadcrumb/types.d.ts +81 -0
  55. package/dist/Breadcrumb/types.js +1 -0
  56. package/dist/Button/Button.d.ts +73 -0
  57. package/dist/Button/Button.js +84 -0
  58. package/dist/Button/index.d.ts +2 -0
  59. package/dist/Button/index.js +2 -0
  60. package/dist/Button/types.d.ts +32 -0
  61. package/dist/Button/types.js +1 -0
  62. package/dist/Carousel/Carousel.d.ts +498 -0
  63. package/dist/Carousel/Carousel.js +660 -0
  64. package/dist/Carousel/CarouselContext.d.ts +7 -0
  65. package/dist/Carousel/CarouselContext.js +8 -0
  66. package/dist/Carousel/hooks/index.d.ts +5 -0
  67. package/dist/Carousel/hooks/index.js +5 -0
  68. package/dist/Carousel/hooks/useCarouselContext.d.ts +1 -0
  69. package/dist/Carousel/hooks/useCarouselContext.js +10 -0
  70. package/dist/Carousel/hooks/useCarouselLoop.d.ts +39 -0
  71. package/dist/Carousel/hooks/useCarouselLoop.js +735 -0
  72. package/dist/Carousel/hooks/useCarouselRoot.d.ts +97 -0
  73. package/dist/Carousel/hooks/useCarouselRoot.js +545 -0
  74. package/dist/Carousel/hooks/useCarouselSlide.d.ts +24 -0
  75. package/dist/Carousel/hooks/useCarouselSlide.js +62 -0
  76. package/dist/Carousel/hooks/useCarouselViewport.d.ts +46 -0
  77. package/dist/Carousel/hooks/useCarouselViewport.js +786 -0
  78. package/dist/Carousel/index.d.ts +3 -0
  79. package/dist/Carousel/index.js +3 -0
  80. package/dist/Carousel/loopEngine.d.ts +26 -0
  81. package/dist/Carousel/loopEngine.js +48 -0
  82. package/dist/Carousel/types.d.ts +783 -0
  83. package/dist/Carousel/types.js +1 -0
  84. package/dist/Checkbox/Checkbox.d.ts +120 -0
  85. package/dist/Checkbox/Checkbox.js +155 -0
  86. package/dist/Checkbox/CheckboxContext.d.ts +13 -0
  87. package/dist/Checkbox/CheckboxContext.js +3 -0
  88. package/dist/Checkbox/hooks/index.d.ts +3 -0
  89. package/dist/Checkbox/hooks/index.js +3 -0
  90. package/dist/Checkbox/hooks/useCheckboxContext.d.ts +1 -0
  91. package/dist/Checkbox/hooks/useCheckboxContext.js +1 -0
  92. package/dist/Checkbox/hooks/useCheckboxInput.d.ts +33 -0
  93. package/dist/Checkbox/hooks/useCheckboxInput.js +37 -0
  94. package/dist/Checkbox/hooks/useCheckboxRoot.d.ts +11 -0
  95. package/dist/Checkbox/hooks/useCheckboxRoot.js +14 -0
  96. package/dist/Checkbox/index.d.ts +2 -0
  97. package/dist/Checkbox/index.js +2 -0
  98. package/dist/Checkbox/types.d.ts +74 -0
  99. package/dist/Checkbox/types.js +1 -0
  100. package/dist/CheckboxCard/CheckboxCard.d.ts +132 -0
  101. package/dist/CheckboxCard/CheckboxCard.js +175 -0
  102. package/dist/CheckboxCard/CheckboxCardContext.d.ts +15 -0
  103. package/dist/CheckboxCard/CheckboxCardContext.js +10 -0
  104. package/dist/CheckboxCard/hooks/index.d.ts +2 -0
  105. package/dist/CheckboxCard/hooks/index.js +2 -0
  106. package/dist/CheckboxCard/hooks/useCheckboxCardContext.d.ts +1 -0
  107. package/dist/CheckboxCard/hooks/useCheckboxCardContext.js +1 -0
  108. package/dist/CheckboxCard/hooks/useCheckboxCardRoot.d.ts +11 -0
  109. package/dist/CheckboxCard/hooks/useCheckboxCardRoot.js +12 -0
  110. package/dist/CheckboxCard/index.d.ts +3 -0
  111. package/dist/CheckboxCard/index.js +3 -0
  112. package/dist/CheckboxCard/types.d.ts +87 -0
  113. package/dist/CheckboxCard/types.js +1 -0
  114. package/dist/Collapsible/Collapsible.d.ts +243 -0
  115. package/dist/Collapsible/Collapsible.js +275 -0
  116. package/dist/Collapsible/CollapsibleContext.d.ts +2 -0
  117. package/dist/Collapsible/CollapsibleContext.js +3 -0
  118. package/dist/Collapsible/hooks/index.d.ts +2 -0
  119. package/dist/Collapsible/hooks/index.js +2 -0
  120. package/dist/Collapsible/hooks/useCollapsibleRoot.d.ts +9 -0
  121. package/dist/Collapsible/hooks/useCollapsibleRoot.js +18 -0
  122. package/dist/Collapsible/hooks/useCollapsibleTrigger.d.ts +299 -0
  123. package/dist/Collapsible/hooks/useCollapsibleTrigger.js +39 -0
  124. package/dist/Collapsible/index.d.ts +2 -0
  125. package/dist/Collapsible/index.js +2 -0
  126. package/dist/Collapsible/types.d.ts +134 -0
  127. package/dist/Collapsible/types.js +1 -0
  128. package/dist/Combobox/Combobox.d.ts +149 -0
  129. package/dist/Combobox/Combobox.js +355 -0
  130. package/dist/Combobox/ComboboxContext.d.ts +10 -0
  131. package/dist/Combobox/ComboboxContext.js +13 -0
  132. package/dist/Combobox/hooks/index.d.ts +1 -0
  133. package/dist/Combobox/hooks/index.js +1 -0
  134. package/dist/Combobox/hooks/useComboboxRoot.d.ts +1 -0
  135. package/dist/Combobox/hooks/useComboboxRoot.js +1 -0
  136. package/dist/Combobox/index.d.ts +3 -0
  137. package/dist/Combobox/index.js +3 -0
  138. package/dist/Combobox/types.d.ts +126 -0
  139. package/dist/Combobox/types.js +1 -0
  140. package/dist/ContextMenu/ContextMenu.d.ts +508 -0
  141. package/dist/ContextMenu/ContextMenu.js +1005 -0
  142. package/dist/ContextMenu/ContextMenuContentContext.d.ts +12 -0
  143. package/dist/ContextMenu/ContextMenuContentContext.js +3 -0
  144. package/dist/ContextMenu/ContextMenuContext.d.ts +16 -0
  145. package/dist/ContextMenu/ContextMenuContext.js +3 -0
  146. package/dist/ContextMenu/ContextMenuGroupContext.d.ts +4 -0
  147. package/dist/ContextMenu/ContextMenuGroupContext.js +3 -0
  148. package/dist/ContextMenu/ContextMenuItemIndicatorContext.d.ts +4 -0
  149. package/dist/ContextMenu/ContextMenuItemIndicatorContext.js +3 -0
  150. package/dist/ContextMenu/ContextMenuRadioGroupContext.d.ts +5 -0
  151. package/dist/ContextMenu/ContextMenuRadioGroupContext.js +3 -0
  152. package/dist/ContextMenu/ContextMenuSubContext.d.ts +8 -0
  153. package/dist/ContextMenu/ContextMenuSubContext.js +3 -0
  154. package/dist/ContextMenu/constants.d.ts +2 -0
  155. package/dist/ContextMenu/constants.js +3 -0
  156. package/dist/ContextMenu/index.d.ts +2 -0
  157. package/dist/ContextMenu/index.js +2 -0
  158. package/dist/ContextMenu/types.d.ts +424 -0
  159. package/dist/ContextMenu/types.js +1 -0
  160. package/dist/DirectionProvider/DirectionContext.d.ts +15 -0
  161. package/dist/DirectionProvider/DirectionContext.js +18 -0
  162. package/dist/DirectionProvider/DirectionProvider.d.ts +57 -0
  163. package/dist/DirectionProvider/DirectionProvider.js +59 -0
  164. package/dist/DirectionProvider/index.d.ts +3 -0
  165. package/dist/DirectionProvider/index.js +2 -0
  166. package/dist/DirectionProvider/types.d.ts +34 -0
  167. package/dist/DirectionProvider/types.js +1 -0
  168. package/dist/Divider/Divider.d.ts +59 -0
  169. package/dist/Divider/Divider.js +60 -0
  170. package/dist/Divider/index.d.ts +2 -0
  171. package/dist/Divider/index.js +2 -0
  172. package/dist/Divider/types.d.ts +16 -0
  173. package/dist/Divider/types.js +1 -0
  174. package/dist/Drawer/Drawer.d.ts +268 -0
  175. package/dist/Drawer/Drawer.js +271 -0
  176. package/dist/Drawer/index.d.ts +2 -0
  177. package/dist/Drawer/index.js +2 -0
  178. package/dist/Drawer/types.d.ts +45 -0
  179. package/dist/Drawer/types.js +1 -0
  180. package/dist/Dropdown/Dropdown.d.ts +476 -0
  181. package/dist/Dropdown/Dropdown.js +745 -0
  182. package/dist/Dropdown/DropdownContentContext.d.ts +12 -0
  183. package/dist/Dropdown/DropdownContentContext.js +3 -0
  184. package/dist/Dropdown/DropdownContext.d.ts +10 -0
  185. package/dist/Dropdown/DropdownContext.js +3 -0
  186. package/dist/Dropdown/DropdownGroupContext.d.ts +4 -0
  187. package/dist/Dropdown/DropdownGroupContext.js +3 -0
  188. package/dist/Dropdown/DropdownItemIndicatorContext.d.ts +9 -0
  189. package/dist/Dropdown/DropdownItemIndicatorContext.js +3 -0
  190. package/dist/Dropdown/DropdownRadioGroupContext.d.ts +5 -0
  191. package/dist/Dropdown/DropdownRadioGroupContext.js +3 -0
  192. package/dist/Dropdown/DropdownSubContext.d.ts +8 -0
  193. package/dist/Dropdown/DropdownSubContext.js +3 -0
  194. package/dist/Dropdown/constants.d.ts +2 -0
  195. package/dist/Dropdown/constants.js +3 -0
  196. package/dist/Dropdown/hooks/index.d.ts +9 -0
  197. package/dist/Dropdown/hooks/index.js +9 -0
  198. package/dist/Dropdown/hooks/useCloseSiblingSub.d.ts +7 -0
  199. package/dist/Dropdown/hooks/useCloseSiblingSub.js +13 -0
  200. package/dist/Dropdown/hooks/useDropdownContent.d.ts +296 -0
  201. package/dist/Dropdown/hooks/useDropdownContent.js +149 -0
  202. package/dist/Dropdown/hooks/useDropdownContext.d.ts +1 -0
  203. package/dist/Dropdown/hooks/useDropdownContext.js +1 -0
  204. package/dist/Dropdown/hooks/useDropdownGroup.d.ts +294 -0
  205. package/dist/Dropdown/hooks/useDropdownGroup.js +12 -0
  206. package/dist/Dropdown/hooks/useDropdownItem.d.ts +13 -0
  207. package/dist/Dropdown/hooks/useDropdownItem.js +34 -0
  208. package/dist/Dropdown/hooks/useDropdownLabel.d.ts +292 -0
  209. package/dist/Dropdown/hooks/useDropdownLabel.js +8 -0
  210. package/dist/Dropdown/hooks/useDropdownRoot.d.ts +19 -0
  211. package/dist/Dropdown/hooks/useDropdownRoot.js +25 -0
  212. package/dist/Dropdown/hooks/useDropdownSubContext.d.ts +1 -0
  213. package/dist/Dropdown/hooks/useDropdownSubContext.js +1 -0
  214. package/dist/Dropdown/hooks/useDropdownTrigger.d.ts +302 -0
  215. package/dist/Dropdown/hooks/useDropdownTrigger.js +18 -0
  216. package/dist/Dropdown/index.d.ts +2 -0
  217. package/dist/Dropdown/index.js +2 -0
  218. package/dist/Dropdown/types.d.ts +496 -0
  219. package/dist/Dropdown/types.js +1 -0
  220. package/dist/EmptyState/EmptyState.d.ts +246 -0
  221. package/dist/EmptyState/EmptyState.js +268 -0
  222. package/dist/EmptyState/index.d.ts +2 -0
  223. package/dist/EmptyState/index.js +2 -0
  224. package/dist/EmptyState/types.d.ts +59 -0
  225. package/dist/EmptyState/types.js +1 -0
  226. package/dist/Field/Field.d.ts +178 -0
  227. package/dist/Field/Field.js +211 -0
  228. package/dist/Field/FieldContext.d.ts +15 -0
  229. package/dist/Field/FieldContext.js +3 -0
  230. package/dist/Field/hooks/index.d.ts +2 -0
  231. package/dist/Field/hooks/index.js +2 -0
  232. package/dist/Field/hooks/useFieldContext.d.ts +1 -0
  233. package/dist/Field/hooks/useFieldContext.js +1 -0
  234. package/dist/Field/hooks/useFieldProps.d.ts +25 -0
  235. package/dist/Field/hooks/useFieldProps.js +39 -0
  236. package/dist/Field/index.d.ts +2 -0
  237. package/dist/Field/index.js +2 -0
  238. package/dist/Field/types.d.ts +81 -0
  239. package/dist/Field/types.js +1 -0
  240. package/dist/Fieldset/Fieldset.d.ts +124 -0
  241. package/dist/Fieldset/Fieldset.js +124 -0
  242. package/dist/Fieldset/index.d.ts +2 -0
  243. package/dist/Fieldset/index.js +2 -0
  244. package/dist/Fieldset/types.d.ts +23 -0
  245. package/dist/Fieldset/types.js +1 -0
  246. package/dist/Input/Input.d.ts +104 -0
  247. package/dist/Input/Input.js +116 -0
  248. package/dist/Input/index.d.ts +2 -0
  249. package/dist/Input/index.js +2 -0
  250. package/dist/Input/types.d.ts +27 -0
  251. package/dist/Input/types.js +1 -0
  252. package/dist/InputGroup/InputGroup.d.ts +176 -0
  253. package/dist/InputGroup/InputGroup.js +205 -0
  254. package/dist/InputGroup/index.d.ts +2 -0
  255. package/dist/InputGroup/index.js +2 -0
  256. package/dist/InputGroup/types.d.ts +41 -0
  257. package/dist/InputGroup/types.js +1 -0
  258. package/dist/Listbox/Listbox.d.ts +231 -0
  259. package/dist/Listbox/Listbox.js +339 -0
  260. package/dist/Listbox/ListboxContext.d.ts +19 -0
  261. package/dist/Listbox/ListboxContext.js +25 -0
  262. package/dist/Listbox/constants.d.ts +2 -0
  263. package/dist/Listbox/constants.js +3 -0
  264. package/dist/Listbox/hooks/index.d.ts +1 -0
  265. package/dist/Listbox/hooks/index.js +1 -0
  266. package/dist/Listbox/hooks/useListboxRoot.d.ts +39 -0
  267. package/dist/Listbox/hooks/useListboxRoot.js +299 -0
  268. package/dist/Listbox/index.d.ts +3 -0
  269. package/dist/Listbox/index.js +3 -0
  270. package/dist/Listbox/types.d.ts +214 -0
  271. package/dist/Listbox/types.js +1 -0
  272. package/dist/MillerColumns/MillerColumns.d.ts +309 -0
  273. package/dist/MillerColumns/MillerColumns.js +332 -0
  274. package/dist/MillerColumns/MillerColumnsContext.d.ts +4 -0
  275. package/dist/MillerColumns/MillerColumnsContext.js +5 -0
  276. package/dist/MillerColumns/constants.d.ts +2 -0
  277. package/dist/MillerColumns/constants.js +3 -0
  278. package/dist/MillerColumns/hooks/index.d.ts +7 -0
  279. package/dist/MillerColumns/hooks/index.js +7 -0
  280. package/dist/MillerColumns/hooks/useMillerColumnsColumn.d.ts +8 -0
  281. package/dist/MillerColumns/hooks/useMillerColumnsColumn.js +16 -0
  282. package/dist/MillerColumns/hooks/useMillerColumnsColumnContext.d.ts +1 -0
  283. package/dist/MillerColumns/hooks/useMillerColumnsColumnContext.js +1 -0
  284. package/dist/MillerColumns/hooks/useMillerColumnsContext.d.ts +1 -0
  285. package/dist/MillerColumns/hooks/useMillerColumnsContext.js +1 -0
  286. package/dist/MillerColumns/hooks/useMillerColumnsItem.d.ts +295 -0
  287. package/dist/MillerColumns/hooks/useMillerColumnsItem.js +122 -0
  288. package/dist/MillerColumns/hooks/useMillerColumnsItemContext.d.ts +1 -0
  289. package/dist/MillerColumns/hooks/useMillerColumnsItemContext.js +1 -0
  290. package/dist/MillerColumns/hooks/useMillerColumnsResizeHandle.d.ts +290 -0
  291. package/dist/MillerColumns/hooks/useMillerColumnsResizeHandle.js +105 -0
  292. package/dist/MillerColumns/hooks/useMillerColumnsRoot.d.ts +9 -0
  293. package/dist/MillerColumns/hooks/useMillerColumnsRoot.js +0 -0
  294. package/dist/MillerColumns/index.d.ts +4 -0
  295. package/dist/MillerColumns/index.js +4 -0
  296. package/dist/MillerColumns/types.d.ts +224 -0
  297. package/dist/MillerColumns/types.js +1 -0
  298. package/dist/MillerColumns/useMillerColumnsSelection.d.ts +21 -0
  299. package/dist/MillerColumns/useMillerColumnsSelection.js +28 -0
  300. package/dist/MillerColumns/utils.d.ts +62 -0
  301. package/dist/MillerColumns/utils.js +102 -0
  302. package/dist/Modal/Modal.d.ts +331 -0
  303. package/dist/Modal/Modal.js +386 -0
  304. package/dist/Modal/ModalContext.d.ts +9 -0
  305. package/dist/Modal/ModalContext.js +10 -0
  306. package/dist/Modal/hooks/index.d.ts +4 -0
  307. package/dist/Modal/hooks/index.js +4 -0
  308. package/dist/Modal/hooks/useModalContent.d.ts +5 -0
  309. package/dist/Modal/hooks/useModalContent.js +94 -0
  310. package/dist/Modal/hooks/useModalContext.d.ts +1 -0
  311. package/dist/Modal/hooks/useModalContext.js +1 -0
  312. package/dist/Modal/hooks/useModalRoot.d.ts +11 -0
  313. package/dist/Modal/hooks/useModalRoot.js +39 -0
  314. package/dist/Modal/hooks/useModalTrigger.d.ts +297 -0
  315. package/dist/Modal/hooks/useModalTrigger.js +18 -0
  316. package/dist/Modal/index.d.ts +3 -0
  317. package/dist/Modal/index.js +3 -0
  318. package/dist/Modal/types.d.ts +186 -0
  319. package/dist/Modal/types.js +1 -0
  320. package/dist/NavigationMenu/NavigationMenu.d.ts +495 -0
  321. package/dist/NavigationMenu/NavigationMenu.js +645 -0
  322. package/dist/NavigationMenu/NavigationMenuContext.d.ts +31 -0
  323. package/dist/NavigationMenu/NavigationMenuContext.js +34 -0
  324. package/dist/NavigationMenu/constants.d.ts +4 -0
  325. package/dist/NavigationMenu/constants.js +5 -0
  326. package/dist/NavigationMenu/hooks/index.d.ts +7 -0
  327. package/dist/NavigationMenu/hooks/index.js +7 -0
  328. package/dist/NavigationMenu/hooks/useNavigationMenuEntry.d.ts +13 -0
  329. package/dist/NavigationMenu/hooks/useNavigationMenuEntry.js +21 -0
  330. package/dist/NavigationMenu/hooks/useNavigationMenuIndicator.d.ts +16 -0
  331. package/dist/NavigationMenu/hooks/useNavigationMenuIndicator.js +53 -0
  332. package/dist/NavigationMenu/hooks/useNavigationMenuLink.d.ts +8 -0
  333. package/dist/NavigationMenu/hooks/useNavigationMenuLink.js +37 -0
  334. package/dist/NavigationMenu/hooks/useNavigationMenuRoot.d.ts +26 -0
  335. package/dist/NavigationMenu/hooks/useNavigationMenuRoot.js +202 -0
  336. package/dist/NavigationMenu/hooks/useNavigationMenuTopLevelEntry.d.ts +21 -0
  337. package/dist/NavigationMenu/hooks/useNavigationMenuTopLevelEntry.js +54 -0
  338. package/dist/NavigationMenu/hooks/useNavigationMenuTrigger.d.ts +16 -0
  339. package/dist/NavigationMenu/hooks/useNavigationMenuTrigger.js +100 -0
  340. package/dist/NavigationMenu/hooks/useNavigationMenuViewport.d.ts +21 -0
  341. package/dist/NavigationMenu/hooks/useNavigationMenuViewport.js +85 -0
  342. package/dist/NavigationMenu/index.d.ts +3 -0
  343. package/dist/NavigationMenu/index.js +3 -0
  344. package/dist/NavigationMenu/types.d.ts +236 -0
  345. package/dist/NavigationMenu/types.js +1 -0
  346. package/dist/NavigationMenu/utils.d.ts +37 -0
  347. package/dist/NavigationMenu/utils.js +64 -0
  348. package/dist/Popover/Popover.d.ts +239 -0
  349. package/dist/Popover/Popover.js +293 -0
  350. package/dist/Popover/PopoverContext.d.ts +4 -0
  351. package/dist/Popover/PopoverContext.js +5 -0
  352. package/dist/Popover/hooks/index.d.ts +3 -0
  353. package/dist/Popover/hooks/index.js +3 -0
  354. package/dist/Popover/hooks/usePopoverContent.d.ts +19 -0
  355. package/dist/Popover/hooks/usePopoverContent.js +83 -0
  356. package/dist/Popover/hooks/usePopoverRoot.d.ts +10 -0
  357. package/dist/Popover/hooks/usePopoverRoot.js +49 -0
  358. package/dist/Popover/hooks/usePopoverTrigger.d.ts +297 -0
  359. package/dist/Popover/hooks/usePopoverTrigger.js +19 -0
  360. package/dist/Popover/index.d.ts +2 -0
  361. package/dist/Popover/index.js +2 -0
  362. package/dist/Popover/types.d.ts +183 -0
  363. package/dist/Popover/types.js +1 -0
  364. package/dist/Portal/Portal.d.ts +70 -0
  365. package/dist/Portal/Portal.js +92 -0
  366. package/dist/Portal/index.d.ts +2 -0
  367. package/dist/Portal/index.js +2 -0
  368. package/dist/Portal/types.d.ts +14 -0
  369. package/dist/Portal/types.js +1 -0
  370. package/dist/Progress/Progress.d.ts +126 -0
  371. package/dist/Progress/Progress.js +172 -0
  372. package/dist/Progress/ProgressContext.d.ts +16 -0
  373. package/dist/Progress/ProgressContext.js +7 -0
  374. package/dist/Progress/hooks/index.d.ts +2 -0
  375. package/dist/Progress/hooks/index.js +2 -0
  376. package/dist/Progress/hooks/useProgressContext.d.ts +1 -0
  377. package/dist/Progress/hooks/useProgressContext.js +1 -0
  378. package/dist/Progress/hooks/useProgressRoot.d.ts +17 -0
  379. package/dist/Progress/hooks/useProgressRoot.js +22 -0
  380. package/dist/Progress/index.d.ts +3 -0
  381. package/dist/Progress/index.js +3 -0
  382. package/dist/Progress/types.d.ts +53 -0
  383. package/dist/Progress/types.js +1 -0
  384. package/dist/Radio/Radio.d.ts +128 -0
  385. package/dist/Radio/Radio.js +153 -0
  386. package/dist/Radio/RadioContext.d.ts +13 -0
  387. package/dist/Radio/RadioContext.js +3 -0
  388. package/dist/Radio/hooks/index.d.ts +2 -0
  389. package/dist/Radio/hooks/index.js +2 -0
  390. package/dist/Radio/hooks/useRadioContext.d.ts +1 -0
  391. package/dist/Radio/hooks/useRadioContext.js +1 -0
  392. package/dist/Radio/hooks/useRadioRoot.d.ts +32 -0
  393. package/dist/Radio/hooks/useRadioRoot.js +35 -0
  394. package/dist/Radio/index.d.ts +2 -0
  395. package/dist/Radio/index.js +2 -0
  396. package/dist/Radio/types.d.ts +79 -0
  397. package/dist/Radio/types.js +1 -0
  398. package/dist/RadioCard/RadioCard.d.ts +176 -0
  399. package/dist/RadioCard/RadioCard.js +264 -0
  400. package/dist/RadioCard/RadioCardContext.d.ts +21 -0
  401. package/dist/RadioCard/RadioCardContext.js +9 -0
  402. package/dist/RadioCard/RadioCardItemContext.d.ts +14 -0
  403. package/dist/RadioCard/RadioCardItemContext.js +10 -0
  404. package/dist/RadioCard/hooks/index.d.ts +3 -0
  405. package/dist/RadioCard/hooks/index.js +3 -0
  406. package/dist/RadioCard/hooks/useRadioCardContext.d.ts +1 -0
  407. package/dist/RadioCard/hooks/useRadioCardContext.js +1 -0
  408. package/dist/RadioCard/hooks/useRadioCardItemContext.d.ts +1 -0
  409. package/dist/RadioCard/hooks/useRadioCardItemContext.js +1 -0
  410. package/dist/RadioCard/hooks/useRadioCardRoot.d.ts +14 -0
  411. package/dist/RadioCard/hooks/useRadioCardRoot.js +42 -0
  412. package/dist/RadioCard/index.d.ts +4 -0
  413. package/dist/RadioCard/index.js +4 -0
  414. package/dist/RadioCard/types.d.ts +129 -0
  415. package/dist/RadioCard/types.js +1 -0
  416. package/dist/RadioGroup/RadioGroup.d.ts +192 -0
  417. package/dist/RadioGroup/RadioGroup.js +281 -0
  418. package/dist/RadioGroup/RadioGroupContext.d.ts +12 -0
  419. package/dist/RadioGroup/RadioGroupContext.js +3 -0
  420. package/dist/RadioGroup/RadioGroupItemContext.d.ts +4 -0
  421. package/dist/RadioGroup/RadioGroupItemContext.js +3 -0
  422. package/dist/RadioGroup/hooks/index.d.ts +3 -0
  423. package/dist/RadioGroup/hooks/index.js +3 -0
  424. package/dist/RadioGroup/hooks/useRadioGroupContext.d.ts +1 -0
  425. package/dist/RadioGroup/hooks/useRadioGroupContext.js +1 -0
  426. package/dist/RadioGroup/hooks/useRadioGroupItemContext.d.ts +1 -0
  427. package/dist/RadioGroup/hooks/useRadioGroupItemContext.js +1 -0
  428. package/dist/RadioGroup/hooks/useRadioGroupRoot.d.ts +14 -0
  429. package/dist/RadioGroup/hooks/useRadioGroupRoot.js +53 -0
  430. package/dist/RadioGroup/index.d.ts +2 -0
  431. package/dist/RadioGroup/index.js +2 -0
  432. package/dist/RadioGroup/types.d.ts +130 -0
  433. package/dist/RadioGroup/types.js +1 -0
  434. package/dist/SegmentedControl/SegmentedControl.d.ts +145 -0
  435. package/dist/SegmentedControl/SegmentedControl.js +229 -0
  436. package/dist/SegmentedControl/SegmentedControlContext.d.ts +14 -0
  437. package/dist/SegmentedControl/SegmentedControlContext.js +3 -0
  438. package/dist/SegmentedControl/hooks/index.d.ts +2 -0
  439. package/dist/SegmentedControl/hooks/index.js +2 -0
  440. package/dist/SegmentedControl/hooks/useSegmentedControlContext.d.ts +1 -0
  441. package/dist/SegmentedControl/hooks/useSegmentedControlContext.js +1 -0
  442. package/dist/SegmentedControl/hooks/useSegmentedControlRoot.d.ts +14 -0
  443. package/dist/SegmentedControl/hooks/useSegmentedControlRoot.js +45 -0
  444. package/dist/SegmentedControl/index.d.ts +2 -0
  445. package/dist/SegmentedControl/index.js +2 -0
  446. package/dist/SegmentedControl/types.d.ts +121 -0
  447. package/dist/SegmentedControl/types.js +1 -0
  448. package/dist/Select/Select.d.ts +390 -0
  449. package/dist/Select/Select.js +561 -0
  450. package/dist/Select/SelectContext.d.ts +31 -0
  451. package/dist/Select/SelectContext.js +3 -0
  452. package/dist/Select/SelectItemIndicatorContext.d.ts +23 -0
  453. package/dist/Select/SelectItemIndicatorContext.js +3 -0
  454. package/dist/Select/constants.d.ts +6 -0
  455. package/dist/Select/constants.js +7 -0
  456. package/dist/Select/hooks/index.d.ts +2 -0
  457. package/dist/Select/hooks/index.js +2 -0
  458. package/dist/Select/hooks/useSelectContent.d.ts +301 -0
  459. package/dist/Select/hooks/useSelectContent.js +134 -0
  460. package/dist/Select/hooks/useSelectRoot.d.ts +23 -0
  461. package/dist/Select/hooks/useSelectRoot.js +90 -0
  462. package/dist/Select/index.d.ts +2 -0
  463. package/dist/Select/index.js +2 -0
  464. package/dist/Select/types.d.ts +246 -0
  465. package/dist/Select/types.js +1 -0
  466. package/dist/SkipNav/SkipNav.d.ts +137 -0
  467. package/dist/SkipNav/SkipNav.js +138 -0
  468. package/dist/SkipNav/index.d.ts +1 -0
  469. package/dist/SkipNav/index.js +1 -0
  470. package/dist/SkipNav/types.d.ts +32 -0
  471. package/dist/SkipNav/types.js +1 -0
  472. package/dist/Slider/Slider.d.ts +189 -0
  473. package/dist/Slider/Slider.js +253 -0
  474. package/dist/Slider/SliderContext.d.ts +48 -0
  475. package/dist/Slider/SliderContext.js +7 -0
  476. package/dist/Slider/hooks/index.d.ts +3 -0
  477. package/dist/Slider/hooks/index.js +3 -0
  478. package/dist/Slider/hooks/useSliderContext.d.ts +1 -0
  479. package/dist/Slider/hooks/useSliderContext.js +1 -0
  480. package/dist/Slider/hooks/useSliderRoot.d.ts +23 -0
  481. package/dist/Slider/hooks/useSliderRoot.js +123 -0
  482. package/dist/Slider/hooks/useSliderThumb.d.ts +11 -0
  483. package/dist/Slider/hooks/useSliderThumb.js +57 -0
  484. package/dist/Slider/index.d.ts +3 -0
  485. package/dist/Slider/index.js +3 -0
  486. package/dist/Slider/types.d.ts +194 -0
  487. package/dist/Slider/types.js +1 -0
  488. package/dist/Slider/utils.d.ts +48 -0
  489. package/dist/Slider/utils.js +105 -0
  490. package/dist/Slot/Slot.d.ts +126 -0
  491. package/dist/Slot/Slot.js +210 -0
  492. package/dist/Slot/composeEventHandlers.d.ts +50 -0
  493. package/dist/Slot/composeEventHandlers.js +57 -0
  494. package/dist/Slot/index.d.ts +3 -0
  495. package/dist/Slot/index.js +3 -0
  496. package/dist/Slot/types.d.ts +20 -0
  497. package/dist/Slot/types.js +1 -0
  498. package/dist/SplitButton/SplitButton.d.ts +286 -0
  499. package/dist/SplitButton/SplitButton.js +343 -0
  500. package/dist/SplitButton/SplitButtonContext.d.ts +11 -0
  501. package/dist/SplitButton/SplitButtonContext.js +12 -0
  502. package/dist/SplitButton/index.d.ts +2 -0
  503. package/dist/SplitButton/index.js +1 -0
  504. package/dist/SplitButton/types.d.ts +161 -0
  505. package/dist/SplitButton/types.js +1 -0
  506. package/dist/Status/Status.d.ts +57 -0
  507. package/dist/Status/Status.js +63 -0
  508. package/dist/Status/index.d.ts +2 -0
  509. package/dist/Status/index.js +2 -0
  510. package/dist/Status/types.d.ts +19 -0
  511. package/dist/Status/types.js +1 -0
  512. package/dist/Switch/Switch.d.ts +122 -0
  513. package/dist/Switch/Switch.js +143 -0
  514. package/dist/Switch/SwitchContext.d.ts +12 -0
  515. package/dist/Switch/SwitchContext.js +7 -0
  516. package/dist/Switch/hooks/index.d.ts +2 -0
  517. package/dist/Switch/hooks/index.js +2 -0
  518. package/dist/Switch/hooks/useSwitchContext.d.ts +1 -0
  519. package/dist/Switch/hooks/useSwitchContext.js +1 -0
  520. package/dist/Switch/hooks/useSwitchRoot.d.ts +30 -0
  521. package/dist/Switch/hooks/useSwitchRoot.js +33 -0
  522. package/dist/Switch/index.d.ts +3 -0
  523. package/dist/Switch/index.js +3 -0
  524. package/dist/Switch/types.d.ts +83 -0
  525. package/dist/Switch/types.js +1 -0
  526. package/dist/Table/Table.d.ts +443 -0
  527. package/dist/Table/Table.js +494 -0
  528. package/dist/Table/TableExpandableContext.d.ts +2 -0
  529. package/dist/Table/TableExpandableContext.js +3 -0
  530. package/dist/Table/index.d.ts +2 -0
  531. package/dist/Table/index.js +2 -0
  532. package/dist/Table/types.d.ts +214 -0
  533. package/dist/Table/types.js +1 -0
  534. package/dist/Tabs/Tabs.d.ts +270 -0
  535. package/dist/Tabs/Tabs.js +324 -0
  536. package/dist/Tabs/TabsContext.d.ts +11 -0
  537. package/dist/Tabs/TabsContext.js +12 -0
  538. package/dist/Tabs/hooks/index.d.ts +4 -0
  539. package/dist/Tabs/hooks/index.js +4 -0
  540. package/dist/Tabs/hooks/useTabsContent.d.ts +10 -0
  541. package/dist/Tabs/hooks/useTabsContent.js +27 -0
  542. package/dist/Tabs/hooks/useTabsContext.d.ts +1 -0
  543. package/dist/Tabs/hooks/useTabsContext.js +1 -0
  544. package/dist/Tabs/hooks/useTabsRoot.d.ts +21 -0
  545. package/dist/Tabs/hooks/useTabsRoot.js +97 -0
  546. package/dist/Tabs/hooks/useTabsTrigger.d.ts +13 -0
  547. package/dist/Tabs/hooks/useTabsTrigger.js +83 -0
  548. package/dist/Tabs/index.d.ts +3 -0
  549. package/dist/Tabs/index.js +3 -0
  550. package/dist/Tabs/types.d.ts +139 -0
  551. package/dist/Tabs/types.js +1 -0
  552. package/dist/Tabs/utils.d.ts +4 -0
  553. package/dist/Tabs/utils.js +8 -0
  554. package/dist/Textarea/Textarea.d.ts +81 -0
  555. package/dist/Textarea/Textarea.js +93 -0
  556. package/dist/Textarea/index.d.ts +2 -0
  557. package/dist/Textarea/index.js +2 -0
  558. package/dist/Textarea/types.d.ts +27 -0
  559. package/dist/Textarea/types.js +1 -0
  560. package/dist/Toggle/Toggle.d.ts +82 -0
  561. package/dist/Toggle/Toggle.js +102 -0
  562. package/dist/Toggle/index.d.ts +2 -0
  563. package/dist/Toggle/index.js +2 -0
  564. package/dist/Toggle/types.d.ts +72 -0
  565. package/dist/Toggle/types.js +1 -0
  566. package/dist/ToggleGroup/ToggleGroup.d.ts +144 -0
  567. package/dist/ToggleGroup/ToggleGroup.js +227 -0
  568. package/dist/ToggleGroup/ToggleGroupContext.d.ts +2 -0
  569. package/dist/ToggleGroup/ToggleGroupContext.js +3 -0
  570. package/dist/ToggleGroup/hooks/index.d.ts +2 -0
  571. package/dist/ToggleGroup/hooks/index.js +2 -0
  572. package/dist/ToggleGroup/hooks/useToggleGroupContext.d.ts +1 -0
  573. package/dist/ToggleGroup/hooks/useToggleGroupContext.js +1 -0
  574. package/dist/ToggleGroup/hooks/useToggleGroupRoot.d.ts +21 -0
  575. package/dist/ToggleGroup/hooks/useToggleGroupRoot.js +79 -0
  576. package/dist/ToggleGroup/index.d.ts +2 -0
  577. package/dist/ToggleGroup/index.js +2 -0
  578. package/dist/ToggleGroup/types.d.ts +141 -0
  579. package/dist/ToggleGroup/types.js +1 -0
  580. package/dist/Tooltip/Tooltip.d.ts +231 -0
  581. package/dist/Tooltip/Tooltip.js +279 -0
  582. package/dist/Tooltip/TooltipContext.d.ts +6 -0
  583. package/dist/Tooltip/TooltipContext.js +7 -0
  584. package/dist/Tooltip/hooks/index.d.ts +4 -0
  585. package/dist/Tooltip/hooks/index.js +4 -0
  586. package/dist/Tooltip/hooks/useTooltipContent.d.ts +289 -0
  587. package/dist/Tooltip/hooks/useTooltipContent.js +50 -0
  588. package/dist/Tooltip/hooks/useTooltipProvider.d.ts +9 -0
  589. package/dist/Tooltip/hooks/useTooltipProvider.js +60 -0
  590. package/dist/Tooltip/hooks/useTooltipRoot.d.ts +6 -0
  591. package/dist/Tooltip/hooks/useTooltipRoot.js +100 -0
  592. package/dist/Tooltip/hooks/useTooltipTrigger.d.ts +299 -0
  593. package/dist/Tooltip/hooks/useTooltipTrigger.js +22 -0
  594. package/dist/Tooltip/index.d.ts +2 -0
  595. package/dist/Tooltip/index.js +2 -0
  596. package/dist/Tooltip/types.d.ts +183 -0
  597. package/dist/Tooltip/types.js +1 -0
  598. package/dist/Tree/Tree.d.ts +398 -0
  599. package/dist/Tree/Tree.js +536 -0
  600. package/dist/Tree/TreeContext.d.ts +4 -0
  601. package/dist/Tree/TreeContext.js +5 -0
  602. package/dist/Tree/hooks/index.d.ts +3 -0
  603. package/dist/Tree/hooks/index.js +3 -0
  604. package/dist/Tree/hooks/useTreeItemKeyboard.d.ts +16 -0
  605. package/dist/Tree/hooks/useTreeItemKeyboard.js +71 -0
  606. package/dist/Tree/hooks/useTreePath.d.ts +88 -0
  607. package/dist/Tree/hooks/useTreePath.js +96 -0
  608. package/dist/Tree/hooks/useTreeRoot.d.ts +19 -0
  609. package/dist/Tree/hooks/useTreeRoot.js +185 -0
  610. package/dist/Tree/index.d.ts +4 -0
  611. package/dist/Tree/index.js +4 -0
  612. package/dist/Tree/types.d.ts +269 -0
  613. package/dist/Tree/types.js +1 -0
  614. package/dist/Tree/utils.d.ts +45 -0
  615. package/dist/Tree/utils.js +79 -0
  616. package/dist/VisuallyHidden/VisuallyHidden.d.ts +62 -0
  617. package/dist/VisuallyHidden/VisuallyHidden.js +83 -0
  618. package/dist/VisuallyHidden/index.d.ts +2 -0
  619. package/dist/VisuallyHidden/index.js +2 -0
  620. package/dist/VisuallyHidden/types.d.ts +18 -0
  621. package/dist/VisuallyHidden/types.js +1 -0
  622. package/dist/hooks/index.d.ts +4 -0
  623. package/dist/hooks/index.js +4 -0
  624. package/dist/hooks/useCollection.d.ts +50 -0
  625. package/dist/hooks/useCollection.js +47 -0
  626. package/dist/hooks/useControllableState.d.ts +50 -0
  627. package/dist/hooks/useControllableState.js +14 -0
  628. package/dist/hooks/useRovingTabindex.d.ts +106 -0
  629. package/dist/hooks/useRovingTabindex.js +110 -0
  630. package/dist/hooks/useTypeahead.d.ts +31 -0
  631. package/dist/hooks/useTypeahead.js +65 -0
  632. package/dist/index.d.ts +52 -0
  633. package/dist/index.js +50 -0
  634. package/dist/types.d.ts +6 -0
  635. package/dist/types.js +1 -0
  636. package/dist/useLocalStorage/index.d.ts +1 -0
  637. package/dist/useLocalStorage/index.js +1 -0
  638. package/dist/useLocalStorage/useLocalStorage.d.ts +46 -0
  639. package/dist/useLocalStorage/useLocalStorage.js +125 -0
  640. package/dist/useMediaQuery/index.d.ts +1 -0
  641. package/dist/useMediaQuery/index.js +1 -0
  642. package/dist/useMediaQuery/useMediaQuery.d.ts +30 -0
  643. package/dist/useMediaQuery/useMediaQuery.js +43 -0
  644. package/dist/usePagination/index.d.ts +1 -0
  645. package/dist/usePagination/index.js +1 -0
  646. package/dist/usePagination/usePagination.d.ts +163 -0
  647. package/dist/usePagination/usePagination.js +130 -0
  648. package/dist/utils/createStrictContext.d.ts +33 -0
  649. package/dist/utils/createStrictContext.js +47 -0
  650. package/dist/utils/deriveId.d.ts +25 -0
  651. package/dist/utils/deriveId.js +28 -0
  652. package/dist/utils/focusable.d.ts +8 -0
  653. package/dist/utils/focusable.js +16 -0
  654. package/dist/utils/getKeyToActionMap.d.ts +64 -0
  655. package/dist/utils/getKeyToActionMap.js +49 -0
  656. package/dist/utils/index.d.ts +4 -0
  657. package/dist/utils/index.js +4 -0
  658. package/package.json +7 -6
  659. package/src/AccessibleIcon/AccessibleIcon.tsx +0 -67
  660. package/src/AccessibleIcon/README.md +0 -42
  661. package/src/AccessibleIcon/__tests__/AccessibleIcon.test.tsx +0 -52
  662. package/src/AccessibleIcon/index.ts +0 -2
  663. package/src/AccessibleIcon/types.ts +0 -25
  664. package/src/Accordion/Accordion.tsx +0 -455
  665. package/src/Accordion/AccordionContext.ts +0 -12
  666. package/src/Accordion/README.md +0 -202
  667. package/src/Accordion/__tests__/Accordion.asChild.test.tsx +0 -283
  668. package/src/Accordion/__tests__/Accordion.basic-rendering.test.tsx +0 -348
  669. package/src/Accordion/__tests__/Accordion.controlled-state.test.tsx +0 -175
  670. package/src/Accordion/__tests__/Accordion.data-attributes.test.tsx +0 -272
  671. package/src/Accordion/__tests__/Accordion.disabled-items.test.tsx +0 -353
  672. package/src/Accordion/__tests__/Accordion.error-handling.test.tsx +0 -152
  673. package/src/Accordion/__tests__/Accordion.forceMount.test.tsx +0 -119
  674. package/src/Accordion/__tests__/Accordion.keyboard-interaction.test.tsx +0 -736
  675. package/src/Accordion/__tests__/Accordion.mouse-interaction.test.tsx +0 -212
  676. package/src/Accordion/__tests__/Accordion.multiple-mode.test.tsx +0 -90
  677. package/src/Accordion/__tests__/Accordion.reading-direction.test.tsx +0 -139
  678. package/src/Accordion/__tests__/Accordion.uncontrolled-state.test.tsx +0 -154
  679. package/src/Accordion/hooks/index.ts +0 -6
  680. package/src/Accordion/hooks/useAccordionContext.ts +0 -1
  681. package/src/Accordion/hooks/useAccordionHeaderContext.ts +0 -10
  682. package/src/Accordion/hooks/useAccordionItem.ts +0 -22
  683. package/src/Accordion/hooks/useAccordionItemContext.ts +0 -1
  684. package/src/Accordion/hooks/useAccordionRoot.ts +0 -188
  685. package/src/Accordion/hooks/useAccordionTrigger.ts +0 -98
  686. package/src/Accordion/index.ts +0 -2
  687. package/src/Accordion/types.ts +0 -174
  688. package/src/Alert/Alert.tsx +0 -79
  689. package/src/Alert/README.md +0 -54
  690. package/src/Alert/__tests__/Alert.test.tsx +0 -33
  691. package/src/Alert/index.ts +0 -2
  692. package/src/Alert/types.ts +0 -22
  693. package/src/Avatar/Avatar.tsx +0 -246
  694. package/src/Avatar/AvatarContext.ts +0 -26
  695. package/src/Avatar/README.md +0 -116
  696. package/src/Avatar/__tests__/Avatar.asChild.test.tsx +0 -53
  697. package/src/Avatar/__tests__/Avatar.basic-rendering.test.tsx +0 -24
  698. package/src/Avatar/__tests__/Avatar.error-handling.test.tsx +0 -30
  699. package/src/Avatar/__tests__/Avatar.fallback.test.tsx +0 -105
  700. package/src/Avatar/__tests__/Avatar.image-loading.test.tsx +0 -116
  701. package/src/Avatar/hooks/index.ts +0 -2
  702. package/src/Avatar/hooks/useAvatarContext.ts +0 -1
  703. package/src/Avatar/hooks/useAvatarImage.ts +0 -56
  704. package/src/Avatar/index.ts +0 -3
  705. package/src/Avatar/types.ts +0 -56
  706. package/src/Breadcrumb/Breadcrumb.tsx +0 -374
  707. package/src/Breadcrumb/README.md +0 -158
  708. package/src/Breadcrumb/__tests__/Breadcrumb.asChild.test.tsx +0 -33
  709. package/src/Breadcrumb/__tests__/Breadcrumb.basic-rendering.test.tsx +0 -143
  710. package/src/Breadcrumb/__tests__/Breadcrumb.ellipsis.test.tsx +0 -110
  711. package/src/Breadcrumb/index.ts +0 -2
  712. package/src/Breadcrumb/types.ts +0 -88
  713. package/src/Button/Button.tsx +0 -100
  714. package/src/Button/README.md +0 -112
  715. package/src/Button/__tests__/Button.asChild.test.tsx +0 -91
  716. package/src/Button/__tests__/Button.basic-rendering.test.tsx +0 -132
  717. package/src/Button/__tests__/Button.contract.test.tsx +0 -72
  718. package/src/Button/__tests__/Button.disabled.test.tsx +0 -52
  719. package/src/Button/__tests__/Button.icon-usage.test.tsx +0 -57
  720. package/src/Button/__tests__/Button.keyboard-interaction.test.tsx +0 -70
  721. package/src/Button/index.ts +0 -2
  722. package/src/Button/types.ts +0 -33
  723. package/src/Carousel/Carousel.tsx +0 -972
  724. package/src/Carousel/CarouselContext.ts +0 -15
  725. package/src/Carousel/README.md +0 -1447
  726. package/src/Carousel/__tests__/Carousel.asChild.test.tsx +0 -178
  727. package/src/Carousel/__tests__/Carousel.auto-play.test.tsx +0 -617
  728. package/src/Carousel/__tests__/Carousel.autoplay-status.test.tsx +0 -239
  729. package/src/Carousel/__tests__/Carousel.basic-rendering.test.tsx +0 -569
  730. package/src/Carousel/__tests__/Carousel.controlled-state.test.tsx +0 -137
  731. package/src/Carousel/__tests__/Carousel.drag-status.test.tsx +0 -292
  732. package/src/Carousel/__tests__/Carousel.dynamic-slides.test.tsx +0 -38
  733. package/src/Carousel/__tests__/Carousel.error-handling.test.tsx +0 -81
  734. package/src/Carousel/__tests__/Carousel.ids.test.tsx +0 -111
  735. package/src/Carousel/__tests__/Carousel.imperative-api.test.tsx +0 -213
  736. package/src/Carousel/__tests__/Carousel.indicators.test.tsx +0 -661
  737. package/src/Carousel/__tests__/Carousel.infinite.test.tsx +0 -1453
  738. package/src/Carousel/__tests__/Carousel.instant-scroll.test.tsx +0 -124
  739. package/src/Carousel/__tests__/Carousel.intersection-observer.test.tsx +0 -364
  740. package/src/Carousel/__tests__/Carousel.keyboard-navigation.test.tsx +0 -158
  741. package/src/Carousel/__tests__/Carousel.loop.test.tsx +0 -163
  742. package/src/Carousel/__tests__/Carousel.loopEngine.test.ts +0 -77
  743. package/src/Carousel/__tests__/Carousel.mouse-drag.test.tsx +0 -504
  744. package/src/Carousel/__tests__/Carousel.multi-slide-bounds.test.tsx +0 -91
  745. package/src/Carousel/__tests__/Carousel.orientation.test.tsx +0 -207
  746. package/src/Carousel/__tests__/Carousel.overscroll.test.tsx +0 -532
  747. package/src/Carousel/__tests__/Carousel.page-snap-points.test.tsx +0 -50
  748. package/src/Carousel/__tests__/Carousel.play-pause.test.tsx +0 -232
  749. package/src/Carousel/__tests__/Carousel.prev-next.test.tsx +0 -68
  750. package/src/Carousel/__tests__/Carousel.progress-text.test.tsx +0 -76
  751. package/src/Carousel/__tests__/Carousel.reduced-motion.test.tsx +0 -46
  752. package/src/Carousel/__tests__/Carousel.refresh-progress.test.tsx +0 -84
  753. package/src/Carousel/__tests__/Carousel.scroll-margin.test.tsx +0 -167
  754. package/src/Carousel/__tests__/Carousel.scroll-progress.test.tsx +0 -518
  755. package/src/Carousel/__tests__/Carousel.scroll-snap-change.test.tsx +0 -200
  756. package/src/Carousel/__tests__/Carousel.scroll-sync.test.tsx +0 -322
  757. package/src/Carousel/__tests__/Carousel.scroll-to-index.test.tsx +0 -115
  758. package/src/Carousel/__tests__/Carousel.slide-snap.test.tsx +0 -172
  759. package/src/Carousel/__tests__/Carousel.slides-per-move.test.tsx +0 -329
  760. package/src/Carousel/__tests__/Carousel.slides-per-page.test.tsx +0 -267
  761. package/src/Carousel/__tests__/Carousel.snap-type.test.tsx +0 -35
  762. package/src/Carousel/__tests__/Carousel.ssr.test.tsx +0 -28
  763. package/src/Carousel/__tests__/Carousel.touch-interaction.test.tsx +0 -96
  764. package/src/Carousel/__tests__/Carousel.transition-modes.test.tsx +0 -95
  765. package/src/Carousel/__tests__/Carousel.translations.test.tsx +0 -180
  766. package/src/Carousel/__tests__/Carousel.uncontrolled-state.test.tsx +0 -146
  767. package/src/Carousel/__tests__/Carousel.wheel.test.tsx +0 -160
  768. package/src/Carousel/hooks/index.ts +0 -5
  769. package/src/Carousel/hooks/useCarouselContext.ts +0 -13
  770. package/src/Carousel/hooks/useCarouselLoop.ts +0 -869
  771. package/src/Carousel/hooks/useCarouselRoot.ts +0 -746
  772. package/src/Carousel/hooks/useCarouselSlide.ts +0 -80
  773. package/src/Carousel/hooks/useCarouselViewport.ts +0 -898
  774. package/src/Carousel/index.ts +0 -3
  775. package/src/Carousel/loopEngine.ts +0 -54
  776. package/src/Carousel/types.ts +0 -830
  777. package/src/Checkbox/Checkbox.tsx +0 -217
  778. package/src/Checkbox/CheckboxContext.ts +0 -20
  779. package/src/Checkbox/README.md +0 -137
  780. package/src/Checkbox/__tests__/Checkbox.basic-rendering.test.tsx +0 -93
  781. package/src/Checkbox/__tests__/Checkbox.contract.test.tsx +0 -106
  782. package/src/Checkbox/__tests__/Checkbox.controlled-state.test.tsx +0 -74
  783. package/src/Checkbox/__tests__/Checkbox.disabled.test.tsx +0 -45
  784. package/src/Checkbox/__tests__/Checkbox.form.test.tsx +0 -53
  785. package/src/Checkbox/__tests__/Checkbox.indeterminate.test.tsx +0 -76
  786. package/src/Checkbox/__tests__/Checkbox.indicator.test.tsx +0 -92
  787. package/src/Checkbox/__tests__/Checkbox.uncontrolled-state.test.tsx +0 -105
  788. package/src/Checkbox/hooks/index.ts +0 -3
  789. package/src/Checkbox/hooks/useCheckboxContext.ts +0 -1
  790. package/src/Checkbox/hooks/useCheckboxInput.ts +0 -53
  791. package/src/Checkbox/hooks/useCheckboxRoot.ts +0 -32
  792. package/src/Checkbox/index.ts +0 -2
  793. package/src/Checkbox/types.ts +0 -86
  794. package/src/CheckboxCard/CheckboxCard.tsx +0 -219
  795. package/src/CheckboxCard/CheckboxCardContext.ts +0 -25
  796. package/src/CheckboxCard/README.md +0 -114
  797. package/src/CheckboxCard/__tests__/CheckboxCard.asChild.test.tsx +0 -54
  798. package/src/CheckboxCard/__tests__/CheckboxCard.basic-rendering.test.tsx +0 -65
  799. package/src/CheckboxCard/__tests__/CheckboxCard.controlled-state.test.tsx +0 -77
  800. package/src/CheckboxCard/__tests__/CheckboxCard.disabled.test.tsx +0 -55
  801. package/src/CheckboxCard/__tests__/CheckboxCard.error-handling.test.tsx +0 -20
  802. package/src/CheckboxCard/__tests__/CheckboxCard.indeterminate.test.tsx +0 -60
  803. package/src/CheckboxCard/__tests__/CheckboxCard.indicator.test.tsx +0 -136
  804. package/src/CheckboxCard/__tests__/CheckboxCard.uncontrolled-state.test.tsx +0 -73
  805. package/src/CheckboxCard/hooks/index.ts +0 -2
  806. package/src/CheckboxCard/hooks/useCheckboxCardContext.ts +0 -1
  807. package/src/CheckboxCard/hooks/useCheckboxCardRoot.ts +0 -30
  808. package/src/CheckboxCard/index.ts +0 -3
  809. package/src/CheckboxCard/types.ts +0 -97
  810. package/src/Collapsible/Collapsible.tsx +0 -378
  811. package/src/Collapsible/CollapsibleContext.ts +0 -7
  812. package/src/Collapsible/README.md +0 -214
  813. package/src/Collapsible/__tests__/Collapsible.asChild.test.tsx +0 -329
  814. package/src/Collapsible/__tests__/Collapsible.basic-rendering.test.tsx +0 -145
  815. package/src/Collapsible/__tests__/Collapsible.collapsedHeight.test.tsx +0 -140
  816. package/src/Collapsible/__tests__/Collapsible.controlled-state.test.tsx +0 -134
  817. package/src/Collapsible/__tests__/Collapsible.disabled.test.tsx +0 -132
  818. package/src/Collapsible/__tests__/Collapsible.error-handling.test.tsx +0 -40
  819. package/src/Collapsible/__tests__/Collapsible.forceMount.test.tsx +0 -111
  820. package/src/Collapsible/__tests__/Collapsible.triggerIcon.test.tsx +0 -93
  821. package/src/Collapsible/__tests__/Collapsible.uncontrolled-state.test.tsx +0 -125
  822. package/src/Collapsible/hooks/index.ts +0 -2
  823. package/src/Collapsible/hooks/useCollapsibleRoot.ts +0 -34
  824. package/src/Collapsible/hooks/useCollapsibleTrigger.ts +0 -51
  825. package/src/Collapsible/index.ts +0 -2
  826. package/src/Collapsible/types.ts +0 -148
  827. package/src/Combobox/Combobox.tsx +0 -508
  828. package/src/Combobox/ComboboxContext.ts +0 -23
  829. package/src/Combobox/README.md +0 -170
  830. package/src/Combobox/__tests__/Combobox.asChild.test.tsx +0 -62
  831. package/src/Combobox/__tests__/Combobox.basic-rendering.test.tsx +0 -16
  832. package/src/Combobox/__tests__/Combobox.content.test.tsx +0 -36
  833. package/src/Combobox/__tests__/Combobox.controlled-state.test.tsx +0 -88
  834. package/src/Combobox/__tests__/Combobox.empty.test.tsx +0 -42
  835. package/src/Combobox/__tests__/Combobox.ids.test.tsx +0 -66
  836. package/src/Combobox/__tests__/Combobox.item.test.tsx +0 -76
  837. package/src/Combobox/__tests__/Combobox.keyboard-interaction.test.tsx +0 -196
  838. package/src/Combobox/__tests__/Combobox.light-dismiss.test.tsx +0 -101
  839. package/src/Combobox/__tests__/Combobox.query.test.tsx +0 -105
  840. package/src/Combobox/hooks/index.ts +0 -1
  841. package/src/Combobox/hooks/useComboboxRoot.ts +0 -2
  842. package/src/Combobox/index.ts +0 -3
  843. package/src/Combobox/types.ts +0 -133
  844. package/src/ContextMenu/ContextMenu.tsx +0 -1296
  845. package/src/ContextMenu/ContextMenuContentContext.ts +0 -15
  846. package/src/ContextMenu/ContextMenuContext.ts +0 -21
  847. package/src/ContextMenu/ContextMenuGroupContext.ts +0 -8
  848. package/src/ContextMenu/ContextMenuItemIndicatorContext.ts +0 -8
  849. package/src/ContextMenu/ContextMenuRadioGroupContext.ts +0 -9
  850. package/src/ContextMenu/ContextMenuSubContext.ts +0 -15
  851. package/src/ContextMenu/README.md +0 -275
  852. package/src/ContextMenu/__tests__/ContextMenu.asChild.test.tsx +0 -186
  853. package/src/ContextMenu/__tests__/ContextMenu.basic-rendering.test.tsx +0 -39
  854. package/src/ContextMenu/__tests__/ContextMenu.checkbox-item.test.tsx +0 -168
  855. package/src/ContextMenu/__tests__/ContextMenu.error-handling.test.tsx +0 -113
  856. package/src/ContextMenu/__tests__/ContextMenu.group-label.test.tsx +0 -48
  857. package/src/ContextMenu/__tests__/ContextMenu.item-indicator.test.tsx +0 -88
  858. package/src/ContextMenu/__tests__/ContextMenu.item.test.tsx +0 -106
  859. package/src/ContextMenu/__tests__/ContextMenu.keyboard-interaction.test.tsx +0 -227
  860. package/src/ContextMenu/__tests__/ContextMenu.mouse-interaction.test.tsx +0 -268
  861. package/src/ContextMenu/__tests__/ContextMenu.radio-item.test.tsx +0 -152
  862. package/src/ContextMenu/__tests__/ContextMenu.reading-direction.test.tsx +0 -152
  863. package/src/ContextMenu/__tests__/ContextMenu.separator.test.tsx +0 -47
  864. package/src/ContextMenu/__tests__/ContextMenu.state-modes.test.tsx +0 -119
  865. package/src/ContextMenu/__tests__/ContextMenu.sub.test.tsx +0 -407
  866. package/src/ContextMenu/__tests__/ContextMenu.typeahead.test.tsx +0 -134
  867. package/src/ContextMenu/constants.ts +0 -4
  868. package/src/ContextMenu/index.ts +0 -2
  869. package/src/ContextMenu/types.ts +0 -484
  870. package/src/DirectionProvider/DirectionContext.ts +0 -21
  871. package/src/DirectionProvider/DirectionProvider.tsx +0 -69
  872. package/src/DirectionProvider/README.md +0 -62
  873. package/src/DirectionProvider/__tests__/DirectionProvider.test.tsx +0 -34
  874. package/src/DirectionProvider/index.ts +0 -3
  875. package/src/DirectionProvider/types.ts +0 -36
  876. package/src/Divider/Divider.tsx +0 -74
  877. package/src/Divider/README.md +0 -57
  878. package/src/Divider/__tests__/Divider.contract.test.tsx +0 -66
  879. package/src/Divider/__tests__/Divider.test.tsx +0 -46
  880. package/src/Divider/index.ts +0 -2
  881. package/src/Divider/types.ts +0 -17
  882. package/src/Drawer/Drawer.tsx +0 -315
  883. package/src/Drawer/README.md +0 -124
  884. package/src/Drawer/__tests__/Drawer.behavior.test.tsx +0 -100
  885. package/src/Drawer/__tests__/Drawer.focus-trap.test.tsx +0 -55
  886. package/src/Drawer/__tests__/Drawer.rendering.test.tsx +0 -111
  887. package/src/Drawer/__tests__/Drawer.side.test.tsx +0 -69
  888. package/src/Drawer/__tests__/dialog-polyfill.ts +0 -39
  889. package/src/Drawer/index.ts +0 -2
  890. package/src/Drawer/types.ts +0 -66
  891. package/src/Dropdown/Dropdown.tsx +0 -985
  892. package/src/Dropdown/DropdownContentContext.ts +0 -15
  893. package/src/Dropdown/DropdownContext.ts +0 -17
  894. package/src/Dropdown/DropdownGroupContext.ts +0 -8
  895. package/src/Dropdown/DropdownItemIndicatorContext.ts +0 -13
  896. package/src/Dropdown/DropdownRadioGroupContext.ts +0 -9
  897. package/src/Dropdown/DropdownSubContext.ts +0 -15
  898. package/src/Dropdown/README.md +0 -286
  899. package/src/Dropdown/__tests__/Dropdown.asChild.test.tsx +0 -286
  900. package/src/Dropdown/__tests__/Dropdown.basic-rendering.test.tsx +0 -43
  901. package/src/Dropdown/__tests__/Dropdown.checkbox-item.test.tsx +0 -121
  902. package/src/Dropdown/__tests__/Dropdown.disabled.test.tsx +0 -143
  903. package/src/Dropdown/__tests__/Dropdown.error-handling.test.tsx +0 -85
  904. package/src/Dropdown/__tests__/Dropdown.group-label.test.tsx +0 -68
  905. package/src/Dropdown/__tests__/Dropdown.item-indicator.test.tsx +0 -260
  906. package/src/Dropdown/__tests__/Dropdown.item.test.tsx +0 -72
  907. package/src/Dropdown/__tests__/Dropdown.keyboard-edge-cases.test.tsx +0 -77
  908. package/src/Dropdown/__tests__/Dropdown.keyboard-interaction.test.tsx +0 -310
  909. package/src/Dropdown/__tests__/Dropdown.mouse-interaction.test.tsx +0 -347
  910. package/src/Dropdown/__tests__/Dropdown.radio-item.test.tsx +0 -134
  911. package/src/Dropdown/__tests__/Dropdown.reading-direction.test.tsx +0 -153
  912. package/src/Dropdown/__tests__/Dropdown.separator.test.tsx +0 -46
  913. package/src/Dropdown/__tests__/Dropdown.state-modes.test.tsx +0 -100
  914. package/src/Dropdown/__tests__/Dropdown.sub.test.tsx +0 -185
  915. package/src/Dropdown/__tests__/Dropdown.trigger.test.tsx +0 -110
  916. package/src/Dropdown/__tests__/Dropdown.typeahead.test.tsx +0 -133
  917. package/src/Dropdown/constants.ts +0 -4
  918. package/src/Dropdown/hooks/index.ts +0 -9
  919. package/src/Dropdown/hooks/useCloseSiblingSub.ts +0 -13
  920. package/src/Dropdown/hooks/useDropdownContent.ts +0 -162
  921. package/src/Dropdown/hooks/useDropdownContext.ts +0 -1
  922. package/src/Dropdown/hooks/useDropdownGroup.ts +0 -18
  923. package/src/Dropdown/hooks/useDropdownItem.ts +0 -49
  924. package/src/Dropdown/hooks/useDropdownLabel.ts +0 -15
  925. package/src/Dropdown/hooks/useDropdownRoot.ts +0 -57
  926. package/src/Dropdown/hooks/useDropdownSubContext.ts +0 -1
  927. package/src/Dropdown/hooks/useDropdownTrigger.ts +0 -31
  928. package/src/Dropdown/index.ts +0 -2
  929. package/src/Dropdown/types.ts +0 -558
  930. package/src/EmptyState/EmptyState.tsx +0 -329
  931. package/src/EmptyState/README.md +0 -129
  932. package/src/EmptyState/__tests__/EmptyState.Actions.test.tsx +0 -37
  933. package/src/EmptyState/__tests__/EmptyState.Description.test.tsx +0 -32
  934. package/src/EmptyState/__tests__/EmptyState.Media.test.tsx +0 -34
  935. package/src/EmptyState/__tests__/EmptyState.Root.test.tsx +0 -38
  936. package/src/EmptyState/__tests__/EmptyState.Title.test.tsx +0 -28
  937. package/src/EmptyState/index.ts +0 -2
  938. package/src/EmptyState/types.ts +0 -65
  939. package/src/Field/Field.tsx +0 -276
  940. package/src/Field/FieldContext.ts +0 -22
  941. package/src/Field/README.md +0 -167
  942. package/src/Field/__tests__/Field.asChild.test.tsx +0 -83
  943. package/src/Field/__tests__/Field.basic-rendering.test.tsx +0 -115
  944. package/src/Field/__tests__/Field.contract.test.tsx +0 -91
  945. package/src/Field/__tests__/Field.error-handling.test.tsx +0 -23
  946. package/src/Field/__tests__/Field.state-cascade.test.tsx +0 -96
  947. package/src/Field/hooks/__tests__/useFieldProps.test.tsx +0 -142
  948. package/src/Field/hooks/index.ts +0 -2
  949. package/src/Field/hooks/useFieldContext.ts +0 -1
  950. package/src/Field/hooks/useFieldProps.ts +0 -57
  951. package/src/Field/index.ts +0 -2
  952. package/src/Field/types.ts +0 -85
  953. package/src/Fieldset/Fieldset.tsx +0 -156
  954. package/src/Fieldset/README.md +0 -74
  955. package/src/Fieldset/__tests__/Fieldset.basic-rendering.test.tsx +0 -90
  956. package/src/Fieldset/__tests__/Fieldset.disabled.test.tsx +0 -41
  957. package/src/Fieldset/index.ts +0 -2
  958. package/src/Fieldset/types.ts +0 -25
  959. package/src/Input/Input.tsx +0 -128
  960. package/src/Input/README.md +0 -180
  961. package/src/Input/__tests__/Input.asChild.test.tsx +0 -85
  962. package/src/Input/__tests__/Input.basic-rendering.test.tsx +0 -123
  963. package/src/Input/__tests__/Input.contract.test.tsx +0 -77
  964. package/src/Input/__tests__/Input.disabled.test.tsx +0 -49
  965. package/src/Input/__tests__/Input.field-integration.test.tsx +0 -148
  966. package/src/Input/index.ts +0 -2
  967. package/src/Input/types.ts +0 -28
  968. package/src/InputGroup/InputGroup.tsx +0 -243
  969. package/src/InputGroup/README.md +0 -178
  970. package/src/InputGroup/__tests__/InputGroup.asChild.test.tsx +0 -110
  971. package/src/InputGroup/__tests__/InputGroup.basic-rendering.test.tsx +0 -120
  972. package/src/InputGroup/__tests__/InputGroup.contract.test.tsx +0 -60
  973. package/src/InputGroup/index.ts +0 -2
  974. package/src/InputGroup/types.ts +0 -43
  975. package/src/Listbox/Listbox.tsx +0 -475
  976. package/src/Listbox/ListboxContext.ts +0 -48
  977. package/src/Listbox/README.md +0 -248
  978. package/src/Listbox/__tests__/Listbox.active-descendant.test.tsx +0 -128
  979. package/src/Listbox/__tests__/Listbox.asChild.test.tsx +0 -91
  980. package/src/Listbox/__tests__/Listbox.basic-rendering.test.tsx +0 -16
  981. package/src/Listbox/__tests__/Listbox.controlled-state.test.tsx +0 -114
  982. package/src/Listbox/__tests__/Listbox.disabled.test.tsx +0 -90
  983. package/src/Listbox/__tests__/Listbox.fixtures.ts +0 -27
  984. package/src/Listbox/__tests__/Listbox.group-label.test.tsx +0 -97
  985. package/src/Listbox/__tests__/Listbox.group.test.tsx +0 -45
  986. package/src/Listbox/__tests__/Listbox.keyboard-edge-cases.test.tsx +0 -144
  987. package/src/Listbox/__tests__/Listbox.keyboard-interaction.test.tsx +0 -112
  988. package/src/Listbox/__tests__/Listbox.modifier-keys.test.tsx +0 -86
  989. package/src/Listbox/__tests__/Listbox.multi-select-keyboard.test.tsx +0 -368
  990. package/src/Listbox/__tests__/Listbox.multiple-mode.test.tsx +0 -91
  991. package/src/Listbox/__tests__/Listbox.mutation-hardening.test.tsx +0 -480
  992. package/src/Listbox/__tests__/Listbox.orientation.test.tsx +0 -59
  993. package/src/Listbox/__tests__/Listbox.reading-direction.test.tsx +0 -65
  994. package/src/Listbox/__tests__/Listbox.reorder.test.tsx +0 -78
  995. package/src/Listbox/__tests__/Listbox.selection-follows-focus.test.tsx +0 -64
  996. package/src/Listbox/__tests__/Listbox.strict-context.test.tsx +0 -21
  997. package/src/Listbox/__tests__/Listbox.typeahead.test.tsx +0 -123
  998. package/src/Listbox/__tests__/Listbox.uncontrolled-state.test.tsx +0 -48
  999. package/src/Listbox/constants.ts +0 -2
  1000. package/src/Listbox/hooks/index.ts +0 -1
  1001. package/src/Listbox/hooks/useListboxRoot.ts +0 -407
  1002. package/src/Listbox/index.ts +0 -3
  1003. package/src/Listbox/types.ts +0 -238
  1004. package/src/MillerColumns/MillerColumns.tsx +0 -490
  1005. package/src/MillerColumns/MillerColumnsContext.ts +0 -25
  1006. package/src/MillerColumns/README.md +0 -348
  1007. package/src/MillerColumns/__tests__/MillerColumns.aria.test.tsx +0 -127
  1008. package/src/MillerColumns/__tests__/MillerColumns.asChild.test.tsx +0 -106
  1009. package/src/MillerColumns/__tests__/MillerColumns.auto-scroll.test.tsx +0 -70
  1010. package/src/MillerColumns/__tests__/MillerColumns.basic-rendering.test.tsx +0 -67
  1011. package/src/MillerColumns/__tests__/MillerColumns.column-projection.test.tsx +0 -161
  1012. package/src/MillerColumns/__tests__/MillerColumns.controlled-state.test.tsx +0 -90
  1013. package/src/MillerColumns/__tests__/MillerColumns.data-attributes.test.tsx +0 -125
  1014. package/src/MillerColumns/__tests__/MillerColumns.disabled-items.test.tsx +0 -65
  1015. package/src/MillerColumns/__tests__/MillerColumns.error-handling.test.tsx +0 -57
  1016. package/src/MillerColumns/__tests__/MillerColumns.fixtures.ts +0 -15
  1017. package/src/MillerColumns/__tests__/MillerColumns.item-indicator.test.tsx +0 -57
  1018. package/src/MillerColumns/__tests__/MillerColumns.keyboard-interaction.test.tsx +0 -214
  1019. package/src/MillerColumns/__tests__/MillerColumns.keyboard-selection-state.test.tsx +0 -96
  1020. package/src/MillerColumns/__tests__/MillerColumns.preview-panel.test.tsx +0 -72
  1021. package/src/MillerColumns/__tests__/MillerColumns.preview-visibility.test.tsx +0 -79
  1022. package/src/MillerColumns/__tests__/MillerColumns.resize.test.tsx +0 -326
  1023. package/src/MillerColumns/__tests__/MillerColumns.roving-tabindex.test.tsx +0 -91
  1024. package/src/MillerColumns/__tests__/MillerColumns.selection.test.tsx +0 -54
  1025. package/src/MillerColumns/__tests__/MillerColumns.styled-parts.test.tsx +0 -143
  1026. package/src/MillerColumns/__tests__/MillerColumns.typeahead.test.tsx +0 -104
  1027. package/src/MillerColumns/__tests__/MillerColumns.uncontrolled-state.test.tsx +0 -70
  1028. package/src/MillerColumns/constants.ts +0 -2
  1029. package/src/MillerColumns/hooks/index.ts +0 -7
  1030. package/src/MillerColumns/hooks/useMillerColumnsColumn.ts +0 -26
  1031. package/src/MillerColumns/hooks/useMillerColumnsColumnContext.ts +0 -1
  1032. package/src/MillerColumns/hooks/useMillerColumnsContext.ts +0 -1
  1033. package/src/MillerColumns/hooks/useMillerColumnsItem.ts +0 -179
  1034. package/src/MillerColumns/hooks/useMillerColumnsItemContext.ts +0 -1
  1035. package/src/MillerColumns/hooks/useMillerColumnsResizeHandle.ts +0 -146
  1036. package/src/MillerColumns/hooks/useMillerColumnsRoot.ts +0 -0
  1037. package/src/MillerColumns/index.ts +0 -7
  1038. package/src/MillerColumns/types.ts +0 -252
  1039. package/src/MillerColumns/useMillerColumnsSelection.ts +0 -31
  1040. package/src/MillerColumns/utils.ts +0 -141
  1041. package/src/Modal/Modal.tsx +0 -515
  1042. package/src/Modal/ModalContext.ts +0 -20
  1043. package/src/Modal/README.md +0 -222
  1044. package/src/Modal/__tests__/Modal.accessibility.test.tsx +0 -167
  1045. package/src/Modal/__tests__/Modal.asChild.test.tsx +0 -162
  1046. package/src/Modal/__tests__/Modal.click-outside.test.tsx +0 -115
  1047. package/src/Modal/__tests__/Modal.content.test.tsx +0 -193
  1048. package/src/Modal/__tests__/Modal.controlled-state.test.tsx +0 -120
  1049. package/src/Modal/__tests__/Modal.error-handling.test.tsx +0 -30
  1050. package/src/Modal/__tests__/Modal.escape-hatches.test.tsx +0 -99
  1051. package/src/Modal/__tests__/Modal.focus-trap.test.tsx +0 -162
  1052. package/src/Modal/__tests__/Modal.imperative-api.test.tsx +0 -119
  1053. package/src/Modal/__tests__/Modal.nested.test.tsx +0 -106
  1054. package/src/Modal/__tests__/Modal.overlay.test.tsx +0 -99
  1055. package/src/Modal/__tests__/Modal.portal.test.tsx +0 -90
  1056. package/src/Modal/__tests__/Modal.presence.test.tsx +0 -111
  1057. package/src/Modal/__tests__/Modal.trigger.test.tsx +0 -70
  1058. package/src/Modal/__tests__/Modal.uncontrolled-state.test.tsx +0 -72
  1059. package/src/Modal/__tests__/dialog-polyfill.ts +0 -40
  1060. package/src/Modal/hooks/index.ts +0 -4
  1061. package/src/Modal/hooks/useModalContent.ts +0 -94
  1062. package/src/Modal/hooks/useModalContext.ts +0 -1
  1063. package/src/Modal/hooks/useModalRoot.ts +0 -81
  1064. package/src/Modal/hooks/useModalTrigger.ts +0 -25
  1065. package/src/Modal/index.ts +0 -3
  1066. package/src/Modal/types.ts +0 -206
  1067. package/src/NavigationMenu/NavigationMenu.tsx +0 -890
  1068. package/src/NavigationMenu/NavigationMenuContext.ts +0 -67
  1069. package/src/NavigationMenu/README.md +0 -355
  1070. package/src/NavigationMenu/__tests__/NavigationMenu.anchor-positioning.test.tsx +0 -132
  1071. package/src/NavigationMenu/__tests__/NavigationMenu.asChild.test.tsx +0 -73
  1072. package/src/NavigationMenu/__tests__/NavigationMenu.basic-rendering.test.tsx +0 -92
  1073. package/src/NavigationMenu/__tests__/NavigationMenu.contract.test.tsx +0 -45
  1074. package/src/NavigationMenu/__tests__/NavigationMenu.controlled-state.test.tsx +0 -134
  1075. package/src/NavigationMenu/__tests__/NavigationMenu.error-handling.test.tsx +0 -62
  1076. package/src/NavigationMenu/__tests__/NavigationMenu.fixtures.tsx +0 -79
  1077. package/src/NavigationMenu/__tests__/NavigationMenu.forceMount.test.tsx +0 -52
  1078. package/src/NavigationMenu/__tests__/NavigationMenu.hover-interaction.test.tsx +0 -254
  1079. package/src/NavigationMenu/__tests__/NavigationMenu.indicator.test.tsx +0 -252
  1080. package/src/NavigationMenu/__tests__/NavigationMenu.keyboard-interaction.test.tsx +0 -294
  1081. package/src/NavigationMenu/__tests__/NavigationMenu.keyboard-navigation.test.tsx +0 -126
  1082. package/src/NavigationMenu/__tests__/NavigationMenu.link.test.tsx +0 -139
  1083. package/src/NavigationMenu/__tests__/NavigationMenu.motion.test.tsx +0 -568
  1084. package/src/NavigationMenu/__tests__/NavigationMenu.mouse-interaction.test.tsx +0 -76
  1085. package/src/NavigationMenu/__tests__/NavigationMenu.uncontrolled-state.test.tsx +0 -30
  1086. package/src/NavigationMenu/__tests__/NavigationMenu.viewport.test.tsx +0 -113
  1087. package/src/NavigationMenu/constants.ts +0 -5
  1088. package/src/NavigationMenu/hooks/index.ts +0 -7
  1089. package/src/NavigationMenu/hooks/useNavigationMenuEntry.ts +0 -33
  1090. package/src/NavigationMenu/hooks/useNavigationMenuIndicator.ts +0 -70
  1091. package/src/NavigationMenu/hooks/useNavigationMenuLink.ts +0 -72
  1092. package/src/NavigationMenu/hooks/useNavigationMenuRoot.ts +0 -301
  1093. package/src/NavigationMenu/hooks/useNavigationMenuTopLevelEntry.ts +0 -65
  1094. package/src/NavigationMenu/hooks/useNavigationMenuTrigger.ts +0 -158
  1095. package/src/NavigationMenu/hooks/useNavigationMenuViewport.ts +0 -101
  1096. package/src/NavigationMenu/index.ts +0 -3
  1097. package/src/NavigationMenu/types.ts +0 -259
  1098. package/src/NavigationMenu/utils.ts +0 -89
  1099. package/src/Popover/Popover.tsx +0 -427
  1100. package/src/Popover/PopoverContext.ts +0 -13
  1101. package/src/Popover/README.md +0 -106
  1102. package/src/Popover/__tests__/Popover.anchor.test.tsx +0 -38
  1103. package/src/Popover/__tests__/Popover.asChild.test.tsx +0 -160
  1104. package/src/Popover/__tests__/Popover.basic-rendering.test.tsx +0 -106
  1105. package/src/Popover/__tests__/Popover.click-outside.test.tsx +0 -149
  1106. package/src/Popover/__tests__/Popover.close.test.tsx +0 -70
  1107. package/src/Popover/__tests__/Popover.content.test.tsx +0 -58
  1108. package/src/Popover/__tests__/Popover.controlled-state.test.tsx +0 -45
  1109. package/src/Popover/__tests__/Popover.error-handling.test.tsx +0 -51
  1110. package/src/Popover/__tests__/Popover.focus.test.tsx +0 -43
  1111. package/src/Popover/__tests__/Popover.keyboard-interaction.test.tsx +0 -71
  1112. package/src/Popover/__tests__/Popover.mouse-interaction.test.tsx +0 -69
  1113. package/src/Popover/__tests__/Popover.uncontrolled-state.test.tsx +0 -44
  1114. package/src/Popover/hooks/index.ts +0 -3
  1115. package/src/Popover/hooks/usePopoverContent.ts +0 -98
  1116. package/src/Popover/hooks/usePopoverRoot.ts +0 -84
  1117. package/src/Popover/hooks/usePopoverTrigger.ts +0 -33
  1118. package/src/Popover/index.ts +0 -2
  1119. package/src/Popover/types.ts +0 -197
  1120. package/src/Portal/Portal.tsx +0 -70
  1121. package/src/Portal/README.md +0 -70
  1122. package/src/Portal/__tests__/Portal.basic-rendering.test.tsx +0 -22
  1123. package/src/Portal/index.ts +0 -2
  1124. package/src/Portal/types.ts +0 -15
  1125. package/src/Progress/Progress.tsx +0 -215
  1126. package/src/Progress/ProgressContext.ts +0 -27
  1127. package/src/Progress/README.md +0 -112
  1128. package/src/Progress/__tests__/Progress.asChild.test.tsx +0 -37
  1129. package/src/Progress/__tests__/Progress.basic-rendering.test.tsx +0 -75
  1130. package/src/Progress/__tests__/Progress.error-handling.test.tsx +0 -40
  1131. package/src/Progress/__tests__/Progress.fixtures.ts +0 -7
  1132. package/src/Progress/__tests__/Progress.value.test.tsx +0 -104
  1133. package/src/Progress/hooks/index.ts +0 -2
  1134. package/src/Progress/hooks/useProgressContext.ts +0 -1
  1135. package/src/Progress/hooks/useProgressRoot.ts +0 -45
  1136. package/src/Progress/index.ts +0 -3
  1137. package/src/Progress/types.ts +0 -59
  1138. package/src/Radio/README.md +0 -160
  1139. package/src/Radio/Radio.tsx +0 -210
  1140. package/src/Radio/RadioContext.ts +0 -19
  1141. package/src/Radio/__tests__/Radio.basic-rendering.test.tsx +0 -80
  1142. package/src/Radio/__tests__/Radio.contract.test.tsx +0 -106
  1143. package/src/Radio/__tests__/Radio.controlled-state.test.tsx +0 -79
  1144. package/src/Radio/__tests__/Radio.disabled.test.tsx +0 -48
  1145. package/src/Radio/__tests__/Radio.native-grouping.test.tsx +0 -77
  1146. package/src/Radio/__tests__/Radio.parts.test.tsx +0 -76
  1147. package/src/Radio/__tests__/Radio.uncontrolled-state.test.tsx +0 -96
  1148. package/src/Radio/hooks/index.ts +0 -2
  1149. package/src/Radio/hooks/useRadioContext.ts +0 -1
  1150. package/src/Radio/hooks/useRadioRoot.ts +0 -51
  1151. package/src/Radio/index.ts +0 -2
  1152. package/src/Radio/types.ts +0 -90
  1153. package/src/RadioCard/README.md +0 -134
  1154. package/src/RadioCard/RadioCard.tsx +0 -354
  1155. package/src/RadioCard/RadioCardContext.ts +0 -35
  1156. package/src/RadioCard/RadioCardItemContext.ts +0 -23
  1157. package/src/RadioCard/__tests__/RadioCard.asChild.test.tsx +0 -76
  1158. package/src/RadioCard/__tests__/RadioCard.basic-rendering.test.tsx +0 -95
  1159. package/src/RadioCard/__tests__/RadioCard.controlled-state.test.tsx +0 -107
  1160. package/src/RadioCard/__tests__/RadioCard.disabled-items.test.tsx +0 -111
  1161. package/src/RadioCard/__tests__/RadioCard.error-handling.test.tsx +0 -35
  1162. package/src/RadioCard/__tests__/RadioCard.indicator.test.tsx +0 -119
  1163. package/src/RadioCard/__tests__/RadioCard.keyboard-interaction.test.tsx +0 -211
  1164. package/src/RadioCard/__tests__/RadioCard.orientation.test.tsx +0 -90
  1165. package/src/RadioCard/__tests__/RadioCard.reading-direction.test.tsx +0 -65
  1166. package/src/RadioCard/__tests__/RadioCard.ref-forwarding.test.tsx +0 -54
  1167. package/src/RadioCard/__tests__/RadioCard.uncontrolled-state.test.tsx +0 -129
  1168. package/src/RadioCard/hooks/index.ts +0 -3
  1169. package/src/RadioCard/hooks/useRadioCardContext.ts +0 -1
  1170. package/src/RadioCard/hooks/useRadioCardItemContext.ts +0 -1
  1171. package/src/RadioCard/hooks/useRadioCardRoot.ts +0 -88
  1172. package/src/RadioCard/index.ts +0 -4
  1173. package/src/RadioCard/types.ts +0 -145
  1174. package/src/RadioGroup/README.md +0 -185
  1175. package/src/RadioGroup/RadioGroup.tsx +0 -370
  1176. package/src/RadioGroup/RadioGroupContext.ts +0 -23
  1177. package/src/RadioGroup/RadioGroupItemContext.ts +0 -10
  1178. package/src/RadioGroup/__tests__/RadioGroup.asChild.test.tsx +0 -105
  1179. package/src/RadioGroup/__tests__/RadioGroup.basic-rendering.test.tsx +0 -80
  1180. package/src/RadioGroup/__tests__/RadioGroup.controlled-state.test.tsx +0 -109
  1181. package/src/RadioGroup/__tests__/RadioGroup.disabled-keydown-guards.test.tsx +0 -68
  1182. package/src/RadioGroup/__tests__/RadioGroup.disabled.test.tsx +0 -106
  1183. package/src/RadioGroup/__tests__/RadioGroup.error-handling.test.tsx +0 -33
  1184. package/src/RadioGroup/__tests__/RadioGroup.indicator.test.tsx +0 -85
  1185. package/src/RadioGroup/__tests__/RadioGroup.keyboard-interaction.test.tsx +0 -135
  1186. package/src/RadioGroup/__tests__/RadioGroup.orientation.test.tsx +0 -90
  1187. package/src/RadioGroup/__tests__/RadioGroup.reading-direction.test.tsx +0 -65
  1188. package/src/RadioGroup/__tests__/RadioGroup.ref-forwarding.test.tsx +0 -74
  1189. package/src/RadioGroup/__tests__/RadioGroup.roving-tabindex.test.tsx +0 -136
  1190. package/src/RadioGroup/__tests__/RadioGroup.uncontrolled-state.test.tsx +0 -96
  1191. package/src/RadioGroup/hooks/index.ts +0 -3
  1192. package/src/RadioGroup/hooks/useRadioGroupContext.ts +0 -1
  1193. package/src/RadioGroup/hooks/useRadioGroupItemContext.ts +0 -1
  1194. package/src/RadioGroup/hooks/useRadioGroupRoot.ts +0 -98
  1195. package/src/RadioGroup/index.ts +0 -2
  1196. package/src/RadioGroup/types.ts +0 -146
  1197. package/src/SegmentedControl/README.md +0 -154
  1198. package/src/SegmentedControl/SegmentedControl.tsx +0 -309
  1199. package/src/SegmentedControl/SegmentedControlContext.ts +0 -28
  1200. package/src/SegmentedControl/__tests__/SegmentedControl.asChild.test.tsx +0 -50
  1201. package/src/SegmentedControl/__tests__/SegmentedControl.basic-rendering.test.tsx +0 -100
  1202. package/src/SegmentedControl/__tests__/SegmentedControl.controlled-state.test.tsx +0 -107
  1203. package/src/SegmentedControl/__tests__/SegmentedControl.disabled-keydown-guards.test.tsx +0 -62
  1204. package/src/SegmentedControl/__tests__/SegmentedControl.disabled.test.tsx +0 -151
  1205. package/src/SegmentedControl/__tests__/SegmentedControl.error-handling.test.tsx +0 -17
  1206. package/src/SegmentedControl/__tests__/SegmentedControl.keyboard-interaction.test.tsx +0 -117
  1207. package/src/SegmentedControl/__tests__/SegmentedControl.orientation.test.tsx +0 -54
  1208. package/src/SegmentedControl/__tests__/SegmentedControl.reading-direction.test.tsx +0 -56
  1209. package/src/SegmentedControl/__tests__/SegmentedControl.ref-forwarding.test.tsx +0 -45
  1210. package/src/SegmentedControl/__tests__/SegmentedControl.roving-tabindex.test.tsx +0 -104
  1211. package/src/SegmentedControl/__tests__/SegmentedControl.uncontrolled-state.test.tsx +0 -94
  1212. package/src/SegmentedControl/hooks/index.ts +0 -2
  1213. package/src/SegmentedControl/hooks/useSegmentedControlContext.ts +0 -1
  1214. package/src/SegmentedControl/hooks/useSegmentedControlRoot.ts +0 -87
  1215. package/src/SegmentedControl/index.ts +0 -2
  1216. package/src/SegmentedControl/types.ts +0 -138
  1217. package/src/Select/README.md +0 -168
  1218. package/src/Select/Select.tsx +0 -746
  1219. package/src/Select/SelectContext.ts +0 -38
  1220. package/src/Select/SelectItemIndicatorContext.ts +0 -29
  1221. package/src/Select/__tests__/Select.asChild.test.tsx +0 -36
  1222. package/src/Select/__tests__/Select.basic-rendering.test.tsx +0 -36
  1223. package/src/Select/__tests__/Select.controlled-state.test.tsx +0 -69
  1224. package/src/Select/__tests__/Select.data-attributes.test.tsx +0 -29
  1225. package/src/Select/__tests__/Select.field-integration.test.tsx +0 -150
  1226. package/src/Select/__tests__/Select.form.test.tsx +0 -38
  1227. package/src/Select/__tests__/Select.group.test.tsx +0 -42
  1228. package/src/Select/__tests__/Select.keyboard-edge.test.tsx +0 -95
  1229. package/src/Select/__tests__/Select.keyboard.test.tsx +0 -124
  1230. package/src/Select/__tests__/Select.mutation-hardening.test.tsx +0 -317
  1231. package/src/Select/__tests__/Select.native-item.test.tsx +0 -30
  1232. package/src/Select/__tests__/Select.open-close.test.tsx +0 -57
  1233. package/src/Select/__tests__/Select.placeholder.test.tsx +0 -50
  1234. package/src/Select/__tests__/Select.rich-asChild.test.tsx +0 -60
  1235. package/src/Select/__tests__/Select.rich-mode.test.tsx +0 -16
  1236. package/src/Select/__tests__/Select.selection.test.tsx +0 -104
  1237. package/src/Select/__tests__/Select.separator.test.tsx +0 -71
  1238. package/src/Select/__tests__/Select.strict-context.test.tsx +0 -36
  1239. package/src/Select/__tests__/Select.typeahead.test.tsx +0 -156
  1240. package/src/Select/__tests__/Select.value-mirror.test.tsx +0 -240
  1241. package/src/Select/constants.ts +0 -8
  1242. package/src/Select/hooks/index.ts +0 -2
  1243. package/src/Select/hooks/useSelectContent.ts +0 -149
  1244. package/src/Select/hooks/useSelectRoot.ts +0 -149
  1245. package/src/Select/index.ts +0 -2
  1246. package/src/Select/types.ts +0 -272
  1247. package/src/SkipNav/README.md +0 -87
  1248. package/src/SkipNav/SkipNav.tsx +0 -161
  1249. package/src/SkipNav/__tests__/SkipNav.basic-rendering.test.tsx +0 -29
  1250. package/src/SkipNav/__tests__/SkipNav.ids.test.tsx +0 -19
  1251. package/src/SkipNav/index.ts +0 -1
  1252. package/src/SkipNav/types.ts +0 -34
  1253. package/src/Slider/README.md +0 -245
  1254. package/src/Slider/Slider.tsx +0 -361
  1255. package/src/Slider/SliderContext.ts +0 -58
  1256. package/src/Slider/__tests__/Slider.asChild.test.tsx +0 -119
  1257. package/src/Slider/__tests__/Slider.basic-rendering.test.tsx +0 -157
  1258. package/src/Slider/__tests__/Slider.controlled-state.test.tsx +0 -78
  1259. package/src/Slider/__tests__/Slider.disabled.test.tsx +0 -82
  1260. package/src/Slider/__tests__/Slider.error-handling.test.tsx +0 -45
  1261. package/src/Slider/__tests__/Slider.fixtures.ts +0 -53
  1262. package/src/Slider/__tests__/Slider.form.test.tsx +0 -67
  1263. package/src/Slider/__tests__/Slider.inverted.test.tsx +0 -112
  1264. package/src/Slider/__tests__/Slider.keyboard-interaction.test.tsx +0 -118
  1265. package/src/Slider/__tests__/Slider.multiple-thumbs.test.tsx +0 -84
  1266. package/src/Slider/__tests__/Slider.orientation.test.tsx +0 -101
  1267. package/src/Slider/__tests__/Slider.pointer-interaction.test.tsx +0 -205
  1268. package/src/Slider/__tests__/Slider.reading-direction.test.tsx +0 -99
  1269. package/src/Slider/__tests__/Slider.uncontrolled-state.test.tsx +0 -69
  1270. package/src/Slider/__tests__/Slider.value-commit.test.tsx +0 -103
  1271. package/src/Slider/hooks/index.ts +0 -3
  1272. package/src/Slider/hooks/useSliderContext.ts +0 -1
  1273. package/src/Slider/hooks/useSliderRoot.ts +0 -197
  1274. package/src/Slider/hooks/useSliderThumb.ts +0 -77
  1275. package/src/Slider/index.ts +0 -3
  1276. package/src/Slider/types.ts +0 -205
  1277. package/src/Slider/utils.ts +0 -155
  1278. package/src/Slot/Slot.tsx +0 -238
  1279. package/src/Slot/__tests__/Slot.test.tsx +0 -273
  1280. package/src/Slot/__tests__/composeEventHandlers.test.ts +0 -74
  1281. package/src/Slot/composeEventHandlers.ts +0 -62
  1282. package/src/Slot/index.ts +0 -3
  1283. package/src/Slot/types.ts +0 -21
  1284. package/src/SplitButton/README.md +0 -225
  1285. package/src/SplitButton/SplitButton.tsx +0 -457
  1286. package/src/SplitButton/SplitButtonContext.ts +0 -26
  1287. package/src/SplitButton/__tests__/SplitButton.accessibility.test.tsx +0 -55
  1288. package/src/SplitButton/__tests__/SplitButton.asChild.test.tsx +0 -51
  1289. package/src/SplitButton/__tests__/SplitButton.basic-rendering.test.tsx +0 -57
  1290. package/src/SplitButton/__tests__/SplitButton.data-attributes.test.tsx +0 -28
  1291. package/src/SplitButton/__tests__/SplitButton.disabled.test.tsx +0 -79
  1292. package/src/SplitButton/__tests__/SplitButton.error-handling.test.tsx +0 -29
  1293. package/src/SplitButton/__tests__/SplitButton.keyboard-interaction.test.tsx +0 -56
  1294. package/src/SplitButton/__tests__/SplitButton.state-modes.test.tsx +0 -68
  1295. package/src/SplitButton/index.ts +0 -2
  1296. package/src/SplitButton/types.ts +0 -186
  1297. package/src/Status/README.md +0 -50
  1298. package/src/Status/Status.tsx +0 -72
  1299. package/src/Status/__tests__/Status.test.tsx +0 -33
  1300. package/src/Status/index.ts +0 -2
  1301. package/src/Status/types.ts +0 -20
  1302. package/src/Switch/README.md +0 -126
  1303. package/src/Switch/Switch.tsx +0 -203
  1304. package/src/Switch/SwitchContext.ts +0 -20
  1305. package/src/Switch/__tests__/Switch.asChild.test.tsx +0 -38
  1306. package/src/Switch/__tests__/Switch.basic-rendering.test.tsx +0 -102
  1307. package/src/Switch/__tests__/Switch.contract.test.tsx +0 -114
  1308. package/src/Switch/__tests__/Switch.controlled-state.test.tsx +0 -77
  1309. package/src/Switch/__tests__/Switch.disabled.test.tsx +0 -55
  1310. package/src/Switch/__tests__/Switch.error-handling.test.tsx +0 -20
  1311. package/src/Switch/__tests__/Switch.form.test.tsx +0 -55
  1312. package/src/Switch/__tests__/Switch.keyboard-interaction.test.tsx +0 -56
  1313. package/src/Switch/__tests__/Switch.recipe.test.ts +0 -19
  1314. package/src/Switch/__tests__/Switch.thumb.test.tsx +0 -84
  1315. package/src/Switch/__tests__/Switch.uncontrolled-state.test.tsx +0 -118
  1316. package/src/Switch/hooks/index.ts +0 -2
  1317. package/src/Switch/hooks/useSwitchContext.ts +0 -1
  1318. package/src/Switch/hooks/useSwitchRoot.ts +0 -49
  1319. package/src/Switch/index.ts +0 -3
  1320. package/src/Switch/types.ts +0 -95
  1321. package/src/Table/README.md +0 -307
  1322. package/src/Table/Table.tsx +0 -636
  1323. package/src/Table/TableExpandableContext.ts +0 -7
  1324. package/src/Table/__tests__/Table.Body.test.tsx +0 -61
  1325. package/src/Table/__tests__/Table.Caption.test.tsx +0 -70
  1326. package/src/Table/__tests__/Table.Cell.test.tsx +0 -73
  1327. package/src/Table/__tests__/Table.DetailRow.test.tsx +0 -83
  1328. package/src/Table/__tests__/Table.ExpandTrigger.test.tsx +0 -102
  1329. package/src/Table/__tests__/Table.Expandable.test.tsx +0 -121
  1330. package/src/Table/__tests__/Table.Footer.test.tsx +0 -61
  1331. package/src/Table/__tests__/Table.Head.test.tsx +0 -61
  1332. package/src/Table/__tests__/Table.Header.test.tsx +0 -73
  1333. package/src/Table/__tests__/Table.Root.test.tsx +0 -49
  1334. package/src/Table/__tests__/Table.Row.test.tsx +0 -67
  1335. package/src/Table/__tests__/Table.ScrollArea.test.tsx +0 -83
  1336. package/src/Table/__tests__/Table.contract.test.tsx +0 -80
  1337. package/src/Table/index.ts +0 -2
  1338. package/src/Table/types.ts +0 -237
  1339. package/src/Tabs/README.md +0 -111
  1340. package/src/Tabs/Tabs.tsx +0 -465
  1341. package/src/Tabs/TabsContext.ts +0 -21
  1342. package/src/Tabs/__tests__/Tabs.activation-mode.test.tsx +0 -172
  1343. package/src/Tabs/__tests__/Tabs.asChild.test.tsx +0 -91
  1344. package/src/Tabs/__tests__/Tabs.basic-rendering.test.tsx +0 -498
  1345. package/src/Tabs/__tests__/Tabs.change-event-callbacks.test.tsx +0 -157
  1346. package/src/Tabs/__tests__/Tabs.contract.test.tsx +0 -153
  1347. package/src/Tabs/__tests__/Tabs.controlled-state.test.tsx +0 -152
  1348. package/src/Tabs/__tests__/Tabs.disabled-tabs.test.tsx +0 -239
  1349. package/src/Tabs/__tests__/Tabs.error-handling.test.tsx +0 -82
  1350. package/src/Tabs/__tests__/Tabs.fixtures.ts +0 -171
  1351. package/src/Tabs/__tests__/Tabs.imperative-api.test.tsx +0 -118
  1352. package/src/Tabs/__tests__/Tabs.keyboard-interaction.test.tsx +0 -192
  1353. package/src/Tabs/__tests__/Tabs.lazy-mount.test.tsx +0 -78
  1354. package/src/Tabs/__tests__/Tabs.mouse-interaction.test.tsx +0 -216
  1355. package/src/Tabs/__tests__/Tabs.reading-direction.test.tsx +0 -58
  1356. package/src/Tabs/__tests__/Tabs.uncontrolled-state.test.tsx +0 -197
  1357. package/src/Tabs/hooks/index.ts +0 -4
  1358. package/src/Tabs/hooks/useTabsContent.ts +0 -32
  1359. package/src/Tabs/hooks/useTabsContext.ts +0 -1
  1360. package/src/Tabs/hooks/useTabsRoot.ts +0 -172
  1361. package/src/Tabs/hooks/useTabsTrigger.ts +0 -116
  1362. package/src/Tabs/index.ts +0 -3
  1363. package/src/Tabs/types.ts +0 -166
  1364. package/src/Tabs/utils.ts +0 -8
  1365. package/src/Textarea/README.md +0 -98
  1366. package/src/Textarea/Textarea.tsx +0 -104
  1367. package/src/Textarea/__tests__/Textarea.asChild.test.tsx +0 -85
  1368. package/src/Textarea/__tests__/Textarea.basic-rendering.test.tsx +0 -112
  1369. package/src/Textarea/__tests__/Textarea.disabled.test.tsx +0 -49
  1370. package/src/Textarea/__tests__/Textarea.field-integration.test.tsx +0 -134
  1371. package/src/Textarea/index.ts +0 -2
  1372. package/src/Textarea/types.ts +0 -28
  1373. package/src/Toggle/README.md +0 -97
  1374. package/src/Toggle/Toggle.tsx +0 -126
  1375. package/src/Toggle/__tests__/Toggle.asChild.test.tsx +0 -42
  1376. package/src/Toggle/__tests__/Toggle.basic-rendering.test.tsx +0 -33
  1377. package/src/Toggle/__tests__/Toggle.controlled-state.test.tsx +0 -60
  1378. package/src/Toggle/__tests__/Toggle.disabled.test.tsx +0 -34
  1379. package/src/Toggle/__tests__/Toggle.keyboard-interaction.test.tsx +0 -42
  1380. package/src/Toggle/__tests__/Toggle.uncontrolled-state.test.tsx +0 -40
  1381. package/src/Toggle/index.ts +0 -2
  1382. package/src/Toggle/types.ts +0 -77
  1383. package/src/ToggleGroup/README.md +0 -137
  1384. package/src/ToggleGroup/ToggleGroup.tsx +0 -321
  1385. package/src/ToggleGroup/ToggleGroupContext.ts +0 -9
  1386. package/src/ToggleGroup/__tests__/ToggleGroup.asChild.test.tsx +0 -85
  1387. package/src/ToggleGroup/__tests__/ToggleGroup.basic-rendering.test.tsx +0 -59
  1388. package/src/ToggleGroup/__tests__/ToggleGroup.disabled.test.tsx +0 -54
  1389. package/src/ToggleGroup/__tests__/ToggleGroup.dynamic-items.test.tsx +0 -70
  1390. package/src/ToggleGroup/__tests__/ToggleGroup.error-handling.test.tsx +0 -23
  1391. package/src/ToggleGroup/__tests__/ToggleGroup.keyboard-interaction.test.tsx +0 -173
  1392. package/src/ToggleGroup/__tests__/ToggleGroup.multiple-mode.test.tsx +0 -144
  1393. package/src/ToggleGroup/__tests__/ToggleGroup.reading-direction.test.tsx +0 -28
  1394. package/src/ToggleGroup/__tests__/ToggleGroup.ref-forwarding.test.tsx +0 -58
  1395. package/src/ToggleGroup/__tests__/ToggleGroup.single-mode.test.tsx +0 -139
  1396. package/src/ToggleGroup/hooks/index.ts +0 -2
  1397. package/src/ToggleGroup/hooks/useToggleGroupContext.ts +0 -1
  1398. package/src/ToggleGroup/hooks/useToggleGroupRoot.ts +0 -130
  1399. package/src/ToggleGroup/index.ts +0 -2
  1400. package/src/ToggleGroup/types.ts +0 -165
  1401. package/src/Tooltip/README.md +0 -214
  1402. package/src/Tooltip/Tooltip.tsx +0 -369
  1403. package/src/Tooltip/TooltipContext.ts +0 -20
  1404. package/src/Tooltip/__tests__/Tooltip.asChild.test.tsx +0 -77
  1405. package/src/Tooltip/__tests__/Tooltip.basic-rendering.test.tsx +0 -230
  1406. package/src/Tooltip/__tests__/Tooltip.controlled-state.test.tsx +0 -128
  1407. package/src/Tooltip/__tests__/Tooltip.error-handling.test.tsx +0 -37
  1408. package/src/Tooltip/__tests__/Tooltip.escape-hatches.test.tsx +0 -146
  1409. package/src/Tooltip/__tests__/Tooltip.focus-interaction.test.tsx +0 -88
  1410. package/src/Tooltip/__tests__/Tooltip.hover-interaction.test.tsx +0 -179
  1411. package/src/Tooltip/__tests__/Tooltip.keyboard-interaction.test.tsx +0 -219
  1412. package/src/Tooltip/__tests__/Tooltip.skip-delay.test.tsx +0 -232
  1413. package/src/Tooltip/__tests__/Tooltip.timer-coordination.test.tsx +0 -223
  1414. package/src/Tooltip/__tests__/Tooltip.uncontrolled-state.test.tsx +0 -67
  1415. package/src/Tooltip/hooks/__tests__/useTooltipProvider.test.tsx +0 -40
  1416. package/src/Tooltip/hooks/index.ts +0 -4
  1417. package/src/Tooltip/hooks/useTooltipContent.ts +0 -56
  1418. package/src/Tooltip/hooks/useTooltipProvider.ts +0 -79
  1419. package/src/Tooltip/hooks/useTooltipRoot.ts +0 -130
  1420. package/src/Tooltip/hooks/useTooltipTrigger.ts +0 -44
  1421. package/src/Tooltip/index.ts +0 -2
  1422. package/src/Tooltip/types.ts +0 -193
  1423. package/src/Tree/README.md +0 -403
  1424. package/src/Tree/Tree.tsx +0 -771
  1425. package/src/Tree/TreeContext.ts +0 -24
  1426. package/src/Tree/__tests__/Tree.aria.test.tsx +0 -53
  1427. package/src/Tree/__tests__/Tree.asChild.test.tsx +0 -134
  1428. package/src/Tree/__tests__/Tree.basic-rendering.test.tsx +0 -111
  1429. package/src/Tree/__tests__/Tree.branch-behaviour.test.tsx +0 -87
  1430. package/src/Tree/__tests__/Tree.controlled-expansion.test.tsx +0 -92
  1431. package/src/Tree/__tests__/Tree.data-attributes.test.tsx +0 -88
  1432. package/src/Tree/__tests__/Tree.disabled-items.test.tsx +0 -196
  1433. package/src/Tree/__tests__/Tree.error-handling.test.tsx +0 -71
  1434. package/src/Tree/__tests__/Tree.forceMount.test.tsx +0 -72
  1435. package/src/Tree/__tests__/Tree.keyboard-interaction.test.tsx +0 -150
  1436. package/src/Tree/__tests__/Tree.multiple-selection.test.tsx +0 -151
  1437. package/src/Tree/__tests__/Tree.range-selection.test.tsx +0 -200
  1438. package/src/Tree/__tests__/Tree.recursion-depth.test.tsx +0 -73
  1439. package/src/Tree/__tests__/Tree.roving-tabindex.test.tsx +0 -117
  1440. package/src/Tree/__tests__/Tree.selection-path.test.tsx +0 -404
  1441. package/src/Tree/__tests__/Tree.single-selection.test.tsx +0 -108
  1442. package/src/Tree/__tests__/Tree.styled-wrapper.test.tsx +0 -159
  1443. package/src/Tree/__tests__/Tree.uncontrolled-expansion.test.tsx +0 -69
  1444. package/src/Tree/hooks/index.ts +0 -3
  1445. package/src/Tree/hooks/useTreeItemKeyboard.ts +0 -86
  1446. package/src/Tree/hooks/useTreePath.ts +0 -100
  1447. package/src/Tree/hooks/useTreeRoot.ts +0 -279
  1448. package/src/Tree/index.ts +0 -8
  1449. package/src/Tree/types.ts +0 -298
  1450. package/src/Tree/utils.ts +0 -101
  1451. package/src/VisuallyHidden/README.md +0 -58
  1452. package/src/VisuallyHidden/VisuallyHidden.tsx +0 -94
  1453. package/src/VisuallyHidden/__tests__/VisuallyHidden.test.tsx +0 -73
  1454. package/src/VisuallyHidden/index.ts +0 -2
  1455. package/src/VisuallyHidden/types.ts +0 -19
  1456. package/src/hooks/index.ts +0 -4
  1457. package/src/hooks/useCollection.ts +0 -74
  1458. package/src/hooks/useControllableState.ts +0 -81
  1459. package/src/hooks/useRovingTabindex.ts +0 -178
  1460. package/src/hooks/useTypeahead.ts +0 -95
  1461. package/src/index.ts +0 -52
  1462. package/src/test/intersectionObserverPolyfill.ts +0 -90
  1463. package/src/test/popoverPolyfill.ts +0 -86
  1464. package/src/test/resizeObserverPolyfill.ts +0 -80
  1465. package/src/test/scrollPolyfill.ts +0 -23
  1466. package/src/types.ts +0 -14
  1467. package/src/useLocalStorage/__tests__/useLocalStorage.reading.test.tsx +0 -31
  1468. package/src/useLocalStorage/__tests__/useLocalStorage.resilience.test.tsx +0 -97
  1469. package/src/useLocalStorage/__tests__/useLocalStorage.ssr.test.tsx +0 -20
  1470. package/src/useLocalStorage/__tests__/useLocalStorage.writing.test.tsx +0 -72
  1471. package/src/useLocalStorage/index.ts +0 -1
  1472. package/src/useLocalStorage/useLocalStorage.ts +0 -140
  1473. package/src/useMediaQuery/README.md +0 -66
  1474. package/src/useMediaQuery/__tests__/useMediaQuery.matching.test.tsx +0 -42
  1475. package/src/useMediaQuery/__tests__/useMediaQuery.ssr.test.tsx +0 -19
  1476. package/src/useMediaQuery/__tests__/useMediaQuery.subscription.test.tsx +0 -89
  1477. package/src/useMediaQuery/index.ts +0 -1
  1478. package/src/useMediaQuery/useMediaQuery.ts +0 -49
  1479. package/src/usePagination/README.md +0 -170
  1480. package/src/usePagination/__tests__/usePagination.navigation.test.tsx +0 -109
  1481. package/src/usePagination/__tests__/usePagination.page-count.test.tsx +0 -56
  1482. package/src/usePagination/__tests__/usePagination.page-state.test.tsx +0 -87
  1483. package/src/usePagination/__tests__/usePagination.range.test.tsx +0 -82
  1484. package/src/usePagination/__tests__/usePagination.slice.test.tsx +0 -59
  1485. package/src/usePagination/__tests__/usePagination.windowing.test.tsx +0 -68
  1486. package/src/usePagination/index.ts +0 -1
  1487. package/src/usePagination/usePagination.ts +0 -292
  1488. package/src/utils/__tests__/createStrictContext.test.tsx +0 -69
  1489. package/src/utils/__tests__/deriveId.test.ts +0 -28
  1490. package/src/utils/__tests__/getKeyToActionMap.test.ts +0 -106
  1491. package/src/utils/createStrictContext.ts +0 -53
  1492. package/src/utils/deriveId.ts +0 -31
  1493. package/src/utils/focusable.ts +0 -15
  1494. package/src/utils/getKeyToActionMap.ts +0 -95
  1495. package/src/utils/index.ts +0 -4
@@ -1,898 +0,0 @@
1
- import {
2
- DragEvent,
3
- KeyboardEvent,
4
- MouseEvent,
5
- PointerEvent,
6
- useCallback,
7
- useEffect,
8
- useMemo,
9
- useRef,
10
- } from "react";
11
-
12
- import { useCarouselContext } from "./useCarouselContext";
13
-
14
- // A pointer movement below this many pixels (along the scroll axis) is
15
- // still a click, not a drag — so a link/button inside a slide keeps
16
- // working under the pointer that just tapped it.
17
- const DRAG_THRESHOLD_PX = 3;
18
-
19
- // Amplifies the pointer delta applied to scrollLeft/scrollTop during a
20
- // drag. A slide can be many hundreds of pixels wide, and a literal 1:1
21
- // ratio means dragging the slide's full width to move through it once —
22
- // far more physical movement than the gesture should cost. 2x means a
23
- // drag needs to cover only half the on-screen distance to produce the
24
- // same scroll, without introducing momentum (the multiplier only scales
25
- // the *tracked* delta; there's still no motion after release).
26
- const DRAG_SENSITIVITY = 2;
27
-
28
- function clamp(value: number, min: number, max: number): number {
29
- return Math.min(Math.max(value, min), max);
30
- }
31
-
32
- /**
33
- * Owns the Viewport-side scroll-state sync — bidirectional.
34
- *
35
- * **State → scroll.** When `currentPage` flips for any reason
36
- * (NextTrigger, Indicator click, autoplay tick, imperative goTo), the
37
- * effect locates the first slide of the target page via the published
38
- * `slidesRef`, reads its `getBoundingClientRect` relative to the
39
- * viewport, and calls `scrollTo` so the visual surface tracks React
40
- * state. The current `scrollLeft` is included in the target so the
41
- * calculation is correct mid-scroll. The run also asserts
42
- * `isProgrammaticScrollRef` so the IntersectionObserver fallback
43
- * doesn't treat the in-flight animation as a user scroll and undo the
44
- * page change; the flag clears on `scrollend` (with a timeout
45
- * fallback for environments that don't fire it).
46
- *
47
- * **Scroll → state.** When the user swipes the viewport, the browser
48
- * fires `scrollsnapchange` with the new snap target. The handler
49
- * looks up which slide that target is, computes
50
- * `floor(slideIndex / slidesPerPage)`, and calls `goTo` on the new
51
- * page (skipping when the page is unchanged so consumers don't see
52
- * spurious onPageChange callbacks, and bailing when the snap target
53
- * isn't one of our registered slides). An `IntersectionObserver`
54
- * provides the same page-drive for browsers without `scrollsnapchange`,
55
- * but stands down when the event is supported (it is authoritative);
56
- * the observer still always feeds `isInView`.
57
- *
58
- * **Keyboard → state.** Returns an `onKeyDown` handler that wires the
59
- * WAI-ARIA Carousel pattern arrow keys (`ArrowRight` / `ArrowLeft` for
60
- * next / previous) plus `Home` / `End` (first / last) onto the same
61
- * imperative API the trigger buttons call, so smooth scroll matches
62
- * the click path. The handler only fires when the Viewport itself is
63
- * the focus target — focus inside a slide keeps its native arrow-key
64
- * semantics — and respects `canGoNext` / `canGoPrevious` so it clamps
65
- * at the ends.
66
- */
67
- export function useCarouselViewport() {
68
- const {
69
- slidesRef,
70
- slideKeys,
71
- slidesPerPage,
72
- effectiveSlidesPerMove,
73
- maxOffset,
74
- currentPageOffset,
75
- pageForSlideIndex,
76
- totalPages,
77
- currentPage,
78
- goTo,
79
- next,
80
- previous,
81
- canGoNext,
82
- canGoPrevious,
83
- transition,
84
- snapAlign,
85
- orientation,
86
- loop,
87
- allowMouseDrag,
88
- onDragStatusChange,
89
- onOverscrollStatusChange,
90
- inViewThreshold,
91
- refreshTick,
92
- visibleSlideIndicesRef,
93
- setSlideInView,
94
- isProgrammaticScrollRef,
95
- instantScrollRef,
96
- setDragging,
97
- setOverscrolling,
98
- setScrollProgress,
99
- setSlideProgress,
100
- } = useCarouselContext();
101
- // The observer's own `threshold` option accepts a number or number[]
102
- // as-is; for the "in view" cutoff a single number is used directly, and
103
- // an array uses its highest value (the strictest crossing) — matching
104
- // the single-boolean semantics `isInView`/the IO page-drive fallback need.
105
- const inViewCutoff = Array.isArray(inViewThreshold)
106
- ? Math.max(...inViewThreshold)
107
- : inViewThreshold;
108
- const internalRef = useRef<HTMLDivElement>(null);
109
- // Set to true by the scrollsnapchange handler and the IntersectionObserver
110
- // callback before they call goTo(), so the scroll effect knows the page
111
- // change originated from a user scroll (CSS snap already positioned the
112
- // viewport) and must not call scrollTo() again.
113
- const isUserScrollRef = useRef(false);
114
-
115
- // Callback ref so the consumer can compose their own ref with ours
116
- // via `composeRefs` later (cycle 22 introduces asChild). For now,
117
- // it just stashes the node.
118
- const viewportRef = useCallback((node: HTMLDivElement | null) => {
119
- internalRef.current = node;
120
- }, []);
121
-
122
- // Mouse click-and-drag scrolling. Opt-in via `allowMouseDrag` (default
123
- // false) — an unconditionally-on drag could conflict with a consumer's own
124
- // drag-sensitive slide content (a nested carousel, a draggable card, a
125
- // canvas). When enabled, tracks the pointer at DRAG_SENSITIVITY× (no
126
- // momentum — the multiplier only scales the tracked delta, motion still
127
- // stops dead on release) by writing scrollLeft/scrollTop directly during
128
- // the drag; release lets the
129
- // existing scroll-snap-type settle to the nearest slide, which the
130
- // scrollsnapchange sync above already picks up for free — no extra "scroll
131
- // → state" wiring needed here. `dragStateRef.current.dragging` only flips
132
- // true once the pointer clears DRAG_THRESHOLD_PX, so a plain click (no
133
- // capture, no preventDefault) still reaches a link/button under the
134
- // pointer untouched. The delta is always computed against the *start*
135
- // scroll position (not incrementally from the last move), and
136
- // scrollLeft/scrollTop is direction-mode-agnostic — dragging right always
137
- // reveals content that was to the left, in both LTR and the
138
- // now-standardized negative-scrollLeft RTL convention — so no RTL
139
- // special-casing is needed.
140
- const dragStateRef = useRef<{
141
- pointerId: number;
142
- startClient: number;
143
- startScroll: number;
144
- dragging: boolean;
145
- // Set while the drag is pushing past a boundary the carousel has
146
- // already reached — see the overscroll detection in onPointerMove.
147
- overscrollEdge: "start" | "end" | null;
148
- } | null>(null);
149
- // Browsers still synthesize a click at the release point after a drag
150
- // unless it's suppressed — set once a drag crosses the threshold, consumed
151
- // (and cleared) by the next click, so a link/button under the release
152
- // point doesn't fire.
153
- const suppressNextClickRef = useRef(false);
154
-
155
- const onPointerDown = useCallback(
156
- (event: PointerEvent<HTMLDivElement>) => {
157
- if (
158
- !allowMouseDrag ||
159
- event.pointerType !== "mouse" ||
160
- transition !== "slide"
161
- ) {
162
- return;
163
- }
164
- // Guaranteed populated — this handler only ever fires as a React
165
- // event on the very element viewportRef attached to.
166
- const viewport = internalRef.current!;
167
- const vertical = orientation === "vertical";
168
- dragStateRef.current = {
169
- pointerId: event.pointerId,
170
- startClient: vertical ? event.clientY : event.clientX,
171
- startScroll: vertical ? viewport.scrollTop : viewport.scrollLeft,
172
- dragging: false,
173
- overscrollEdge: null,
174
- };
175
- },
176
- [allowMouseDrag, orientation, transition],
177
- );
178
-
179
- // A real <img>/<a> inside a slide is natively draggable, and starting a
180
- // drag over one fires the browser's own HTML5 drag-and-drop (the
181
- // semi-transparent ghost that follows the cursor) — which visually
182
- // competes with the custom pointer-based drag-to-scroll below. Only
183
- // suppressed when allowMouseDrag is opted into; a consumer who hasn't
184
- // enabled our drag-to-scroll keeps native image/link dragging untouched.
185
- const onDragStart = useCallback(
186
- (event: DragEvent<HTMLDivElement>) => {
187
- if (!allowMouseDrag) return;
188
- event.preventDefault();
189
- },
190
- [allowMouseDrag],
191
- );
192
-
193
- const onPointerMove = useCallback(
194
- (event: PointerEvent<HTMLDivElement>) => {
195
- const drag = dragStateRef.current;
196
- if (!drag || event.pointerId !== drag.pointerId) return;
197
- // Guaranteed populated (see onPointerDown).
198
- const viewport = internalRef.current!;
199
- const vertical = orientation === "vertical";
200
- const clientPos = vertical ? event.clientY : event.clientX;
201
- const delta = clientPos - drag.startClient;
202
-
203
- if (!drag.dragging) {
204
- if (Math.abs(delta) < DRAG_THRESHOLD_PX) return;
205
- drag.dragging = true;
206
- suppressNextClickRef.current = true;
207
- viewport.setPointerCapture?.(drag.pointerId);
208
- viewport.setAttribute("data-dragging", "");
209
- setDragging(true);
210
- onDragStatusChange?.({
211
- type: "dragging.start",
212
- page: currentPage,
213
- isDragging: true,
214
- });
215
- } else {
216
- onDragStatusChange?.({
217
- type: "dragging",
218
- page: currentPage,
219
- isDragging: true,
220
- });
221
- }
222
-
223
- // Overscroll: dragging further past a boundary the carousel has
224
- // already reached. Positive delta drags toward the start edge,
225
- // negative delta toward the end edge — see the scrollLeft/scrollTop
226
- // assignment below (the same convention the regular drag scroll
227
- // uses). Only meaningful once the drag threshold is crossed
228
- // (drag.dragging, asserted above).
229
- const overscrollEdge =
230
- delta > 0 && !canGoPrevious
231
- ? "start"
232
- : delta < 0 && !canGoNext
233
- ? "end"
234
- : null;
235
- if (overscrollEdge) {
236
- const amount = Math.abs(delta) * DRAG_SENSITIVITY;
237
- const type = drag.overscrollEdge ? "overscroll" : "overscroll.start";
238
- drag.overscrollEdge = overscrollEdge;
239
- setOverscrolling(true);
240
- viewport.setAttribute("data-overscroll", overscrollEdge);
241
- onOverscrollStatusChange?.({
242
- type,
243
- edge: overscrollEdge,
244
- source: "drag",
245
- amount,
246
- page: currentPage,
247
- });
248
- } else if (drag.overscrollEdge) {
249
- const endedEdge = drag.overscrollEdge;
250
- drag.overscrollEdge = null;
251
- setOverscrolling(false);
252
- viewport.removeAttribute("data-overscroll");
253
- onOverscrollStatusChange?.({
254
- type: "overscroll.end",
255
- edge: endedEdge,
256
- source: "drag",
257
- amount: 0,
258
- page: currentPage,
259
- });
260
- }
261
-
262
- event.preventDefault();
263
- const nextScroll = drag.startScroll - delta * DRAG_SENSITIVITY;
264
- if (vertical) viewport.scrollTop = nextScroll;
265
- else viewport.scrollLeft = nextScroll;
266
- },
267
- [
268
- orientation,
269
- currentPage,
270
- onDragStatusChange,
271
- setDragging,
272
- canGoNext,
273
- canGoPrevious,
274
- onOverscrollStatusChange,
275
- setOverscrolling,
276
- ],
277
- );
278
-
279
- const endDrag = useCallback(() => {
280
- const drag = dragStateRef.current;
281
- if (!drag) return;
282
- if (drag.dragging) {
283
- internalRef.current?.releasePointerCapture?.(drag.pointerId);
284
- internalRef.current?.removeAttribute("data-dragging");
285
- setDragging(false);
286
- onDragStatusChange?.({
287
- type: "dragging.end",
288
- page: currentPage,
289
- isDragging: false,
290
- });
291
- if (drag.overscrollEdge) {
292
- internalRef.current?.removeAttribute("data-overscroll");
293
- setOverscrolling(false);
294
- onOverscrollStatusChange?.({
295
- type: "overscroll.end",
296
- edge: drag.overscrollEdge,
297
- source: "drag",
298
- amount: 0,
299
- page: currentPage,
300
- });
301
- }
302
- }
303
- dragStateRef.current = null;
304
- }, [
305
- currentPage,
306
- onDragStatusChange,
307
- setDragging,
308
- onOverscrollStatusChange,
309
- setOverscrolling,
310
- ]);
311
-
312
- const onClickCapture = useCallback((event: MouseEvent<HTMLDivElement>) => {
313
- if (suppressNextClickRef.current) {
314
- suppressNextClickRef.current = false;
315
- event.preventDefault();
316
- event.stopPropagation();
317
- }
318
- }, []);
319
-
320
- // Read prefers-reduced-motion once on mount; choose scrollTo
321
- // behavior accordingly so we don't fight the OS-level setting.
322
- // `useMemo` runs during render, so this must be SSR-safe: on the server
323
- // there is no `window`, and reading it unguarded threw. Default to "smooth"
324
- // there — the first client scroll re-reads it anyway (nothing scrolls on the
325
- // server), so the resolved behaviour is never actually server-rendered.
326
- const scrollBehavior = useMemo<ScrollBehavior>(
327
- () =>
328
- typeof window !== "undefined" &&
329
- window.matchMedia?.("(prefers-reduced-motion: reduce)").matches
330
- ? "instant"
331
- : "smooth",
332
- [],
333
- );
334
-
335
- useEffect(() => {
336
- // transition="none" hands the visual to consumer CSS; we don't
337
- // touch viewport.scrollTo at all in that mode. loop="infinite" is driven by
338
- // the transform engine (useCarouselLoop), not native scroll — this effect
339
- // stands down for it.
340
- if (transition !== "slide" || loop === "infinite") return;
341
- const firstSlideKey = slideKeys[currentPageOffset];
342
- // No slides registered yet, or page out of range: nothing to scroll to.
343
- if (!firstSlideKey) return;
344
-
345
- // Both viewport ref and the slide element are guaranteed populated
346
- // here — the effect runs post-commit (after callback refs fire) and
347
- // any key in slideKeys was just registered into slidesRef in
348
- // lockstep by useCarouselRoot.registerSlide.
349
- // A user swipe via CSS scroll-snap has already positioned the viewport;
350
- // calling scrollTo on top would start a second animation and cause jank.
351
- if (isUserScrollRef.current) {
352
- isUserScrollRef.current = false;
353
- return;
354
- }
355
-
356
- const viewport = internalRef.current!;
357
-
358
- // Mark the scroll as programmatic so the IntersectionObserver
359
- // doesn't treat the in-flight animation as a user scroll and undo
360
- // the page change. next() / previous() also set this — re-asserting
361
- // here covers indicator-driven goTo and the initial scroll on
362
- // mount, neither of which goes through next() / previous().
363
- isProgrammaticScrollRef.current = true;
364
-
365
- // Scroll the *viewport itself* — never `targetEl.scrollIntoView()`, which
366
- // walks every scrollable ancestor (including the page/window) and so scrolls
367
- // the whole document when the carousel is off-screen. We read the target
368
- // slide's `getBoundingClientRect` relative to the viewport and add the delta
369
- // to the current scroll offset (so the maths is correct mid-scroll), then let
370
- // the consumer's `scroll-snap-align` make the final correction — we never
371
- // fight the snap engine. The scroll axis follows `orientation`; the cross axis
372
- // is untouched, so the viewport never drifts on the other axis. `start` aligns
373
- // the slide's leading edge to the viewport's; `center` centres it; `end`
374
- // aligns its trailing edge.
375
- const targetEl = slidesRef.current!.get(firstSlideKey);
376
- // A loop-mode switch reparents the slides into / out of the transform track,
377
- // so a slide can unmount + re-register in the same commit that re-runs this
378
- // effect: the key is still in slideKeys but its element isn't back in slidesRef
379
- // yet. Bail; the re-register bumps slideKeys and re-runs this against the
380
- // settled set. (Same race the --slide-progress effect below already guards.)
381
- if (!targetEl) return;
382
- const vertical = orientation === "vertical";
383
- const viewportRect = viewport.getBoundingClientRect();
384
- const targetRect = targetEl.getBoundingClientRect();
385
- const currentScroll = vertical ? viewport.scrollTop : viewport.scrollLeft;
386
- const delta = vertical
387
- ? targetRect.top - viewportRect.top
388
- : targetRect.left - viewportRect.left;
389
- // The target slide's own snapAlign (Carousel.Slide's `snapAlign` prop,
390
- // already merged with the root default) is read off the DOM rather than
391
- // context, since only the slide component knows whether it set a
392
- // per-slide override. `Carousel.Slide` always publishes data-snap-align
393
- // on a valid snap-start slide — the only kind `firstSlideKey` ever is
394
- // (see useCarouselSlide's isSnapStart gate) — so this is never
395
- // undefined in practice; no fallback needed. `snapAlign` (the root
396
- // value) stays a dependency below purely so this effect re-runs and
397
- // re-reads the DOM when it changes without an accompanying page change.
398
- const effectiveSnapAlign = targetEl.dataset.snapAlign;
399
- // For center/end, the leftover space must be measured against the whole
400
- // *page* (every slide sharing this page, edge to edge) rather than just
401
- // the leading slide's own box — a multi-slide page's other members would
402
- // otherwise be excluded from the alignment math entirely, undershooting
403
- // the scroll and leaving the page's trailing slide(s) clipped off-screen.
404
- // `start` doesn't depend on this (its alignOffset is always 0), but
405
- // computing it unconditionally costs nothing and keeps the code path
406
- // uniform. The last member's index is clamped to the actual slide count
407
- // (slidesPerPage can exceed how many slides really exist).
408
- const lastMemberIndex = Math.min(
409
- currentPageOffset + slidesPerPage - 1,
410
- slideKeys.length - 1,
411
- );
412
- // Present whenever targetEl is (a loop-mode reparent unmounts every slide
413
- // together, so the guard above already caught a mid-reparent run).
414
- const lastMemberEl = slidesRef.current!.get(slideKeys[lastMemberIndex])!;
415
- const lastMemberRect = lastMemberEl.getBoundingClientRect();
416
- // Computed as left/top + width/height, not the rect's own .right/.bottom
417
- // — real DOMRects derive those the same way, but keeping the maths
418
- // explicit here matches the plain-object rect fixtures used in tests.
419
- const pageSpan = vertical
420
- ? lastMemberRect.top + lastMemberRect.height - targetRect.top
421
- : lastMemberRect.left + lastMemberRect.width - targetRect.left;
422
- const leftoverSpace = vertical
423
- ? viewport.clientHeight - pageSpan
424
- : viewport.clientWidth - pageSpan;
425
- const alignOffset =
426
- effectiveSnapAlign === "center"
427
- ? leftoverSpace / 2
428
- : effectiveSnapAlign === "end"
429
- ? leftoverSpace
430
- : 0;
431
- const position = currentScroll + delta - alignOffset;
432
- // instantScrollRef is a one-shot override set by this specific next() /
433
- // previous() / goTo() call — consumed (and cleared) immediately so it
434
- // never leaks into a later page change that didn't request it (e.g. a
435
- // user swipe or a subsequent plain next()).
436
- const behavior = instantScrollRef.current ? "instant" : scrollBehavior;
437
- instantScrollRef.current = false;
438
- viewport.scrollTo(
439
- vertical ? { top: position, behavior } : { left: position, behavior },
440
- );
441
-
442
- // Clear the programmatic-scroll guard once the animation settles.
443
- // `scrollend` is the reliable signal in real browsers; the setTimeout
444
- // is a fallback for environments (jsdom, older Safari) that don't fire
445
- // it. The timeout is longer than any typical smooth-scroll duration so
446
- // real-browser IO entries that fire mid-animation are still suppressed.
447
- // Re-clearing the flag is harmless, so no idempotency guard is needed.
448
- const clearFlag = () => {
449
- isProgrammaticScrollRef.current = false;
450
- };
451
- viewport.addEventListener("scrollend", clearFlag, { once: true });
452
- const timeoutId = setTimeout(() => {
453
- viewport.removeEventListener("scrollend", clearFlag);
454
- clearFlag();
455
- }, 600);
456
- return () => {
457
- clearTimeout(timeoutId);
458
- viewport.removeEventListener("scrollend", clearFlag);
459
- };
460
- }, [
461
- transition,
462
- snapAlign,
463
- orientation,
464
- loop,
465
- currentPageOffset,
466
- slidesPerPage,
467
- slideKeys,
468
- slidesRef,
469
- refreshTick,
470
- scrollBehavior,
471
- ]);
472
-
473
- // Keeps every page's leading slide `scroll-margin` extended out to its
474
- // page's actual last member, so a user's own swipe/wheel/touch — settled
475
- // entirely by the browser's native scroll-snap, never by the scrollTo
476
- // effect above — also spans the whole page for center/end alignment
477
- // instead of just the leading slide's own box (the same fix applied to
478
- // the programmatic scroll, just expressed as a native snap-area
479
- // extension rather than a scrollTo offset). A single slide-per-page
480
- // carousel needs no extension at all, so this is a no-op there. Runs for
481
- // every page up front (not just the current one), since a fast native
482
- // fling under `mandatory` snapping can settle on a page the effect above
483
- // never programmatically targeted.
484
- useEffect(() => {
485
- if (transition !== "slide" || slidesPerPage <= 1) return;
486
- // Guaranteed populated — this effect only runs post-commit, and
487
- // slidesRef.current is a plain useRef(new Map()) in useCarouselRoot,
488
- // never null.
489
- const viewport = internalRef.current!;
490
- const vertical = orientation === "vertical";
491
-
492
- const recomputeScrollMargins = () => {
493
- const slides = slidesRef.current!;
494
- for (let page = 0; page < totalPages; page++) {
495
- const offset = Math.min(page * effectiveSlidesPerMove, maxOffset);
496
- const lastIndex = Math.min(
497
- offset + slidesPerPage - 1,
498
- slideKeys.length - 1,
499
- );
500
- // Guaranteed populated — any key in slideKeys was just registered
501
- // into slidesRef in lockstep by useCarouselRoot.registerSlide (see
502
- // the scroll-position effect above).
503
- const leadingEl = slides.get(slideKeys[offset])!;
504
- const lastEl = slides.get(slideKeys[lastIndex])!;
505
- const leadingRect = leadingEl.getBoundingClientRect();
506
- const lastRect = lastEl.getBoundingClientRect();
507
- // Computed as left/top + width/height (not .right/.bottom) to match
508
- // the plain-object rect fixtures used in tests — real DOMRects
509
- // derive those the same way.
510
- const extra = vertical
511
- ? lastRect.top + lastRect.height - (leadingRect.top + leadingRect.height)
512
- : lastRect.left + lastRect.width - (leadingRect.left + leadingRect.width);
513
- leadingEl.style.scrollMarginInlineEnd = vertical ? "" : `${extra}px`;
514
- leadingEl.style.scrollMarginBlockEnd = vertical ? `${extra}px` : "";
515
- }
516
- };
517
-
518
- recomputeScrollMargins();
519
- // Equal-share slide sizes derive from the viewport's own width/height, so
520
- // the px extension above must stay current across resizes, not just
521
- // page/slide-count changes (which the effect already re-runs for).
522
- const resizeObserver = new ResizeObserver(recomputeScrollMargins);
523
- resizeObserver.observe(viewport);
524
- return () => resizeObserver.disconnect();
525
- }, [
526
- transition,
527
- orientation,
528
- slidesPerPage,
529
- effectiveSlidesPerMove,
530
- maxOffset,
531
- totalPages,
532
- slideKeys,
533
- slidesRef,
534
- ]);
535
-
536
- // Continuous scroll-progress signal — a live 0..1 global value plus a
537
- // per-slide -1..1 center-distance, both mirrored onto CSS custom
538
- // properties for real-time visual consumption without a React
539
- // re-render. Unconditional (unlike the scroll-margin effect above,
540
- // which is meaningless outside `transition: "slide"`) — progress
541
- // should degrade gracefully to near-zero in `fade` mode rather than
542
- // not exist at all.
543
- useEffect(() => {
544
- const viewport = internalRef.current!;
545
- const vertical = orientation === "vertical";
546
- // Coalesces any number of scroll/resize signals within one animation
547
- // frame into a single recompute — a native `scroll` event can fire many
548
- // times per frame during momentum scrolling, and each recompute reads
549
- // getBoundingClientRect() per slide (a forced-layout read), so batching
550
- // avoids a textbook scroll-jank anti-pattern. `pendingFrame` is a plain
551
- // closure variable, not a ref — it never needs to outlive this specific
552
- // effect instance.
553
- let pendingFrame: number | null = null;
554
-
555
- const recomputeProgress = () => {
556
- const maxScroll = vertical
557
- ? viewport.scrollHeight - viewport.clientHeight
558
- : viewport.scrollWidth - viewport.clientWidth;
559
- const scrollPos = vertical ? viewport.scrollTop : viewport.scrollLeft;
560
- // Math.abs, not the raw signed value — modern browsers standardize
561
- // RTL scrollLeft on the "negative" convention (0 at the start, down
562
- // to -maxScroll at the end), so this makes "distance travelled from
563
- // the start" monotonic in both directions with no dir/
564
- // getComputedStyle read, mirroring why the drag handler above needs
565
- // no RTL special-casing either.
566
- const scrollProgress =
567
- maxScroll > 0 ? clamp(Math.abs(scrollPos) / maxScroll, 0, 1) : 0;
568
- setScrollProgress(scrollProgress);
569
- viewport.style.setProperty("--carousel-progress", String(scrollProgress));
570
-
571
- const viewportRect = viewport.getBoundingClientRect();
572
- const viewportHalfSize = vertical
573
- ? viewportRect.height / 2
574
- : viewportRect.width / 2;
575
- const viewportCenter = vertical
576
- ? viewportRect.top + viewportHalfSize
577
- : viewportRect.left + viewportHalfSize;
578
- const slides = slidesRef.current!;
579
- slideKeys.forEach((key, index) => {
580
- const slideEl = slides.get(key);
581
- // A slide can unmount in the same commit that re-runs this effect
582
- // (orientation is one of its other dependencies) — the removed
583
- // slide's ref callback deletes it from slidesRef synchronously
584
- // during the mutation phase, while this effect's own closure still
585
- // has the pre-drop slideKeys (its slideKeys update hasn't flushed
586
- // a render yet). Skip the orphaned key; the next slideKeys change
587
- // re-runs this effect against the settled set. Same race as the
588
- // IntersectionObserver effect above.
589
- if (!slideEl) return;
590
- const slideRect = slideEl.getBoundingClientRect();
591
- const slideCenter = vertical
592
- ? slideRect.top + slideRect.height / 2
593
- : slideRect.left + slideRect.width / 2;
594
- const slideProgress =
595
- viewportHalfSize > 0
596
- ? clamp((slideCenter - viewportCenter) / viewportHalfSize, -1, 1)
597
- : 0;
598
- setSlideProgress(index, slideProgress);
599
- slideEl.style.setProperty("--slide-progress", String(slideProgress));
600
- });
601
- };
602
-
603
- const scheduleRecompute = () => {
604
- if (pendingFrame !== null) return;
605
- pendingFrame = requestAnimationFrame(() => {
606
- pendingFrame = null;
607
- recomputeProgress();
608
- });
609
- };
610
-
611
- recomputeProgress();
612
- viewport.addEventListener("scroll", scheduleRecompute, { passive: true });
613
- const resizeObserver = new ResizeObserver(scheduleRecompute);
614
- resizeObserver.observe(viewport);
615
- return () => {
616
- viewport.removeEventListener("scroll", scheduleRecompute);
617
- resizeObserver.disconnect();
618
- if (pendingFrame !== null) cancelAnimationFrame(pendingFrame);
619
- };
620
- }, [orientation, slideKeys, slidesRef, setScrollProgress, setSlideProgress]);
621
-
622
- // Horizontal mouse-wheel translation. A physical scroll wheel (vertical
623
- // notches, deltaY only) already natively scrolls a vertically-scrollable
624
- // container, so orientation="vertical" needs nothing here. But browsers
625
- // only auto-translate a plain vertical wheel to horizontal scroll when
626
- // Shift is held, so a horizontal (the default) carousel gets no scroll at
627
- // all from a physical wheel without this. Registered via addEventListener
628
- // (not the React onWheel prop) with { passive: false } — React attaches
629
- // wheel listeners as passive by default, which would silently no-op
630
- // preventDefault() and let the page scroll vertically at the same time.
631
- // Deliberately stands down whenever deltaX is non-negligible: a trackpad
632
- // or Magic Mouse horizontal swipe already produces real deltaX and already
633
- // scrolls a horizontal viewport natively via the same mechanism as touch —
634
- // this must never fight that, only fill the gap a plain vertical wheel
635
- // leaves. deltaY is normalized from line/page units to pixels so a
636
- // physical wheel's larger, fewer DOM_DELTA_LINE ticks feel proportional to
637
- // a trackpad's many small DOM_DELTA_PIXEL ones.
638
- useEffect(() => {
639
- // Infinite is transform-driven, not a scroll container — no wheel-to-scroll.
640
- if (
641
- transition !== "slide" ||
642
- orientation === "vertical" ||
643
- loop === "infinite"
644
- )
645
- return;
646
- const viewport = internalRef.current!;
647
-
648
- const handler = (event: WheelEvent) => {
649
- if (Math.abs(event.deltaX) > 0.5) return;
650
- let deltaY = event.deltaY;
651
- if (event.deltaMode === WheelEvent.DOM_DELTA_LINE) {
652
- deltaY *= 16;
653
- } else if (event.deltaMode === WheelEvent.DOM_DELTA_PAGE) {
654
- deltaY *= viewport.clientWidth;
655
- }
656
-
657
- // Overscroll: a wheel notch pushing forward/backward while already
658
- // at that boundary. A single discrete tick — no meaningful distance
659
- // to report, unlike the continuous drag case.
660
- if (deltaY > 0 && !canGoNext) {
661
- onOverscrollStatusChange?.({
662
- type: "overscroll",
663
- edge: "end",
664
- source: "wheel",
665
- amount: 0,
666
- page: currentPage,
667
- });
668
- } else if (deltaY < 0 && !canGoPrevious) {
669
- onOverscrollStatusChange?.({
670
- type: "overscroll",
671
- edge: "start",
672
- source: "wheel",
673
- amount: 0,
674
- page: currentPage,
675
- });
676
- }
677
-
678
- event.preventDefault();
679
- viewport.scrollLeft += deltaY;
680
- };
681
-
682
- viewport.addEventListener("wheel", handler, { passive: false });
683
- return () => viewport.removeEventListener("wheel", handler);
684
- }, [
685
- transition,
686
- orientation,
687
- loop,
688
- canGoNext,
689
- canGoPrevious,
690
- currentPage,
691
- onOverscrollStatusChange,
692
- ]);
693
-
694
- // User-driven scroll → state. Listen for scrollsnapchange and update
695
- // currentPage from the snapped slide's index. The viewport ref is
696
- // guaranteed populated post-commit (callback ref runs first).
697
- useEffect(() => {
698
- // Infinite is transform-driven (useCarouselLoop) with no native scroll, so
699
- // it emits no scrollsnapchange — this sync is for the scroll-snap modes.
700
- if (transition !== "slide" || loop === "infinite") return;
701
- const viewport = internalRef.current!;
702
-
703
- const handler = (event: Event) => {
704
- // The snapped slide is reported on the axis the viewport scrolls:
705
- // snapTargetBlock for a vertical carousel, snapTargetInline otherwise.
706
- const snapEvent = event as Event & {
707
- snapTargetInline?: Element;
708
- snapTargetBlock?: Element;
709
- };
710
- const target =
711
- orientation === "vertical"
712
- ? snapEvent.snapTargetBlock
713
- : snapEvent.snapTargetInline;
714
- // findIndex returns -1 when the snap target isn't one of our
715
- // registered slides — e.g. a consumer-wrapped element inside the
716
- // viewport. Ignore those; only registered slides drive the page.
717
- const slideIndex = slideKeys.findIndex(
718
- (key) => slidesRef.current!.get(key) === target,
719
- );
720
- if (slideIndex < 0) return;
721
-
722
- const targetPage = pageForSlideIndex(slideIndex);
723
- if (targetPage !== currentPage) {
724
- isUserScrollRef.current = true;
725
- goTo(targetPage);
726
- }
727
- };
728
-
729
- viewport.addEventListener("scrollsnapchange", handler);
730
- return () => viewport.removeEventListener("scrollsnapchange", handler);
731
- }, [
732
- transition,
733
- loop,
734
- orientation,
735
- slideKeys,
736
- slidesRef,
737
- pageForSlideIndex,
738
- currentPage,
739
- goTo,
740
- ]);
741
-
742
- // IntersectionObserver fallback for browsers without scrollsnapchange,
743
- // and the source of truth for isInView() on the imperative API. The
744
- // observer fires whenever a slide crosses the inViewThreshold visibility
745
- // threshold (0.6 by default); the lowest-index visible slide derives the
746
- // active page.
747
- useEffect(() => {
748
- if (transition !== "slide") return;
749
-
750
- // When the browser fires scrollsnapchange (Chrome 129+), that event is
751
- // the authoritative source of the active page — snapTargetInline is the
752
- // precisely-snapped slide. The observer below then only feeds isInView.
753
- // Its lowest-index-visible heuristic is a coarse page fallback for
754
- // browsers without the event, and would mis-track a centre-aligned
755
- // carousel that shows several slides at once (it follows the leftmost
756
- // visible slide, not the centred one), so it must not drive the page
757
- // when the event is available.
758
- const supportsSnapEvents = "onscrollsnapchange" in window;
759
-
760
- const observer = new IntersectionObserver(
761
- (entries) => {
762
- // The live observer only observes elements still present in
763
- // slidesRef (the setup loop skips orphaned keys), and a stale
764
- // observer is disconnected on cleanup when the effect re-runs, so
765
- // by the time a callback fires both lookups (slideKeys.findIndex →
766
- // registered key, and the slidesRef get → element) resolve.
767
- for (const entry of entries) {
768
- const idx = slideKeys.findIndex(
769
- (key) => slidesRef.current!.get(key) === entry.target,
770
- );
771
- setSlideInView(
772
- idx,
773
- entry.isIntersecting && entry.intersectionRatio >= inViewCutoff,
774
- );
775
- }
776
-
777
- // isInView is updated above regardless; only the page-drive below
778
- // is the fallback that scrollsnapchange supersedes. Infinite is
779
- // transform-driven — its page never comes from viewport visibility — so
780
- // the page-drive stands down there too (the isInView feed above stays).
781
- if (supportsSnapEvents || loop === "infinite") return;
782
-
783
- const visible = visibleSlideIndicesRef.current;
784
- if (visible.size === 0) return;
785
- const firstVisible = Math.min(...visible);
786
- const targetPage = pageForSlideIndex(firstVisible);
787
- // Guard: if a programmatic scroll is in flight (e.g. user clicked
788
- // NextTrigger and the smooth-scroll animation hasn't settled), the
789
- // IO may still see the old slide as ≥ the cutoff visible. Calling
790
- // goTo here would undo the navigation, so skip until the flag clears.
791
- if (targetPage !== currentPage && !isProgrammaticScrollRef.current) {
792
- isUserScrollRef.current = true;
793
- goTo(targetPage);
794
- }
795
- },
796
- { threshold: inViewThreshold },
797
- );
798
-
799
- for (const key of slideKeys) {
800
- // A slide can unmount in the same commit that re-runs this effect — a
801
- // dynamic slide-count drop removes its element from slidesRef during the
802
- // mutation phase while this effect still closes over the pre-drop
803
- // slideKeys. Skip the orphaned key; the registerSlide that unmounted it
804
- // schedules a fresh slideKeys, re-running this effect to observe the
805
- // settled set.
806
- const element = slidesRef.current!.get(key);
807
- if (element) observer.observe(element);
808
- }
809
-
810
- return () => observer.disconnect();
811
- }, [
812
- transition,
813
- loop,
814
- slideKeys,
815
- slidesRef,
816
- pageForSlideIndex,
817
- currentPage,
818
- goTo,
819
- setSlideInView,
820
- visibleSlideIndicesRef,
821
- inViewThreshold,
822
- inViewCutoff,
823
- ]);
824
-
825
- // Keyboard navigation per the WAI-ARIA Carousel pattern: arrow keys
826
- // route through the same imperative API as the trigger buttons so the
827
- // smooth scroll and loop-wrap animation match the click path. The
828
- // event.target === currentTarget guard restricts handling to the
829
- // Viewport itself — focus inside a slide (e.g. on a link or form
830
- // control) keeps its native arrow-key semantics.
831
- const onKeyDown = useCallback(
832
- (event: KeyboardEvent<HTMLDivElement>) => {
833
- // Restrict to keypresses originating on the Viewport itself —
834
- // focus inside a slide (e.g. on a link or form control) keeps
835
- // its native arrow-key semantics.
836
- if (event.target !== event.currentTarget) return;
837
- // The paging arrows follow the scroll axis: Down/Up for a vertical
838
- // carousel, Right/Left otherwise. Home/End are axis-agnostic.
839
- const forwardKey = orientation === "vertical" ? "ArrowDown" : "ArrowRight";
840
- const backwardKey = orientation === "vertical" ? "ArrowUp" : "ArrowLeft";
841
- if (event.key === forwardKey) {
842
- event.preventDefault();
843
- if (canGoNext) {
844
- next();
845
- } else {
846
- onOverscrollStatusChange?.({
847
- type: "overscroll",
848
- edge: "end",
849
- source: "keyboard",
850
- amount: 0,
851
- page: currentPage,
852
- });
853
- }
854
- } else if (event.key === backwardKey) {
855
- event.preventDefault();
856
- if (canGoPrevious) {
857
- previous();
858
- } else {
859
- onOverscrollStatusChange?.({
860
- type: "overscroll",
861
- edge: "start",
862
- source: "keyboard",
863
- amount: 0,
864
- page: currentPage,
865
- });
866
- }
867
- } else if (event.key === "Home") {
868
- event.preventDefault();
869
- goTo(0);
870
- } else if (event.key === "End") {
871
- event.preventDefault();
872
- goTo(totalPages - 1);
873
- }
874
- },
875
- [
876
- orientation,
877
- canGoNext,
878
- canGoPrevious,
879
- next,
880
- previous,
881
- goTo,
882
- totalPages,
883
- currentPage,
884
- onOverscrollStatusChange,
885
- ],
886
- );
887
-
888
- return {
889
- viewportRef,
890
- onKeyDown,
891
- onDragStart,
892
- onPointerDown,
893
- onPointerMove,
894
- onPointerUp: endDrag,
895
- onPointerCancel: endDrag,
896
- onClickCapture,
897
- };
898
- }