@plasmicapp/react-web 0.2.385 → 0.2.388

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.
@@ -3,8 +3,8 @@ import * as React from 'react';
3
3
  import { m as mergeProps } from '../../react-utils-2892a561.js';
4
4
  import { T as TriggeredOverlayContext } from '../../context-e56b6773.js';
5
5
  import { a as __assign, p as pick, d as __spreadArray, e as __read } from '../../common-a21bdc95.js';
6
- import { useMenuTrigger as useMenuTrigger$1 } from '@react-aria/menu';
7
6
  import { usePress } from '@react-aria/interactions';
7
+ import { useMenuTrigger as useMenuTrigger$1 } from '@react-aria/menu';
8
8
  import { g as getPlumeType, m as mergeVariantToggles } from '../../plume-utils-bc11b672.js';
9
9
  import { useFocusable } from '@react-aria/focus';
10
10
  import { c as useEnsureSSRProvider } from '../../ssr-649d12f8.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/plume/menu-button/menu-trigger.tsx","../../../../src/plume/menu-button/DropdownMenu.tsx","../../../../src/plume/menu-button/menu-button.tsx"],"sourcesContent":["import { Placement } from \"@react-types/overlays\";\nimport * as React from \"react\";\nimport { useMenuTrigger as useAriaMenuTrigger } from \"@react-aria/menu\";\nimport { usePress } from \"@react-aria/interactions\";\nimport { MenuTriggerState } from \"@react-stately/menu\";\nimport { mergeProps } from \"../../react-utils\";\nimport { BaseMenuProps } from \"../menu/menu\";\nimport { getPlumeType, PLUME_STRICT_MODE } from \"../plume-utils\";\nimport { TriggeredOverlayContextValue } from \"../triggered-overlay/context\";\n\n/**\n * A menu trigger hook that combines react-aria's useMenuTrigger, useAriaMenuTrigger,\n * useOverlayPosition, useOverlay, and usePress\n */\nexport function useMenuTrigger(\n opts: {\n isDisabled?: boolean;\n triggerRef: React.RefObject<HTMLElement>;\n placement?: Placement;\n menuMatchTriggerWidth?: boolean;\n menuWidth?: number;\n menu:\n | React.ReactElement<BaseMenuProps>\n | (() => React.ReactElement<BaseMenuProps>);\n },\n state: MenuTriggerState\n) {\n const {\n triggerRef,\n isDisabled,\n placement,\n menuMatchTriggerWidth,\n menuWidth,\n menu,\n } = opts;\n\n const { menuTriggerProps: triggerPressProps, menuProps } = useAriaMenuTrigger(\n {\n type: \"menu\",\n isDisabled,\n },\n state,\n triggerRef\n );\n\n const { pressProps: triggerProps } = usePress({\n ...triggerPressProps,\n isDisabled,\n });\n\n const makeMenu = () => {\n let realMenu = typeof menu === \"function\" ? menu() : menu;\n if (!realMenu) {\n return null;\n }\n if (getPlumeType(realMenu) !== \"menu\") {\n if (PLUME_STRICT_MODE) {\n throw new Error(`Must use an instance of the Menu component.`);\n }\n return null;\n }\n\n return React.cloneElement(realMenu, mergeProps(realMenu.props, menuProps));\n };\n\n const triggerContext: TriggeredOverlayContextValue = React.useMemo(\n () => ({\n triggerRef,\n state,\n autoFocus: state.focusStrategy ?? true,\n placement,\n overlayMatchTriggerWidth: menuMatchTriggerWidth,\n overlayMinTriggerWidth: true,\n overlayWidth: menuWidth,\n }),\n [triggerRef, state, placement, menuMatchTriggerWidth, menuWidth]\n );\n\n return {\n triggerProps,\n makeMenu,\n triggerContext,\n };\n}\n","import { useMenuTriggerState } from \"@react-stately/menu\";\nimport { Placement } from \"@react-types/overlays\";\nimport * as React from \"react\";\nimport { mergeProps } from \"../../react-utils\";\nimport { BaseMenuProps } from \"../menu/menu\";\nimport { TriggeredOverlayContext } from \"../triggered-overlay/context\";\nimport { useMenuTrigger } from \"./menu-trigger\";\n\nexport interface DropdownMenuProps {\n /**\n * A ReactElement that takes in a `ref` as well as the usual mouse and\n * pointer events. The dropdown menu will be positioned relative to this\n * trigger.\n */\n children: React.ReactElement;\n\n /**\n * The menu to show; must be either a ReactElement of Menu type, or\n * a function that creates one if you prefer to delay creating it until\n * the menu has been triggered.\n */\n menu:\n | React.ReactElement<BaseMenuProps>\n | (() => React.ReactElement<BaseMenuProps>);\n\n /**\n * Where to place the menu relative to the trigger.\n */\n placement?: Placement;\n\n /**\n * Whether the menu is currently shown.\n */\n isOpen?: boolean;\n\n /**\n * Uncontrolled open state.\n */\n defaultOpen?: boolean;\n\n /**\n * Event handler fired when Menu's open state changes\n */\n onOpenChange?: (isOpen: boolean) => void;\n}\n\nexport function DropdownMenu(props: DropdownMenuProps) {\n const { isOpen, defaultOpen, onOpenChange, children, placement, menu } =\n props;\n\n const triggerRef = React.useRef<HTMLElement>(null);\n\n const state = useMenuTriggerState({\n isOpen,\n defaultOpen,\n onOpenChange,\n });\n\n const { triggerProps, makeMenu, triggerContext } = useMenuTrigger(\n {\n triggerRef,\n placement,\n menu,\n },\n state\n );\n\n return (\n <TriggeredOverlayContext.Provider value={triggerContext}>\n {React.cloneElement(\n children,\n mergeProps(children.props, triggerProps, { ref: triggerRef })\n )}\n {state.isOpen && makeMenu()}\n </TriggeredOverlayContext.Provider>\n );\n}\n","import { useFocusable } from \"@react-aria/focus\";\nimport { useMenuTriggerState } from \"@react-stately/menu\";\nimport { Placement } from \"@react-types/overlays\";\nimport { DOMProps, FocusableProps } from \"@react-types/shared\";\nimport * as React from \"react\";\nimport { pick } from \"../../common\";\nimport { mergeProps } from \"../../react-utils\";\nimport { Overrides } from \"../../render/elements\";\nimport { useEnsureSSRProvider } from \"../../render/ssr\";\nimport { BaseMenuProps } from \"../menu/menu\";\nimport {\n AnyPlasmicClass,\n mergeVariantToggles,\n PlasmicClassArgs,\n PlasmicClassOverrides,\n PlasmicClassVariants,\n VariantDef,\n} from \"../plume-utils\";\nimport { getStyleProps, StyleProps } from \"../props-utils\";\nimport { TriggeredOverlayContext } from \"../triggered-overlay/context\";\nimport { useMenuTrigger } from \"./menu-trigger\";\n\nexport interface BaseMenuButtonProps\n extends DOMProps,\n FocusableProps,\n StyleProps,\n Pick<React.ComponentProps<\"button\">, \"title\"> {\n /**\n * The menu to show; can either be a Menu instance, or a function that returns a Menu\n * instance if you want to defer creating the instance till when it's opened.\n */\n menu:\n | React.ReactElement<BaseMenuProps>\n | (() => React.ReactElement<BaseMenuProps>);\n\n /**\n * Whether the button is disabled\n */\n isDisabled?: boolean;\n\n /**\n * Whether the menu is currently shown.\n */\n isOpen?: boolean;\n\n /**\n * Uncontrolled open state\n */\n defaultOpen?: boolean;\n\n /**\n * Event handler fired when Menu's open state changes\n */\n onOpenChange?: (isOpen: boolean) => void;\n\n /**\n * Desired placement location of the Select dropdown\n */\n placement?: Placement;\n /**\n * If true, menu width will always match the trigger button width.\n * If false, then menu width will have min-width matching the\n * trigger button width.\n */\n menuMatchTriggerWidth?: boolean;\n\n /**\n * If set, menu width will be exactly this width, overriding\n * menuMatchTriggerWidth.\n */\n menuWidth?: number;\n}\n\nexport interface MenuButtonConfig<C extends AnyPlasmicClass> {\n isOpenVariant: VariantDef<PlasmicClassVariants<C>>;\n isDisabledVariant?: VariantDef<PlasmicClassVariants<C>>;\n\n menuSlot: keyof PlasmicClassArgs<C>;\n\n root: keyof PlasmicClassOverrides<C>;\n trigger: keyof PlasmicClassOverrides<C>;\n}\n\ninterface MenuButtonState {\n open: () => void;\n close: () => void;\n isOpen: () => boolean;\n}\n\nexport type MenuButtonRef = React.Ref<MenuButtonRefValue>;\n\nexport interface MenuButtonRefValue extends MenuButtonState {\n getRoot: () => HTMLElement | null;\n getTrigger: () => HTMLElement | null;\n focus: () => void;\n blur: () => void;\n}\n\nexport function useMenuButton<\n P extends BaseMenuButtonProps,\n C extends AnyPlasmicClass\n>(\n plasmicClass: C,\n props: P,\n config: MenuButtonConfig<C>,\n outerRef: MenuButtonRef = null\n) {\n const {\n placement,\n isOpen,\n defaultOpen,\n onOpenChange,\n isDisabled,\n menu,\n autoFocus,\n menuMatchTriggerWidth,\n menuWidth,\n } = props;\n\n useEnsureSSRProvider();\n const rootRef = React.useRef<HTMLElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n\n const state = useMenuTriggerState({\n isOpen,\n defaultOpen,\n onOpenChange,\n });\n\n const { triggerProps, makeMenu, triggerContext } = useMenuTrigger(\n {\n isDisabled,\n triggerRef,\n placement,\n menuMatchTriggerWidth,\n menuWidth,\n menu,\n },\n state\n );\n\n const { focusableProps: triggerFocusProps } = useFocusable(props, triggerRef);\n\n const variants = {\n ...pick(props, ...plasmicClass.internalVariantProps),\n ...mergeVariantToggles(\n { def: config.isOpenVariant, active: state.isOpen },\n { def: config.isDisabledVariant, active: isDisabled }\n ),\n };\n\n const args = {\n ...pick(props, ...plasmicClass.internalArgProps),\n [config.menuSlot]: state.isOpen ? makeMenu() : undefined,\n };\n\n const overrides: Overrides = {\n [config.root]: {\n wrapChildren: (children: React.ReactNode) => (\n <TriggeredOverlayContext.Provider value={triggerContext}>\n {children}\n </TriggeredOverlayContext.Provider>\n ),\n props: {\n ref: rootRef,\n },\n },\n [config.trigger]: {\n props: mergeProps(\n triggerProps,\n triggerFocusProps,\n getStyleProps(props),\n pick(props, \"title\"),\n {\n ref: triggerRef,\n autoFocus,\n disabled: !!isDisabled,\n // Make sure this button is not interpreted as submit\n type: \"button\",\n }\n ),\n },\n };\n\n const plumeState: MenuButtonState = React.useMemo(\n () => ({\n open: () => state.open(),\n close: () => state.close(),\n isOpen: () => state.isOpen,\n }),\n [state]\n );\n\n React.useImperativeHandle(\n outerRef,\n () => ({\n getRoot: () => rootRef.current,\n getTrigger: () => triggerRef.current,\n focus: () => triggerRef.current && triggerRef.current.focus(),\n blur: () => triggerRef.current && triggerRef.current.blur(),\n open: plumeState.open,\n close: plumeState.close,\n isOpen: plumeState.isOpen,\n }),\n [rootRef, triggerRef, plumeState]\n );\n\n return {\n plasmicProps: {\n variants: variants as PlasmicClassVariants<C>,\n args: args as PlasmicClassArgs<C>,\n overrides: overrides as PlasmicClassOverrides<C>,\n },\n state: plumeState,\n };\n}\n"],"names":["useAriaMenuTrigger"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/plume/menu-button/menu-trigger.tsx","../../../../src/plume/menu-button/DropdownMenu.tsx","../../../../src/plume/menu-button/menu-button.tsx"],"sourcesContent":["import { PressResult, usePress } from \"@react-aria/interactions\";\nimport { useMenuTrigger as useAriaMenuTrigger } from \"@react-aria/menu\";\nimport { MenuTriggerState } from \"@react-stately/menu\";\nimport { Placement } from \"@react-types/overlays\";\nimport * as React from \"react\";\nimport { mergeProps } from \"../../react-utils\";\nimport { BaseMenuProps } from \"../menu/menu\";\nimport { getPlumeType, PLUME_STRICT_MODE } from \"../plume-utils\";\nimport { TriggeredOverlayContextValue } from \"../triggered-overlay/context\";\n\n/**\n * A menu trigger hook that combines react-aria's useMenuTrigger, useAriaMenuTrigger,\n * useOverlayPosition, useOverlay, and usePress\n */\nexport function useMenuTrigger(\n opts: {\n isDisabled?: boolean;\n triggerRef: React.RefObject<HTMLElement>;\n placement?: Placement;\n menuMatchTriggerWidth?: boolean;\n menuWidth?: number;\n menu:\n | React.ReactElement<BaseMenuProps>\n | (() => React.ReactElement<BaseMenuProps>);\n },\n state: MenuTriggerState\n): {\n triggerProps: PressResult[\"pressProps\"];\n makeMenu: () => React.ReactElement;\n triggerContext: TriggeredOverlayContextValue;\n} {\n const {\n triggerRef,\n isDisabled,\n placement,\n menuMatchTriggerWidth,\n menuWidth,\n menu,\n } = opts;\n\n const { menuTriggerProps: triggerPressProps, menuProps } = useAriaMenuTrigger(\n {\n type: \"menu\",\n isDisabled,\n },\n state,\n triggerRef\n );\n\n const { pressProps: triggerProps } = usePress({\n ...triggerPressProps,\n isDisabled,\n });\n\n const makeMenu = () => {\n let realMenu = typeof menu === \"function\" ? menu() : menu;\n if (!realMenu) {\n return null;\n }\n if (getPlumeType(realMenu) !== \"menu\") {\n if (PLUME_STRICT_MODE) {\n throw new Error(`Must use an instance of the Menu component.`);\n }\n return null;\n }\n\n return React.cloneElement(realMenu, mergeProps(realMenu.props, menuProps));\n };\n\n const triggerContext: TriggeredOverlayContextValue = React.useMemo(\n () => ({\n triggerRef,\n state,\n autoFocus: state.focusStrategy ?? true,\n placement,\n overlayMatchTriggerWidth: menuMatchTriggerWidth,\n overlayMinTriggerWidth: true,\n overlayWidth: menuWidth,\n }),\n [triggerRef, state, placement, menuMatchTriggerWidth, menuWidth]\n );\n\n return {\n triggerProps,\n makeMenu,\n triggerContext,\n };\n}\n","import { useMenuTriggerState } from \"@react-stately/menu\";\nimport { Placement } from \"@react-types/overlays\";\nimport * as React from \"react\";\nimport { mergeProps } from \"../../react-utils\";\nimport { BaseMenuProps } from \"../menu/menu\";\nimport { TriggeredOverlayContext } from \"../triggered-overlay/context\";\nimport { useMenuTrigger } from \"./menu-trigger\";\n\nexport interface DropdownMenuProps {\n /**\n * A ReactElement that takes in a `ref` as well as the usual mouse and\n * pointer events. The dropdown menu will be positioned relative to this\n * trigger.\n */\n children: React.ReactElement;\n\n /**\n * The menu to show; must be either a ReactElement of Menu type, or\n * a function that creates one if you prefer to delay creating it until\n * the menu has been triggered.\n */\n menu:\n | React.ReactElement<BaseMenuProps>\n | (() => React.ReactElement<BaseMenuProps>);\n\n /**\n * Where to place the menu relative to the trigger.\n */\n placement?: Placement;\n\n /**\n * Whether the menu is currently shown.\n */\n isOpen?: boolean;\n\n /**\n * Uncontrolled open state.\n */\n defaultOpen?: boolean;\n\n /**\n * Event handler fired when Menu's open state changes\n */\n onOpenChange?: (isOpen: boolean) => void;\n}\n\nexport function DropdownMenu(props: DropdownMenuProps) {\n const { isOpen, defaultOpen, onOpenChange, children, placement, menu } =\n props;\n\n const triggerRef = React.useRef<HTMLElement>(null);\n\n const state = useMenuTriggerState({\n isOpen,\n defaultOpen,\n onOpenChange,\n });\n\n const { triggerProps, makeMenu, triggerContext } = useMenuTrigger(\n {\n triggerRef,\n placement,\n menu,\n },\n state\n );\n\n return (\n <TriggeredOverlayContext.Provider value={triggerContext}>\n {React.cloneElement(\n children,\n mergeProps(children.props, triggerProps, { ref: triggerRef })\n )}\n {state.isOpen && makeMenu()}\n </TriggeredOverlayContext.Provider>\n );\n}\n","import { useFocusable } from \"@react-aria/focus\";\nimport { useMenuTriggerState } from \"@react-stately/menu\";\nimport { Placement } from \"@react-types/overlays\";\nimport { DOMProps, FocusableProps } from \"@react-types/shared\";\nimport * as React from \"react\";\nimport { pick } from \"../../common\";\nimport { mergeProps } from \"../../react-utils\";\nimport { Overrides } from \"../../render/elements\";\nimport { useEnsureSSRProvider } from \"../../render/ssr\";\nimport { BaseMenuProps } from \"../menu/menu\";\nimport {\n AnyPlasmicClass,\n mergeVariantToggles,\n PlasmicClassArgs,\n PlasmicClassOverrides,\n PlasmicClassVariants,\n VariantDef,\n} from \"../plume-utils\";\nimport { getStyleProps, StyleProps } from \"../props-utils\";\nimport { TriggeredOverlayContext } from \"../triggered-overlay/context\";\nimport { useMenuTrigger } from \"./menu-trigger\";\n\nexport interface BaseMenuButtonProps\n extends DOMProps,\n FocusableProps,\n StyleProps,\n Pick<React.ComponentProps<\"button\">, \"title\"> {\n /**\n * The menu to show; can either be a Menu instance, or a function that returns a Menu\n * instance if you want to defer creating the instance till when it's opened.\n */\n menu:\n | React.ReactElement<BaseMenuProps>\n | (() => React.ReactElement<BaseMenuProps>);\n\n /**\n * Whether the button is disabled\n */\n isDisabled?: boolean;\n\n /**\n * Whether the menu is currently shown.\n */\n isOpen?: boolean;\n\n /**\n * Uncontrolled open state\n */\n defaultOpen?: boolean;\n\n /**\n * Event handler fired when Menu's open state changes\n */\n onOpenChange?: (isOpen: boolean) => void;\n\n /**\n * Desired placement location of the Select dropdown\n */\n placement?: Placement;\n /**\n * If true, menu width will always match the trigger button width.\n * If false, then menu width will have min-width matching the\n * trigger button width.\n */\n menuMatchTriggerWidth?: boolean;\n\n /**\n * If set, menu width will be exactly this width, overriding\n * menuMatchTriggerWidth.\n */\n menuWidth?: number;\n}\n\nexport interface MenuButtonConfig<C extends AnyPlasmicClass> {\n isOpenVariant: VariantDef<PlasmicClassVariants<C>>;\n isDisabledVariant?: VariantDef<PlasmicClassVariants<C>>;\n\n menuSlot: keyof PlasmicClassArgs<C>;\n\n root: keyof PlasmicClassOverrides<C>;\n trigger: keyof PlasmicClassOverrides<C>;\n}\n\ninterface MenuButtonState {\n open: () => void;\n close: () => void;\n isOpen: () => boolean;\n}\n\nexport type MenuButtonRef = React.Ref<MenuButtonRefValue>;\n\nexport interface MenuButtonRefValue extends MenuButtonState {\n getRoot: () => HTMLElement | null;\n getTrigger: () => HTMLElement | null;\n focus: () => void;\n blur: () => void;\n}\n\nexport function useMenuButton<\n P extends BaseMenuButtonProps,\n C extends AnyPlasmicClass\n>(\n plasmicClass: C,\n props: P,\n config: MenuButtonConfig<C>,\n outerRef: MenuButtonRef = null\n) {\n const {\n placement,\n isOpen,\n defaultOpen,\n onOpenChange,\n isDisabled,\n menu,\n autoFocus,\n menuMatchTriggerWidth,\n menuWidth,\n } = props;\n\n useEnsureSSRProvider();\n const rootRef = React.useRef<HTMLElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n\n const state = useMenuTriggerState({\n isOpen,\n defaultOpen,\n onOpenChange,\n });\n\n const { triggerProps, makeMenu, triggerContext } = useMenuTrigger(\n {\n isDisabled,\n triggerRef,\n placement,\n menuMatchTriggerWidth,\n menuWidth,\n menu,\n },\n state\n );\n\n const { focusableProps: triggerFocusProps } = useFocusable(props, triggerRef);\n\n const variants = {\n ...pick(props, ...plasmicClass.internalVariantProps),\n ...mergeVariantToggles(\n { def: config.isOpenVariant, active: state.isOpen },\n { def: config.isDisabledVariant, active: isDisabled }\n ),\n };\n\n const args = {\n ...pick(props, ...plasmicClass.internalArgProps),\n [config.menuSlot]: state.isOpen ? makeMenu() : undefined,\n };\n\n const overrides: Overrides = {\n [config.root]: {\n wrapChildren: (children: React.ReactNode) => (\n <TriggeredOverlayContext.Provider value={triggerContext}>\n {children}\n </TriggeredOverlayContext.Provider>\n ),\n props: {\n ref: rootRef,\n },\n },\n [config.trigger]: {\n props: mergeProps(\n triggerProps,\n triggerFocusProps,\n getStyleProps(props),\n pick(props, \"title\"),\n {\n ref: triggerRef,\n autoFocus,\n disabled: !!isDisabled,\n // Make sure this button is not interpreted as submit\n type: \"button\",\n }\n ),\n },\n };\n\n const plumeState: MenuButtonState = React.useMemo(\n () => ({\n open: () => state.open(),\n close: () => state.close(),\n isOpen: () => state.isOpen,\n }),\n [state]\n );\n\n React.useImperativeHandle(\n outerRef,\n () => ({\n getRoot: () => rootRef.current,\n getTrigger: () => triggerRef.current,\n focus: () => triggerRef.current && triggerRef.current.focus(),\n blur: () => triggerRef.current && triggerRef.current.blur(),\n open: plumeState.open,\n close: plumeState.close,\n isOpen: plumeState.isOpen,\n }),\n [rootRef, triggerRef, plumeState]\n );\n\n return {\n plasmicProps: {\n variants: variants as PlasmicClassVariants<C>,\n args: args as PlasmicClassArgs<C>,\n overrides: overrides as PlasmicClassOverrides<C>,\n },\n state: plumeState,\n };\n}\n"],"names":["useAriaMenuTrigger"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
+ import { PressResult } from "@react-aria/interactions";
2
+ import { MenuTriggerState } from "@react-stately/menu";
1
3
  import { Placement } from "@react-types/overlays";
2
4
  import * as React from "react";
3
- import { MenuTriggerState } from "@react-stately/menu";
4
5
  import { BaseMenuProps } from "../menu/menu";
5
6
  import { TriggeredOverlayContextValue } from "../triggered-overlay/context";
6
7
  /**
@@ -15,7 +16,7 @@ export declare function useMenuTrigger(opts: {
15
16
  menuWidth?: number;
16
17
  menu: React.ReactElement<BaseMenuProps> | (() => React.ReactElement<BaseMenuProps>);
17
18
  }, state: MenuTriggerState): {
18
- triggerProps: import("@react-types/shared").DOMAttributes<import("@react-types/shared").FocusableElement>;
19
- makeMenu: () => React.ReactElement<BaseMenuProps, string | React.JSXElementConstructor<any>> | null;
19
+ triggerProps: PressResult["pressProps"];
20
+ makeMenu: () => React.ReactElement;
20
21
  triggerContext: TriggeredOverlayContextValue;
21
22
  };
@@ -1,24 +1,23 @@
1
+ import { FocusRingAria } from "@react-aria/focus";
2
+ import { HoverResult, PressResult } from "@react-aria/interactions";
1
3
  import * as React from "react";
4
+ type FocusHookResult = [boolean, FocusRingAria["focusProps"]];
5
+ type HoverHookResult = [boolean, HoverResult["hoverProps"]];
6
+ type PressHookResult = [boolean, PressResult["pressProps"]];
2
7
  declare function useFocused(opts: {
3
8
  isTextInput?: boolean;
4
- }): (boolean | import("@react-types/shared").DOMAttributes<import("@react-types/shared").FocusableElement>)[];
9
+ }): FocusHookResult;
5
10
  declare function useFocusVisible(opts: {
6
11
  isTextInput?: boolean;
7
- }): (boolean | import("@react-types/shared").DOMAttributes<import("@react-types/shared").FocusableElement>)[];
12
+ }): FocusHookResult;
8
13
  declare function useFocusedWithin(opts: {
9
14
  isTextInput?: boolean;
10
- }): (boolean | import("@react-types/shared").DOMAttributes<import("@react-types/shared").FocusableElement>)[];
15
+ }): FocusHookResult;
11
16
  declare function useFocusVisibleWithin(opts: {
12
17
  isTextInput?: boolean;
13
- }): (boolean | import("@react-types/shared").DOMAttributes<import("@react-types/shared").FocusableElement>)[];
14
- declare function useHover(): (boolean | {
15
- onMouseEnter: () => void;
16
- onMouseLeave: () => void;
17
- })[];
18
- declare function usePressed(): (boolean | {
19
- onMouseDown: () => void;
20
- onMouseUp: () => void;
21
- })[];
18
+ }): FocusHookResult;
19
+ declare function useHover(): HoverHookResult;
20
+ declare function usePressed(): PressHookResult;
22
21
  declare const TRIGGER_TO_HOOK: {
23
22
  readonly useHover: typeof useHover;
24
23
  readonly useFocused: typeof useFocused;