Giới thiệu

shadcn/ui là bộ thư viện giao diện theo triết lý “copy — paste, không cài đặt”, cung cấp 59 thành phần giao diện. Đây là tài liệu tham khảo nhanh về công năng từng component — giúp bạn chọn đúng thành phần khi làm việc với Claude Code.

Đặc điểm nổi bật

Đặc điểmGiải thích
59 thành phầnĐủ bộ cho ứng dụng web hiện đại
Copy — PasteMã nguồn thuộc về bạn — thoải mái tuỳ chỉnh
Tuỳ chỉnh hoàn toànThay đổi màu sắc, hình dáng, hành vi tuỳ ý
Không chiếm bộ nhớChỉ thêm code bạn cần, không có thư viện nặng
ReactChỉ hỗ trợ React — code thuộc về bạn 100%

Nhóm 1 — Hiển thị dữ liệu (Data Display)

Dùng khi bạn muốn trình bày thông tin cho người dùng nhìn thấy.
TênCông dụng
AccordionDanh sách các mục có thể thu gọn/mở rộng từng mục
AlertHộp thông báo nổi bật (thành công, lỗi, cảnh báo, thông tin)
Alert DialogHộp thoại xác nhận kèm thông báo cảnh báo
AvatarẢnh đại diện người dùng — tròn, có chữ viết tắt nếu không có ảnh
BadgeNhãn nhỏ trang trí — ví dụ: “Mới”, “Hot”, “Pro”
CalendarLịch cho phép xem/chọn ngày tháng năm
CardKhung chứa nội dung với tiêu đề, hình ảnh, chân trang
CarouselThanh trình chiếu ảnh có thể vuốt trái/phải
ChartBiểu đồ đa dạng — đường, cột, tròn, radar
CommandThanh tìm kiếm kiểu Command Palette (giống Spotlight trên Mac)
Data TableBảng dữ liệu có sắp xếp, tìm kiếm, phân trang
EmptyTrạng thái “không có dữ liệu” — hiện khi danh sách/bảng trống
PaginationThanh số trang khi có nhiều nội dung (Trang 1, 2, 3…)
ProgressThanh tiến trình cho biết công việc đang ở đâu
TableBảng dữ liệu đơn giản (hàng / cột)
TypographyKiểu chữ — tiêu đề, đoạn văn, trích dẫn với các kích thước chuẩn

Nhóm 2 — Nhập liệu & Biểu mẫu (Input & Form)

Dùng khi bạn muốn thu thập thông tin từ người dùng.
TênCông dụng
CheckboxHộp tích chọn — có thể chọn nhiều
ComboboxÔ tìm kiếm có gợi ý sẵn khi gõ chữ
Date PickerChọn ngày tháng bằng lịch trực quan
FieldPhần tử bao bọc một trường nhập liệu, kèm nhãn và thông báo lỗi
InputÔ nhập văn bản một dòng
Input GroupNhóm nhiều ô nhập liệu đặt cạnh nhau (ví dụ: icon + ô nhập)
Input OTPÔ nhập mã xác thực — gồm nhiều ô riêng biệt, mỗi ô một ký tự
LabelNhãn tiêu đề cho ô nhập liệu
Native SelectDanh sách xổ xuống để chọn một mục (dùng select gốc của trình duyệt)
Radio GroupNhóm nút radio — chỉ chọn được một trong nhiều lựa chọn
SelectDanh sách xổ xuống để chọn một mục (đẹp hơn Native Select)
SliderThanh trượt để chọn một giá trị duy nhất
SwitchCông tắc bật/tắt (toggle)
TextareaÔ nhập văn bản nhiều dòng
ToggleNút bấm có trạng thái bật/tắt
Toggle GroupNhóm nút bấm chuyển đổi — chỉ chọn một trong nhóm

Nhóm 3 — Điều hướng (Navigation)

Dùng khi bạn muốn dẫn dắt người dùng di chuyển giữa các phần của ứng dụng.
TênCông dụng
BreadcrumbĐường dẫn phân cấp (ví dụ: Trang chủ > Sản phẩm > Áo thun)
Context MenuMenu hiện ra khi bấm chuột phải vào phần tử
DirectionCông cụ hỗ trợ thay đổi hướng giao diện (trái → phải / phải → trái — hữu ích cho đa ngôn ngữ)
Dropdown MenuMenu xổ xuống khi bấm vào nút hoặc navigation item
MenubarThanh menu kiểu ứng dụng desktop (File, Edit, View…)
Navigation MenuThanh điều hướng chính của website
PaginationThanh số trang khi có nhiều nội dung (Trang 1, 2, 3…)
SidebarThanh bên trái chứa menu điều hướng
TabsThanh tab để chuyển đổi giữa nhiều nội dung khác nhau

Nhóm 4 — Lớp phủ & Cửa sổ (Overlay)

Dùng khi bạn muốn hiện thêm nội dung nổi lên trên nội dung chính.
TênCông dụng
DialogHộp thoại bật lên giữa màn hình, có nền mờ che nội dung phía sau
DrawerBảng điều khiển trượt ra từ cạnh màn hình (trái/phải/trên/dưới)
Hover CardCửa sổ nhỏ hiện khi di chuột qua một phần tử
PopoverCửa sổ nhỏ bật ra khi bấm vào một phần tử
SheetBảng điều khiển trượt ra từ cạnh màn hình (tối ưu cho mobile)
TooltipDòng chú thích nhỏ hiện khi di chuột vào một phần tử

Nhóm 5 — Thông báo & Phản hồi (Feedback)

Dùng khi bạn muốn thông báo điều gì đó cho người dùng.
TênCông dụng
AlertHộp thông báo nổi bật (thành công, lỗi, cảnh báo, thông tin)
Alert DialogHộp thoại xác nhận kèm thông báo cảnh báo
ProgressThanh tiến trình cho biết công việc đang ở đâu
SkeletonĐường gạch chờ tải — giúp giao diện không “nhảy” khi đang load
SonnerThông báo ngắn bật lên ở góc màn hình (thành công, lỗi…) — phiên bản nâng cấp của Toast
SpinnerVòng xoay chờ tải (loading indicator)
ToastThông báo ngắn bật lên ở góc màn hình (thành công, lỗi…)

Nhóm 6 — Bố cục & Cấu trúc (Layout)

Dùng khi bạn muốn sắp xếp, tổ chức không gian trên màn hình.
TênCông dụng
Aspect RatioGiữ tỷ lệ khung hình cố định (ví dụ: ảnh 16:9)
CollapsiblePhần nội dung có thể thu gọn/mở rộng bằng một nút bấm
ResizableVùng giao diện có thể kéo thay đổi kích thước bằng cách kéo cạnh
Scroll AreaVùng cuộn tuỳ chỉnh, có thanh cuộn đẹp
SeparatorĐường kẻ phân cách ngang hoặc dọc
SheetBảng điều khiển trượt (thuộc cả Overlay)
SidebarThanh bên điều hướng (thuộc cả Navigation)
SpacerKhoảng trống tuỳ chỉnh giữa các phần tử

Nhóm 7 — Hành động & Tương tác (Actions)

Dùng khi bạn muốn người dùng thao tác với ứng dụng.
TênCông dụng
ButtonNút bấm cơ bản có nhiều kiểu (mặc định, outline, ghost, destructive…) và kích thước (sm, md, lg)
Button GroupNhóm nhiều nút bấm xếp cạnh nhau thành một khối thống nhất
KbdHiển thị phím bấm trên bàn phím (ví dụ: Ctrl + S)

Nhóm 8 — Tiện ích (Utilities)

Các công cụ hỗ trợ giúp xây dựng giao diện linh hoạt hơn.
TênCông dụng
DirectionCông cụ hỗ trợ thay đổi hướng giao diện (thuộc cả Navigation)
ItemPhần tử con dùng bên trong các danh sách, menu, combobox — định nghĩa từng mục
Visually HiddenẨn nội dung khỏi mắt nhưng vẫn đọc được bởi trình đọc màn hình (accessibility)

Tổng hợp theo nhóm

NhómSố thành phầnDùng khi nào
Hiển thị dữ liệu16Trình bày thông tin
Nhập liệu & Biểu mẫu16Thu thập dữ liệu từ người dùng
Điều hướng9Dẫn dắt người dùng di chuyển
Lớp phủ & Cửa sổ6Hiện cửa sổ/dialog nổi trên nội dung
Thông báo & Phản hồi7Thông báo trạng thái
Bố cục & Cấu trúc8Sắp xếp không gian
Hành động & Tương tác3Thao tác của người dùng
Tiện ích3Hỗ trợ đặc biệt
Tổng cộng: 59 thành phần — thiết kế hiện đại, tối giản, code thuộc về bạn 100%.

Danh sách site tham khảo sử dụng shadcn/ui:

  • Discover community registries for shadcn/ui components and blocks.
https://ui.shadcn.com/docs/directory?page=17

Tham khảo