操作与浮层@neumorphism-ui/context-menu

Context Menu

保留 Base UI 的指针锚定和键盘导航,并将弹层呈现为悬浮的新拟态表面。可组合普通、复选、单选、子菜单和危险操作项。

@neumorphism-ui/context-menu
Registry JSON

预览

文档工具

已保存

安装

安装: context-menunpx shadcn@latest add @neumorphism-ui/context-menu

CLI 会依次处理 npm 依赖、base token、utils 和组件源码。

首次使用此 Registry?请先完成 namespace 配置 。

用法

Import

Context Menu import 代码
"use client";
import * as React from "react";
import {
  ContextMenu,
  ContextMenuCheckboxItem,
  ContextMenuContent,
  ContextMenuItem,
  ContextMenuLabel,
  ContextMenuShortcut,
  ContextMenuTrigger,
} from "@/components/ui/context-menu";

Example

Context Menu 用法代码
export default function Example() {
  const [details, setDetails] = React.useState(true);
  const [message, setMessage] = React.useState("就绪");
  return <div className="grid gap-3">
    <ContextMenu>
      <ContextMenuTrigger className="grid min-h-32 place-items-center rounded-[var(--neu-radius-surface)] border border-[var(--neu-edge)] bg-[var(--neu-surface)] p-6 [box-shadow:var(--neu-shadow-inset)]">
        右键打开菜单
      </ContextMenuTrigger>
      <ContextMenuContent>
        <ContextMenuLabel>文档</ContextMenuLabel>
        <ContextMenuItem onClick={() => setMessage("已复制")}>复制<ContextMenuShortcut>⌘C</ContextMenuShortcut></ContextMenuItem>
        <ContextMenuCheckboxItem checked={details} onCheckedChange={setDetails}>显示详细信息</ContextMenuCheckboxItem>
      </ContextMenuContent>
    </ContextMenu>
    <p role="status" className="text-sm text-[var(--muted-foreground)]">{message}</p>
  </div>;
}

API 参考

组件属性类型默认值说明
ContextMenuopen / onOpenChangeboolean / (open: boolean) => void—控制菜单的打开状态。
ContextMenuContentside / align / sideOffsetPositioner props—调整弹层相对指针锚点的位置和间距。
ContextMenuItemdisabledbooleanfalse让项目保持可见但不可执行。
ContextMenuCheckboxItemchecked / onCheckedChangeboolean / (checked: boolean) => void—控制可勾选菜单项的状态。
ContextMenuRadioGroupvalue / onValueChangestring / (value: string) => void—控制互斥单选项的选择。

无障碍

  • 01

    让 ContextMenuTrigger 区域对鼠标和键盘用户都是清晰可理解的目标。

  • 02

    菜单打开后用方向键移动,Enter 或 Space 执行,Escape 关闭。

  • 03

    危险操作应使用明确文案说明,不要只依赖颜色。