import type { Meta, StoryObj } from '@storybook/nextjs-vite' import { useState } from 'react' import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuCheckboxItemIndicator, DropdownMenuContent, DropdownMenuGroup, DropdownMenuGroupLabel, DropdownMenuItem, DropdownMenuLinkItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuRadioItemIndicator, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, } from '.' const TriggerButton = ({ label = 'Open Menu' }: { label?: string }) => ( } > {label} ) const meta = { title: 'Base/Navigation/DropdownMenu', component: DropdownMenu, parameters: { layout: 'centered', docs: { description: { component: 'Compound dropdown menu built on Base UI Menu. Supports items, separators, group labels, submenus, radio groups, checkbox items, destructive items, and disabled states.', }, }, }, tags: ['autodocs'], } satisfies Meta export default meta type Story = StoryObj export const Default: Story = { render: () => ( Edit Duplicate Archive ), } export const WithSeparator: Story = { render: () => ( Cut Copy Paste Select All Find and Replace ), } export const WithGroupLabel: Story = { render: () => ( Actions Edit Duplicate Export Export as PDF Export as CSV ), } export const WithDestructiveItem: Story = { render: () => ( Edit Duplicate Delete ), } export const WithSubmenu: Story = { render: () => ( New File Open Share Email Slack Copy Link Download ), } 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 WithDisabledItems: Story = { render: () => ( Edit Duplicate Archive Restore Delete ), } export const WithIcons: Story = { render: () => ( Edit Duplicate Archive Delete ), } export const WithLinkItems: Story = { render: () => ( Dify Docs Product Roadmap ), } const ComplexDemo = () => { const [sortOrder, setSortOrder] = useState('newest') const [showArchived, setShowArchived] = useState(false) return ( Edit Rename Duplicate Move to Workspace Share Email Slack Copy Link Sort by Newest first Oldest first Name Show Archived Delete ) } export const Complex: Story = { render: () => , }