import React, { useRef, useState } from 'react'; import { Screen, View, Text, Button, Menu, MenuItem } from '@idealyst/components'; export const MenuExamples: React.FC = () => { const [basicMenuOpen, setBasicMenuOpen] = useState(false); const [anchorMenuOpen, setAnchorMenuOpen] = useState(false); const [placementMenuOpen, setPlacementMenuOpen] = useState(false); const [iconNameMenuOpen, setIconNameMenuOpen] = useState(false); const [intentMenuOpen, setIntentMenuOpen] = useState(false); const [separatorMenuOpen, setSeparatorMenuOpen] = useState(false); const [disabledMenuOpen, setDisabledMenuOpen] = useState(false); const [rightEdgeMenuOpen, setRightEdgeMenuOpen] = useState(false); const [bottomEdgeMenuOpen, setBottomEdgeMenuOpen] = useState(false); const anchorRef = useRef(null); const [selectedAction, setSelectedAction] = useState(''); const basicItems: MenuItem[] = [ { id: 'action1', label: 'Action 1', onClick: () => setSelectedAction('Action 1') }, { id: 'action2', label: 'Action 2', onClick: () => setSelectedAction('Action 2') }, { id: 'action3', label: 'Action 3', onClick: () => setSelectedAction('Action 3') }, ]; const iconNameItems: MenuItem[] = [ { id: 'edit', label: 'Edit', icon: 'pencil', onClick: () => setSelectedAction('Edit') }, { id: 'copy', label: 'Copy', icon: 'content-copy', onClick: () => setSelectedAction('Copy') }, { id: 'share', label: 'Share', icon: 'share-variant', onClick: () => setSelectedAction('Share'), intent: 'primary' }, { id: 'delete', label: 'Delete', icon: 'delete', onClick: () => setSelectedAction('Delete'), intent: 'danger' }, ]; const intentItems: MenuItem[] = [ { id: 'save', label: 'Save', intent: 'success', onClick: () => setSelectedAction('Save') }, { id: 'cancel', label: 'Cancel', intent: 'neutral', onClick: () => setSelectedAction('Cancel') }, { id: 'delete', label: 'Delete', intent: 'danger', onClick: () => setSelectedAction('Delete') }, { id: 'warn', label: 'Warning Action', intent: 'warning', onClick: () => setSelectedAction('Warning') }, ]; const separatorItems: MenuItem[] = [ { id: 'new', label: 'New', onClick: () => setSelectedAction('New') }, { id: 'open', label: 'Open', onClick: () => setSelectedAction('Open') }, { id: 'sep1', label: '', separator: true }, { id: 'save', label: 'Save', onClick: () => setSelectedAction('Save') }, { id: 'saveas', label: 'Save As...', onClick: () => setSelectedAction('Save As') }, { id: 'sep2', label: '', separator: true }, { id: 'close', label: 'Close', onClick: () => setSelectedAction('Close') }, ]; const disabledItems: MenuItem[] = [ { id: 'enabled1', label: 'Enabled Action', onClick: () => setSelectedAction('Enabled') }, { id: 'disabled', label: 'Disabled Action', disabled: true }, { id: 'enabled2', label: 'Another Action', onClick: () => setSelectedAction('Another') }, ]; return ( Menu Examples {selectedAction && ( Last selected action: {selectedAction} )} Basic Menu (Children Mode) Anchor Mode The menu appears next to the anchor element, not the button. Anchor Placement Options With Icons Intent Colors With Separators Disabled Items Edge-of-Screen Tests These menus should flip or clamp to stay within the viewport. ); }; export default MenuExamples;