Sheet
Mẫu chuẩnLớp chặn, panel neo vào một cạnh viewport. Bốn cạnh, hai hình học (flush / inset). Không có size.
Playground
Panel và màn che được portal, nên chúng theo theme của trang. Trigger theo brand đang chọn.
import { Button, Sheet, SheetContent, SheetTitle, SheetTrigger } from "@nexobox/ui";
<Sheet>
<SheetTrigger asChild>
<Button type="button">Chi tiết</Button>
</SheetTrigger>
<SheetContent>
<SheetTitle>Chi tiết đơn</SheetTitle>
</SheetContent>
</Sheet>Khi nào sử dụng
Nên dùng
Panel chặn, neo vào một cạnh: chi tiết của một hàng, một việc phụ dài hơn một popover, một form ngắn cần trọn chiều của cạnh nó bám vào.
Tránh dùng
Xác nhận giữa màn hình thì dùng Dialog. Ghi chú không chặn trang thì dùng Popover. Chọn một giá trị thì dùng Select. Không dùng làm drawer điều hướng.
Anatomy
SheetTitle là bắt buộc. Panel neo vào cạnh đang chọn, bo góc theo hình học. Màn che phủ trang. Một action footer là tuỳ chọn — không phải primitive riêng, mà là cách xếp SheetClose cùng Button ở cuối nội dung panel.
Variants
Hai trục độc lập: cạnh neo và hình học gặp cạnh đó. Mọi tổ hợp đều hợp lệ.
Dính sát cạnh, bo góc phía trong.
Cách đều bốn cạnh một gutter, bo cả bốn góc.
Dính sát cạnh, bo góc phía trong.
Cách đều bốn cạnh một gutter, bo cả bốn góc.
Dính sát cạnh, bo góc phía trong.
Cách đều bốn cạnh một gutter, bo cả bốn góc.
Dính sát cạnh, bo góc phía trong.
Cách đều bốn cạnh một gutter, bo cả bốn góc.
States
Chỉ còn trigger. Bấm để mở sheet thật.
Vòng focus của Button.
Disabled đặt trên Button. Không mở.
Bấm nút Chi tiết để mở. Không có empty, loading, hay invalid. Không có size.
Design tokens
Bo góc đọc --nf-component-panel-radius. Gutter của inset đọc --nf-foundation-space-8. Cả bốn cạnh fade và trượt --nf-component-sheet-viewport-margin (32px) theo trục của cạnh đó, qua --nf-motion-sheet-in / --nf-motion-sheet-out. 32px là bốn bước của quãng 8px mà menu và popover dùng. Màn che là color-mix 32% của --nf-semantic-text-primary.
API & triển khai
| Prop | Mặc định | Quy ước |
|---|---|---|
| SheetTitle | — | Bắt buộc. Đặt tên cho sheet. |
| SheetDescription | — | Tuỳ chọn. |
| SheetClose | — | Nút thật. Escape và bấm màn che cũng đóng. |
| side | bottom | Cạnh neo: bottom, right, top, left. |
| variant | flush | Hình học gặp cạnh: flush (dính sát) hoặc inset (cách đều gutter). |