import * as React from 'react'; import { type FormValidityHandle } from '../utils/formControl.cjs'; import type { TagsInputContextValue, TagsInputProps } from './types.cjs'; /** * Distributes TagsInput root state and actions to its parts. * @internal */ export declare const TagsInputProvider: React.FC, useTagsInputContext: (consumerName: string) => TagsInputContextValue; /** @internal Marks the {@link TagsInput} root, so removal can find sibling tags and the draft field. */ export declare const TAGS_INPUT_SELECTOR = "[data-skdx-tags-input]"; /** @internal Marks a `TagsInputItem` for the roving order and delete handoff to find its siblings. */ export declare const TAGS_INPUT_ITEM_SELECTOR = "[data-skdx-tags-input-item]"; /** @internal Marks a `TagsInputItemDelete` button as a styling hook; it carries `tabindex="-1"` and is not a focus target. */ export declare const TAGS_INPUT_DELETE_SELECTOR = "[data-skdx-tags-input-delete]"; /** @internal Marks the `TagsInputInput` draft field, the last place focus can go when the removed tag was the only one. */ export declare const TAGS_INPUT_FIELD_SELECTOR = "[data-skdx-tags-input-field]"; /** * Default delimiters: comma and newline, so a pasted spreadsheet list splits into tags. * @internal */ export declare const DEFAULT_DELIMITER: string[]; /** * Normalize delimiters to array form, dropping empty entries. * @internal */ export declare function delimiterList(delimiter: string | string[]): string[]; /** * Splits text on every delimiter without building a regex. * @internal */ export declare function splitOnDelimiters(text: string, delimiter: string | string[]): string[]; /** * Whether pressing `key` commits the draft (only single-char delimiters match KeyboardEvent.key). * @internal */ export declare function commitsOnKey(key: string, delimiter: string | string[]): boolean; /** * Moves focus from a deleted tag to the next tag, previous tag, or draft field, and returns the Tab-stop index to hold. * @internal */ export declare function focusDeleteNeighbor(origin: HTMLElement | null, index: number): number; /** * Moves focus along the tags by `delta`, landing on the draft field past the last tag and never wrapping. * @internal */ export declare function focusTagStep(item: HTMLElement, delta: 1 | -1): void; /** * Controlled or uncontrolled tag list with a shared draft input, roving keyboard navigation, and optional in-place editing. * * @example * ```tsx * * ``` */ export declare const TagsInput: { ({ ref: forwardedRef, size, ...rootProps }: Omit & { ref?: React.Ref | undefined; }): React.ReactNode; displayName: string; };