Controlled
Custom Icon
Color
Provider Pattern
Use the Provider Pattern to gain access to the inner component APIs.
Direction
API Reference
Root
w-full space-y-2| Prop | Default | Type | 
|---|---|---|
ids | — | Partial<{ root: string; input: string; hiddenInput: string; clearBtn: string; label: string; control: string; item: (opts: ItemProps) => string; itemDeleteTrigger: (opts: ItemProps) => string; itemInput: (opts: ItemProps) => string; }> | undefined The ids of the elements in the tags input. Useful for composition.  | 
translations | — | IntlTranslations | undefined Specifies the localized strings that identifies the accessibility elements and their states  | 
maxLength | — | number | undefined The max length of the input.  | 
delimiter | "," | string | RegExp | undefined The character that serves has: - event key to trigger the addition of a new tag - character used to split tags when pasting into the input  | 
autoFocus | — | boolean | undefined Whether the input should be auto-focused  | 
disabled | — | boolean | undefined Whether the tags input should be disabled  | 
readOnly | — | boolean | undefined Whether the tags input should be read-only  | 
invalid | — | boolean | undefined Whether the tags input is invalid  | 
required | — | boolean | undefined Whether the tags input is required  | 
editable | true | boolean | undefined Whether a tag can be edited after creation, by pressing `Enter` or double clicking.  | 
inputValue | — | string | undefined The controlled tag input's value  | 
defaultInputValue | — | string | undefined The initial tag input value when rendered. Use when you don't need to control the tag input value.  | 
value | — | string[] | undefined The controlled tag value  | 
defaultValue | — | string[] | undefined The initial tag value when rendered. Use when you don't need to control the tag value.  | 
onValueChange | — | ((details: ValueChangeDetails) => void) | undefined Callback fired when the tag values is updated  | 
onInputValueChange | — | ((details: InputValueChangeDetails) => void) | undefined Callback fired when the input value is updated  | 
onHighlightChange | — | ((details: HighlightChangeDetails) => void) | undefined Callback fired when a tag is highlighted by pointer or keyboard navigation  | 
onValueInvalid | — | ((details: ValidityChangeDetails) => void) | undefined Callback fired when the max tag count is reached or the `validateTag` function returns `false`  | 
validate | — | ((details: ValidateArgs) => boolean) | undefined Returns a boolean that determines whether a tag can be added. Useful for preventing duplicates or invalid tag values.  | 
blurBehavior | — | "clear" | "add" | undefined The behavior of the tags input when the input is blurred - `"add"`: add the input value as a new tag - `"clear"`: clear the input value  | 
addOnPaste | false | boolean | undefined Whether to add a tag when you paste values into the tag input  | 
max | Infinity | number | undefined The max number of tags  | 
allowOverflow | — | boolean | undefined Whether to allow tags to exceed max. In this case, we'll attach `data-invalid` to the root  | 
name | — | string | undefined The name attribute for the input. Useful for form submissions  | 
form | — | string | undefined The associate form of the underlying input element.  | 
dir | "ltr" | "ltr" | "rtl" | undefined The document's text/writing direction.  | 
getRootNode | — | (() => ShadowRoot | Node | Document) | undefined A root node to correctly resolve document in custom environments. E.x.: Iframes, Electron.  | 
onPointerDownOutside | — | ((event: PointerDownOutsideEvent) => void) | undefined Function called when the pointer is pressed down outside the component  | 
onFocusOutside | — | ((event: FocusOutsideEvent) => void) | undefined Function called when the focus is moved outside the component  | 
onInteractOutside | — | ((event: InteractOutsideEvent) => void) | undefined Function called when an interaction happens outside the component  | 
element | — | ((attributes: HTMLAttributes<"div">) => Element) | undefined Render the element yourself  | 
Provider
| Prop | Default | Type | 
|---|---|---|
value | — | TagsInputApi<PropTypes> | 
element | — | ((attributes: HTMLAttributes<"div">) => Element) | undefined Render the element yourself  | 
Context
| Prop | Default | Type | 
|---|---|---|
children | — | (tagsInput: TagsInputApi<PropTypes>) => ReactNode | 
Label
label-text| Prop | Default | Type | 
|---|---|---|
element | — | ((attributes: HTMLAttributes<"label">) => Element) | undefined Render the element yourself  | 
Control
input flex flex-wrap gap-2 p-2| Prop | Default | Type | 
|---|---|---|
element | — | ((attributes: HTMLAttributes<"div">) => Element) | undefined Render the element yourself  | 
Item
| Prop | Default | Type | 
|---|---|---|
index | — | string | number | 
value | — | string | 
disabled | — | boolean | undefined | 
element | — | ((attributes: HTMLAttributes<"span">) => Element) | undefined Render the element yourself  | 
ItemPreview
chip flex gap-0 p-0 preset-filled hover:brightness-100 w-fit data-highlighted:ring data-highlighted:ring-primary-500| Prop | Default | Type | 
|---|---|---|
element | — | ((attributes: HTMLAttributes<"div">) => Element) | undefined Render the element yourself  | 
ItemText
leading-none px-2 py-1| Prop | Default | Type | 
|---|---|---|
element | — | ((attributes: HTMLAttributes<"span">) => Element) | undefined Render the element yourself  | 
ItemDeleteTrigger
hover:preset-tonal px-2 py-1| Prop | Default | Type | 
|---|---|---|
element | — | ((attributes: HTMLAttributes<"button">) => Element) | undefined Render the element yourself  | 
ItemInput
input text-xs| Prop | Default | Type | 
|---|---|---|
element | — | ((attributes: HTMLAttributes<"input">) => Element) | undefined Render the element yourself  | 
Input
input-ghost| Prop | Default | Type | 
|---|---|---|
element | — | ((attributes: HTMLAttributes<"input">) => Element) | undefined Render the element yourself  | 
ClearTrigger
btn btn-sm preset-tonal hover:preset-filled-error-500| Prop | Default | Type | 
|---|---|---|
element | — | ((attributes: HTMLAttributes<"button">) => Element) | undefined Render the element yourself  | 
HiddenInput
| Prop | Default | Type | 
|---|---|---|
element | — | ((attributes: HTMLAttributes<"input">) => Element) | undefined Render the element yourself  | 
Root
w-full space-y-2| Prop | Default | Type | 
|---|---|---|
ids | — | Partial<{ root: string; input: string; hiddenInput: string; clearBtn: string; label: string; control: string; item: (opts: ItemProps) => string; itemDeleteTrigger: (opts: ItemProps) => string; itemInput: (opts: ItemProps) => string; }> | undefined The ids of the elements in the tags input. Useful for composition.  | 
translations | — | IntlTranslations | undefined Specifies the localized strings that identifies the accessibility elements and their states  | 
maxLength | — | number | undefined The max length of the input.  | 
delimiter | "," | string | RegExp | undefined The character that serves has: - event key to trigger the addition of a new tag - character used to split tags when pasting into the input  | 
autoFocus | — | boolean | undefined Whether the input should be auto-focused  | 
disabled | — | boolean | undefined Whether the tags input should be disabled  | 
readOnly | — | boolean | undefined Whether the tags input should be read-only  | 
invalid | — | boolean | undefined Whether the tags input is invalid  | 
required | — | boolean | undefined Whether the tags input is required  | 
editable | true | boolean | undefined Whether a tag can be edited after creation, by pressing `Enter` or double clicking.  | 
inputValue | — | string | undefined The controlled tag input's value  | 
defaultInputValue | — | string | undefined The initial tag input value when rendered. Use when you don't need to control the tag input value.  | 
value | — | string[] | undefined The controlled tag value  | 
defaultValue | — | string[] | undefined The initial tag value when rendered. Use when you don't need to control the tag value.  | 
onValueChange | — | ((details: ValueChangeDetails) => void) | undefined Callback fired when the tag values is updated  | 
onInputValueChange | — | ((details: InputValueChangeDetails) => void) | undefined Callback fired when the input value is updated  | 
onHighlightChange | — | ((details: HighlightChangeDetails) => void) | undefined Callback fired when a tag is highlighted by pointer or keyboard navigation  | 
onValueInvalid | — | ((details: ValidityChangeDetails) => void) | undefined Callback fired when the max tag count is reached or the `validateTag` function returns `false`  | 
validate | — | ((details: ValidateArgs) => boolean) | undefined Returns a boolean that determines whether a tag can be added. Useful for preventing duplicates or invalid tag values.  | 
blurBehavior | — | "clear" | "add" | undefined The behavior of the tags input when the input is blurred - `"add"`: add the input value as a new tag - `"clear"`: clear the input value  | 
addOnPaste | false | boolean | undefined Whether to add a tag when you paste values into the tag input  | 
max | Infinity | number | undefined The max number of tags  | 
allowOverflow | — | boolean | undefined Whether to allow tags to exceed max. In this case, we'll attach `data-invalid` to the root  | 
name | — | string | undefined The name attribute for the input. Useful for form submissions  | 
form | — | string | undefined The associate form of the underlying input element.  | 
dir | "ltr" | "ltr" | "rtl" | undefined The document's text/writing direction.  | 
getRootNode | — | (() => ShadowRoot | Node | Document) | undefined A root node to correctly resolve document in custom environments. E.x.: Iframes, Electron.  | 
onPointerDownOutside | — | ((event: PointerDownOutsideEvent) => void) | undefined Function called when the pointer is pressed down outside the component  | 
onFocusOutside | — | ((event: FocusOutsideEvent) => void) | undefined Function called when the focus is moved outside the component  | 
onInteractOutside | — | ((event: InteractOutsideEvent) => void) | undefined Function called when an interaction happens outside the component  | 
element | — | Snippet<[HTMLAttributes<"div">]> | undefined Render the element yourself  | 
Provider
| Prop | Default | Type | 
|---|---|---|
value | — | () => TagsInputApi<PropTypes> | 
element | — | Snippet<[HTMLAttributes<"div">]> | undefined Render the element yourself  | 
Context
| Prop | Default | Type | 
|---|---|---|
children | — | Snippet<[() => TagsInputApi<PropTypes>]> | 
Label
label-text| Prop | Default | Type | 
|---|---|---|
element | — | Snippet<[HTMLAttributes<"label">]> | undefined Render the element yourself  | 
Control
input flex flex-wrap gap-2 p-2| Prop | Default | Type | 
|---|---|---|
element | — | Snippet<[HTMLAttributes<"div">]> | undefined Render the element yourself  | 
Item
| Prop | Default | Type | 
|---|---|---|
index | — | string | number | 
value | — | string | 
disabled | — | boolean | undefined | 
element | — | Snippet<[HTMLAttributes<"span">]> | undefined Render the element yourself  | 
ItemPreview
chip flex gap-0 p-0 preset-filled hover:brightness-100 w-fit data-highlighted:ring data-highlighted:ring-primary-500| Prop | Default | Type | 
|---|---|---|
element | — | Snippet<[HTMLAttributes<"div">]> | undefined Render the element yourself  | 
ItemText
leading-none px-2 py-1| Prop | Default | Type | 
|---|---|---|
element | — | Snippet<[HTMLAttributes<"span">]> | undefined Render the element yourself  | 
ItemDeleteTrigger
hover:preset-tonal px-2 py-1| Prop | Default | Type | 
|---|---|---|
element | — | Snippet<[HTMLAttributes<"button">]> | undefined Render the element yourself  | 
ItemInput
input text-xs| Prop | Default | Type | 
|---|---|---|
element | — | Snippet<[HTMLAttributes<"input">]> | undefined Render the element yourself  | 
Input
input-ghost| Prop | Default | Type | 
|---|---|---|
element | — | Snippet<[HTMLAttributes<"input">]> | undefined Render the element yourself  | 
ClearTrigger
btn btn-sm preset-tonal hover:preset-filled-error-500| Prop | Default | Type | 
|---|---|---|
element | — | Snippet<[HTMLAttributes<"button">]> | undefined Render the element yourself  | 
HiddenInput
| Prop | Default | Type | 
|---|---|---|
element | — | Snippet<[HTMLAttributes<"input">]> | undefined Render the element yourself  |