Drawer
Drawer là bề mặt trượt vào từ cạnh màn hình, chứa điều hướng, bộ lọc hoặc nội dung phụ của trang.
Có hai kiểu: overlay (modal, có lớp phủ, dựng trên Radix Dialog — Drawer + DrawerSurface hoặc OverlayDrawer) và InlineDrawer nằm trong bố cục, đẩy nội dung bên cạnh. Vị trí start / end / bottom; kích thước small 320, medium 592, large 940 hoặc full. Bên trong dùng DrawerHeader, DrawerHeaderTitle, DrawerBody (cuộn) và DrawerFooter.
Điều hướng
Nội dung chính co giãn theo drawer, không bị lớp phủ che.
Import
Cài từ npm, chép mã nguồn vào dự án bằng @yugen-ui/cli hoặc shadcn CLI, hoặc import thẳng khi làm việc trong repo này.
TSX
// npm install yugen-uiimport { Drawer, DrawerTrigger, DrawerClose, DrawerSurface, OverlayDrawer, InlineDrawer, DrawerHeader, DrawerHeaderTitle, DrawerBody, DrawerFooter,} from "yugen-ui";Biến thể
Mỗi ô là một mẫu độc lập: hover để Copy, hoặc bấm Code để xem mã nguồn.
Overlay drawer
Modal, có lớp phủ; nút chính đặt trước nút Huỷ ở footer.
Vị trí & kích thước
OverlayDrawer gộp Drawer + DrawerSurface; position start / end / bottom.
Cách dùng
Nên
- Dùng overlay cho tác vụ tạm thời (bộ lọc, chi tiết bản ghi); inline cho điều hướng / panel luôn cần thấy.
- Luôn có tiêu đề và cách đóng rõ ràng (nút X, Huỷ, Esc).
- Chọn kích thước vừa nội dung; full chỉ cho màn hình nhỏ.
Không nên
- Không mở drawer chồng lên drawer khác.
- Không dùng drawer cho xác nhận ngắn — dùng Dialog.
- Không đặt nhiều hơn 2–3 hành động ở footer.
Props
| Prop · Kiểu | Mặc định | Mô tả |
|---|---|---|
| DrawerSurface / OverlayDrawer | Mặc định: "end" | Cạnh trượt vào. |
| DrawerSurface / OverlayDrawer | Mặc định: "small" | 320 / 592 / 940px / toàn màn hình (rộng, hoặc cao khi bottom). |
| DrawerSurface | Mặc định: "modal" | alert: không đóng khi bấm lớp phủ / Esc. |
| DrawerSurface | Mặc định: — | Yugen Labs — bề mặt glass. |
| OverlayDrawer | Mặc định: — | Điều khiển trạng thái (Drawer root cũng nhận các prop này). |
| InlineDrawer | Mặc định: false / "start" / "small" | Drawer trong bố cục, chuyển động độ rộng. |
| InlineDrawer | Mặc định: false | Vạch ngăn stroke-2 với nội dung. |
| DrawerHeaderTitle | Mặc định: — | Phần tử bên phải tiêu đề (thường là nút đóng). |