menu-with-groups-demo

PreviousNext
Docs
pureuiexample

Preview

Loading preview…
registry/pure-ui/examples/menu/menu-with-groups-demo.tsx
"use client";

import { CheckIcon } from "lucide-react";
import { useState } from "react";

import {
  Menu,
  MenuTrigger,
  MenuPopup,
  MenuSeparator,
  MenuGroup,
  MenuGroupLabel,
  MenuRadioGroup,
  MenuRadioItem,
  MenuCheckboxItem,
} from "@/registry/pure-ui/ui/menu";
import { Button } from "@/registry/pure-ui/ui/button";

export function MenuWithGroupsDemo() {
  const [value, setValue] = useState("date");
  const [showMinimap, setShowMinimap] = useState(true);
  const [showSearch, setShowSearch] = useState(true);
  const [showSidebar, setShowSidebar] = useState(false);

  return (
    <Menu>
      <MenuTrigger render={<Button variant="outline" />}>
        <span>Open</span>
      </MenuTrigger>
      <MenuPopup className="w-56" align="center">
        <MenuGroup>
          <MenuGroupLabel>Sort</MenuGroupLabel>
          <MenuRadioGroup
            value={value}
            onValueChange={setValue}
            activeIcon={<CheckIcon className="size-4" />}
          >
            <MenuRadioItem value="date">Date</MenuRadioItem>
            <MenuRadioItem value="name">Name</MenuRadioItem>
            <MenuRadioItem value="type">Type</MenuRadioItem>
          </MenuRadioGroup>
        </MenuGroup>

        <MenuSeparator />

        <MenuGroup>
          <MenuGroupLabel>Workspace</MenuGroupLabel>
          <MenuCheckboxItem
            checked={showMinimap}
            onCheckedChange={(checked) => setShowMinimap(checked)}
            onSelect={(event) => event.preventDefault()}
          >
            Minimap
          </MenuCheckboxItem>
          <MenuCheckboxItem
            checked={showSearch}
            onCheckedChange={(checked) => setShowSearch(checked)}
            onSelect={(event) => event.preventDefault()}
          >
            Search
          </MenuCheckboxItem>
          <MenuCheckboxItem
            checked={showSidebar}
            onCheckedChange={(checked) => setShowSidebar(checked)}
            onSelect={(event) => event.preventDefault()}
          >
            Sidebar
          </MenuCheckboxItem>
        </MenuGroup>
      </MenuPopup>
    </Menu>
  );
}

Installation

npx shadcn@latest add @pureui/menu-with-groups-demo

Usage

import { MenuWithGroupsDemo } from "@/components/menu-with-groups-demo"
<MenuWithGroupsDemo />