@primitiv-ui/react 0.1.37 → 0.1.39
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.
- package/README.md +24 -2
- package/dist/AccessibleIcon/AccessibleIcon.d.ts +51 -0
- package/dist/AccessibleIcon/AccessibleIcon.js +55 -0
- package/dist/AccessibleIcon/index.d.ts +2 -0
- package/dist/AccessibleIcon/index.js +2 -0
- package/dist/AccessibleIcon/types.d.ts +24 -0
- package/dist/AccessibleIcon/types.js +1 -0
- package/dist/Accordion/Accordion.d.ts +287 -0
- package/dist/Accordion/Accordion.js +330 -0
- package/dist/Accordion/AccordionContext.d.ts +3 -0
- package/dist/Accordion/AccordionContext.js +4 -0
- package/dist/Accordion/hooks/index.d.ts +6 -0
- package/dist/Accordion/hooks/index.js +6 -0
- package/dist/Accordion/hooks/useAccordionContext.d.ts +1 -0
- package/dist/Accordion/hooks/useAccordionContext.js +1 -0
- package/dist/Accordion/hooks/useAccordionHeaderContext.d.ts +1 -0
- package/dist/Accordion/hooks/useAccordionHeaderContext.js +10 -0
- package/dist/Accordion/hooks/useAccordionItem.d.ts +8 -0
- package/dist/Accordion/hooks/useAccordionItem.js +15 -0
- package/dist/Accordion/hooks/useAccordionItemContext.d.ts +1 -0
- package/dist/Accordion/hooks/useAccordionItemContext.js +1 -0
- package/dist/Accordion/hooks/useAccordionRoot.d.ts +16 -0
- package/dist/Accordion/hooks/useAccordionRoot.js +133 -0
- package/dist/Accordion/hooks/useAccordionTrigger.d.ts +298 -0
- package/dist/Accordion/hooks/useAccordionTrigger.js +73 -0
- package/dist/Accordion/index.d.ts +2 -0
- package/dist/Accordion/index.js +2 -0
- package/dist/Accordion/types.d.ts +152 -0
- package/dist/Accordion/types.js +1 -0
- package/dist/Alert/Alert.d.ts +64 -0
- package/dist/Alert/Alert.js +70 -0
- package/dist/Alert/index.d.ts +2 -0
- package/dist/Alert/index.js +2 -0
- package/dist/Alert/types.d.ts +21 -0
- package/dist/Alert/types.js +1 -0
- package/dist/Avatar/Avatar.d.ts +144 -0
- package/dist/Avatar/Avatar.js +187 -0
- package/dist/Avatar/AvatarContext.d.ts +16 -0
- package/dist/Avatar/AvatarContext.js +7 -0
- package/dist/Avatar/hooks/index.d.ts +2 -0
- package/dist/Avatar/hooks/index.js +2 -0
- package/dist/Avatar/hooks/useAvatarContext.d.ts +1 -0
- package/dist/Avatar/hooks/useAvatarContext.js +1 -0
- package/dist/Avatar/hooks/useAvatarImage.d.ts +21 -0
- package/dist/Avatar/hooks/useAvatarImage.js +47 -0
- package/dist/Avatar/index.d.ts +3 -0
- package/dist/Avatar/index.js +3 -0
- package/dist/Avatar/types.d.ts +52 -0
- package/dist/Avatar/types.js +1 -0
- package/dist/Breadcrumb/Breadcrumb.d.ts +280 -0
- package/dist/Breadcrumb/Breadcrumb.js +299 -0
- package/dist/Breadcrumb/index.d.ts +2 -0
- package/dist/Breadcrumb/index.js +2 -0
- package/dist/Breadcrumb/types.d.ts +81 -0
- package/dist/Breadcrumb/types.js +1 -0
- package/dist/Button/Button.d.ts +73 -0
- package/dist/Button/Button.js +84 -0
- package/dist/Button/index.d.ts +2 -0
- package/dist/Button/index.js +2 -0
- package/dist/Button/types.d.ts +32 -0
- package/dist/Button/types.js +1 -0
- package/dist/Carousel/Carousel.d.ts +498 -0
- package/dist/Carousel/Carousel.js +660 -0
- package/dist/Carousel/CarouselContext.d.ts +7 -0
- package/dist/Carousel/CarouselContext.js +8 -0
- package/dist/Carousel/hooks/index.d.ts +5 -0
- package/dist/Carousel/hooks/index.js +5 -0
- package/dist/Carousel/hooks/useCarouselContext.d.ts +1 -0
- package/dist/Carousel/hooks/useCarouselContext.js +10 -0
- package/dist/Carousel/hooks/useCarouselLoop.d.ts +39 -0
- package/dist/Carousel/hooks/useCarouselLoop.js +735 -0
- package/dist/Carousel/hooks/useCarouselRoot.d.ts +97 -0
- package/dist/Carousel/hooks/useCarouselRoot.js +545 -0
- package/dist/Carousel/hooks/useCarouselSlide.d.ts +24 -0
- package/dist/Carousel/hooks/useCarouselSlide.js +62 -0
- package/dist/Carousel/hooks/useCarouselViewport.d.ts +46 -0
- package/dist/Carousel/hooks/useCarouselViewport.js +786 -0
- package/dist/Carousel/index.d.ts +3 -0
- package/dist/Carousel/index.js +3 -0
- package/dist/Carousel/loopEngine.d.ts +26 -0
- package/dist/Carousel/loopEngine.js +48 -0
- package/dist/Carousel/types.d.ts +783 -0
- package/dist/Carousel/types.js +1 -0
- package/dist/Checkbox/Checkbox.d.ts +120 -0
- package/dist/Checkbox/Checkbox.js +155 -0
- package/dist/Checkbox/CheckboxContext.d.ts +13 -0
- package/dist/Checkbox/CheckboxContext.js +3 -0
- package/dist/Checkbox/hooks/index.d.ts +3 -0
- package/dist/Checkbox/hooks/index.js +3 -0
- package/dist/Checkbox/hooks/useCheckboxContext.d.ts +1 -0
- package/dist/Checkbox/hooks/useCheckboxContext.js +1 -0
- package/dist/Checkbox/hooks/useCheckboxInput.d.ts +33 -0
- package/dist/Checkbox/hooks/useCheckboxInput.js +37 -0
- package/dist/Checkbox/hooks/useCheckboxRoot.d.ts +11 -0
- package/dist/Checkbox/hooks/useCheckboxRoot.js +14 -0
- package/dist/Checkbox/index.d.ts +2 -0
- package/dist/Checkbox/index.js +2 -0
- package/dist/Checkbox/types.d.ts +74 -0
- package/dist/Checkbox/types.js +1 -0
- package/dist/CheckboxCard/CheckboxCard.d.ts +132 -0
- package/dist/CheckboxCard/CheckboxCard.js +175 -0
- package/dist/CheckboxCard/CheckboxCardContext.d.ts +15 -0
- package/dist/CheckboxCard/CheckboxCardContext.js +10 -0
- package/dist/CheckboxCard/hooks/index.d.ts +2 -0
- package/dist/CheckboxCard/hooks/index.js +2 -0
- package/dist/CheckboxCard/hooks/useCheckboxCardContext.d.ts +1 -0
- package/dist/CheckboxCard/hooks/useCheckboxCardContext.js +1 -0
- package/dist/CheckboxCard/hooks/useCheckboxCardRoot.d.ts +11 -0
- package/dist/CheckboxCard/hooks/useCheckboxCardRoot.js +12 -0
- package/dist/CheckboxCard/index.d.ts +3 -0
- package/dist/CheckboxCard/index.js +3 -0
- package/dist/CheckboxCard/types.d.ts +87 -0
- package/dist/CheckboxCard/types.js +1 -0
- package/dist/Collapsible/Collapsible.d.ts +243 -0
- package/dist/Collapsible/Collapsible.js +275 -0
- package/dist/Collapsible/CollapsibleContext.d.ts +2 -0
- package/dist/Collapsible/CollapsibleContext.js +3 -0
- package/dist/Collapsible/hooks/index.d.ts +2 -0
- package/dist/Collapsible/hooks/index.js +2 -0
- package/dist/Collapsible/hooks/useCollapsibleRoot.d.ts +9 -0
- package/dist/Collapsible/hooks/useCollapsibleRoot.js +18 -0
- package/dist/Collapsible/hooks/useCollapsibleTrigger.d.ts +299 -0
- package/dist/Collapsible/hooks/useCollapsibleTrigger.js +39 -0
- package/dist/Collapsible/index.d.ts +2 -0
- package/dist/Collapsible/index.js +2 -0
- package/dist/Collapsible/types.d.ts +134 -0
- package/dist/Collapsible/types.js +1 -0
- package/dist/Combobox/Combobox.d.ts +149 -0
- package/dist/Combobox/Combobox.js +355 -0
- package/dist/Combobox/ComboboxContext.d.ts +10 -0
- package/dist/Combobox/ComboboxContext.js +13 -0
- package/dist/Combobox/hooks/index.d.ts +1 -0
- package/dist/Combobox/hooks/index.js +1 -0
- package/dist/Combobox/hooks/useComboboxRoot.d.ts +1 -0
- package/dist/Combobox/hooks/useComboboxRoot.js +1 -0
- package/dist/Combobox/index.d.ts +3 -0
- package/dist/Combobox/index.js +3 -0
- package/dist/Combobox/types.d.ts +126 -0
- package/dist/Combobox/types.js +1 -0
- package/dist/ContextMenu/ContextMenu.d.ts +508 -0
- package/dist/ContextMenu/ContextMenu.js +1005 -0
- package/dist/ContextMenu/ContextMenuContentContext.d.ts +12 -0
- package/dist/ContextMenu/ContextMenuContentContext.js +3 -0
- package/dist/ContextMenu/ContextMenuContext.d.ts +16 -0
- package/dist/ContextMenu/ContextMenuContext.js +3 -0
- package/dist/ContextMenu/ContextMenuGroupContext.d.ts +4 -0
- package/dist/ContextMenu/ContextMenuGroupContext.js +3 -0
- package/dist/ContextMenu/ContextMenuItemIndicatorContext.d.ts +4 -0
- package/dist/ContextMenu/ContextMenuItemIndicatorContext.js +3 -0
- package/dist/ContextMenu/ContextMenuRadioGroupContext.d.ts +5 -0
- package/dist/ContextMenu/ContextMenuRadioGroupContext.js +3 -0
- package/dist/ContextMenu/ContextMenuSubContext.d.ts +8 -0
- package/dist/ContextMenu/ContextMenuSubContext.js +3 -0
- package/dist/ContextMenu/constants.d.ts +2 -0
- package/dist/ContextMenu/constants.js +3 -0
- package/dist/ContextMenu/index.d.ts +2 -0
- package/dist/ContextMenu/index.js +2 -0
- package/dist/ContextMenu/types.d.ts +424 -0
- package/dist/ContextMenu/types.js +1 -0
- package/dist/DirectionProvider/DirectionContext.d.ts +15 -0
- package/dist/DirectionProvider/DirectionContext.js +18 -0
- package/dist/DirectionProvider/DirectionProvider.d.ts +57 -0
- package/dist/DirectionProvider/DirectionProvider.js +59 -0
- package/dist/DirectionProvider/index.d.ts +3 -0
- package/dist/DirectionProvider/index.js +2 -0
- package/dist/DirectionProvider/types.d.ts +34 -0
- package/dist/DirectionProvider/types.js +1 -0
- package/dist/Divider/Divider.d.ts +59 -0
- package/dist/Divider/Divider.js +60 -0
- package/dist/Divider/index.d.ts +2 -0
- package/dist/Divider/index.js +2 -0
- package/dist/Divider/types.d.ts +16 -0
- package/dist/Divider/types.js +1 -0
- package/dist/Drawer/Drawer.d.ts +268 -0
- package/dist/Drawer/Drawer.js +271 -0
- package/dist/Drawer/index.d.ts +2 -0
- package/dist/Drawer/index.js +2 -0
- package/dist/Drawer/types.d.ts +45 -0
- package/dist/Drawer/types.js +1 -0
- package/dist/Dropdown/Dropdown.d.ts +476 -0
- package/dist/Dropdown/Dropdown.js +745 -0
- package/dist/Dropdown/DropdownContentContext.d.ts +12 -0
- package/dist/Dropdown/DropdownContentContext.js +3 -0
- package/dist/Dropdown/DropdownContext.d.ts +10 -0
- package/dist/Dropdown/DropdownContext.js +3 -0
- package/dist/Dropdown/DropdownGroupContext.d.ts +4 -0
- package/dist/Dropdown/DropdownGroupContext.js +3 -0
- package/dist/Dropdown/DropdownItemIndicatorContext.d.ts +9 -0
- package/dist/Dropdown/DropdownItemIndicatorContext.js +3 -0
- package/dist/Dropdown/DropdownRadioGroupContext.d.ts +5 -0
- package/dist/Dropdown/DropdownRadioGroupContext.js +3 -0
- package/dist/Dropdown/DropdownSubContext.d.ts +8 -0
- package/dist/Dropdown/DropdownSubContext.js +3 -0
- package/dist/Dropdown/constants.d.ts +2 -0
- package/dist/Dropdown/constants.js +3 -0
- package/dist/Dropdown/hooks/index.d.ts +9 -0
- package/dist/Dropdown/hooks/index.js +9 -0
- package/dist/Dropdown/hooks/useCloseSiblingSub.d.ts +7 -0
- package/dist/Dropdown/hooks/useCloseSiblingSub.js +13 -0
- package/dist/Dropdown/hooks/useDropdownContent.d.ts +296 -0
- package/dist/Dropdown/hooks/useDropdownContent.js +149 -0
- package/dist/Dropdown/hooks/useDropdownContext.d.ts +1 -0
- package/dist/Dropdown/hooks/useDropdownContext.js +1 -0
- package/dist/Dropdown/hooks/useDropdownGroup.d.ts +294 -0
- package/dist/Dropdown/hooks/useDropdownGroup.js +12 -0
- package/dist/Dropdown/hooks/useDropdownItem.d.ts +13 -0
- package/dist/Dropdown/hooks/useDropdownItem.js +34 -0
- package/dist/Dropdown/hooks/useDropdownLabel.d.ts +292 -0
- package/dist/Dropdown/hooks/useDropdownLabel.js +8 -0
- package/dist/Dropdown/hooks/useDropdownRoot.d.ts +19 -0
- package/dist/Dropdown/hooks/useDropdownRoot.js +25 -0
- package/dist/Dropdown/hooks/useDropdownSubContext.d.ts +1 -0
- package/dist/Dropdown/hooks/useDropdownSubContext.js +1 -0
- package/dist/Dropdown/hooks/useDropdownTrigger.d.ts +302 -0
- package/dist/Dropdown/hooks/useDropdownTrigger.js +18 -0
- package/dist/Dropdown/index.d.ts +2 -0
- package/dist/Dropdown/index.js +2 -0
- package/dist/Dropdown/types.d.ts +496 -0
- package/dist/Dropdown/types.js +1 -0
- package/dist/EmptyState/EmptyState.d.ts +246 -0
- package/dist/EmptyState/EmptyState.js +268 -0
- package/dist/EmptyState/index.d.ts +2 -0
- package/dist/EmptyState/index.js +2 -0
- package/dist/EmptyState/types.d.ts +59 -0
- package/dist/EmptyState/types.js +1 -0
- package/dist/Field/Field.d.ts +178 -0
- package/dist/Field/Field.js +211 -0
- package/dist/Field/FieldContext.d.ts +15 -0
- package/dist/Field/FieldContext.js +3 -0
- package/dist/Field/hooks/index.d.ts +2 -0
- package/dist/Field/hooks/index.js +2 -0
- package/dist/Field/hooks/useFieldContext.d.ts +1 -0
- package/dist/Field/hooks/useFieldContext.js +1 -0
- package/dist/Field/hooks/useFieldProps.d.ts +25 -0
- package/dist/Field/hooks/useFieldProps.js +39 -0
- package/dist/Field/index.d.ts +2 -0
- package/dist/Field/index.js +2 -0
- package/dist/Field/types.d.ts +81 -0
- package/dist/Field/types.js +1 -0
- package/dist/Fieldset/Fieldset.d.ts +124 -0
- package/dist/Fieldset/Fieldset.js +124 -0
- package/dist/Fieldset/index.d.ts +2 -0
- package/dist/Fieldset/index.js +2 -0
- package/dist/Fieldset/types.d.ts +23 -0
- package/dist/Fieldset/types.js +1 -0
- package/dist/Input/Input.d.ts +104 -0
- package/dist/Input/Input.js +116 -0
- package/dist/Input/index.d.ts +2 -0
- package/dist/Input/index.js +2 -0
- package/dist/Input/types.d.ts +27 -0
- package/dist/Input/types.js +1 -0
- package/dist/InputGroup/InputGroup.d.ts +176 -0
- package/dist/InputGroup/InputGroup.js +205 -0
- package/dist/InputGroup/index.d.ts +2 -0
- package/dist/InputGroup/index.js +2 -0
- package/dist/InputGroup/types.d.ts +41 -0
- package/dist/InputGroup/types.js +1 -0
- package/dist/Listbox/Listbox.d.ts +231 -0
- package/dist/Listbox/Listbox.js +339 -0
- package/dist/Listbox/ListboxContext.d.ts +19 -0
- package/dist/Listbox/ListboxContext.js +25 -0
- package/dist/Listbox/constants.d.ts +2 -0
- package/dist/Listbox/constants.js +3 -0
- package/dist/Listbox/hooks/index.d.ts +1 -0
- package/dist/Listbox/hooks/index.js +1 -0
- package/dist/Listbox/hooks/useListboxRoot.d.ts +39 -0
- package/dist/Listbox/hooks/useListboxRoot.js +299 -0
- package/dist/Listbox/index.d.ts +3 -0
- package/dist/Listbox/index.js +3 -0
- package/dist/Listbox/types.d.ts +214 -0
- package/dist/Listbox/types.js +1 -0
- package/dist/MillerColumns/MillerColumns.d.ts +309 -0
- package/dist/MillerColumns/MillerColumns.js +332 -0
- package/dist/MillerColumns/MillerColumnsContext.d.ts +4 -0
- package/dist/MillerColumns/MillerColumnsContext.js +5 -0
- package/dist/MillerColumns/constants.d.ts +2 -0
- package/dist/MillerColumns/constants.js +3 -0
- package/dist/MillerColumns/hooks/index.d.ts +7 -0
- package/dist/MillerColumns/hooks/index.js +7 -0
- package/dist/MillerColumns/hooks/useMillerColumnsColumn.d.ts +8 -0
- package/dist/MillerColumns/hooks/useMillerColumnsColumn.js +16 -0
- package/dist/MillerColumns/hooks/useMillerColumnsColumnContext.d.ts +1 -0
- package/dist/MillerColumns/hooks/useMillerColumnsColumnContext.js +1 -0
- package/dist/MillerColumns/hooks/useMillerColumnsContext.d.ts +1 -0
- package/dist/MillerColumns/hooks/useMillerColumnsContext.js +1 -0
- package/dist/MillerColumns/hooks/useMillerColumnsItem.d.ts +295 -0
- package/dist/MillerColumns/hooks/useMillerColumnsItem.js +122 -0
- package/dist/MillerColumns/hooks/useMillerColumnsItemContext.d.ts +1 -0
- package/dist/MillerColumns/hooks/useMillerColumnsItemContext.js +1 -0
- package/dist/MillerColumns/hooks/useMillerColumnsResizeHandle.d.ts +290 -0
- package/dist/MillerColumns/hooks/useMillerColumnsResizeHandle.js +105 -0
- package/dist/MillerColumns/hooks/useMillerColumnsRoot.d.ts +9 -0
- package/dist/MillerColumns/hooks/useMillerColumnsRoot.js +0 -0
- package/dist/MillerColumns/index.d.ts +4 -0
- package/dist/MillerColumns/index.js +4 -0
- package/dist/MillerColumns/types.d.ts +224 -0
- package/dist/MillerColumns/types.js +1 -0
- package/dist/MillerColumns/useMillerColumnsSelection.d.ts +21 -0
- package/dist/MillerColumns/useMillerColumnsSelection.js +28 -0
- package/dist/MillerColumns/utils.d.ts +62 -0
- package/dist/MillerColumns/utils.js +102 -0
- package/dist/Modal/Modal.d.ts +331 -0
- package/dist/Modal/Modal.js +386 -0
- package/dist/Modal/ModalContext.d.ts +9 -0
- package/dist/Modal/ModalContext.js +10 -0
- package/dist/Modal/hooks/index.d.ts +4 -0
- package/dist/Modal/hooks/index.js +4 -0
- package/dist/Modal/hooks/useModalContent.d.ts +5 -0
- package/dist/Modal/hooks/useModalContent.js +94 -0
- package/dist/Modal/hooks/useModalContext.d.ts +1 -0
- package/dist/Modal/hooks/useModalContext.js +1 -0
- package/dist/Modal/hooks/useModalRoot.d.ts +11 -0
- package/dist/Modal/hooks/useModalRoot.js +39 -0
- package/dist/Modal/hooks/useModalTrigger.d.ts +297 -0
- package/dist/Modal/hooks/useModalTrigger.js +18 -0
- package/dist/Modal/index.d.ts +3 -0
- package/dist/Modal/index.js +3 -0
- package/dist/Modal/types.d.ts +186 -0
- package/dist/Modal/types.js +1 -0
- package/dist/NavigationMenu/NavigationMenu.d.ts +495 -0
- package/dist/NavigationMenu/NavigationMenu.js +645 -0
- package/dist/NavigationMenu/NavigationMenuContext.d.ts +31 -0
- package/dist/NavigationMenu/NavigationMenuContext.js +34 -0
- package/dist/NavigationMenu/constants.d.ts +4 -0
- package/dist/NavigationMenu/constants.js +5 -0
- package/dist/NavigationMenu/hooks/index.d.ts +7 -0
- package/dist/NavigationMenu/hooks/index.js +7 -0
- package/dist/NavigationMenu/hooks/useNavigationMenuEntry.d.ts +13 -0
- package/dist/NavigationMenu/hooks/useNavigationMenuEntry.js +21 -0
- package/dist/NavigationMenu/hooks/useNavigationMenuIndicator.d.ts +16 -0
- package/dist/NavigationMenu/hooks/useNavigationMenuIndicator.js +53 -0
- package/dist/NavigationMenu/hooks/useNavigationMenuLink.d.ts +8 -0
- package/dist/NavigationMenu/hooks/useNavigationMenuLink.js +37 -0
- package/dist/NavigationMenu/hooks/useNavigationMenuRoot.d.ts +26 -0
- package/dist/NavigationMenu/hooks/useNavigationMenuRoot.js +202 -0
- package/dist/NavigationMenu/hooks/useNavigationMenuTopLevelEntry.d.ts +21 -0
- package/dist/NavigationMenu/hooks/useNavigationMenuTopLevelEntry.js +54 -0
- package/dist/NavigationMenu/hooks/useNavigationMenuTrigger.d.ts +16 -0
- package/dist/NavigationMenu/hooks/useNavigationMenuTrigger.js +100 -0
- package/dist/NavigationMenu/hooks/useNavigationMenuViewport.d.ts +21 -0
- package/dist/NavigationMenu/hooks/useNavigationMenuViewport.js +85 -0
- package/dist/NavigationMenu/index.d.ts +3 -0
- package/dist/NavigationMenu/index.js +3 -0
- package/dist/NavigationMenu/types.d.ts +236 -0
- package/dist/NavigationMenu/types.js +1 -0
- package/dist/NavigationMenu/utils.d.ts +37 -0
- package/dist/NavigationMenu/utils.js +64 -0
- package/dist/Popover/Popover.d.ts +239 -0
- package/dist/Popover/Popover.js +293 -0
- package/dist/Popover/PopoverContext.d.ts +4 -0
- package/dist/Popover/PopoverContext.js +5 -0
- package/dist/Popover/hooks/index.d.ts +3 -0
- package/dist/Popover/hooks/index.js +3 -0
- package/dist/Popover/hooks/usePopoverContent.d.ts +19 -0
- package/dist/Popover/hooks/usePopoverContent.js +83 -0
- package/dist/Popover/hooks/usePopoverRoot.d.ts +10 -0
- package/dist/Popover/hooks/usePopoverRoot.js +49 -0
- package/dist/Popover/hooks/usePopoverTrigger.d.ts +297 -0
- package/dist/Popover/hooks/usePopoverTrigger.js +19 -0
- package/dist/Popover/index.d.ts +2 -0
- package/dist/Popover/index.js +2 -0
- package/dist/Popover/types.d.ts +183 -0
- package/dist/Popover/types.js +1 -0
- package/dist/Portal/Portal.d.ts +70 -0
- package/dist/Portal/Portal.js +92 -0
- package/dist/Portal/index.d.ts +2 -0
- package/dist/Portal/index.js +2 -0
- package/dist/Portal/types.d.ts +14 -0
- package/dist/Portal/types.js +1 -0
- package/dist/Progress/Progress.d.ts +126 -0
- package/dist/Progress/Progress.js +172 -0
- package/dist/Progress/ProgressContext.d.ts +16 -0
- package/dist/Progress/ProgressContext.js +7 -0
- package/dist/Progress/hooks/index.d.ts +2 -0
- package/dist/Progress/hooks/index.js +2 -0
- package/dist/Progress/hooks/useProgressContext.d.ts +1 -0
- package/dist/Progress/hooks/useProgressContext.js +1 -0
- package/dist/Progress/hooks/useProgressRoot.d.ts +17 -0
- package/dist/Progress/hooks/useProgressRoot.js +22 -0
- package/dist/Progress/index.d.ts +3 -0
- package/dist/Progress/index.js +3 -0
- package/dist/Progress/types.d.ts +53 -0
- package/dist/Progress/types.js +1 -0
- package/dist/Radio/Radio.d.ts +128 -0
- package/dist/Radio/Radio.js +153 -0
- package/dist/Radio/RadioContext.d.ts +13 -0
- package/dist/Radio/RadioContext.js +3 -0
- package/dist/Radio/hooks/index.d.ts +2 -0
- package/dist/Radio/hooks/index.js +2 -0
- package/dist/Radio/hooks/useRadioContext.d.ts +1 -0
- package/dist/Radio/hooks/useRadioContext.js +1 -0
- package/dist/Radio/hooks/useRadioRoot.d.ts +32 -0
- package/dist/Radio/hooks/useRadioRoot.js +35 -0
- package/dist/Radio/index.d.ts +2 -0
- package/dist/Radio/index.js +2 -0
- package/dist/Radio/types.d.ts +79 -0
- package/dist/Radio/types.js +1 -0
- package/dist/RadioCard/RadioCard.d.ts +176 -0
- package/dist/RadioCard/RadioCard.js +264 -0
- package/dist/RadioCard/RadioCardContext.d.ts +21 -0
- package/dist/RadioCard/RadioCardContext.js +9 -0
- package/dist/RadioCard/RadioCardItemContext.d.ts +14 -0
- package/dist/RadioCard/RadioCardItemContext.js +10 -0
- package/dist/RadioCard/hooks/index.d.ts +3 -0
- package/dist/RadioCard/hooks/index.js +3 -0
- package/dist/RadioCard/hooks/useRadioCardContext.d.ts +1 -0
- package/dist/RadioCard/hooks/useRadioCardContext.js +1 -0
- package/dist/RadioCard/hooks/useRadioCardItemContext.d.ts +1 -0
- package/dist/RadioCard/hooks/useRadioCardItemContext.js +1 -0
- package/dist/RadioCard/hooks/useRadioCardRoot.d.ts +14 -0
- package/dist/RadioCard/hooks/useRadioCardRoot.js +42 -0
- package/dist/RadioCard/index.d.ts +4 -0
- package/dist/RadioCard/index.js +4 -0
- package/dist/RadioCard/types.d.ts +129 -0
- package/dist/RadioCard/types.js +1 -0
- package/dist/RadioGroup/RadioGroup.d.ts +192 -0
- package/dist/RadioGroup/RadioGroup.js +281 -0
- package/dist/RadioGroup/RadioGroupContext.d.ts +12 -0
- package/dist/RadioGroup/RadioGroupContext.js +3 -0
- package/dist/RadioGroup/RadioGroupItemContext.d.ts +4 -0
- package/dist/RadioGroup/RadioGroupItemContext.js +3 -0
- package/dist/RadioGroup/hooks/index.d.ts +3 -0
- package/dist/RadioGroup/hooks/index.js +3 -0
- package/dist/RadioGroup/hooks/useRadioGroupContext.d.ts +1 -0
- package/dist/RadioGroup/hooks/useRadioGroupContext.js +1 -0
- package/dist/RadioGroup/hooks/useRadioGroupItemContext.d.ts +1 -0
- package/dist/RadioGroup/hooks/useRadioGroupItemContext.js +1 -0
- package/dist/RadioGroup/hooks/useRadioGroupRoot.d.ts +14 -0
- package/dist/RadioGroup/hooks/useRadioGroupRoot.js +53 -0
- package/dist/RadioGroup/index.d.ts +2 -0
- package/dist/RadioGroup/index.js +2 -0
- package/dist/RadioGroup/types.d.ts +130 -0
- package/dist/RadioGroup/types.js +1 -0
- package/dist/SegmentedControl/SegmentedControl.d.ts +145 -0
- package/dist/SegmentedControl/SegmentedControl.js +229 -0
- package/dist/SegmentedControl/SegmentedControlContext.d.ts +14 -0
- package/dist/SegmentedControl/SegmentedControlContext.js +3 -0
- package/dist/SegmentedControl/hooks/index.d.ts +2 -0
- package/dist/SegmentedControl/hooks/index.js +2 -0
- package/dist/SegmentedControl/hooks/useSegmentedControlContext.d.ts +1 -0
- package/dist/SegmentedControl/hooks/useSegmentedControlContext.js +1 -0
- package/dist/SegmentedControl/hooks/useSegmentedControlRoot.d.ts +14 -0
- package/dist/SegmentedControl/hooks/useSegmentedControlRoot.js +45 -0
- package/dist/SegmentedControl/index.d.ts +2 -0
- package/dist/SegmentedControl/index.js +2 -0
- package/dist/SegmentedControl/types.d.ts +121 -0
- package/dist/SegmentedControl/types.js +1 -0
- package/dist/Select/Select.d.ts +390 -0
- package/dist/Select/Select.js +561 -0
- package/dist/Select/SelectContext.d.ts +31 -0
- package/dist/Select/SelectContext.js +3 -0
- package/dist/Select/SelectItemIndicatorContext.d.ts +23 -0
- package/dist/Select/SelectItemIndicatorContext.js +3 -0
- package/dist/Select/constants.d.ts +6 -0
- package/dist/Select/constants.js +7 -0
- package/dist/Select/hooks/index.d.ts +2 -0
- package/dist/Select/hooks/index.js +2 -0
- package/dist/Select/hooks/useSelectContent.d.ts +301 -0
- package/dist/Select/hooks/useSelectContent.js +134 -0
- package/dist/Select/hooks/useSelectRoot.d.ts +23 -0
- package/dist/Select/hooks/useSelectRoot.js +90 -0
- package/dist/Select/index.d.ts +2 -0
- package/dist/Select/index.js +2 -0
- package/dist/Select/types.d.ts +246 -0
- package/dist/Select/types.js +1 -0
- package/dist/SkipNav/SkipNav.d.ts +137 -0
- package/dist/SkipNav/SkipNav.js +138 -0
- package/dist/SkipNav/index.d.ts +1 -0
- package/dist/SkipNav/index.js +1 -0
- package/dist/SkipNav/types.d.ts +32 -0
- package/dist/SkipNav/types.js +1 -0
- package/dist/Slider/Slider.d.ts +189 -0
- package/dist/Slider/Slider.js +253 -0
- package/dist/Slider/SliderContext.d.ts +48 -0
- package/dist/Slider/SliderContext.js +7 -0
- package/dist/Slider/hooks/index.d.ts +3 -0
- package/dist/Slider/hooks/index.js +3 -0
- package/dist/Slider/hooks/useSliderContext.d.ts +1 -0
- package/dist/Slider/hooks/useSliderContext.js +1 -0
- package/dist/Slider/hooks/useSliderRoot.d.ts +23 -0
- package/dist/Slider/hooks/useSliderRoot.js +123 -0
- package/dist/Slider/hooks/useSliderThumb.d.ts +11 -0
- package/dist/Slider/hooks/useSliderThumb.js +57 -0
- package/dist/Slider/index.d.ts +3 -0
- package/dist/Slider/index.js +3 -0
- package/dist/Slider/types.d.ts +194 -0
- package/dist/Slider/types.js +1 -0
- package/dist/Slider/utils.d.ts +48 -0
- package/dist/Slider/utils.js +105 -0
- package/dist/Slot/Slot.d.ts +126 -0
- package/dist/Slot/Slot.js +210 -0
- package/dist/Slot/composeEventHandlers.d.ts +50 -0
- package/dist/Slot/composeEventHandlers.js +57 -0
- package/dist/Slot/index.d.ts +3 -0
- package/dist/Slot/index.js +3 -0
- package/dist/Slot/types.d.ts +20 -0
- package/dist/Slot/types.js +1 -0
- package/dist/SplitButton/SplitButton.d.ts +286 -0
- package/dist/SplitButton/SplitButton.js +343 -0
- package/dist/SplitButton/SplitButtonContext.d.ts +11 -0
- package/dist/SplitButton/SplitButtonContext.js +12 -0
- package/dist/SplitButton/index.d.ts +2 -0
- package/dist/SplitButton/index.js +1 -0
- package/dist/SplitButton/types.d.ts +161 -0
- package/dist/SplitButton/types.js +1 -0
- package/dist/Status/Status.d.ts +57 -0
- package/dist/Status/Status.js +63 -0
- package/dist/Status/index.d.ts +2 -0
- package/dist/Status/index.js +2 -0
- package/dist/Status/types.d.ts +19 -0
- package/dist/Status/types.js +1 -0
- package/dist/Switch/Switch.d.ts +122 -0
- package/dist/Switch/Switch.js +143 -0
- package/dist/Switch/SwitchContext.d.ts +12 -0
- package/dist/Switch/SwitchContext.js +7 -0
- package/dist/Switch/hooks/index.d.ts +2 -0
- package/dist/Switch/hooks/index.js +2 -0
- package/dist/Switch/hooks/useSwitchContext.d.ts +1 -0
- package/dist/Switch/hooks/useSwitchContext.js +1 -0
- package/dist/Switch/hooks/useSwitchRoot.d.ts +30 -0
- package/dist/Switch/hooks/useSwitchRoot.js +33 -0
- package/dist/Switch/index.d.ts +3 -0
- package/dist/Switch/index.js +3 -0
- package/dist/Switch/types.d.ts +83 -0
- package/dist/Switch/types.js +1 -0
- package/dist/Table/Table.d.ts +443 -0
- package/dist/Table/Table.js +494 -0
- package/dist/Table/TableExpandableContext.d.ts +2 -0
- package/dist/Table/TableExpandableContext.js +3 -0
- package/dist/Table/index.d.ts +2 -0
- package/dist/Table/index.js +2 -0
- package/dist/Table/types.d.ts +214 -0
- package/dist/Table/types.js +1 -0
- package/dist/Tabs/Tabs.d.ts +270 -0
- package/dist/Tabs/Tabs.js +324 -0
- package/dist/Tabs/TabsContext.d.ts +11 -0
- package/dist/Tabs/TabsContext.js +12 -0
- package/dist/Tabs/hooks/index.d.ts +4 -0
- package/dist/Tabs/hooks/index.js +4 -0
- package/dist/Tabs/hooks/useTabsContent.d.ts +10 -0
- package/dist/Tabs/hooks/useTabsContent.js +27 -0
- package/dist/Tabs/hooks/useTabsContext.d.ts +1 -0
- package/dist/Tabs/hooks/useTabsContext.js +1 -0
- package/dist/Tabs/hooks/useTabsRoot.d.ts +21 -0
- package/dist/Tabs/hooks/useTabsRoot.js +97 -0
- package/dist/Tabs/hooks/useTabsTrigger.d.ts +13 -0
- package/dist/Tabs/hooks/useTabsTrigger.js +83 -0
- package/dist/Tabs/index.d.ts +3 -0
- package/dist/Tabs/index.js +3 -0
- package/dist/Tabs/types.d.ts +139 -0
- package/dist/Tabs/types.js +1 -0
- package/dist/Tabs/utils.d.ts +4 -0
- package/dist/Tabs/utils.js +8 -0
- package/dist/Textarea/Textarea.d.ts +81 -0
- package/dist/Textarea/Textarea.js +93 -0
- package/dist/Textarea/index.d.ts +2 -0
- package/dist/Textarea/index.js +2 -0
- package/dist/Textarea/types.d.ts +27 -0
- package/dist/Textarea/types.js +1 -0
- package/dist/Toggle/Toggle.d.ts +82 -0
- package/dist/Toggle/Toggle.js +102 -0
- package/dist/Toggle/index.d.ts +2 -0
- package/dist/Toggle/index.js +2 -0
- package/dist/Toggle/types.d.ts +72 -0
- package/dist/Toggle/types.js +1 -0
- package/dist/ToggleGroup/ToggleGroup.d.ts +144 -0
- package/dist/ToggleGroup/ToggleGroup.js +227 -0
- package/dist/ToggleGroup/ToggleGroupContext.d.ts +2 -0
- package/dist/ToggleGroup/ToggleGroupContext.js +3 -0
- package/dist/ToggleGroup/hooks/index.d.ts +2 -0
- package/dist/ToggleGroup/hooks/index.js +2 -0
- package/dist/ToggleGroup/hooks/useToggleGroupContext.d.ts +1 -0
- package/dist/ToggleGroup/hooks/useToggleGroupContext.js +1 -0
- package/dist/ToggleGroup/hooks/useToggleGroupRoot.d.ts +21 -0
- package/dist/ToggleGroup/hooks/useToggleGroupRoot.js +79 -0
- package/dist/ToggleGroup/index.d.ts +2 -0
- package/dist/ToggleGroup/index.js +2 -0
- package/dist/ToggleGroup/types.d.ts +141 -0
- package/dist/ToggleGroup/types.js +1 -0
- package/dist/Tooltip/Tooltip.d.ts +231 -0
- package/dist/Tooltip/Tooltip.js +279 -0
- package/dist/Tooltip/TooltipContext.d.ts +6 -0
- package/dist/Tooltip/TooltipContext.js +7 -0
- package/dist/Tooltip/hooks/index.d.ts +4 -0
- package/dist/Tooltip/hooks/index.js +4 -0
- package/dist/Tooltip/hooks/useTooltipContent.d.ts +289 -0
- package/dist/Tooltip/hooks/useTooltipContent.js +50 -0
- package/dist/Tooltip/hooks/useTooltipProvider.d.ts +9 -0
- package/dist/Tooltip/hooks/useTooltipProvider.js +60 -0
- package/dist/Tooltip/hooks/useTooltipRoot.d.ts +6 -0
- package/dist/Tooltip/hooks/useTooltipRoot.js +100 -0
- package/dist/Tooltip/hooks/useTooltipTrigger.d.ts +299 -0
- package/dist/Tooltip/hooks/useTooltipTrigger.js +22 -0
- package/dist/Tooltip/index.d.ts +2 -0
- package/dist/Tooltip/index.js +2 -0
- package/dist/Tooltip/types.d.ts +183 -0
- package/dist/Tooltip/types.js +1 -0
- package/dist/Tree/Tree.d.ts +398 -0
- package/dist/Tree/Tree.js +536 -0
- package/dist/Tree/TreeContext.d.ts +4 -0
- package/dist/Tree/TreeContext.js +5 -0
- package/dist/Tree/hooks/index.d.ts +3 -0
- package/dist/Tree/hooks/index.js +3 -0
- package/dist/Tree/hooks/useTreeItemKeyboard.d.ts +16 -0
- package/dist/Tree/hooks/useTreeItemKeyboard.js +71 -0
- package/dist/Tree/hooks/useTreePath.d.ts +88 -0
- package/dist/Tree/hooks/useTreePath.js +96 -0
- package/dist/Tree/hooks/useTreeRoot.d.ts +19 -0
- package/dist/Tree/hooks/useTreeRoot.js +185 -0
- package/dist/Tree/index.d.ts +4 -0
- package/dist/Tree/index.js +4 -0
- package/dist/Tree/types.d.ts +269 -0
- package/dist/Tree/types.js +1 -0
- package/dist/Tree/utils.d.ts +45 -0
- package/dist/Tree/utils.js +79 -0
- package/dist/VisuallyHidden/VisuallyHidden.d.ts +62 -0
- package/dist/VisuallyHidden/VisuallyHidden.js +83 -0
- package/dist/VisuallyHidden/index.d.ts +2 -0
- package/dist/VisuallyHidden/index.js +2 -0
- package/dist/VisuallyHidden/types.d.ts +18 -0
- package/dist/VisuallyHidden/types.js +1 -0
- package/dist/hooks/index.d.ts +4 -0
- package/dist/hooks/index.js +4 -0
- package/dist/hooks/useCollection.d.ts +50 -0
- package/dist/hooks/useCollection.js +47 -0
- package/dist/hooks/useControllableState.d.ts +50 -0
- package/dist/hooks/useControllableState.js +14 -0
- package/dist/hooks/useRovingTabindex.d.ts +106 -0
- package/dist/hooks/useRovingTabindex.js +110 -0
- package/dist/hooks/useTypeahead.d.ts +31 -0
- package/dist/hooks/useTypeahead.js +65 -0
- package/dist/index.d.ts +52 -0
- package/dist/index.js +50 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.js +1 -0
- package/dist/useLocalStorage/index.d.ts +1 -0
- package/dist/useLocalStorage/index.js +1 -0
- package/dist/useLocalStorage/useLocalStorage.d.ts +46 -0
- package/dist/useLocalStorage/useLocalStorage.js +125 -0
- package/dist/useMediaQuery/index.d.ts +1 -0
- package/dist/useMediaQuery/index.js +1 -0
- package/dist/useMediaQuery/useMediaQuery.d.ts +30 -0
- package/dist/useMediaQuery/useMediaQuery.js +43 -0
- package/dist/usePagination/index.d.ts +1 -0
- package/dist/usePagination/index.js +1 -0
- package/dist/usePagination/usePagination.d.ts +163 -0
- package/dist/usePagination/usePagination.js +130 -0
- package/dist/utils/createStrictContext.d.ts +33 -0
- package/dist/utils/createStrictContext.js +47 -0
- package/dist/utils/deriveId.d.ts +25 -0
- package/dist/utils/deriveId.js +28 -0
- package/dist/utils/focusable.d.ts +8 -0
- package/dist/utils/focusable.js +16 -0
- package/dist/utils/getKeyToActionMap.d.ts +64 -0
- package/dist/utils/getKeyToActionMap.js +49 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +4 -0
- package/package.json +7 -6
- package/src/AccessibleIcon/AccessibleIcon.tsx +0 -67
- package/src/AccessibleIcon/README.md +0 -42
- package/src/AccessibleIcon/__tests__/AccessibleIcon.test.tsx +0 -52
- package/src/AccessibleIcon/index.ts +0 -2
- package/src/AccessibleIcon/types.ts +0 -25
- package/src/Accordion/Accordion.tsx +0 -455
- package/src/Accordion/AccordionContext.ts +0 -12
- package/src/Accordion/README.md +0 -202
- package/src/Accordion/__tests__/Accordion.asChild.test.tsx +0 -283
- package/src/Accordion/__tests__/Accordion.basic-rendering.test.tsx +0 -348
- package/src/Accordion/__tests__/Accordion.controlled-state.test.tsx +0 -175
- package/src/Accordion/__tests__/Accordion.data-attributes.test.tsx +0 -272
- package/src/Accordion/__tests__/Accordion.disabled-items.test.tsx +0 -353
- package/src/Accordion/__tests__/Accordion.error-handling.test.tsx +0 -152
- package/src/Accordion/__tests__/Accordion.forceMount.test.tsx +0 -119
- package/src/Accordion/__tests__/Accordion.keyboard-interaction.test.tsx +0 -736
- package/src/Accordion/__tests__/Accordion.mouse-interaction.test.tsx +0 -212
- package/src/Accordion/__tests__/Accordion.multiple-mode.test.tsx +0 -90
- package/src/Accordion/__tests__/Accordion.reading-direction.test.tsx +0 -139
- package/src/Accordion/__tests__/Accordion.uncontrolled-state.test.tsx +0 -154
- package/src/Accordion/hooks/index.ts +0 -6
- package/src/Accordion/hooks/useAccordionContext.ts +0 -1
- package/src/Accordion/hooks/useAccordionHeaderContext.ts +0 -10
- package/src/Accordion/hooks/useAccordionItem.ts +0 -22
- package/src/Accordion/hooks/useAccordionItemContext.ts +0 -1
- package/src/Accordion/hooks/useAccordionRoot.ts +0 -188
- package/src/Accordion/hooks/useAccordionTrigger.ts +0 -98
- package/src/Accordion/index.ts +0 -2
- package/src/Accordion/types.ts +0 -174
- package/src/Alert/Alert.tsx +0 -79
- package/src/Alert/README.md +0 -54
- package/src/Alert/__tests__/Alert.test.tsx +0 -33
- package/src/Alert/index.ts +0 -2
- package/src/Alert/types.ts +0 -22
- package/src/Avatar/Avatar.tsx +0 -246
- package/src/Avatar/AvatarContext.ts +0 -26
- package/src/Avatar/README.md +0 -116
- package/src/Avatar/__tests__/Avatar.asChild.test.tsx +0 -53
- package/src/Avatar/__tests__/Avatar.basic-rendering.test.tsx +0 -24
- package/src/Avatar/__tests__/Avatar.error-handling.test.tsx +0 -30
- package/src/Avatar/__tests__/Avatar.fallback.test.tsx +0 -105
- package/src/Avatar/__tests__/Avatar.image-loading.test.tsx +0 -116
- package/src/Avatar/hooks/index.ts +0 -2
- package/src/Avatar/hooks/useAvatarContext.ts +0 -1
- package/src/Avatar/hooks/useAvatarImage.ts +0 -56
- package/src/Avatar/index.ts +0 -3
- package/src/Avatar/types.ts +0 -56
- package/src/Breadcrumb/Breadcrumb.tsx +0 -374
- package/src/Breadcrumb/README.md +0 -158
- package/src/Breadcrumb/__tests__/Breadcrumb.asChild.test.tsx +0 -33
- package/src/Breadcrumb/__tests__/Breadcrumb.basic-rendering.test.tsx +0 -143
- package/src/Breadcrumb/__tests__/Breadcrumb.ellipsis.test.tsx +0 -110
- package/src/Breadcrumb/index.ts +0 -2
- package/src/Breadcrumb/types.ts +0 -88
- package/src/Button/Button.tsx +0 -100
- package/src/Button/README.md +0 -112
- package/src/Button/__tests__/Button.asChild.test.tsx +0 -91
- package/src/Button/__tests__/Button.basic-rendering.test.tsx +0 -132
- package/src/Button/__tests__/Button.contract.test.tsx +0 -72
- package/src/Button/__tests__/Button.disabled.test.tsx +0 -52
- package/src/Button/__tests__/Button.icon-usage.test.tsx +0 -57
- package/src/Button/__tests__/Button.keyboard-interaction.test.tsx +0 -70
- package/src/Button/index.ts +0 -2
- package/src/Button/types.ts +0 -33
- package/src/Carousel/Carousel.tsx +0 -972
- package/src/Carousel/CarouselContext.ts +0 -15
- package/src/Carousel/README.md +0 -1447
- package/src/Carousel/__tests__/Carousel.asChild.test.tsx +0 -178
- package/src/Carousel/__tests__/Carousel.auto-play.test.tsx +0 -617
- package/src/Carousel/__tests__/Carousel.autoplay-status.test.tsx +0 -239
- package/src/Carousel/__tests__/Carousel.basic-rendering.test.tsx +0 -569
- package/src/Carousel/__tests__/Carousel.controlled-state.test.tsx +0 -137
- package/src/Carousel/__tests__/Carousel.drag-status.test.tsx +0 -292
- package/src/Carousel/__tests__/Carousel.dynamic-slides.test.tsx +0 -38
- package/src/Carousel/__tests__/Carousel.error-handling.test.tsx +0 -81
- package/src/Carousel/__tests__/Carousel.ids.test.tsx +0 -111
- package/src/Carousel/__tests__/Carousel.imperative-api.test.tsx +0 -213
- package/src/Carousel/__tests__/Carousel.indicators.test.tsx +0 -661
- package/src/Carousel/__tests__/Carousel.infinite.test.tsx +0 -1453
- package/src/Carousel/__tests__/Carousel.instant-scroll.test.tsx +0 -124
- package/src/Carousel/__tests__/Carousel.intersection-observer.test.tsx +0 -364
- package/src/Carousel/__tests__/Carousel.keyboard-navigation.test.tsx +0 -158
- package/src/Carousel/__tests__/Carousel.loop.test.tsx +0 -163
- package/src/Carousel/__tests__/Carousel.loopEngine.test.ts +0 -77
- package/src/Carousel/__tests__/Carousel.mouse-drag.test.tsx +0 -504
- package/src/Carousel/__tests__/Carousel.multi-slide-bounds.test.tsx +0 -91
- package/src/Carousel/__tests__/Carousel.orientation.test.tsx +0 -207
- package/src/Carousel/__tests__/Carousel.overscroll.test.tsx +0 -532
- package/src/Carousel/__tests__/Carousel.page-snap-points.test.tsx +0 -50
- package/src/Carousel/__tests__/Carousel.play-pause.test.tsx +0 -232
- package/src/Carousel/__tests__/Carousel.prev-next.test.tsx +0 -68
- package/src/Carousel/__tests__/Carousel.progress-text.test.tsx +0 -76
- package/src/Carousel/__tests__/Carousel.reduced-motion.test.tsx +0 -46
- package/src/Carousel/__tests__/Carousel.refresh-progress.test.tsx +0 -84
- package/src/Carousel/__tests__/Carousel.scroll-margin.test.tsx +0 -167
- package/src/Carousel/__tests__/Carousel.scroll-progress.test.tsx +0 -518
- package/src/Carousel/__tests__/Carousel.scroll-snap-change.test.tsx +0 -200
- package/src/Carousel/__tests__/Carousel.scroll-sync.test.tsx +0 -322
- package/src/Carousel/__tests__/Carousel.scroll-to-index.test.tsx +0 -115
- package/src/Carousel/__tests__/Carousel.slide-snap.test.tsx +0 -172
- package/src/Carousel/__tests__/Carousel.slides-per-move.test.tsx +0 -329
- package/src/Carousel/__tests__/Carousel.slides-per-page.test.tsx +0 -267
- package/src/Carousel/__tests__/Carousel.snap-type.test.tsx +0 -35
- package/src/Carousel/__tests__/Carousel.ssr.test.tsx +0 -28
- package/src/Carousel/__tests__/Carousel.touch-interaction.test.tsx +0 -96
- package/src/Carousel/__tests__/Carousel.transition-modes.test.tsx +0 -95
- package/src/Carousel/__tests__/Carousel.translations.test.tsx +0 -180
- package/src/Carousel/__tests__/Carousel.uncontrolled-state.test.tsx +0 -146
- package/src/Carousel/__tests__/Carousel.wheel.test.tsx +0 -160
- package/src/Carousel/hooks/index.ts +0 -5
- package/src/Carousel/hooks/useCarouselContext.ts +0 -13
- package/src/Carousel/hooks/useCarouselLoop.ts +0 -869
- package/src/Carousel/hooks/useCarouselRoot.ts +0 -746
- package/src/Carousel/hooks/useCarouselSlide.ts +0 -80
- package/src/Carousel/hooks/useCarouselViewport.ts +0 -898
- package/src/Carousel/index.ts +0 -3
- package/src/Carousel/loopEngine.ts +0 -54
- package/src/Carousel/types.ts +0 -830
- package/src/Checkbox/Checkbox.tsx +0 -217
- package/src/Checkbox/CheckboxContext.ts +0 -20
- package/src/Checkbox/README.md +0 -137
- package/src/Checkbox/__tests__/Checkbox.basic-rendering.test.tsx +0 -93
- package/src/Checkbox/__tests__/Checkbox.contract.test.tsx +0 -106
- package/src/Checkbox/__tests__/Checkbox.controlled-state.test.tsx +0 -74
- package/src/Checkbox/__tests__/Checkbox.disabled.test.tsx +0 -45
- package/src/Checkbox/__tests__/Checkbox.form.test.tsx +0 -53
- package/src/Checkbox/__tests__/Checkbox.indeterminate.test.tsx +0 -76
- package/src/Checkbox/__tests__/Checkbox.indicator.test.tsx +0 -92
- package/src/Checkbox/__tests__/Checkbox.uncontrolled-state.test.tsx +0 -105
- package/src/Checkbox/hooks/index.ts +0 -3
- package/src/Checkbox/hooks/useCheckboxContext.ts +0 -1
- package/src/Checkbox/hooks/useCheckboxInput.ts +0 -53
- package/src/Checkbox/hooks/useCheckboxRoot.ts +0 -32
- package/src/Checkbox/index.ts +0 -2
- package/src/Checkbox/types.ts +0 -86
- package/src/CheckboxCard/CheckboxCard.tsx +0 -219
- package/src/CheckboxCard/CheckboxCardContext.ts +0 -25
- package/src/CheckboxCard/README.md +0 -114
- package/src/CheckboxCard/__tests__/CheckboxCard.asChild.test.tsx +0 -54
- package/src/CheckboxCard/__tests__/CheckboxCard.basic-rendering.test.tsx +0 -65
- package/src/CheckboxCard/__tests__/CheckboxCard.controlled-state.test.tsx +0 -77
- package/src/CheckboxCard/__tests__/CheckboxCard.disabled.test.tsx +0 -55
- package/src/CheckboxCard/__tests__/CheckboxCard.error-handling.test.tsx +0 -20
- package/src/CheckboxCard/__tests__/CheckboxCard.indeterminate.test.tsx +0 -60
- package/src/CheckboxCard/__tests__/CheckboxCard.indicator.test.tsx +0 -136
- package/src/CheckboxCard/__tests__/CheckboxCard.uncontrolled-state.test.tsx +0 -73
- package/src/CheckboxCard/hooks/index.ts +0 -2
- package/src/CheckboxCard/hooks/useCheckboxCardContext.ts +0 -1
- package/src/CheckboxCard/hooks/useCheckboxCardRoot.ts +0 -30
- package/src/CheckboxCard/index.ts +0 -3
- package/src/CheckboxCard/types.ts +0 -97
- package/src/Collapsible/Collapsible.tsx +0 -378
- package/src/Collapsible/CollapsibleContext.ts +0 -7
- package/src/Collapsible/README.md +0 -214
- package/src/Collapsible/__tests__/Collapsible.asChild.test.tsx +0 -329
- package/src/Collapsible/__tests__/Collapsible.basic-rendering.test.tsx +0 -145
- package/src/Collapsible/__tests__/Collapsible.collapsedHeight.test.tsx +0 -140
- package/src/Collapsible/__tests__/Collapsible.controlled-state.test.tsx +0 -134
- package/src/Collapsible/__tests__/Collapsible.disabled.test.tsx +0 -132
- package/src/Collapsible/__tests__/Collapsible.error-handling.test.tsx +0 -40
- package/src/Collapsible/__tests__/Collapsible.forceMount.test.tsx +0 -111
- package/src/Collapsible/__tests__/Collapsible.triggerIcon.test.tsx +0 -93
- package/src/Collapsible/__tests__/Collapsible.uncontrolled-state.test.tsx +0 -125
- package/src/Collapsible/hooks/index.ts +0 -2
- package/src/Collapsible/hooks/useCollapsibleRoot.ts +0 -34
- package/src/Collapsible/hooks/useCollapsibleTrigger.ts +0 -51
- package/src/Collapsible/index.ts +0 -2
- package/src/Collapsible/types.ts +0 -148
- package/src/Combobox/Combobox.tsx +0 -508
- package/src/Combobox/ComboboxContext.ts +0 -23
- package/src/Combobox/README.md +0 -170
- package/src/Combobox/__tests__/Combobox.asChild.test.tsx +0 -62
- package/src/Combobox/__tests__/Combobox.basic-rendering.test.tsx +0 -16
- package/src/Combobox/__tests__/Combobox.content.test.tsx +0 -36
- package/src/Combobox/__tests__/Combobox.controlled-state.test.tsx +0 -88
- package/src/Combobox/__tests__/Combobox.empty.test.tsx +0 -42
- package/src/Combobox/__tests__/Combobox.ids.test.tsx +0 -66
- package/src/Combobox/__tests__/Combobox.item.test.tsx +0 -76
- package/src/Combobox/__tests__/Combobox.keyboard-interaction.test.tsx +0 -196
- package/src/Combobox/__tests__/Combobox.light-dismiss.test.tsx +0 -101
- package/src/Combobox/__tests__/Combobox.query.test.tsx +0 -105
- package/src/Combobox/hooks/index.ts +0 -1
- package/src/Combobox/hooks/useComboboxRoot.ts +0 -2
- package/src/Combobox/index.ts +0 -3
- package/src/Combobox/types.ts +0 -133
- package/src/ContextMenu/ContextMenu.tsx +0 -1296
- package/src/ContextMenu/ContextMenuContentContext.ts +0 -15
- package/src/ContextMenu/ContextMenuContext.ts +0 -21
- package/src/ContextMenu/ContextMenuGroupContext.ts +0 -8
- package/src/ContextMenu/ContextMenuItemIndicatorContext.ts +0 -8
- package/src/ContextMenu/ContextMenuRadioGroupContext.ts +0 -9
- package/src/ContextMenu/ContextMenuSubContext.ts +0 -15
- package/src/ContextMenu/README.md +0 -275
- package/src/ContextMenu/__tests__/ContextMenu.asChild.test.tsx +0 -186
- package/src/ContextMenu/__tests__/ContextMenu.basic-rendering.test.tsx +0 -39
- package/src/ContextMenu/__tests__/ContextMenu.checkbox-item.test.tsx +0 -168
- package/src/ContextMenu/__tests__/ContextMenu.error-handling.test.tsx +0 -113
- package/src/ContextMenu/__tests__/ContextMenu.group-label.test.tsx +0 -48
- package/src/ContextMenu/__tests__/ContextMenu.item-indicator.test.tsx +0 -88
- package/src/ContextMenu/__tests__/ContextMenu.item.test.tsx +0 -106
- package/src/ContextMenu/__tests__/ContextMenu.keyboard-interaction.test.tsx +0 -227
- package/src/ContextMenu/__tests__/ContextMenu.mouse-interaction.test.tsx +0 -268
- package/src/ContextMenu/__tests__/ContextMenu.radio-item.test.tsx +0 -152
- package/src/ContextMenu/__tests__/ContextMenu.reading-direction.test.tsx +0 -152
- package/src/ContextMenu/__tests__/ContextMenu.separator.test.tsx +0 -47
- package/src/ContextMenu/__tests__/ContextMenu.state-modes.test.tsx +0 -119
- package/src/ContextMenu/__tests__/ContextMenu.sub.test.tsx +0 -407
- package/src/ContextMenu/__tests__/ContextMenu.typeahead.test.tsx +0 -134
- package/src/ContextMenu/constants.ts +0 -4
- package/src/ContextMenu/index.ts +0 -2
- package/src/ContextMenu/types.ts +0 -484
- package/src/DirectionProvider/DirectionContext.ts +0 -21
- package/src/DirectionProvider/DirectionProvider.tsx +0 -69
- package/src/DirectionProvider/README.md +0 -62
- package/src/DirectionProvider/__tests__/DirectionProvider.test.tsx +0 -34
- package/src/DirectionProvider/index.ts +0 -3
- package/src/DirectionProvider/types.ts +0 -36
- package/src/Divider/Divider.tsx +0 -74
- package/src/Divider/README.md +0 -57
- package/src/Divider/__tests__/Divider.contract.test.tsx +0 -66
- package/src/Divider/__tests__/Divider.test.tsx +0 -46
- package/src/Divider/index.ts +0 -2
- package/src/Divider/types.ts +0 -17
- package/src/Drawer/Drawer.tsx +0 -315
- package/src/Drawer/README.md +0 -124
- package/src/Drawer/__tests__/Drawer.behavior.test.tsx +0 -100
- package/src/Drawer/__tests__/Drawer.focus-trap.test.tsx +0 -55
- package/src/Drawer/__tests__/Drawer.rendering.test.tsx +0 -111
- package/src/Drawer/__tests__/Drawer.side.test.tsx +0 -69
- package/src/Drawer/__tests__/dialog-polyfill.ts +0 -39
- package/src/Drawer/index.ts +0 -2
- package/src/Drawer/types.ts +0 -66
- package/src/Dropdown/Dropdown.tsx +0 -985
- package/src/Dropdown/DropdownContentContext.ts +0 -15
- package/src/Dropdown/DropdownContext.ts +0 -17
- package/src/Dropdown/DropdownGroupContext.ts +0 -8
- package/src/Dropdown/DropdownItemIndicatorContext.ts +0 -13
- package/src/Dropdown/DropdownRadioGroupContext.ts +0 -9
- package/src/Dropdown/DropdownSubContext.ts +0 -15
- package/src/Dropdown/README.md +0 -286
- package/src/Dropdown/__tests__/Dropdown.asChild.test.tsx +0 -286
- package/src/Dropdown/__tests__/Dropdown.basic-rendering.test.tsx +0 -43
- package/src/Dropdown/__tests__/Dropdown.checkbox-item.test.tsx +0 -121
- package/src/Dropdown/__tests__/Dropdown.disabled.test.tsx +0 -143
- package/src/Dropdown/__tests__/Dropdown.error-handling.test.tsx +0 -85
- package/src/Dropdown/__tests__/Dropdown.group-label.test.tsx +0 -68
- package/src/Dropdown/__tests__/Dropdown.item-indicator.test.tsx +0 -260
- package/src/Dropdown/__tests__/Dropdown.item.test.tsx +0 -72
- package/src/Dropdown/__tests__/Dropdown.keyboard-edge-cases.test.tsx +0 -77
- package/src/Dropdown/__tests__/Dropdown.keyboard-interaction.test.tsx +0 -310
- package/src/Dropdown/__tests__/Dropdown.mouse-interaction.test.tsx +0 -347
- package/src/Dropdown/__tests__/Dropdown.radio-item.test.tsx +0 -134
- package/src/Dropdown/__tests__/Dropdown.reading-direction.test.tsx +0 -153
- package/src/Dropdown/__tests__/Dropdown.separator.test.tsx +0 -46
- package/src/Dropdown/__tests__/Dropdown.state-modes.test.tsx +0 -100
- package/src/Dropdown/__tests__/Dropdown.sub.test.tsx +0 -185
- package/src/Dropdown/__tests__/Dropdown.trigger.test.tsx +0 -110
- package/src/Dropdown/__tests__/Dropdown.typeahead.test.tsx +0 -133
- package/src/Dropdown/constants.ts +0 -4
- package/src/Dropdown/hooks/index.ts +0 -9
- package/src/Dropdown/hooks/useCloseSiblingSub.ts +0 -13
- package/src/Dropdown/hooks/useDropdownContent.ts +0 -162
- package/src/Dropdown/hooks/useDropdownContext.ts +0 -1
- package/src/Dropdown/hooks/useDropdownGroup.ts +0 -18
- package/src/Dropdown/hooks/useDropdownItem.ts +0 -49
- package/src/Dropdown/hooks/useDropdownLabel.ts +0 -15
- package/src/Dropdown/hooks/useDropdownRoot.ts +0 -57
- package/src/Dropdown/hooks/useDropdownSubContext.ts +0 -1
- package/src/Dropdown/hooks/useDropdownTrigger.ts +0 -31
- package/src/Dropdown/index.ts +0 -2
- package/src/Dropdown/types.ts +0 -558
- package/src/EmptyState/EmptyState.tsx +0 -329
- package/src/EmptyState/README.md +0 -129
- package/src/EmptyState/__tests__/EmptyState.Actions.test.tsx +0 -37
- package/src/EmptyState/__tests__/EmptyState.Description.test.tsx +0 -32
- package/src/EmptyState/__tests__/EmptyState.Media.test.tsx +0 -34
- package/src/EmptyState/__tests__/EmptyState.Root.test.tsx +0 -38
- package/src/EmptyState/__tests__/EmptyState.Title.test.tsx +0 -28
- package/src/EmptyState/index.ts +0 -2
- package/src/EmptyState/types.ts +0 -65
- package/src/Field/Field.tsx +0 -276
- package/src/Field/FieldContext.ts +0 -22
- package/src/Field/README.md +0 -167
- package/src/Field/__tests__/Field.asChild.test.tsx +0 -83
- package/src/Field/__tests__/Field.basic-rendering.test.tsx +0 -115
- package/src/Field/__tests__/Field.contract.test.tsx +0 -91
- package/src/Field/__tests__/Field.error-handling.test.tsx +0 -23
- package/src/Field/__tests__/Field.state-cascade.test.tsx +0 -96
- package/src/Field/hooks/__tests__/useFieldProps.test.tsx +0 -142
- package/src/Field/hooks/index.ts +0 -2
- package/src/Field/hooks/useFieldContext.ts +0 -1
- package/src/Field/hooks/useFieldProps.ts +0 -57
- package/src/Field/index.ts +0 -2
- package/src/Field/types.ts +0 -85
- package/src/Fieldset/Fieldset.tsx +0 -156
- package/src/Fieldset/README.md +0 -74
- package/src/Fieldset/__tests__/Fieldset.basic-rendering.test.tsx +0 -90
- package/src/Fieldset/__tests__/Fieldset.disabled.test.tsx +0 -41
- package/src/Fieldset/index.ts +0 -2
- package/src/Fieldset/types.ts +0 -25
- package/src/Input/Input.tsx +0 -128
- package/src/Input/README.md +0 -180
- package/src/Input/__tests__/Input.asChild.test.tsx +0 -85
- package/src/Input/__tests__/Input.basic-rendering.test.tsx +0 -123
- package/src/Input/__tests__/Input.contract.test.tsx +0 -77
- package/src/Input/__tests__/Input.disabled.test.tsx +0 -49
- package/src/Input/__tests__/Input.field-integration.test.tsx +0 -148
- package/src/Input/index.ts +0 -2
- package/src/Input/types.ts +0 -28
- package/src/InputGroup/InputGroup.tsx +0 -243
- package/src/InputGroup/README.md +0 -178
- package/src/InputGroup/__tests__/InputGroup.asChild.test.tsx +0 -110
- package/src/InputGroup/__tests__/InputGroup.basic-rendering.test.tsx +0 -120
- package/src/InputGroup/__tests__/InputGroup.contract.test.tsx +0 -60
- package/src/InputGroup/index.ts +0 -2
- package/src/InputGroup/types.ts +0 -43
- package/src/Listbox/Listbox.tsx +0 -475
- package/src/Listbox/ListboxContext.ts +0 -48
- package/src/Listbox/README.md +0 -248
- package/src/Listbox/__tests__/Listbox.active-descendant.test.tsx +0 -128
- package/src/Listbox/__tests__/Listbox.asChild.test.tsx +0 -91
- package/src/Listbox/__tests__/Listbox.basic-rendering.test.tsx +0 -16
- package/src/Listbox/__tests__/Listbox.controlled-state.test.tsx +0 -114
- package/src/Listbox/__tests__/Listbox.disabled.test.tsx +0 -90
- package/src/Listbox/__tests__/Listbox.fixtures.ts +0 -27
- package/src/Listbox/__tests__/Listbox.group-label.test.tsx +0 -97
- package/src/Listbox/__tests__/Listbox.group.test.tsx +0 -45
- package/src/Listbox/__tests__/Listbox.keyboard-edge-cases.test.tsx +0 -144
- package/src/Listbox/__tests__/Listbox.keyboard-interaction.test.tsx +0 -112
- package/src/Listbox/__tests__/Listbox.modifier-keys.test.tsx +0 -86
- package/src/Listbox/__tests__/Listbox.multi-select-keyboard.test.tsx +0 -368
- package/src/Listbox/__tests__/Listbox.multiple-mode.test.tsx +0 -91
- package/src/Listbox/__tests__/Listbox.mutation-hardening.test.tsx +0 -480
- package/src/Listbox/__tests__/Listbox.orientation.test.tsx +0 -59
- package/src/Listbox/__tests__/Listbox.reading-direction.test.tsx +0 -65
- package/src/Listbox/__tests__/Listbox.reorder.test.tsx +0 -78
- package/src/Listbox/__tests__/Listbox.selection-follows-focus.test.tsx +0 -64
- package/src/Listbox/__tests__/Listbox.strict-context.test.tsx +0 -21
- package/src/Listbox/__tests__/Listbox.typeahead.test.tsx +0 -123
- package/src/Listbox/__tests__/Listbox.uncontrolled-state.test.tsx +0 -48
- package/src/Listbox/constants.ts +0 -2
- package/src/Listbox/hooks/index.ts +0 -1
- package/src/Listbox/hooks/useListboxRoot.ts +0 -407
- package/src/Listbox/index.ts +0 -3
- package/src/Listbox/types.ts +0 -238
- package/src/MillerColumns/MillerColumns.tsx +0 -490
- package/src/MillerColumns/MillerColumnsContext.ts +0 -25
- package/src/MillerColumns/README.md +0 -348
- package/src/MillerColumns/__tests__/MillerColumns.aria.test.tsx +0 -127
- package/src/MillerColumns/__tests__/MillerColumns.asChild.test.tsx +0 -106
- package/src/MillerColumns/__tests__/MillerColumns.auto-scroll.test.tsx +0 -70
- package/src/MillerColumns/__tests__/MillerColumns.basic-rendering.test.tsx +0 -67
- package/src/MillerColumns/__tests__/MillerColumns.column-projection.test.tsx +0 -161
- package/src/MillerColumns/__tests__/MillerColumns.controlled-state.test.tsx +0 -90
- package/src/MillerColumns/__tests__/MillerColumns.data-attributes.test.tsx +0 -125
- package/src/MillerColumns/__tests__/MillerColumns.disabled-items.test.tsx +0 -65
- package/src/MillerColumns/__tests__/MillerColumns.error-handling.test.tsx +0 -57
- package/src/MillerColumns/__tests__/MillerColumns.fixtures.ts +0 -15
- package/src/MillerColumns/__tests__/MillerColumns.item-indicator.test.tsx +0 -57
- package/src/MillerColumns/__tests__/MillerColumns.keyboard-interaction.test.tsx +0 -214
- package/src/MillerColumns/__tests__/MillerColumns.keyboard-selection-state.test.tsx +0 -96
- package/src/MillerColumns/__tests__/MillerColumns.preview-panel.test.tsx +0 -72
- package/src/MillerColumns/__tests__/MillerColumns.preview-visibility.test.tsx +0 -79
- package/src/MillerColumns/__tests__/MillerColumns.resize.test.tsx +0 -326
- package/src/MillerColumns/__tests__/MillerColumns.roving-tabindex.test.tsx +0 -91
- package/src/MillerColumns/__tests__/MillerColumns.selection.test.tsx +0 -54
- package/src/MillerColumns/__tests__/MillerColumns.styled-parts.test.tsx +0 -143
- package/src/MillerColumns/__tests__/MillerColumns.typeahead.test.tsx +0 -104
- package/src/MillerColumns/__tests__/MillerColumns.uncontrolled-state.test.tsx +0 -70
- package/src/MillerColumns/constants.ts +0 -2
- package/src/MillerColumns/hooks/index.ts +0 -7
- package/src/MillerColumns/hooks/useMillerColumnsColumn.ts +0 -26
- package/src/MillerColumns/hooks/useMillerColumnsColumnContext.ts +0 -1
- package/src/MillerColumns/hooks/useMillerColumnsContext.ts +0 -1
- package/src/MillerColumns/hooks/useMillerColumnsItem.ts +0 -179
- package/src/MillerColumns/hooks/useMillerColumnsItemContext.ts +0 -1
- package/src/MillerColumns/hooks/useMillerColumnsResizeHandle.ts +0 -146
- package/src/MillerColumns/hooks/useMillerColumnsRoot.ts +0 -0
- package/src/MillerColumns/index.ts +0 -7
- package/src/MillerColumns/types.ts +0 -252
- package/src/MillerColumns/useMillerColumnsSelection.ts +0 -31
- package/src/MillerColumns/utils.ts +0 -141
- package/src/Modal/Modal.tsx +0 -515
- package/src/Modal/ModalContext.ts +0 -20
- package/src/Modal/README.md +0 -222
- package/src/Modal/__tests__/Modal.accessibility.test.tsx +0 -167
- package/src/Modal/__tests__/Modal.asChild.test.tsx +0 -162
- package/src/Modal/__tests__/Modal.click-outside.test.tsx +0 -115
- package/src/Modal/__tests__/Modal.content.test.tsx +0 -193
- package/src/Modal/__tests__/Modal.controlled-state.test.tsx +0 -120
- package/src/Modal/__tests__/Modal.error-handling.test.tsx +0 -30
- package/src/Modal/__tests__/Modal.escape-hatches.test.tsx +0 -99
- package/src/Modal/__tests__/Modal.focus-trap.test.tsx +0 -162
- package/src/Modal/__tests__/Modal.imperative-api.test.tsx +0 -119
- package/src/Modal/__tests__/Modal.nested.test.tsx +0 -106
- package/src/Modal/__tests__/Modal.overlay.test.tsx +0 -99
- package/src/Modal/__tests__/Modal.portal.test.tsx +0 -90
- package/src/Modal/__tests__/Modal.presence.test.tsx +0 -111
- package/src/Modal/__tests__/Modal.trigger.test.tsx +0 -70
- package/src/Modal/__tests__/Modal.uncontrolled-state.test.tsx +0 -72
- package/src/Modal/__tests__/dialog-polyfill.ts +0 -40
- package/src/Modal/hooks/index.ts +0 -4
- package/src/Modal/hooks/useModalContent.ts +0 -94
- package/src/Modal/hooks/useModalContext.ts +0 -1
- package/src/Modal/hooks/useModalRoot.ts +0 -81
- package/src/Modal/hooks/useModalTrigger.ts +0 -25
- package/src/Modal/index.ts +0 -3
- package/src/Modal/types.ts +0 -206
- package/src/NavigationMenu/NavigationMenu.tsx +0 -890
- package/src/NavigationMenu/NavigationMenuContext.ts +0 -67
- package/src/NavigationMenu/README.md +0 -355
- package/src/NavigationMenu/__tests__/NavigationMenu.anchor-positioning.test.tsx +0 -132
- package/src/NavigationMenu/__tests__/NavigationMenu.asChild.test.tsx +0 -73
- package/src/NavigationMenu/__tests__/NavigationMenu.basic-rendering.test.tsx +0 -92
- package/src/NavigationMenu/__tests__/NavigationMenu.contract.test.tsx +0 -45
- package/src/NavigationMenu/__tests__/NavigationMenu.controlled-state.test.tsx +0 -134
- package/src/NavigationMenu/__tests__/NavigationMenu.error-handling.test.tsx +0 -62
- package/src/NavigationMenu/__tests__/NavigationMenu.fixtures.tsx +0 -79
- package/src/NavigationMenu/__tests__/NavigationMenu.forceMount.test.tsx +0 -52
- package/src/NavigationMenu/__tests__/NavigationMenu.hover-interaction.test.tsx +0 -254
- package/src/NavigationMenu/__tests__/NavigationMenu.indicator.test.tsx +0 -252
- package/src/NavigationMenu/__tests__/NavigationMenu.keyboard-interaction.test.tsx +0 -294
- package/src/NavigationMenu/__tests__/NavigationMenu.keyboard-navigation.test.tsx +0 -126
- package/src/NavigationMenu/__tests__/NavigationMenu.link.test.tsx +0 -139
- package/src/NavigationMenu/__tests__/NavigationMenu.motion.test.tsx +0 -568
- package/src/NavigationMenu/__tests__/NavigationMenu.mouse-interaction.test.tsx +0 -76
- package/src/NavigationMenu/__tests__/NavigationMenu.uncontrolled-state.test.tsx +0 -30
- package/src/NavigationMenu/__tests__/NavigationMenu.viewport.test.tsx +0 -113
- package/src/NavigationMenu/constants.ts +0 -5
- package/src/NavigationMenu/hooks/index.ts +0 -7
- package/src/NavigationMenu/hooks/useNavigationMenuEntry.ts +0 -33
- package/src/NavigationMenu/hooks/useNavigationMenuIndicator.ts +0 -70
- package/src/NavigationMenu/hooks/useNavigationMenuLink.ts +0 -72
- package/src/NavigationMenu/hooks/useNavigationMenuRoot.ts +0 -301
- package/src/NavigationMenu/hooks/useNavigationMenuTopLevelEntry.ts +0 -65
- package/src/NavigationMenu/hooks/useNavigationMenuTrigger.ts +0 -158
- package/src/NavigationMenu/hooks/useNavigationMenuViewport.ts +0 -101
- package/src/NavigationMenu/index.ts +0 -3
- package/src/NavigationMenu/types.ts +0 -259
- package/src/NavigationMenu/utils.ts +0 -89
- package/src/Popover/Popover.tsx +0 -427
- package/src/Popover/PopoverContext.ts +0 -13
- package/src/Popover/README.md +0 -106
- package/src/Popover/__tests__/Popover.anchor.test.tsx +0 -38
- package/src/Popover/__tests__/Popover.asChild.test.tsx +0 -160
- package/src/Popover/__tests__/Popover.basic-rendering.test.tsx +0 -106
- package/src/Popover/__tests__/Popover.click-outside.test.tsx +0 -149
- package/src/Popover/__tests__/Popover.close.test.tsx +0 -70
- package/src/Popover/__tests__/Popover.content.test.tsx +0 -58
- package/src/Popover/__tests__/Popover.controlled-state.test.tsx +0 -45
- package/src/Popover/__tests__/Popover.error-handling.test.tsx +0 -51
- package/src/Popover/__tests__/Popover.focus.test.tsx +0 -43
- package/src/Popover/__tests__/Popover.keyboard-interaction.test.tsx +0 -71
- package/src/Popover/__tests__/Popover.mouse-interaction.test.tsx +0 -69
- package/src/Popover/__tests__/Popover.uncontrolled-state.test.tsx +0 -44
- package/src/Popover/hooks/index.ts +0 -3
- package/src/Popover/hooks/usePopoverContent.ts +0 -98
- package/src/Popover/hooks/usePopoverRoot.ts +0 -84
- package/src/Popover/hooks/usePopoverTrigger.ts +0 -33
- package/src/Popover/index.ts +0 -2
- package/src/Popover/types.ts +0 -197
- package/src/Portal/Portal.tsx +0 -70
- package/src/Portal/README.md +0 -70
- package/src/Portal/__tests__/Portal.basic-rendering.test.tsx +0 -22
- package/src/Portal/index.ts +0 -2
- package/src/Portal/types.ts +0 -15
- package/src/Progress/Progress.tsx +0 -215
- package/src/Progress/ProgressContext.ts +0 -27
- package/src/Progress/README.md +0 -112
- package/src/Progress/__tests__/Progress.asChild.test.tsx +0 -37
- package/src/Progress/__tests__/Progress.basic-rendering.test.tsx +0 -75
- package/src/Progress/__tests__/Progress.error-handling.test.tsx +0 -40
- package/src/Progress/__tests__/Progress.fixtures.ts +0 -7
- package/src/Progress/__tests__/Progress.value.test.tsx +0 -104
- package/src/Progress/hooks/index.ts +0 -2
- package/src/Progress/hooks/useProgressContext.ts +0 -1
- package/src/Progress/hooks/useProgressRoot.ts +0 -45
- package/src/Progress/index.ts +0 -3
- package/src/Progress/types.ts +0 -59
- package/src/Radio/README.md +0 -160
- package/src/Radio/Radio.tsx +0 -210
- package/src/Radio/RadioContext.ts +0 -19
- package/src/Radio/__tests__/Radio.basic-rendering.test.tsx +0 -80
- package/src/Radio/__tests__/Radio.contract.test.tsx +0 -106
- package/src/Radio/__tests__/Radio.controlled-state.test.tsx +0 -79
- package/src/Radio/__tests__/Radio.disabled.test.tsx +0 -48
- package/src/Radio/__tests__/Radio.native-grouping.test.tsx +0 -77
- package/src/Radio/__tests__/Radio.parts.test.tsx +0 -76
- package/src/Radio/__tests__/Radio.uncontrolled-state.test.tsx +0 -96
- package/src/Radio/hooks/index.ts +0 -2
- package/src/Radio/hooks/useRadioContext.ts +0 -1
- package/src/Radio/hooks/useRadioRoot.ts +0 -51
- package/src/Radio/index.ts +0 -2
- package/src/Radio/types.ts +0 -90
- package/src/RadioCard/README.md +0 -134
- package/src/RadioCard/RadioCard.tsx +0 -354
- package/src/RadioCard/RadioCardContext.ts +0 -35
- package/src/RadioCard/RadioCardItemContext.ts +0 -23
- package/src/RadioCard/__tests__/RadioCard.asChild.test.tsx +0 -76
- package/src/RadioCard/__tests__/RadioCard.basic-rendering.test.tsx +0 -95
- package/src/RadioCard/__tests__/RadioCard.controlled-state.test.tsx +0 -107
- package/src/RadioCard/__tests__/RadioCard.disabled-items.test.tsx +0 -111
- package/src/RadioCard/__tests__/RadioCard.error-handling.test.tsx +0 -35
- package/src/RadioCard/__tests__/RadioCard.indicator.test.tsx +0 -119
- package/src/RadioCard/__tests__/RadioCard.keyboard-interaction.test.tsx +0 -211
- package/src/RadioCard/__tests__/RadioCard.orientation.test.tsx +0 -90
- package/src/RadioCard/__tests__/RadioCard.reading-direction.test.tsx +0 -65
- package/src/RadioCard/__tests__/RadioCard.ref-forwarding.test.tsx +0 -54
- package/src/RadioCard/__tests__/RadioCard.uncontrolled-state.test.tsx +0 -129
- package/src/RadioCard/hooks/index.ts +0 -3
- package/src/RadioCard/hooks/useRadioCardContext.ts +0 -1
- package/src/RadioCard/hooks/useRadioCardItemContext.ts +0 -1
- package/src/RadioCard/hooks/useRadioCardRoot.ts +0 -88
- package/src/RadioCard/index.ts +0 -4
- package/src/RadioCard/types.ts +0 -145
- package/src/RadioGroup/README.md +0 -185
- package/src/RadioGroup/RadioGroup.tsx +0 -370
- package/src/RadioGroup/RadioGroupContext.ts +0 -23
- package/src/RadioGroup/RadioGroupItemContext.ts +0 -10
- package/src/RadioGroup/__tests__/RadioGroup.asChild.test.tsx +0 -105
- package/src/RadioGroup/__tests__/RadioGroup.basic-rendering.test.tsx +0 -80
- package/src/RadioGroup/__tests__/RadioGroup.controlled-state.test.tsx +0 -109
- package/src/RadioGroup/__tests__/RadioGroup.disabled-keydown-guards.test.tsx +0 -68
- package/src/RadioGroup/__tests__/RadioGroup.disabled.test.tsx +0 -106
- package/src/RadioGroup/__tests__/RadioGroup.error-handling.test.tsx +0 -33
- package/src/RadioGroup/__tests__/RadioGroup.indicator.test.tsx +0 -85
- package/src/RadioGroup/__tests__/RadioGroup.keyboard-interaction.test.tsx +0 -135
- package/src/RadioGroup/__tests__/RadioGroup.orientation.test.tsx +0 -90
- package/src/RadioGroup/__tests__/RadioGroup.reading-direction.test.tsx +0 -65
- package/src/RadioGroup/__tests__/RadioGroup.ref-forwarding.test.tsx +0 -74
- package/src/RadioGroup/__tests__/RadioGroup.roving-tabindex.test.tsx +0 -136
- package/src/RadioGroup/__tests__/RadioGroup.uncontrolled-state.test.tsx +0 -96
- package/src/RadioGroup/hooks/index.ts +0 -3
- package/src/RadioGroup/hooks/useRadioGroupContext.ts +0 -1
- package/src/RadioGroup/hooks/useRadioGroupItemContext.ts +0 -1
- package/src/RadioGroup/hooks/useRadioGroupRoot.ts +0 -98
- package/src/RadioGroup/index.ts +0 -2
- package/src/RadioGroup/types.ts +0 -146
- package/src/SegmentedControl/README.md +0 -154
- package/src/SegmentedControl/SegmentedControl.tsx +0 -309
- package/src/SegmentedControl/SegmentedControlContext.ts +0 -28
- package/src/SegmentedControl/__tests__/SegmentedControl.asChild.test.tsx +0 -50
- package/src/SegmentedControl/__tests__/SegmentedControl.basic-rendering.test.tsx +0 -100
- package/src/SegmentedControl/__tests__/SegmentedControl.controlled-state.test.tsx +0 -107
- package/src/SegmentedControl/__tests__/SegmentedControl.disabled-keydown-guards.test.tsx +0 -62
- package/src/SegmentedControl/__tests__/SegmentedControl.disabled.test.tsx +0 -151
- package/src/SegmentedControl/__tests__/SegmentedControl.error-handling.test.tsx +0 -17
- package/src/SegmentedControl/__tests__/SegmentedControl.keyboard-interaction.test.tsx +0 -117
- package/src/SegmentedControl/__tests__/SegmentedControl.orientation.test.tsx +0 -54
- package/src/SegmentedControl/__tests__/SegmentedControl.reading-direction.test.tsx +0 -56
- package/src/SegmentedControl/__tests__/SegmentedControl.ref-forwarding.test.tsx +0 -45
- package/src/SegmentedControl/__tests__/SegmentedControl.roving-tabindex.test.tsx +0 -104
- package/src/SegmentedControl/__tests__/SegmentedControl.uncontrolled-state.test.tsx +0 -94
- package/src/SegmentedControl/hooks/index.ts +0 -2
- package/src/SegmentedControl/hooks/useSegmentedControlContext.ts +0 -1
- package/src/SegmentedControl/hooks/useSegmentedControlRoot.ts +0 -87
- package/src/SegmentedControl/index.ts +0 -2
- package/src/SegmentedControl/types.ts +0 -138
- package/src/Select/README.md +0 -168
- package/src/Select/Select.tsx +0 -746
- package/src/Select/SelectContext.ts +0 -38
- package/src/Select/SelectItemIndicatorContext.ts +0 -29
- package/src/Select/__tests__/Select.asChild.test.tsx +0 -36
- package/src/Select/__tests__/Select.basic-rendering.test.tsx +0 -36
- package/src/Select/__tests__/Select.controlled-state.test.tsx +0 -69
- package/src/Select/__tests__/Select.data-attributes.test.tsx +0 -29
- package/src/Select/__tests__/Select.field-integration.test.tsx +0 -150
- package/src/Select/__tests__/Select.form.test.tsx +0 -38
- package/src/Select/__tests__/Select.group.test.tsx +0 -42
- package/src/Select/__tests__/Select.keyboard-edge.test.tsx +0 -95
- package/src/Select/__tests__/Select.keyboard.test.tsx +0 -124
- package/src/Select/__tests__/Select.mutation-hardening.test.tsx +0 -317
- package/src/Select/__tests__/Select.native-item.test.tsx +0 -30
- package/src/Select/__tests__/Select.open-close.test.tsx +0 -57
- package/src/Select/__tests__/Select.placeholder.test.tsx +0 -50
- package/src/Select/__tests__/Select.rich-asChild.test.tsx +0 -60
- package/src/Select/__tests__/Select.rich-mode.test.tsx +0 -16
- package/src/Select/__tests__/Select.selection.test.tsx +0 -104
- package/src/Select/__tests__/Select.separator.test.tsx +0 -71
- package/src/Select/__tests__/Select.strict-context.test.tsx +0 -36
- package/src/Select/__tests__/Select.typeahead.test.tsx +0 -156
- package/src/Select/__tests__/Select.value-mirror.test.tsx +0 -240
- package/src/Select/constants.ts +0 -8
- package/src/Select/hooks/index.ts +0 -2
- package/src/Select/hooks/useSelectContent.ts +0 -149
- package/src/Select/hooks/useSelectRoot.ts +0 -149
- package/src/Select/index.ts +0 -2
- package/src/Select/types.ts +0 -272
- package/src/SkipNav/README.md +0 -87
- package/src/SkipNav/SkipNav.tsx +0 -161
- package/src/SkipNav/__tests__/SkipNav.basic-rendering.test.tsx +0 -29
- package/src/SkipNav/__tests__/SkipNav.ids.test.tsx +0 -19
- package/src/SkipNav/index.ts +0 -1
- package/src/SkipNav/types.ts +0 -34
- package/src/Slider/README.md +0 -245
- package/src/Slider/Slider.tsx +0 -361
- package/src/Slider/SliderContext.ts +0 -58
- package/src/Slider/__tests__/Slider.asChild.test.tsx +0 -119
- package/src/Slider/__tests__/Slider.basic-rendering.test.tsx +0 -157
- package/src/Slider/__tests__/Slider.controlled-state.test.tsx +0 -78
- package/src/Slider/__tests__/Slider.disabled.test.tsx +0 -82
- package/src/Slider/__tests__/Slider.error-handling.test.tsx +0 -45
- package/src/Slider/__tests__/Slider.fixtures.ts +0 -53
- package/src/Slider/__tests__/Slider.form.test.tsx +0 -67
- package/src/Slider/__tests__/Slider.inverted.test.tsx +0 -112
- package/src/Slider/__tests__/Slider.keyboard-interaction.test.tsx +0 -118
- package/src/Slider/__tests__/Slider.multiple-thumbs.test.tsx +0 -84
- package/src/Slider/__tests__/Slider.orientation.test.tsx +0 -101
- package/src/Slider/__tests__/Slider.pointer-interaction.test.tsx +0 -205
- package/src/Slider/__tests__/Slider.reading-direction.test.tsx +0 -99
- package/src/Slider/__tests__/Slider.uncontrolled-state.test.tsx +0 -69
- package/src/Slider/__tests__/Slider.value-commit.test.tsx +0 -103
- package/src/Slider/hooks/index.ts +0 -3
- package/src/Slider/hooks/useSliderContext.ts +0 -1
- package/src/Slider/hooks/useSliderRoot.ts +0 -197
- package/src/Slider/hooks/useSliderThumb.ts +0 -77
- package/src/Slider/index.ts +0 -3
- package/src/Slider/types.ts +0 -205
- package/src/Slider/utils.ts +0 -155
- package/src/Slot/Slot.tsx +0 -238
- package/src/Slot/__tests__/Slot.test.tsx +0 -273
- package/src/Slot/__tests__/composeEventHandlers.test.ts +0 -74
- package/src/Slot/composeEventHandlers.ts +0 -62
- package/src/Slot/index.ts +0 -3
- package/src/Slot/types.ts +0 -21
- package/src/SplitButton/README.md +0 -225
- package/src/SplitButton/SplitButton.tsx +0 -457
- package/src/SplitButton/SplitButtonContext.ts +0 -26
- package/src/SplitButton/__tests__/SplitButton.accessibility.test.tsx +0 -55
- package/src/SplitButton/__tests__/SplitButton.asChild.test.tsx +0 -51
- package/src/SplitButton/__tests__/SplitButton.basic-rendering.test.tsx +0 -57
- package/src/SplitButton/__tests__/SplitButton.data-attributes.test.tsx +0 -28
- package/src/SplitButton/__tests__/SplitButton.disabled.test.tsx +0 -79
- package/src/SplitButton/__tests__/SplitButton.error-handling.test.tsx +0 -29
- package/src/SplitButton/__tests__/SplitButton.keyboard-interaction.test.tsx +0 -56
- package/src/SplitButton/__tests__/SplitButton.state-modes.test.tsx +0 -68
- package/src/SplitButton/index.ts +0 -2
- package/src/SplitButton/types.ts +0 -186
- package/src/Status/README.md +0 -50
- package/src/Status/Status.tsx +0 -72
- package/src/Status/__tests__/Status.test.tsx +0 -33
- package/src/Status/index.ts +0 -2
- package/src/Status/types.ts +0 -20
- package/src/Switch/README.md +0 -126
- package/src/Switch/Switch.tsx +0 -203
- package/src/Switch/SwitchContext.ts +0 -20
- package/src/Switch/__tests__/Switch.asChild.test.tsx +0 -38
- package/src/Switch/__tests__/Switch.basic-rendering.test.tsx +0 -102
- package/src/Switch/__tests__/Switch.contract.test.tsx +0 -114
- package/src/Switch/__tests__/Switch.controlled-state.test.tsx +0 -77
- package/src/Switch/__tests__/Switch.disabled.test.tsx +0 -55
- package/src/Switch/__tests__/Switch.error-handling.test.tsx +0 -20
- package/src/Switch/__tests__/Switch.form.test.tsx +0 -55
- package/src/Switch/__tests__/Switch.keyboard-interaction.test.tsx +0 -56
- package/src/Switch/__tests__/Switch.recipe.test.ts +0 -19
- package/src/Switch/__tests__/Switch.thumb.test.tsx +0 -84
- package/src/Switch/__tests__/Switch.uncontrolled-state.test.tsx +0 -118
- package/src/Switch/hooks/index.ts +0 -2
- package/src/Switch/hooks/useSwitchContext.ts +0 -1
- package/src/Switch/hooks/useSwitchRoot.ts +0 -49
- package/src/Switch/index.ts +0 -3
- package/src/Switch/types.ts +0 -95
- package/src/Table/README.md +0 -307
- package/src/Table/Table.tsx +0 -636
- package/src/Table/TableExpandableContext.ts +0 -7
- package/src/Table/__tests__/Table.Body.test.tsx +0 -61
- package/src/Table/__tests__/Table.Caption.test.tsx +0 -70
- package/src/Table/__tests__/Table.Cell.test.tsx +0 -73
- package/src/Table/__tests__/Table.DetailRow.test.tsx +0 -83
- package/src/Table/__tests__/Table.ExpandTrigger.test.tsx +0 -102
- package/src/Table/__tests__/Table.Expandable.test.tsx +0 -121
- package/src/Table/__tests__/Table.Footer.test.tsx +0 -61
- package/src/Table/__tests__/Table.Head.test.tsx +0 -61
- package/src/Table/__tests__/Table.Header.test.tsx +0 -73
- package/src/Table/__tests__/Table.Root.test.tsx +0 -49
- package/src/Table/__tests__/Table.Row.test.tsx +0 -67
- package/src/Table/__tests__/Table.ScrollArea.test.tsx +0 -83
- package/src/Table/__tests__/Table.contract.test.tsx +0 -80
- package/src/Table/index.ts +0 -2
- package/src/Table/types.ts +0 -237
- package/src/Tabs/README.md +0 -111
- package/src/Tabs/Tabs.tsx +0 -465
- package/src/Tabs/TabsContext.ts +0 -21
- package/src/Tabs/__tests__/Tabs.activation-mode.test.tsx +0 -172
- package/src/Tabs/__tests__/Tabs.asChild.test.tsx +0 -91
- package/src/Tabs/__tests__/Tabs.basic-rendering.test.tsx +0 -498
- package/src/Tabs/__tests__/Tabs.change-event-callbacks.test.tsx +0 -157
- package/src/Tabs/__tests__/Tabs.contract.test.tsx +0 -153
- package/src/Tabs/__tests__/Tabs.controlled-state.test.tsx +0 -152
- package/src/Tabs/__tests__/Tabs.disabled-tabs.test.tsx +0 -239
- package/src/Tabs/__tests__/Tabs.error-handling.test.tsx +0 -82
- package/src/Tabs/__tests__/Tabs.fixtures.ts +0 -171
- package/src/Tabs/__tests__/Tabs.imperative-api.test.tsx +0 -118
- package/src/Tabs/__tests__/Tabs.keyboard-interaction.test.tsx +0 -192
- package/src/Tabs/__tests__/Tabs.lazy-mount.test.tsx +0 -78
- package/src/Tabs/__tests__/Tabs.mouse-interaction.test.tsx +0 -216
- package/src/Tabs/__tests__/Tabs.reading-direction.test.tsx +0 -58
- package/src/Tabs/__tests__/Tabs.uncontrolled-state.test.tsx +0 -197
- package/src/Tabs/hooks/index.ts +0 -4
- package/src/Tabs/hooks/useTabsContent.ts +0 -32
- package/src/Tabs/hooks/useTabsContext.ts +0 -1
- package/src/Tabs/hooks/useTabsRoot.ts +0 -172
- package/src/Tabs/hooks/useTabsTrigger.ts +0 -116
- package/src/Tabs/index.ts +0 -3
- package/src/Tabs/types.ts +0 -166
- package/src/Tabs/utils.ts +0 -8
- package/src/Textarea/README.md +0 -98
- package/src/Textarea/Textarea.tsx +0 -104
- package/src/Textarea/__tests__/Textarea.asChild.test.tsx +0 -85
- package/src/Textarea/__tests__/Textarea.basic-rendering.test.tsx +0 -112
- package/src/Textarea/__tests__/Textarea.disabled.test.tsx +0 -49
- package/src/Textarea/__tests__/Textarea.field-integration.test.tsx +0 -134
- package/src/Textarea/index.ts +0 -2
- package/src/Textarea/types.ts +0 -28
- package/src/Toggle/README.md +0 -97
- package/src/Toggle/Toggle.tsx +0 -126
- package/src/Toggle/__tests__/Toggle.asChild.test.tsx +0 -42
- package/src/Toggle/__tests__/Toggle.basic-rendering.test.tsx +0 -33
- package/src/Toggle/__tests__/Toggle.controlled-state.test.tsx +0 -60
- package/src/Toggle/__tests__/Toggle.disabled.test.tsx +0 -34
- package/src/Toggle/__tests__/Toggle.keyboard-interaction.test.tsx +0 -42
- package/src/Toggle/__tests__/Toggle.uncontrolled-state.test.tsx +0 -40
- package/src/Toggle/index.ts +0 -2
- package/src/Toggle/types.ts +0 -77
- package/src/ToggleGroup/README.md +0 -137
- package/src/ToggleGroup/ToggleGroup.tsx +0 -321
- package/src/ToggleGroup/ToggleGroupContext.ts +0 -9
- package/src/ToggleGroup/__tests__/ToggleGroup.asChild.test.tsx +0 -85
- package/src/ToggleGroup/__tests__/ToggleGroup.basic-rendering.test.tsx +0 -59
- package/src/ToggleGroup/__tests__/ToggleGroup.disabled.test.tsx +0 -54
- package/src/ToggleGroup/__tests__/ToggleGroup.dynamic-items.test.tsx +0 -70
- package/src/ToggleGroup/__tests__/ToggleGroup.error-handling.test.tsx +0 -23
- package/src/ToggleGroup/__tests__/ToggleGroup.keyboard-interaction.test.tsx +0 -173
- package/src/ToggleGroup/__tests__/ToggleGroup.multiple-mode.test.tsx +0 -144
- package/src/ToggleGroup/__tests__/ToggleGroup.reading-direction.test.tsx +0 -28
- package/src/ToggleGroup/__tests__/ToggleGroup.ref-forwarding.test.tsx +0 -58
- package/src/ToggleGroup/__tests__/ToggleGroup.single-mode.test.tsx +0 -139
- package/src/ToggleGroup/hooks/index.ts +0 -2
- package/src/ToggleGroup/hooks/useToggleGroupContext.ts +0 -1
- package/src/ToggleGroup/hooks/useToggleGroupRoot.ts +0 -130
- package/src/ToggleGroup/index.ts +0 -2
- package/src/ToggleGroup/types.ts +0 -165
- package/src/Tooltip/README.md +0 -214
- package/src/Tooltip/Tooltip.tsx +0 -369
- package/src/Tooltip/TooltipContext.ts +0 -20
- package/src/Tooltip/__tests__/Tooltip.asChild.test.tsx +0 -77
- package/src/Tooltip/__tests__/Tooltip.basic-rendering.test.tsx +0 -230
- package/src/Tooltip/__tests__/Tooltip.controlled-state.test.tsx +0 -128
- package/src/Tooltip/__tests__/Tooltip.error-handling.test.tsx +0 -37
- package/src/Tooltip/__tests__/Tooltip.escape-hatches.test.tsx +0 -146
- package/src/Tooltip/__tests__/Tooltip.focus-interaction.test.tsx +0 -88
- package/src/Tooltip/__tests__/Tooltip.hover-interaction.test.tsx +0 -179
- package/src/Tooltip/__tests__/Tooltip.keyboard-interaction.test.tsx +0 -219
- package/src/Tooltip/__tests__/Tooltip.skip-delay.test.tsx +0 -232
- package/src/Tooltip/__tests__/Tooltip.timer-coordination.test.tsx +0 -223
- package/src/Tooltip/__tests__/Tooltip.uncontrolled-state.test.tsx +0 -67
- package/src/Tooltip/hooks/__tests__/useTooltipProvider.test.tsx +0 -40
- package/src/Tooltip/hooks/index.ts +0 -4
- package/src/Tooltip/hooks/useTooltipContent.ts +0 -56
- package/src/Tooltip/hooks/useTooltipProvider.ts +0 -79
- package/src/Tooltip/hooks/useTooltipRoot.ts +0 -130
- package/src/Tooltip/hooks/useTooltipTrigger.ts +0 -44
- package/src/Tooltip/index.ts +0 -2
- package/src/Tooltip/types.ts +0 -193
- package/src/Tree/README.md +0 -403
- package/src/Tree/Tree.tsx +0 -771
- package/src/Tree/TreeContext.ts +0 -24
- package/src/Tree/__tests__/Tree.aria.test.tsx +0 -53
- package/src/Tree/__tests__/Tree.asChild.test.tsx +0 -134
- package/src/Tree/__tests__/Tree.basic-rendering.test.tsx +0 -111
- package/src/Tree/__tests__/Tree.branch-behaviour.test.tsx +0 -87
- package/src/Tree/__tests__/Tree.controlled-expansion.test.tsx +0 -92
- package/src/Tree/__tests__/Tree.data-attributes.test.tsx +0 -88
- package/src/Tree/__tests__/Tree.disabled-items.test.tsx +0 -196
- package/src/Tree/__tests__/Tree.error-handling.test.tsx +0 -71
- package/src/Tree/__tests__/Tree.forceMount.test.tsx +0 -72
- package/src/Tree/__tests__/Tree.keyboard-interaction.test.tsx +0 -150
- package/src/Tree/__tests__/Tree.multiple-selection.test.tsx +0 -151
- package/src/Tree/__tests__/Tree.range-selection.test.tsx +0 -200
- package/src/Tree/__tests__/Tree.recursion-depth.test.tsx +0 -73
- package/src/Tree/__tests__/Tree.roving-tabindex.test.tsx +0 -117
- package/src/Tree/__tests__/Tree.selection-path.test.tsx +0 -404
- package/src/Tree/__tests__/Tree.single-selection.test.tsx +0 -108
- package/src/Tree/__tests__/Tree.styled-wrapper.test.tsx +0 -159
- package/src/Tree/__tests__/Tree.uncontrolled-expansion.test.tsx +0 -69
- package/src/Tree/hooks/index.ts +0 -3
- package/src/Tree/hooks/useTreeItemKeyboard.ts +0 -86
- package/src/Tree/hooks/useTreePath.ts +0 -100
- package/src/Tree/hooks/useTreeRoot.ts +0 -279
- package/src/Tree/index.ts +0 -8
- package/src/Tree/types.ts +0 -298
- package/src/Tree/utils.ts +0 -101
- package/src/VisuallyHidden/README.md +0 -58
- package/src/VisuallyHidden/VisuallyHidden.tsx +0 -94
- package/src/VisuallyHidden/__tests__/VisuallyHidden.test.tsx +0 -73
- package/src/VisuallyHidden/index.ts +0 -2
- package/src/VisuallyHidden/types.ts +0 -19
- package/src/hooks/index.ts +0 -4
- package/src/hooks/useCollection.ts +0 -74
- package/src/hooks/useControllableState.ts +0 -81
- package/src/hooks/useRovingTabindex.ts +0 -178
- package/src/hooks/useTypeahead.ts +0 -95
- package/src/index.ts +0 -52
- package/src/test/intersectionObserverPolyfill.ts +0 -90
- package/src/test/popoverPolyfill.ts +0 -86
- package/src/test/resizeObserverPolyfill.ts +0 -80
- package/src/test/scrollPolyfill.ts +0 -23
- package/src/types.ts +0 -14
- package/src/useLocalStorage/__tests__/useLocalStorage.reading.test.tsx +0 -31
- package/src/useLocalStorage/__tests__/useLocalStorage.resilience.test.tsx +0 -97
- package/src/useLocalStorage/__tests__/useLocalStorage.ssr.test.tsx +0 -20
- package/src/useLocalStorage/__tests__/useLocalStorage.writing.test.tsx +0 -72
- package/src/useLocalStorage/index.ts +0 -1
- package/src/useLocalStorage/useLocalStorage.ts +0 -140
- package/src/useMediaQuery/README.md +0 -66
- package/src/useMediaQuery/__tests__/useMediaQuery.matching.test.tsx +0 -42
- package/src/useMediaQuery/__tests__/useMediaQuery.ssr.test.tsx +0 -19
- package/src/useMediaQuery/__tests__/useMediaQuery.subscription.test.tsx +0 -89
- package/src/useMediaQuery/index.ts +0 -1
- package/src/useMediaQuery/useMediaQuery.ts +0 -49
- package/src/usePagination/README.md +0 -170
- package/src/usePagination/__tests__/usePagination.navigation.test.tsx +0 -109
- package/src/usePagination/__tests__/usePagination.page-count.test.tsx +0 -56
- package/src/usePagination/__tests__/usePagination.page-state.test.tsx +0 -87
- package/src/usePagination/__tests__/usePagination.range.test.tsx +0 -82
- package/src/usePagination/__tests__/usePagination.slice.test.tsx +0 -59
- package/src/usePagination/__tests__/usePagination.windowing.test.tsx +0 -68
- package/src/usePagination/index.ts +0 -1
- package/src/usePagination/usePagination.ts +0 -292
- package/src/utils/__tests__/createStrictContext.test.tsx +0 -69
- package/src/utils/__tests__/deriveId.test.ts +0 -28
- package/src/utils/__tests__/getKeyToActionMap.test.ts +0 -106
- package/src/utils/createStrictContext.ts +0 -53
- package/src/utils/deriveId.ts +0 -31
- package/src/utils/focusable.ts +0 -15
- package/src/utils/getKeyToActionMap.ts +0 -95
- package/src/utils/index.ts +0 -4
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createContext } from "react";
|
|
3
|
+
import { createStrictContext } from "../utils/index.js";
|
|
4
|
+
const navigationMenuContextPair = createStrictContext("Component must be rendered as a child of NavigationMenu.Root", "NavigationMenuContext");
|
|
5
|
+
/** Strict React context carrying the {@link NavigationMenuContextValue} from
|
|
6
|
+
* `NavigationMenu.Root` to its descendants. `null` outside a Root. */
|
|
7
|
+
export const NavigationMenuContext = navigationMenuContextPair[0];
|
|
8
|
+
/** Reads the {@link NavigationMenuContextValue}; throws outside a
|
|
9
|
+
* `NavigationMenu.Root`. */
|
|
10
|
+
export const useNavigationMenuContext = navigationMenuContextPair[1];
|
|
11
|
+
/** Provider for {@link NavigationMenuContext}, used by `NavigationMenu.Root`. */
|
|
12
|
+
const NavigationMenuProvider = NavigationMenuContext.Provider;
|
|
13
|
+
export { NavigationMenuProvider };
|
|
14
|
+
const navigationMenuItemContextPair = createStrictContext("Component must be rendered as a child of NavigationMenu.Item", "NavigationMenuItemContext");
|
|
15
|
+
/** Strict React context carrying the {@link NavigationMenuItemContextValue}
|
|
16
|
+
* from `NavigationMenu.Item` to its Trigger and Content. `null` outside an
|
|
17
|
+
* Item. */
|
|
18
|
+
export const NavigationMenuItemContext = navigationMenuItemContextPair[0];
|
|
19
|
+
/** Reads the {@link NavigationMenuItemContextValue}; throws outside a
|
|
20
|
+
* `NavigationMenu.Item`. */
|
|
21
|
+
export const useNavigationMenuItemContext = navigationMenuItemContextPair[1];
|
|
22
|
+
/** Provider for {@link NavigationMenuItemContext}, used by
|
|
23
|
+
* `NavigationMenu.Item`. */
|
|
24
|
+
const NavigationMenuItemProvider = NavigationMenuItemContext.Provider;
|
|
25
|
+
export { NavigationMenuItemProvider };
|
|
26
|
+
/** Marks its subtree as being inside a `NavigationMenu.Content` panel.
|
|
27
|
+
* Deliberately **not** strict: the default `false` is the meaningful "I am a
|
|
28
|
+
* top-level entry" answer, so a Link outside any panel must read it without
|
|
29
|
+
* throwing. */
|
|
30
|
+
export const NavigationMenuPanelContext = createContext(false);
|
|
31
|
+
/** Provider for {@link NavigationMenuPanelContext}, used by
|
|
32
|
+
* `NavigationMenu.Content`. */
|
|
33
|
+
const NavigationMenuPanelProvider = NavigationMenuPanelContext.Provider;
|
|
34
|
+
export { NavigationMenuPanelProvider };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Focusable descendants a panel can hand focus to when the keyboard opens it
|
|
2
|
+
* with the enter-panel arrow. Deliberately narrow: nav panels hold links and
|
|
3
|
+
* the occasional button, and the first of those is the useful landing spot. */
|
|
4
|
+
export declare const PANEL_FOCUSABLE_SELECTOR = "a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
/** Focusable descendants a panel can hand focus to when the keyboard opens it
|
|
3
|
+
* with the enter-panel arrow. Deliberately narrow: nav panels hold links and
|
|
4
|
+
* the occasional button, and the first of those is the useful landing spot. */
|
|
5
|
+
export const PANEL_FOCUSABLE_SELECTOR = 'a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from "./useNavigationMenuEntry.js";
|
|
2
|
+
export * from "./useNavigationMenuIndicator.js";
|
|
3
|
+
export * from "./useNavigationMenuLink.js";
|
|
4
|
+
export * from "./useNavigationMenuRoot.js";
|
|
5
|
+
export * from "./useNavigationMenuTopLevelEntry.js";
|
|
6
|
+
export * from "./useNavigationMenuTrigger.js";
|
|
7
|
+
export * from "./useNavigationMenuViewport.js";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from "./useNavigationMenuEntry.js";
|
|
2
|
+
export * from "./useNavigationMenuIndicator.js";
|
|
3
|
+
export * from "./useNavigationMenuLink.js";
|
|
4
|
+
export * from "./useNavigationMenuRoot.js";
|
|
5
|
+
export * from "./useNavigationMenuTopLevelEntry.js";
|
|
6
|
+
export * from "./useNavigationMenuTrigger.js";
|
|
7
|
+
export * from "./useNavigationMenuViewport.js";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves everything a Trigger and its Content both need: the entry's value
|
|
3
|
+
* (from the enclosing Item), the paired ids, and whether this entry is the
|
|
4
|
+
* open one. Keeping it in one place is what guarantees the two sides agree on
|
|
5
|
+
* the ids they cross-reference.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useNavigationMenuEntry(): {
|
|
8
|
+
value: string;
|
|
9
|
+
triggerId: string;
|
|
10
|
+
panelId: string;
|
|
11
|
+
open: boolean;
|
|
12
|
+
state: "open" | "closed";
|
|
13
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useNavigationMenuContext, useNavigationMenuItemContext, } from "../NavigationMenuContext.js";
|
|
3
|
+
import { getTriggerAndPanelIds } from "../utils.js";
|
|
4
|
+
/**
|
|
5
|
+
* Resolves everything a Trigger and its Content both need: the entry's value
|
|
6
|
+
* (from the enclosing Item), the paired ids, and whether this entry is the
|
|
7
|
+
* open one. Keeping it in one place is what guarantees the two sides agree on
|
|
8
|
+
* the ids they cross-reference.
|
|
9
|
+
*/
|
|
10
|
+
export function useNavigationMenuEntry() {
|
|
11
|
+
const { navigationMenuId, openValue } = useNavigationMenuContext();
|
|
12
|
+
const { value: itemValue } = useNavigationMenuItemContext();
|
|
13
|
+
if (itemValue === undefined) {
|
|
14
|
+
throw new Error("NavigationMenu.Trigger and NavigationMenu.Content require a `value` on their NavigationMenu.Item. " +
|
|
15
|
+
"Omit the value only for a plain link entry, which has no panel to open.");
|
|
16
|
+
}
|
|
17
|
+
const value = itemValue;
|
|
18
|
+
const { triggerId, panelId } = getTriggerAndPanelIds(navigationMenuId, value);
|
|
19
|
+
const open = openValue !== "" && openValue === value;
|
|
20
|
+
return { value, triggerId, panelId, open, state: open ? "open" : "closed" };
|
|
21
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CSSProperties } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Measures the open trigger and hands back the geometry as custom properties.
|
|
4
|
+
*
|
|
5
|
+
* The library ships no styles, so the Indicator can't position itself — but
|
|
6
|
+
* only it can know *where* the open trigger is. Publishing the measurement as
|
|
7
|
+
* `--primitiv-navigation-menu-indicator-position` / `-size` splits that
|
|
8
|
+
* correctly: the component measures, the stylesheet decides whether that means
|
|
9
|
+
* `translate`, `left`, a border, or nothing at all.
|
|
10
|
+
*/
|
|
11
|
+
export declare function useNavigationMenuIndicator(): {
|
|
12
|
+
open: boolean;
|
|
13
|
+
openValue: string;
|
|
14
|
+
orientation: "horizontal" | "vertical";
|
|
15
|
+
style: CSSProperties;
|
|
16
|
+
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCallback, useEffect, useState } from "react";
|
|
3
|
+
import { useNavigationMenuContext } from "../NavigationMenuContext.js";
|
|
4
|
+
import { getTriggerAndPanelIds } from "../utils.js";
|
|
5
|
+
/**
|
|
6
|
+
* Measures the open trigger and hands back the geometry as custom properties.
|
|
7
|
+
*
|
|
8
|
+
* The library ships no styles, so the Indicator can't position itself — but
|
|
9
|
+
* only it can know *where* the open trigger is. Publishing the measurement as
|
|
10
|
+
* `--primitiv-navigation-menu-indicator-position` / `-size` splits that
|
|
11
|
+
* correctly: the component measures, the stylesheet decides whether that means
|
|
12
|
+
* `translate`, `left`, a border, or nothing at all.
|
|
13
|
+
*/
|
|
14
|
+
export function useNavigationMenuIndicator() {
|
|
15
|
+
const { orientation, openValue, navigationMenuId } = useNavigationMenuContext();
|
|
16
|
+
const open = openValue !== "";
|
|
17
|
+
const [geometry, setGeometry] = useState(null);
|
|
18
|
+
const measure = useCallback(() => {
|
|
19
|
+
// Closed and open-but-unrendered are the same measurement problem, so they
|
|
20
|
+
// share one path: `openValue === ""` derives a trigger id no element
|
|
21
|
+
// carries, and the missing-element branch below clears the geometry.
|
|
22
|
+
const { triggerId } = getTriggerAndPanelIds(navigationMenuId, openValue);
|
|
23
|
+
const trigger = document.getElementById(triggerId);
|
|
24
|
+
if (!trigger) {
|
|
25
|
+
setGeometry(null);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
setGeometry(orientation === "horizontal"
|
|
29
|
+
? { position: trigger.offsetLeft, size: trigger.offsetWidth }
|
|
30
|
+
: { position: trigger.offsetTop, size: trigger.offsetHeight });
|
|
31
|
+
}, [navigationMenuId, openValue, orientation]);
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
measure();
|
|
34
|
+
}, [measure]);
|
|
35
|
+
// Offsets are layout-dependent, so a reflow invalidates them. Re-measuring on
|
|
36
|
+
// resize is what stops the indicator drifting off its trigger after the nav
|
|
37
|
+
// rewraps.
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
window.addEventListener("resize", measure);
|
|
40
|
+
return () => window.removeEventListener("resize", measure);
|
|
41
|
+
}, [measure]);
|
|
42
|
+
// An `undefined` value is dropped by React, so a closed indicator simply
|
|
43
|
+
// carries no geometry rather than a stale or zeroed one.
|
|
44
|
+
const style = {
|
|
45
|
+
"--primitiv-navigation-menu-indicator-position": geometry
|
|
46
|
+
? `${geometry.position}px`
|
|
47
|
+
: undefined,
|
|
48
|
+
"--primitiv-navigation-menu-indicator-size": geometry
|
|
49
|
+
? `${geometry.size}px`
|
|
50
|
+
: undefined,
|
|
51
|
+
};
|
|
52
|
+
return { open, openValue, orientation, style };
|
|
53
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { KeyboardEvent, MouseEvent, PointerEvent, RefObject } from "react";
|
|
2
|
+
import type { NavigationMenuLinkProps } from "../types.js";
|
|
3
|
+
export declare function useNavigationMenuLink({ onKeyDown, onClick, onPointerEnter, }: Pick<NavigationMenuLinkProps, "onKeyDown" | "onClick" | "onPointerEnter">): {
|
|
4
|
+
linkRef: RefObject<HTMLAnchorElement | null>;
|
|
5
|
+
handleKeyDown: (event: KeyboardEvent<HTMLAnchorElement>) => void;
|
|
6
|
+
handleClick: (event: MouseEvent<HTMLAnchorElement>) => void;
|
|
7
|
+
handlePointerEnter: (event: PointerEvent<HTMLAnchorElement>) => void;
|
|
8
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useContext } from "react";
|
|
3
|
+
import { composeEventHandlers } from "../../Slot/index.js";
|
|
4
|
+
import { NavigationMenuPanelContext, useNavigationMenuContext, } from "../NavigationMenuContext.js";
|
|
5
|
+
import { useNavigationMenuTopLevelEntry } from "./useNavigationMenuTopLevelEntry.js";
|
|
6
|
+
export function useNavigationMenuLink({ onKeyDown, onClick, onPointerEnter, }) {
|
|
7
|
+
const { setOpenValue, cancelOpen, openOnHover } = useNavigationMenuContext();
|
|
8
|
+
// A link directly inside an Item is a top-level entry and joins the
|
|
9
|
+
// arrow-key travel order; a link inside a Content panel is reached by Tab
|
|
10
|
+
// instead, so it must stay out of that order.
|
|
11
|
+
const insidePanel = useContext(NavigationMenuPanelContext);
|
|
12
|
+
const { entryRef: linkRef, handleKeyDown: handleArrowKeyDown } = useNavigationMenuTopLevelEntry(!insidePanel);
|
|
13
|
+
const handleKeyDown = composeEventHandlers(onKeyDown, handleArrowKeyDown);
|
|
14
|
+
// Following a link ends the interaction, so the menu closes — whether the
|
|
15
|
+
// link was in a panel or a top-level entry alongside one. Leaving a panel
|
|
16
|
+
// hanging open over the page the user just navigated to is the bug this
|
|
17
|
+
// avoids.
|
|
18
|
+
const handleClick = composeEventHandlers(onClick, () => {
|
|
19
|
+
cancelOpen();
|
|
20
|
+
setOpenValue("");
|
|
21
|
+
});
|
|
22
|
+
// Hovering a top-level link dismisses whatever is open, so travelling along the
|
|
23
|
+
// bar past a plain entry behaves like travelling onto another trigger. Without
|
|
24
|
+
// this, moving from an open trigger onto a link beside it leaves that panel
|
|
25
|
+
// hanging over the page with the pointer nowhere near it.
|
|
26
|
+
//
|
|
27
|
+
// Panel links are exempt for the obvious reason: hovering a row inside a panel
|
|
28
|
+
// must not close the panel it lives in. And it follows `openOnHover`, so a
|
|
29
|
+
// click-only nav stays click-only in both directions.
|
|
30
|
+
const handlePointerEnter = composeEventHandlers(onPointerEnter, () => {
|
|
31
|
+
if (insidePanel || !openOnHover)
|
|
32
|
+
return;
|
|
33
|
+
cancelOpen();
|
|
34
|
+
setOpenValue("");
|
|
35
|
+
});
|
|
36
|
+
return { linkRef, handleKeyDown, handleClick, handlePointerEnter };
|
|
37
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { CSSProperties, FocusEvent, KeyboardEvent } from "react";
|
|
2
|
+
import type { NavigationMenuContextValue, NavigationMenuOrientation, NavigationMenuReadingDirection, NavigationMenuRootProps } from "../types.js";
|
|
3
|
+
/** The presentation props arrive **resolved**: `NavigationMenu.Root` applies
|
|
4
|
+
* its own documented defaults (and inherits `dir` from `DirectionProvider`)
|
|
5
|
+
* before calling the hook, so they are required here rather than defaulted a
|
|
6
|
+
* second time — one set of defaults, in the place consumers read them from. */
|
|
7
|
+
type UseNavigationMenuRootArgs = {
|
|
8
|
+
orientation: NavigationMenuOrientation;
|
|
9
|
+
dir: NavigationMenuReadingDirection;
|
|
10
|
+
openOnHover: boolean;
|
|
11
|
+
delayDuration: number;
|
|
12
|
+
closeDelay: number;
|
|
13
|
+
} & Pick<NavigationMenuRootProps, "defaultValue" | "value" | "onValueChange">;
|
|
14
|
+
export declare function useNavigationMenuRoot({ orientation, dir, openOnHover, delayDuration, closeDelay, defaultValue, value, onValueChange, }: UseNavigationMenuRootArgs): {
|
|
15
|
+
contextValue: NavigationMenuContextValue;
|
|
16
|
+
cancelClose: () => void;
|
|
17
|
+
closeWithDelay: () => void;
|
|
18
|
+
closeOnFocusOutside: (event: FocusEvent<HTMLElement>) => void;
|
|
19
|
+
handleKeyDown: (event: KeyboardEvent<HTMLElement>) => void;
|
|
20
|
+
/** Publishes the open entry's trigger `anchor-name` as
|
|
21
|
+
* `--primitiv-navigation-menu-active-trigger-anchor`, so the shared
|
|
22
|
+
* Viewport's `position-anchor` can target whichever trigger is open. Unset
|
|
23
|
+
* (dropped by React) while nothing is open. */
|
|
24
|
+
style: CSSProperties;
|
|
25
|
+
};
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
|
|
3
|
+
import { useCollection, useControllableState } from "../../hooks/index.js";
|
|
4
|
+
import { getTriggerAnchorName, getTriggerAndPanelIds } from "../utils.js";
|
|
5
|
+
export function useNavigationMenuRoot({ orientation, dir, openOnHover, delayDuration, closeDelay, defaultValue, value, onValueChange, }) {
|
|
6
|
+
const navigationMenuId = useId();
|
|
7
|
+
const [openValue, setOpenValue] = useControllableState(value, defaultValue ?? "", onValueChange);
|
|
8
|
+
// What was open before the current value, so a panel can tell which way the
|
|
9
|
+
// pointer travelled. Adjusted during render — the pattern React documents for
|
|
10
|
+
// deriving state from a changed input — rather than in an effect: an effect
|
|
11
|
+
// lands a frame late, by which time the panel has already begun animating with
|
|
12
|
+
// no direction to animate in.
|
|
13
|
+
const [trackedValue, setTrackedValue] = useState(openValue);
|
|
14
|
+
// The seed is only ever fed to `itemValues.indexOf()`, which rejects "" and any
|
|
15
|
+
// other unregistered string identically — so its value is unobservable. It has to
|
|
16
|
+
// be "" rather than `openValue`, though: seeding it with the open value would give
|
|
17
|
+
// a nav mounted with a `defaultValue` a spurious travel direction on first paint.
|
|
18
|
+
// Stryker disable next-line StringLiteral: equivalent — see above.
|
|
19
|
+
const [previousValue, setPreviousValue] = useState("");
|
|
20
|
+
if (trackedValue !== openValue) {
|
|
21
|
+
setPreviousValue(trackedValue);
|
|
22
|
+
setTrackedValue(openValue);
|
|
23
|
+
}
|
|
24
|
+
const { register: registerEntry, itemsRef: entriesRef, keys: entryKeys, } = useCollection();
|
|
25
|
+
// A second registry, keyed by the Item's own `value`. The entry registry above
|
|
26
|
+
// can't serve this: it keys by a generated id because plain link entries join it
|
|
27
|
+
// too and have no value. Registration order is mount order, which for siblings is
|
|
28
|
+
// DOM order — so `itemValues` is the left-to-right order of the disclosure
|
|
29
|
+
// entries, which is what a panel needs to know which way it is travelling.
|
|
30
|
+
const { register: registerItem, itemsRef: itemElementsRef, keys: registeredValues, } = useCollection();
|
|
31
|
+
// Sorted by document position, not registration order. `useCollection` keys are
|
|
32
|
+
// insertion-ordered, which matches the DOM only while nothing changes: re-register
|
|
33
|
+
// an entry (a `value` that changes) and its key is appended, so the order silently
|
|
34
|
+
// stops describing the layout and panels slide the wrong way. Asking the DOM is the
|
|
35
|
+
// only source that cannot drift.
|
|
36
|
+
const itemValues = useMemo(() => [...registeredValues].sort((a, b) => {
|
|
37
|
+
// Non-null: `register` writes the element and the key in the same call, so a
|
|
38
|
+
// key present in `registeredValues` always has a live element in the map —
|
|
39
|
+
// the same invariant Tree's root relies on for its own registry reads.
|
|
40
|
+
const first = itemElementsRef.current.get(a);
|
|
41
|
+
const second = itemElementsRef.current.get(b);
|
|
42
|
+
return first.compareDocumentPosition(second) &
|
|
43
|
+
Node.DOCUMENT_POSITION_FOLLOWING
|
|
44
|
+
? -1
|
|
45
|
+
: 1;
|
|
46
|
+
}), [registeredValues, itemElementsRef]);
|
|
47
|
+
const focusEntry = useCallback((key) => {
|
|
48
|
+
// `key` only ever arrives from `entryKeys`, and `useCollection`'s
|
|
49
|
+
// register() writes `entriesRef` and the `keys` state in the same call —
|
|
50
|
+
// so a key that reaches here always has a live element in the map.
|
|
51
|
+
// Stryker disable next-line OptionalChaining: unreachable given that invariant.
|
|
52
|
+
entriesRef.current.get(key)?.focus();
|
|
53
|
+
},
|
|
54
|
+
// `entriesRef` is a stable RefObject, so emptying this array yields the
|
|
55
|
+
// identical memoised function.
|
|
56
|
+
// Stryker disable next-line ArrayDeclaration: equivalent — stable dependency.
|
|
57
|
+
[entriesRef]);
|
|
58
|
+
// Held as state, not a ref, because Content has to re-render once the
|
|
59
|
+
// viewport exists in order to portal into it. The Viewport hands its element
|
|
60
|
+
// over in a ref callback, which React runs before paint — so the one commit
|
|
61
|
+
// where Content still renders in place never reaches the screen. `setViewport`
|
|
62
|
+
// *is* the registrar: it already has the ref-callback signature and a stable
|
|
63
|
+
// identity, so wrapping it would only add indirection.
|
|
64
|
+
const [viewport, setViewport] = useState(null);
|
|
65
|
+
// `undefined` rather than `null` for "no timer pending", because
|
|
66
|
+
// `clearTimeout(undefined)` is a spec'd no-op — cancelling is then one
|
|
67
|
+
// unconditional clear instead of a guarded one, with nothing to get wrong.
|
|
68
|
+
const openTimerRef = useRef(undefined);
|
|
69
|
+
const closeTimerRef = useRef(undefined);
|
|
70
|
+
// `openValue` is read inside callbacks that must not be re-created on every
|
|
71
|
+
// open/close — a fresh `openWithIntent` identity would re-run the Trigger's
|
|
72
|
+
// handlers. A ref keeps the reads current without widening the deps.
|
|
73
|
+
const openValueRef = useRef(openValue);
|
|
74
|
+
openValueRef.current = openValue;
|
|
75
|
+
const cancelOpen = useCallback(() => {
|
|
76
|
+
clearTimeout(openTimerRef.current);
|
|
77
|
+
openTimerRef.current = undefined;
|
|
78
|
+
},
|
|
79
|
+
// Stryker's only mutation of an empty dependency array is
|
|
80
|
+
// `["Stryker was here"]` — a string literal React compares `===`-equal on
|
|
81
|
+
// every render, so the memoised identity is unchanged either way.
|
|
82
|
+
// Stryker disable next-line ArrayDeclaration: equivalent — no dependency to freeze.
|
|
83
|
+
[]);
|
|
84
|
+
const cancelClose = useCallback(() => {
|
|
85
|
+
clearTimeout(closeTimerRef.current);
|
|
86
|
+
closeTimerRef.current = undefined;
|
|
87
|
+
},
|
|
88
|
+
// Stryker disable next-line ArrayDeclaration: equivalent — no dependency to freeze (see cancelOpen).
|
|
89
|
+
[]);
|
|
90
|
+
const openWithIntent = useCallback((next) => {
|
|
91
|
+
cancelClose();
|
|
92
|
+
cancelOpen();
|
|
93
|
+
// Once one panel is open the nav is already "active", so crossing to a
|
|
94
|
+
// sibling trigger swaps panels instantly — waiting again would feel
|
|
95
|
+
// broken. The delay only guards the first open.
|
|
96
|
+
if (openValueRef.current !== "" || delayDuration === 0) {
|
|
97
|
+
setOpenValue(next);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
openTimerRef.current = setTimeout(() => {
|
|
101
|
+
openTimerRef.current = undefined;
|
|
102
|
+
setOpenValue(next);
|
|
103
|
+
}, delayDuration);
|
|
104
|
+
}, [cancelClose, cancelOpen, delayDuration, setOpenValue]);
|
|
105
|
+
// Escape is handled once, at the `<nav>`, because it must work from anywhere
|
|
106
|
+
// inside the menu — including from a link deep in an open panel — and
|
|
107
|
+
// returning focus to the trigger is what stops the user being stranded on an
|
|
108
|
+
// element that just went `hidden`.
|
|
109
|
+
const closeAndRefocusTrigger = useCallback(() => {
|
|
110
|
+
const value = openValueRef.current;
|
|
111
|
+
if (value === "")
|
|
112
|
+
return;
|
|
113
|
+
cancelOpen();
|
|
114
|
+
const { triggerId } = getTriggerAndPanelIds(navigationMenuId, value);
|
|
115
|
+
document.getElementById(triggerId)?.focus();
|
|
116
|
+
setOpenValue("");
|
|
117
|
+
}, [cancelOpen, navigationMenuId, setOpenValue]);
|
|
118
|
+
const closeWithDelay = useCallback(() => {
|
|
119
|
+
cancelOpen();
|
|
120
|
+
closeTimerRef.current = setTimeout(() => {
|
|
121
|
+
closeTimerRef.current = undefined;
|
|
122
|
+
setOpenValue("");
|
|
123
|
+
}, closeDelay);
|
|
124
|
+
}, [cancelOpen, closeDelay, setOpenValue]);
|
|
125
|
+
// Keyboard focus leaving the `<nav>` entirely — Tab past the last entry, or
|
|
126
|
+
// into an unrelated element such as a second, independent NavigationMenu —
|
|
127
|
+
// means the open panel is no longer where focus is. Unlike Escape this
|
|
128
|
+
// doesn't refocus the trigger: focus already chose where it's going, and
|
|
129
|
+
// fighting that would break Tab order. `relatedTarget` is `null` for some
|
|
130
|
+
// focus transitions (e.g. the browser chrome); treated as "outside", the
|
|
131
|
+
// same call Carousel's own blur handler makes.
|
|
132
|
+
const closeOnFocusOutside = useCallback((event) => {
|
|
133
|
+
if (openValueRef.current === "")
|
|
134
|
+
return;
|
|
135
|
+
const next = event.relatedTarget;
|
|
136
|
+
if (next && event.currentTarget.contains(next))
|
|
137
|
+
return;
|
|
138
|
+
cancelOpen();
|
|
139
|
+
setOpenValue("");
|
|
140
|
+
}, [cancelOpen, setOpenValue]);
|
|
141
|
+
useEffect(() => () => {
|
|
142
|
+
cancelOpen();
|
|
143
|
+
cancelClose();
|
|
144
|
+
},
|
|
145
|
+
// Both are `useCallback(..., [])`, so their identities are fixed for the
|
|
146
|
+
// component's lifetime: emptying this array subscribes the cleanup exactly
|
|
147
|
+
// once either way.
|
|
148
|
+
// Stryker disable next-line ArrayDeclaration: equivalent — stable dependencies.
|
|
149
|
+
[cancelOpen, cancelClose]);
|
|
150
|
+
const contextValue = useMemo(() => ({
|
|
151
|
+
orientation,
|
|
152
|
+
dir,
|
|
153
|
+
navigationMenuId,
|
|
154
|
+
openValue,
|
|
155
|
+
previousValue,
|
|
156
|
+
setOpenValue,
|
|
157
|
+
openOnHover,
|
|
158
|
+
openWithIntent,
|
|
159
|
+
cancelOpen,
|
|
160
|
+
registerEntry,
|
|
161
|
+
entryKeys,
|
|
162
|
+
registerItem,
|
|
163
|
+
itemValues,
|
|
164
|
+
focusEntry,
|
|
165
|
+
viewport,
|
|
166
|
+
registerViewport: setViewport,
|
|
167
|
+
}), [
|
|
168
|
+
orientation,
|
|
169
|
+
dir,
|
|
170
|
+
navigationMenuId,
|
|
171
|
+
openValue,
|
|
172
|
+
previousValue,
|
|
173
|
+
setOpenValue,
|
|
174
|
+
openOnHover,
|
|
175
|
+
openWithIntent,
|
|
176
|
+
cancelOpen,
|
|
177
|
+
registerEntry,
|
|
178
|
+
entryKeys,
|
|
179
|
+
registerItem,
|
|
180
|
+
itemValues,
|
|
181
|
+
focusEntry,
|
|
182
|
+
viewport,
|
|
183
|
+
]);
|
|
184
|
+
const handleKeyDown = useCallback((event) => {
|
|
185
|
+
if (event.key !== "Escape")
|
|
186
|
+
return;
|
|
187
|
+
closeAndRefocusTrigger();
|
|
188
|
+
}, [closeAndRefocusTrigger]);
|
|
189
|
+
const style = {
|
|
190
|
+
"--primitiv-navigation-menu-active-trigger-anchor": openValue === ""
|
|
191
|
+
? undefined
|
|
192
|
+
: getTriggerAnchorName(getTriggerAndPanelIds(navigationMenuId, openValue).triggerId),
|
|
193
|
+
};
|
|
194
|
+
return {
|
|
195
|
+
contextValue,
|
|
196
|
+
cancelClose,
|
|
197
|
+
closeWithDelay,
|
|
198
|
+
closeOnFocusOutside,
|
|
199
|
+
handleKeyDown,
|
|
200
|
+
style,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { KeyboardEvent, RefObject } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Joins an element to the nav's top-level travel order: registers it so the
|
|
4
|
+
* arrow keys can reach it, and returns the keydown handler that does the
|
|
5
|
+
* reaching.
|
|
6
|
+
*
|
|
7
|
+
* Despite building on `useRovingTabindex`, this is deliberately **not** a
|
|
8
|
+
* roving tabindex — no `tabIndex={-1}` is handed back, so every top-level
|
|
9
|
+
* entry stays in the tab order. That is the ARIA APG *Disclosure Navigation
|
|
10
|
+
* Menu* contract: these are links to pages, and a keyboard user must be able
|
|
11
|
+
* to Tab through them without learning that arrows are required. The hook
|
|
12
|
+
* uses `useRovingTabindex` purely for its orientation/RTL-aware keymap.
|
|
13
|
+
*
|
|
14
|
+
* @param enabled Whether this element is a top-level entry at all. A
|
|
15
|
+
* `NavigationMenu.Link` inside a `NavigationMenu.Content` passes `false`:
|
|
16
|
+
* panel links are reached by Tab, not by the top-level arrow keys.
|
|
17
|
+
*/
|
|
18
|
+
export declare function useNavigationMenuTopLevelEntry<T extends HTMLElement>(enabled?: boolean): {
|
|
19
|
+
entryRef: RefObject<T | null>;
|
|
20
|
+
handleKeyDown: (event: KeyboardEvent<HTMLElement>) => void;
|
|
21
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useEffect, useId, useRef } from "react";
|
|
3
|
+
import { useRovingTabindex } from "../../hooks/index.js";
|
|
4
|
+
import { useNavigationMenuContext } from "../NavigationMenuContext.js";
|
|
5
|
+
/** Keydown handler for an element that is not a top-level entry: every travel
|
|
6
|
+
* key is left to the browser, so `Home` inside an open panel still scrolls the
|
|
7
|
+
* page rather than jumping out of the panel. */
|
|
8
|
+
function ignoreTravelKeys() { }
|
|
9
|
+
/**
|
|
10
|
+
* Joins an element to the nav's top-level travel order: registers it so the
|
|
11
|
+
* arrow keys can reach it, and returns the keydown handler that does the
|
|
12
|
+
* reaching.
|
|
13
|
+
*
|
|
14
|
+
* Despite building on `useRovingTabindex`, this is deliberately **not** a
|
|
15
|
+
* roving tabindex — no `tabIndex={-1}` is handed back, so every top-level
|
|
16
|
+
* entry stays in the tab order. That is the ARIA APG *Disclosure Navigation
|
|
17
|
+
* Menu* contract: these are links to pages, and a keyboard user must be able
|
|
18
|
+
* to Tab through them without learning that arrows are required. The hook
|
|
19
|
+
* uses `useRovingTabindex` purely for its orientation/RTL-aware keymap.
|
|
20
|
+
*
|
|
21
|
+
* @param enabled Whether this element is a top-level entry at all. A
|
|
22
|
+
* `NavigationMenu.Link` inside a `NavigationMenu.Content` passes `false`:
|
|
23
|
+
* panel links are reached by Tab, not by the top-level arrow keys.
|
|
24
|
+
*/
|
|
25
|
+
export function useNavigationMenuTopLevelEntry(enabled = true) {
|
|
26
|
+
const { orientation, dir, registerEntry, entryKeys, focusEntry } = useNavigationMenuContext();
|
|
27
|
+
const key = useId();
|
|
28
|
+
const entryRef = useRef(null);
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
if (!enabled)
|
|
31
|
+
return;
|
|
32
|
+
registerEntry(key, entryRef.current);
|
|
33
|
+
return () => registerEntry(key, null);
|
|
34
|
+
// `key` is a `useId`, `registerEntry` a stable context callback, and
|
|
35
|
+
// `enabled` is fixed by this element's position in the tree (inside a
|
|
36
|
+
// Content panel or not) — none can change while the entry stays mounted.
|
|
37
|
+
// Stryker disable next-line ArrayDeclaration: equivalent — stable dependencies.
|
|
38
|
+
}, [enabled, key, registerEntry]);
|
|
39
|
+
const { handleKeyDown: travel } = useRovingTabindex({
|
|
40
|
+
orientation,
|
|
41
|
+
dir,
|
|
42
|
+
navigable: entryKeys,
|
|
43
|
+
currentKey: key,
|
|
44
|
+
includeHomeEnd: true,
|
|
45
|
+
// Enter/Space must reach the element as a native activation — a button's
|
|
46
|
+
// click, a link's navigation. Claiming them here would preventDefault
|
|
47
|
+
// both.
|
|
48
|
+
includeActivate: false,
|
|
49
|
+
onNavigate: (target) => focusEntry(target),
|
|
50
|
+
});
|
|
51
|
+
// A panel link must not be able to reach the top-level order — not with the
|
|
52
|
+
// arrows, and not with Home/End either — so it gets no travel handler at all.
|
|
53
|
+
return { entryRef, handleKeyDown: enabled ? travel : ignoreTravelKeys };
|
|
54
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { KeyboardEvent, MouseEvent, PointerEvent, RefObject } from "react";
|
|
2
|
+
import type { NavigationMenuTriggerProps } from "../types.js";
|
|
3
|
+
export declare function useNavigationMenuTrigger({ onClick, onPointerEnter, onPointerLeave, onKeyDown, }: Pick<NavigationMenuTriggerProps, "onClick" | "onPointerEnter" | "onPointerLeave" | "onKeyDown">): {
|
|
4
|
+
triggerRef: RefObject<HTMLButtonElement | null>;
|
|
5
|
+
triggerId: string;
|
|
6
|
+
panelId: string;
|
|
7
|
+
open: boolean;
|
|
8
|
+
state: "open" | "closed";
|
|
9
|
+
/** This trigger's own `anchor-name`, so the shared Viewport can position
|
|
10
|
+
* its panel relative to whichever trigger opened it. */
|
|
11
|
+
anchorName: string;
|
|
12
|
+
handleClick: (event: MouseEvent<HTMLButtonElement>) => void;
|
|
13
|
+
handlePointerEnter: (event: PointerEvent<HTMLButtonElement>) => void;
|
|
14
|
+
handlePointerLeave: (event: PointerEvent<HTMLButtonElement>) => void;
|
|
15
|
+
handleKeyDown: (event: KeyboardEvent<HTMLButtonElement>) => void;
|
|
16
|
+
};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCallback, useEffect, useRef } from "react";
|
|
3
|
+
import { composeEventHandlers } from "../../Slot/index.js";
|
|
4
|
+
import { PANEL_FOCUSABLE_SELECTOR } from "../constants.js";
|
|
5
|
+
import { useNavigationMenuContext } from "../NavigationMenuContext.js";
|
|
6
|
+
import { getTriggerAnchorName } from "../utils.js";
|
|
7
|
+
import { useNavigationMenuEntry } from "./useNavigationMenuEntry.js";
|
|
8
|
+
import { useNavigationMenuTopLevelEntry } from "./useNavigationMenuTopLevelEntry.js";
|
|
9
|
+
export function useNavigationMenuTrigger({ onClick, onPointerEnter, onPointerLeave, onKeyDown, }) {
|
|
10
|
+
const { orientation, dir, setOpenValue, openOnHover, openWithIntent, cancelOpen, } = useNavigationMenuContext();
|
|
11
|
+
const { value, triggerId, panelId, open, state } = useNavigationMenuEntry();
|
|
12
|
+
const { entryRef: triggerRef, handleKeyDown: handleArrowKeyDown } = useNavigationMenuTopLevelEntry();
|
|
13
|
+
// What `open` was when the pointer arrived, or `undefined` when no pointer
|
|
14
|
+
// is over the trigger. A pointer that comes to click first fires
|
|
15
|
+
// `pointerenter`, which — with hover-to-open — opens the panel *before* the
|
|
16
|
+
// click lands. Toggling against the live `open` would then close it again on
|
|
17
|
+
// that same click. Toggling against the pre-hover value is what makes a
|
|
18
|
+
// click mean "toggle what I saw", not "undo my own hover".
|
|
19
|
+
const openOnPointerEnterRef = useRef(undefined);
|
|
20
|
+
const toggle = useCallback(() => {
|
|
21
|
+
// A click is a decision, so it bypasses hover intent entirely — including
|
|
22
|
+
// any open timer already ticking from the pointer that arrived to click.
|
|
23
|
+
cancelOpen();
|
|
24
|
+
const wasOpen = openOnPointerEnterRef.current ?? open;
|
|
25
|
+
// Cleared so a second click on a still-hovered trigger toggles against
|
|
26
|
+
// live state rather than replaying the stale arrival value.
|
|
27
|
+
openOnPointerEnterRef.current = undefined;
|
|
28
|
+
setOpenValue(wasOpen ? "" : value);
|
|
29
|
+
}, [cancelOpen, open, setOpenValue, value]);
|
|
30
|
+
const hoverOpen = useCallback(() => {
|
|
31
|
+
openOnPointerEnterRef.current = open;
|
|
32
|
+
if (openOnHover)
|
|
33
|
+
openWithIntent(value);
|
|
34
|
+
}, [open, openOnHover, openWithIntent, value]);
|
|
35
|
+
const pointerLeave = useCallback(() => {
|
|
36
|
+
openOnPointerEnterRef.current = undefined;
|
|
37
|
+
cancelOpen();
|
|
38
|
+
},
|
|
39
|
+
// `cancelOpen` is a `useCallback(..., [])` on the Root, so its identity is
|
|
40
|
+
// fixed for the nav's lifetime — emptying this array yields the identical
|
|
41
|
+
// memoised function.
|
|
42
|
+
// Stryker disable next-line ArrayDeclaration: equivalent — stable dependency.
|
|
43
|
+
[cancelOpen]);
|
|
44
|
+
// The arrow that "goes into" the panel is the one pointing across the list's
|
|
45
|
+
// axis: down out of a horizontal bar, sideways out of a vertical rail (and
|
|
46
|
+
// that sideways key mirrors under RTL).
|
|
47
|
+
const enterPanelKey = orientation === "horizontal"
|
|
48
|
+
? "ArrowDown"
|
|
49
|
+
: dir === "rtl"
|
|
50
|
+
? "ArrowLeft"
|
|
51
|
+
: "ArrowRight";
|
|
52
|
+
// Focus can only land in the panel once it has actually rendered unhidden, so
|
|
53
|
+
// the keypress records the intent and this effect spends it.
|
|
54
|
+
const enterPanelPendingRef = useRef(false);
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
if (!enterPanelPendingRef.current || !open)
|
|
57
|
+
return;
|
|
58
|
+
enterPanelPendingRef.current = false;
|
|
59
|
+
document
|
|
60
|
+
.getElementById(panelId)
|
|
61
|
+
?.querySelector(PANEL_FOCUSABLE_SELECTOR)
|
|
62
|
+
?.focus();
|
|
63
|
+
}, [open, panelId]);
|
|
64
|
+
const enterPanel = useCallback((event) => {
|
|
65
|
+
if (event.key !== enterPanelKey)
|
|
66
|
+
return;
|
|
67
|
+
event.preventDefault();
|
|
68
|
+
cancelOpen();
|
|
69
|
+
enterPanelPendingRef.current = true;
|
|
70
|
+
// Already-open panels never re-run the effect (`open` doesn't change), so
|
|
71
|
+
// move focus straight away in that case.
|
|
72
|
+
if (open) {
|
|
73
|
+
enterPanelPendingRef.current = false;
|
|
74
|
+
document
|
|
75
|
+
.getElementById(panelId)
|
|
76
|
+
?.querySelector(PANEL_FOCUSABLE_SELECTOR)
|
|
77
|
+
?.focus();
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
setOpenValue(value);
|
|
81
|
+
}, [cancelOpen, enterPanelKey, open, panelId, setOpenValue, value]);
|
|
82
|
+
const handleClick = composeEventHandlers(onClick, toggle);
|
|
83
|
+
const handlePointerEnter = composeEventHandlers(onPointerEnter, hoverOpen);
|
|
84
|
+
const handlePointerLeave = composeEventHandlers(onPointerLeave, pointerLeave);
|
|
85
|
+
// enterPanel runs first and claims its arrow with preventDefault; the travel
|
|
86
|
+
// keymap only sees keys it left alone.
|
|
87
|
+
const handleKeyDown = composeEventHandlers(onKeyDown, composeEventHandlers(enterPanel, handleArrowKeyDown));
|
|
88
|
+
return {
|
|
89
|
+
triggerRef,
|
|
90
|
+
triggerId,
|
|
91
|
+
panelId,
|
|
92
|
+
open,
|
|
93
|
+
state,
|
|
94
|
+
anchorName: getTriggerAnchorName(triggerId),
|
|
95
|
+
handleClick,
|
|
96
|
+
handlePointerEnter,
|
|
97
|
+
handlePointerLeave,
|
|
98
|
+
handleKeyDown,
|
|
99
|
+
};
|
|
100
|
+
}
|