import * as React from 'react'; import type { TagGroupContextValue, TagGroupProps } from './types.cjs'; /** @internal Marks the {@link TagGroup} root, so a tag being removed can find the group to fall back to. */ export declare const TAG_GROUP_SELECTOR = "[data-skdx-tag-group]"; /** @internal Marks a `Tag`, so the group can discover its items from the DOM without a registration round-trip. */ export declare const TAG_SELECTOR = "[data-skdx-tag]"; /** @internal Roving-tabindex state shared with `Tag` children: single Tab stop, registration, removal. */ export declare const TagGroupProvider: React.FC, useTagGroupContext: (consumerName: string) => TagGroupContextValue, useOptionalTagGroupContext: () => TagGroupContextValue | undefined; /** @internal Where focus goes when the tag at some index is removed, and the index the newly focused tag will then hold. */ export interface TagNeighbor { /** The element to focus: the following tag, the preceding one, or the group root when this was the only tag. */ target: HTMLElement | null; /** The index that element will hold once the removal lands. */ index: number; } /** @internal Resolves the next-focus target when the tag at `index` is removed, without moving focus. */ export declare function resolveTagNeighbor(tag: HTMLElement | null, index: number): TagNeighbor; /** @internal {@link resolveTagNeighbor} and the focus move in one call. */ export declare function focusTagNeighbor(tag: HTMLElement | null, index: number): number; /** * A roving-tabindex list of tags: single Tab stop, arrow keys navigate between tags. * * @example * ```tsx * ({ value: filter, label: filter }))} * onRemove={(detail) => remove(detail.label)} * /> * ``` */ export declare const TagGroup: { ({ orientation, loop, disabled, onRemove, tags, children, ref: forwardedRef, density, ...props }: TagGroupProps): React.ReactNode; displayName: string; };