import type { Meta, StoryObj } from '@storybook/nextjs-vite' import { useState } from 'react' import { ContextMenu, ContextMenuCheckboxItem, ContextMenuCheckboxItemIndicator, ContextMenuContent, ContextMenuGroup, ContextMenuGroupLabel, ContextMenuItem, ContextMenuLinkItem, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuRadioItemIndicator, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, } from '.' const TriggerArea = ({ label = 'Right-click inside this area' }: { label?: string }) => ( } > {label} ) const meta = { title: 'Base/Navigation/ContextMenu', component: ContextMenu, parameters: { layout: 'centered', docs: { description: { component: 'Compound context menu built on Base UI ContextMenu. Open by right-clicking the trigger area.', }, }, }, tags: ['autodocs'], } satisfies Meta export default meta type Story = StoryObj export const Default: Story = { render: () => ( Edit Duplicate Archive ), } export const WithSubmenu: Story = { render: () => ( Copy Paste Share Email Slack Copy link ), } export const WithGroupLabel: Story = { render: () => ( Actions Rename Duplicate Danger Zone Delete ), } const WithRadioItemsDemo = () => { const [value, setValue] = useState('comfortable') return ( Compact Comfortable Spacious ) } export const WithRadioItems: Story = { render: () => , } const WithCheckboxItemsDemo = () => { const [showToolbar, setShowToolbar] = useState(true) const [showSidebar, setShowSidebar] = useState(false) const [showStatusBar, setShowStatusBar] = useState(true) return ( Toolbar Sidebar Status bar ) } export const WithCheckboxItems: Story = { render: () => , } export const WithLinkItems: Story = { render: () => ( Dify Docs Product Roadmap Dangerous External Action ), } export const Complex: Story = { render: () => ( Rename Duplicate Share Email Slack Copy Link Delete ), }