Context Menu
roi-ui/context-menuFreeItem
A menu component triggered by right-click or long press.
Install it
npx shadcn@latest add https://roiui.com/r/context-menu.jsonSource
1"use client";23import { ContextMenu } from "@base-ui/react/context-menu";4import { Check, ChevronRight, Circle } from "lucide-react";5import type React from "react";6import type { ReactNode } from "react";7import { cn } from "@/lib/utils";8import styles from "./context-menu.module.css";910function ContextMenuRoot({ ...props }: ContextMenu.Root.Props) {11 return <ContextMenu.Root {...props} />;12}1314function ContextMenuTrigger({ className, ...props }: ContextMenu.Trigger.Props) {15 return <ContextMenu.Trigger className={cn(styles.trigger, className)} data-slot="contextmenu-trigger" {...props} />;16}1718const ContextMenuPortal = ContextMenu.Portal;1920function ContextMenuBackdrop({ className, ...props }: ContextMenu.Backdrop.Props) {21 return (22 <ContextMenu.Backdrop className={cn(styles.backdrop, className)} data-slot="contextmenu-backdrop" {...props} />23 );24}2526function ContextMenuPositioner({ className, ...props }: ContextMenu.Positioner.Props) {27 return (28 <ContextMenu.Positioner29 className={cn(styles.positioner, className)}30 data-slot="contextmenu-positioner"31 {...props}32 />33 );34}3536function ContextMenuPopup({ className, ...props }: ContextMenu.Popup.Props) {37 return <ContextMenu.Popup className={cn(styles.popup, className)} data-slot="contextmenu-popup" {...props} />;38}3940function ContextMenuArrow({ className, ...props }: ContextMenu.Arrow.Props) {41 return <ContextMenu.Arrow className={cn(styles.arrow, className)} data-slot="contextmenu-arrow" {...props} />;42}4344interface ContextMenuItemProps extends ContextMenu.Item.Props {45 icon?: ReactNode;46 inset?: boolean;47 className?: string;48 children?: ReactNode;49 variant?: "default" | "destructive";50}5152function ContextMenuItem({53 className,54 icon,55 children,56 inset = false,57 variant = "default",58 ...props59}: ContextMenuItemProps) {60 return (61 <ContextMenu.Item62 className={cn(styles.item, inset && styles.inset, className)}63 data-slot="contextmenu-item"64 data-variant={variant === "destructive" ? "destructive" : undefined}65 {...props}66 >67 {icon && <span className={styles.icon}>{icon}</span>}68 {children}69 </ContextMenu.Item>70 );71}7273function ContextMenuCheckboxItem({ className, children, ...props }: ContextMenu.CheckboxItem.Props) {74 return (75 <ContextMenu.CheckboxItem76 className={cn(styles.checkboxItem, className)}77 data-slot="contextmenu-checkboxitem"78 {...props}79 >80 <span className={styles.itemIndicator}>81// … truncated
Files it writes
More from Roi UI
All 123 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | Roi UI | Other | Free | no deps · 2 files | |
| Accordion (Tailwind)accordion-tailwind | Roi UI | Other | Free | no deps | |
| AI Chatai-chat | Roi UI | Other | Free | no deps · 2 files | |
| AI Chat (Tailwind)ai-chat-tailwind | Roi UI | Other | Free | no deps | |
| Alertalert | Roi UI | Other | Free | 1 dep · 2 files | |
| Alert Dialogalert-dialog | Roi UI | Other | Free | no deps · 2 files | |
| Alert Dialog (Tailwind)alert-dialog-tailwind | Roi UI | Other | Free | no deps | |
| Alert (Tailwind)alert-tailwind | Roi UI | Other | Free | 1 dep |
