import type { ControlSize } from "@charcuterie/tokens"; import type { ReactNode } from "react"; import type { MenuItem } from "./Menu.tsx"; export type MenuActionProps = { /** Already stepped down for a short window by `usePanelItemSize`. */ itemSize: ControlSize; item: MenuItem; onDismiss: () => void; /** `RovingFocus.register` — membership of the arrow-key group. */ register: (value: string) => () => void; tabIndex: number; trackElement: (key: string, element: HTMLButtonElement | null) => void; }; /** * Its own file because **registration is an effect**, and an effect * cannot run in a loop — the same reason `TabTrigger` and * `AccordionSection` are separate. Any member of a registering group * ends up shaped like this. * * A disabled item is simply not registered, so the arrow keys skip * it without any command in `RovingFocus` knowing what "disabled" * means. It stays in the DOM and stays announced, which is the * difference between "you cannot do this right now" and "this does * not exist". */ export declare const MenuAction: ({ item, itemSize, onDismiss, register, tabIndex, trackElement, }: MenuActionProps) => ReactNode; //# sourceMappingURL=MenuAction.d.ts.map