import {
Menu,
MenuAlignment,
MenuSide,
MenuItemVariant,
MenuItemActionType,
} from '../../../Menu'
import { Button, ButtonType, ButtonSize } from '../../../Button'
import { Settings, User, LogOut, Trash2 } from 'lucide-react'
const MenuLightHouse = () => {
const basicItems = [
{
items: [
{ label: 'Option 1', onClick: () => console.log('Option 1') },
{ label: 'Option 2', onClick: () => console.log('Option 2') },
{ label: 'Option 3', onClick: () => console.log('Option 3') },
],
},
]
const groupedItems = [
{
label: 'Group 1',
items: [
{ label: 'Item 1', onClick: () => console.log('Item 1') },
{ label: 'Item 2', onClick: () => console.log('Item 2') },
],
},
{
label: 'Group 2',
items: [
{ label: 'Item 3', onClick: () => console.log('Item 3') },
{ label: 'Item 4', onClick: () => console.log('Item 4') },
],
showSeparator: true,
},
]
return (
<>
{/* Basic Menu */}
}
items={basicItems}
/>
{/* With Grouped Items */}
}
items={groupedItems}
/>
{/* With Search */}
}
items={[
{
items: [
{ label: 'Apple', onClick: () => {} },
{ label: 'Banana', onClick: () => {} },
{ label: 'Cherry', onClick: () => {} },
{ label: 'Date', onClick: () => {} },
{ label: 'Elderberry', onClick: () => {} },
],
},
]}
enableSearch={true}
searchPlaceholder="Search items..."
/>
{/* With SubMenu */}
}
items={[
{
items: [
{
label: 'Parent Item',
subMenu: [
{ label: 'Sub Item 1', onClick: () => {} },
{ label: 'Sub Item 2', onClick: () => {} },
],
},
{ label: 'Regular Item', onClick: () => {} },
],
},
]}
/>
{/* With Slots */}
}
items={[
{
items: [
{
label: 'Settings',
slot1: ,
onClick: () => {},
},
{
label: 'Profile',
slot1: ,
onClick: () => {},
},
{
label: 'Logout',
slot1: ,
onClick: () => {},
},
],
},
]}
/>
{/* With SubLabel */}
}
items={[
{
items: [
{
label: 'Option 1',
subLabel: 'Description for option 1',
onClick: () => {},
},
{
label: 'Option 2',
subLabel: 'Description for option 2',
onClick: () => {},
},
],
},
]}
/>
{/* With Disabled Items */}
}
items={[
{
items: [
{ label: 'Enabled Item', onClick: () => {} },
{
label: 'Disabled Item',
disabled: true,
onClick: () => {},
},
{ label: 'Another Enabled', onClick: () => {} },
],
},
]}
/>
{/* With Action Variant */}
}
items={[
{
items: [
{
label: 'Primary Action',
variant: MenuItemVariant.ACTION,
actionType: MenuItemActionType.PRIMARY,
onClick: () => {},
},
{
label: 'Danger Action',
variant: MenuItemVariant.ACTION,
actionType: MenuItemActionType.DANGER,
onClick: () => {},
},
],
},
]}
/>
{/* All Sides */}
}
items={basicItems}
side={MenuSide.TOP}
/>
}
items={basicItems}
side={MenuSide.RIGHT}
/>
}
items={basicItems}
side={MenuSide.BOTTOM}
/>
}
items={basicItems}
side={MenuSide.LEFT}
/>
{/* All Alignments */}
}
items={basicItems}
alignment={MenuAlignment.START}
/>
}
items={basicItems}
alignment={MenuAlignment.CENTER}
/>
}
items={basicItems}
alignment={MenuAlignment.END}
/>
{/* With Max Height */}
}
items={[
{
items: Array.from({ length: 20 }, (_, i) => ({
label: `Item ${i + 1}`,
onClick: () => {},
})),
},
]}
maxHeight={200}
/>
{/* With Custom Width */}
}
items={basicItems}
minWidth={300}
maxWidth={400}
/>
{/* Controlled Open */}
}
items={basicItems}
open={false}
onOpenChange={(open) => {
console.log('Menu open changed:', open)
}}
/>
{/* As Modal */}
}
items={basicItems}
asModal={true}
/>
{/* With Skeleton */}
}
items={basicItems}
skeleton={{
show: true,
count: 5,
variant: 'pulse',
}}
/>
{/* Complex Example */}
}
items={[
{
label: 'Actions',
items: [
{
label: 'Settings',
subLabel: 'Manage settings',
slot1: ,
onClick: () => {},
},
{
label: 'Profile',
subLabel: 'View profile',
slot1: ,
onClick: () => {},
},
],
},
{
label: 'Danger Zone',
items: [
{
label: 'Delete',
variant: MenuItemVariant.ACTION,
actionType: MenuItemActionType.DANGER,
slot1: ,
onClick: () => {},
},
],
showSeparator: true,
},
]}
enableSearch={true}
searchPlaceholder="Search menu items..."
side={MenuSide.BOTTOM}
alignment={MenuAlignment.START}
maxHeight={300}
minWidth={250}
maxWidth={350}
/>
>
)
}
export default MenuLightHouse