import type { Scope } from '@tamagui/create-context'; import type React from 'react'; export type ScopedProps
= P & {
__scopeFocusScope?: Scope;
};
export interface FocusScopeProps {
/**
* @default true
*/
enabled?: boolean;
/**
* When `true`, tabbing from last item will focus first tabbable
* and shift+tab from first item will focus last tababble.
* @default false
*/
loop?: boolean;
/**
* When `true`, focus cannot escape the focus scope via keyboard,
* pointer, or a programmatic focus.
* @default false
*/
trapped?: boolean;
/**
* Event handler called when auto-focusing on mount.
* Can be prevented.
*/
onMountAutoFocus?: (event: Event) => void;
/**
* Event handler called when auto-focusing on unmount.
* Can be prevented.
*/
onUnmountAutoFocus?: (event: Event) => void;
/**
* If unmount is animated, you want to force re-focus at start of animation not after
*/
forceUnmount?: boolean;
/**
* When true, waits for idle before focusing. When a number, waits that many ms.
* This prevents reflows during animations.
* @default true
*/
focusOnIdle?: boolean | number | {
min?: number;
max?: number;
};
children?: React.ReactNode | ((props: {
onKeyDown: (event: React.KeyboardEvent) => void;
tabIndex?: number;
ref: React.ForwardedRef