Mục tiêu bài viết
Sau bài này, bạn sẽ tạo được một dự án Next.js admin dashboard có:- Next.js App Router, TypeScript và Tailwind CSS
- shadcn/ui được cấu hình bằng preset
b0 - Toàn bộ UI components chính thức của shadcn/ui
- Layout admin gồm sidebar, header, dashboard overview, bảng dữ liệu, form, dialog, chart và settings
- Prompt rõ ràng để giao Claude Code triển khai từng phần
shadcn/ui không hoạt động như một thư viện UI đóng gói sẵn. CLI sẽ copy mã nguồn component vào dự án của bạn để bạn chỉnh sửa trực tiếp.
Phần 1: Khởi tạo dự án Next.js bằng shadcn CLI
Bạn có hai cách khởi tạo.- Dùng lệnh CLI
- Dùng shadcn/create
Chạy lệnh sau trong thư mục bạn muốn tạo dự án:Lệnh này dùng shadcn CLI để scaffold một dự án Next.js và áp dụng preset
b0.Theo tài liệu shadcn/ui hiện tại,
init có thể tạo project mới với --template next, còn --preset dùng để áp dụng cấu hình design system.Phần 2: Chạy dự án
Sau khi khởi tạo xong, vào thư mục dự án và chạy development server:- Mở VS Code và mở thư mục dự án
- Mở terminal trong VS Code
- Chạy lệnh sau và nhấn Enter:
Phần 3: Thêm toàn bộ shadcn/ui components
Chạy lệnh sau trong thư mục project:Phần 4: Cấu trúc admin dashboard chuẩn
Một admin dashboard nên có các phần sau:| Khu vực | Chức năng | shadcn/ui components nên dùng |
|---|---|---|
| App shell | Khung tổng thể của ứng dụng | Sidebar, Separator, Scroll Area, Resizable |
| Sidebar | Menu điều hướng chính | Sidebar, Collapsible, Dropdown Menu, Avatar |
| Header | Search, notification, user menu | Input, Button, Popover, Dropdown Menu, Avatar |
| Overview | Chỉ số tổng quan | Card, Badge, Chart, Progress |
| Data table | Danh sách users, orders, tasks | Table, Data Table, Checkbox, Pagination, Dropdown Menu |
| Form | Tạo và sửa dữ liệu | Field, Input, Textarea, Select, Switch, Calendar |
| Dialog | Xác nhận, tạo nhanh, chỉnh sửa | Dialog, Alert Dialog, Sheet, Drawer |
| Feedback | Loading, empty, toast | Skeleton, Spinner, Empty, Alert, Sonner |
| Settings | Cấu hình tài khoản và hệ thống | Tabs, Card, Switch, Button Group |
Phần 5: Giao Claude Code dựng dashboard từng bước
Thay vì yêu cầu Claude Code tạo tất cả trong một lần, hãy chia dashboard thành các bước nhỏ.Tạo app shell
Trước tiên, thêm block sidebar chuẩn từ shadcn/ui:Sau đó giao Claude Code chuyển sidebar mẫu thành layout dùng chung cho nhóm route private.
Phần 6: Prompt tổng hợp cho Claude Code
Khi bạn muốn Claude Code thực hiện toàn bộ quy trình từ đầu, dùng prompt này:Phần 7: Danh sách shadcn/ui components nên biết
Theo danh sách components chính thức hiện tại, shadcn/ui có các nhóm chính sau.Hiển thị dữ liệu
| Component | Dùng để làm gì |
|---|---|
Accordion | Ẩn/hiện nội dung theo từng mục |
Alert | Hiển thị cảnh báo hoặc thông báo |
Avatar | Hiển thị ảnh đại diện |
Badge | Hiển thị nhãn trạng thái |
Card | Nhóm nội dung trong một khối |
Chart | Hiển thị biểu đồ |
Data Table | Bảng dữ liệu có sorting, filter, pagination |
Empty | Trạng thái không có dữ liệu |
Progress | Hiển thị tiến trình |
Skeleton | Trạng thái loading |
Spinner | Trạng thái đang xử lý |
Table | Bảng dữ liệu đơn giản |
Typography | Chuẩn hiển thị văn bản |
Form và nhập liệu
| Component | Dùng để làm gì |
|---|---|
Button | Hành động chính và phụ |
Button Group | Nhóm nhiều nút liên quan |
Calendar | Chọn ngày |
Checkbox | Chọn nhiều lựa chọn |
Combobox | Chọn từ danh sách có tìm kiếm |
Date Picker | Chọn ngày bằng popover calendar |
Field | Bọc label, input và message |
Input | Nhập text một dòng |
Input Group | Ghép input với icon, button hoặc addon |
Input OTP | Nhập mã xác thực |
Label | Nhãn cho trường nhập liệu |
Native Select | Select gốc của trình duyệt |
Radio Group | Chọn một trong nhiều lựa chọn |
Select | Dropdown chọn dữ liệu |
Slider | Chọn giá trị bằng thanh trượt |
Switch | Bật/tắt một lựa chọn |
Textarea | Nhập text nhiều dòng |
Toggle | Nút có trạng thái bật/tắt |
Toggle Group | Nhóm toggle |
Điều hướng và bố cục
| Component | Dùng để làm gì |
|---|---|
Breadcrumb | Hiển thị đường dẫn phân cấp |
Collapsible | Thu gọn/mở rộng vùng nội dung |
Command | Command palette hoặc search menu |
Direction | Hỗ trợ hướng giao diện |
Item | Mẫu item dùng trong list hoặc menu |
Menubar | Menu ngang kiểu ứng dụng |
Navigation Menu | Menu điều hướng chính |
Pagination | Chuyển trang |
Resizable | Chia vùng có thể kéo resize |
Scroll Area | Vùng cuộn tuỳ chỉnh |
Separator | Đường phân cách |
Sidebar | Thanh điều hướng bên trái |
Tabs | Chia nội dung theo tab |
Overlay và phản hồi
| Component | Dùng để làm gì |
|---|---|
Alert Dialog | Xác nhận hành động nguy hiểm |
Context Menu | Menu chuột phải |
Dialog | Modal ở giữa màn hình |
Drawer | Panel trượt, thường dùng trên mobile |
Dropdown Menu | Menu xổ xuống |
Hover Card | Card hiện khi hover |
Popover | Nội dung nổi khi click |
Sheet | Panel trượt từ cạnh màn hình |
Sonner | Toast notification hiện đại |
Toast | Toast notification cũ hơn |
Tooltip | Chú thích khi hover |
Phần 8: Kiểm tra trước khi tiếp tục
Chạy các lệnh sau:- Sidebar hoạt động trên desktop và mobile
- Header không đè lên content
- Bảng users có search, filter và pagination
- Dialog form submit được và có toast
- Chart render đúng
- Empty, loading và error states có giao diện rõ ràng