Yugen UI

MenuButton

MenuButton là nút có chevron ở cuối, bấm vào để mở một Menu các lựa chọn.

Nhận mọi prop của Button cộng thêm menu (nội dung MenuPopover). Chevron xoay 180° khi menu mở (data-[state=open]); nút giữ sắc pressed trong lúc mở. Khác SplitButton: toàn bộ nút chỉ mở menu, không có hành động mặc định.

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 { MenuButton, MenuItem } 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.

Appearance

primary, secondary (mặc định), outline, subtle, transparent.

Kích thước

small, medium, large.

Chỉ icon, menuIcon & disabled

Không có nhãn → nút gọn gồm icon + chevron (cần aria-label). menuIcon thay chevron mặc định.

Menu đã đóng

Điều khiển trạng thái mở

open / onOpenChange để đồng bộ với state bên ngoài.

Cách dùng

Nên
  • Nhãn mô tả nhóm lựa chọn (Sắp xếp, Xuất, Chế độ xem…).
  • Dùng khi các lựa chọn ngang hàng, không có cái nào là mặc định.
  • Nút chỉ icon luôn có aria-label.
Không nên
  • Không dùng khi có một hành động mặc định rõ ràng — dùng SplitButton.
  • Không đặt form phức tạp trong menu — dùng Popover.

Props

Prop · KiểuMặc địnhMô tả
menuReactNodeMặc định: —Nội dung MenuPopover: MenuItem, MenuItemRadio, MenuDivider…
menuIconReactNodeMặc định: <ChevronDown20Regular />Icon ở cuối, xoay 180° khi mở.
open / defaultOpen / onOpenChangeboolean / (open: boolean) => voidMặc định: —Điều khiển trạng thái menu.
align"start" | "center" | "end"Mặc định: "start"Căn menu theo nút.
appearance / size / shape / icon / disabled…ButtonPropsMặc định: —Truyền cho Button bên trong.