@ark-ui/react/tags-input + Tailwind CSS v4

Ark Tags Input

Thành phần Tags Input được xây dựng trên nền tảng máy trạng thái Ark UI (Zag.js engine) và tạo kiểu với Tailwind CSS v4. Hỗ trợ 4 kích thước (xs, sm, md, lg) đồng bộ với input và button, 3 biến thể giao diện, clearable, delimiter, validation, max tags, max length, blur/paste behavior, sanitize value, controlled/uncontrolled, programmatic control và cả Convenience API lẫn Compound Component API.

1. Cơ bản (Basic)

Tags Input đơn giản với giá trị mặc định. Nhấn Enter để thêm tag mới, Backspace để xóa tag cuối.

React
Vue

2. Kích thước (Sizes)

4 kích thước đồng bộ với hệ thống control-size: xs, sm, md (mặc định), lg.

Size: xs

React
Vue

Size: sm

React
Vue

Size: md

React
Vue

Size: lg

React
Vue

3. Biến thể (Variants)

3 biến thể giao diện: default (viền + shadow), filled (nền xám), subtle (viền nhạt).

Variant: default

React
Vue

Variant: filled

React
Vue

Variant: subtle

React
Vue

4. Nút xóa tất cả (Clearable)

Hiển thị nút × để xóa toàn bộ tags cùng lúc.

React
Vue
Angular

5. Label, Helper & Error

Kết hợp label, helperText và errorText để hướng dẫn người dùng và hiển thị trạng thái lỗi.

SEO
Marketing

Nhấn Enter hoặc phím phẩy để thêm thẻ mới.

Lỗi

Cần ít nhất 2 thẻ.

6. Controlled

Quản lý giá trị tags từ bên ngoài bằng React state với value + onValueChange.

TypeScript
Rust
State: ["TypeScript","Rust"]

7. Controlled Input Value

Kiểm soát giá trị ô nhập liệu riêng biệt với inputValue + onInputValueChange. Hữu ích cho việc đặt sẵn hoặc xóa input theo chương trình.

Input: ""
Vue
Solid

8. Điều khiển lập trình (RootProvider + useTagsInput)

Sử dụng hook useTagsInput() kết hợp RootProvider để gọi trực tiếp addValue(), setValue(), clearValue() từ bên ngoài.

State: []

9. Giới hạn số tag (Max Tags)

Sử dụng prop max để giới hạn số lượng tag tối đa. Với allowOverflow, cho phép vượt quá nhưng đánh dấu data-invalid.

React
Vue

Khi đạt 3, không thể thêm tag mới.

React
Vue

Cho phép vượt quá 3, root nhận data-invalid.

10. Ký tự phân cách tùy chỉnh (Custom Delimiter)

Dùng prop delimiter với RegExp để chỉ định nhiều ký tự phân cách. Mặc định chỉ Enter tạo tag.

React

Gõ từ khóa rồi nhấn dấu phẩy (,), chấm phẩy (;) hoặc dấu cách để thêm tag.

11. Giới hạn độ dài tag (Max Length)

Dùng prop maxLength để giới hạn số ký tự tối đa cho mỗi tag. Input sẽ không cho phép gõ thêm khi đạt giới hạn.

React

Không thể gõ quá 10 ký tự cho mỗi tag.

12. Disabled

Trạng thái disabled không cho thêm, xóa hoặc chỉnh sửa tag.

React
Solid
Vue

13. Read-only

Trạng thái read-only cho phép xem tag nhưng không thể thêm, xóa hoặc chỉnh sửa.

React
Solid
Vue

14. Invalid

Đánh dấu trạng thái invalid cho mục đích validation form. Viền và ring chuyển sang màu danger.

React

Vui lòng thêm ít nhất 2 tag.

15. Validation tùy chỉnh

Dùng prop validate để kiểm tra trước khi thêm tag. Hữu ích cho việc ngăn trùng lặp hoặc kiểm tra định dạng.

React

Ít nhất 3 ký tự, chỉ chữ cái/số/gạch ngang, không trùng lặp.

16. Hành vi khi blur (Blur Behavior)

Cấu hình hành vi khi rời khỏi input: "add" tự thêm tag, "clear" xóa nội dung input.

React

Nhập giá trị rồi click ra ngoài sẽ tự thêm tag.

Vue

Nhập giá trị rồi click ra ngoài sẽ xóa input.

17. Paste hàng loạt (Paste Behavior)

Dùng addOnPaste kết hợp delimiter để tự tách và thêm nhiều tag khi dán (paste) chuỗi vào input.

React

Dán chuỗi "Vue,Solid,Svelte" sẽ tự tách thành 3 tag.

18. Tắt chỉnh sửa tag (Disable Editing)

Mặc định tag có thể chỉnh sửa bằng double-click hoặc Enter. Với editable={false}, tính năng này bị vô hiệu.

React
Vue
Angular

Mặc định, double-click hoặc Enter sẽ mở chỉnh sửa tag. Với editable={false}, chức năng này bị tắt.

19. Chuẩn hóa giá trị (Sanitize Value)

Dùng sanitizeValue để xử lý giá trị trước khi thêm: trim khoảng trắng, chuyển thành chữ thường, loại bỏ ký tự đặc biệt.

react

Mỗi tag được tự động trim khoảng trắng và chuyển thành chữ thường trước khi thêm.

20. Compound Component API

Sử dụng các sub-component ArkTagsInput.Root, Control, Item, ItemPreview, ItemText, ItemDeleteTrigger, Input, ClearTrigger, HiddenInput để tùy chỉnh chi tiết.

Compound
API
© 2026. FlatVn All rights reserved. Version 4.3.40