/** * @fileoverview Saasflare TagInput — input that converts entries into * removable pills on Enter / comma. Controlled or uncontrolled. * @author Saasflare™ * * Used for keyword fields, recipient lists, tag editors. Self-contained * (no `react-tag-input`). Pills render as Saasflare-styled chips with an * inline remove ("×") affordance. * * @module packages/ui/components/ui/tag-input * @package ui * @layer core * * @example * const [tags, setTags] = useState([]); * */ import { type ReactNode } from "react"; import { type SaasflareComponentProps } from "../../providers"; /** Props for the TagInput component. */ export interface TagInputProps extends SaasflareComponentProps { /** Controlled list of tags. */ value?: string[]; /** Uncontrolled initial tags. */ defaultValue?: string[]; /** Called whenever the tag list changes. */ onChange?: (tags: string[]) => void; /** Placeholder shown in the input. */ placeholder?: string; /** Maximum number of tags accepted. */ maxTags?: number; /** Characters that commit the current input as a tag. Default: `[",", "Enter"]`. */ separators?: string[]; /** Reject duplicate tags. Default: `true`. */ unique?: boolean; /** Disable the input. */ disabled?: boolean; /** Custom renderer for each pill. Falls back to the default pill UI. */ renderTag?: (tag: string, onRemove: () => void) => ReactNode; /** Additional class names on the outer wrapper. */ className?: string; /** Accessible label. */ "aria-label"?: string; } /** * Input field that converts text into removable tag pills. * * @component * @layer core */ export declare function TagInput({ value, defaultValue, onChange, placeholder, maxTags, separators, unique, disabled, renderTag, className, surface, radius, animated, iconWeight, "aria-label": ariaLabel, }: TagInputProps): import("react/jsx-runtime").JSX.Element;