/** Matches an item excluded from the roving order — the contract names `data-disabled`, and native controls also carry `disabled`. */ export declare const DISABLED_ITEM_SELECTOR = "[disabled], [data-disabled]"; /** Whether an item is out of the roving order, testing both attribute spellings. */ export declare function isRovingItemDisabled(item: Element): boolean; /** * The group's items in document order, minus the disabled ones and minus any that belong to a nested group. * * @param root the group element owning the items, or `null` before it mounts * @param itemSelector selector matching one item * @param scopeSelector selector naming an item's owning group, so a nested group's items are left to it * @returns the enabled items, empty when `root` is not mounted yet */ export declare function enabledRovingItems(root: ParentNode | null | undefined, itemSelector: string, scopeSelector?: string): HTMLElement[]; /** * The id that should hold the tab stop after the items or the selection changed. * * Active items win, and the stop stays put while it is still on one of them; with * nothing active it stays on whichever item still claims it, else falls to the first. * An active id that is not in `ids` — disabled, or unmounted since it was selected — * cannot hold the stop, so the group stays reachable by Tab. * * @param ids every enabled item's id, in document order * @param activeIds the ids of the selected/pressed/active items, in document order * @param currentId the id holding the stop now, or `null` before one is resolved * @returns the id to give the stop to, or `null` when the group has no enabled item */ export declare function resolveTabStopId(ids: readonly string[], activeIds: readonly string[], currentId: string | null): string | null; /** Every enabled item's id, skipping items that carry no id — they cannot hold a stop that survives a re-render. */ export declare function rovingItemIds(items: readonly Element[], idAttribute: string): string[]; /** * The `tabindex` for one item: before the group resolves its stop — which only happens in a layout effect, so never during SSR — every enabled item is a stop rather than none. * * @param resolved whether the group has settled which item holds the stop * @param isTabStop whether this item is that one * @param disabled whether this item is disabled, in which case it never claims a stop */ export declare function rovingTabIndex(resolved: boolean, isTabStop: boolean, disabled?: boolean): 0 | -1;