# Menu
Use a menu to display a list of actions in a popover. Actions can open a modal, trigger an event, or link to an external page.
```tsx
import {
reactExtension,
Button,
Menu,
} from '@shopify/ui-extensions-react/customer-account';
import React from 'react';
export default reactExtension(
'customer-account.page.render',
() => ,
);
function App() {
return (
);
}
```
```js
import {Menu, Button, extension} from '@shopify/ui-extensions/customer-account';
export default extension('customer-account.page.render', (root, api) => {
renderApp(root, api);
});
async function renderApp(root, api) {
const menuFragment = root.createFragment();
const menu = root.createComponent(Menu, {}, [
root.createComponent(
Button,
{onPress: () => console.log('Submit problem')},
'Submit problem',
),
root.createComponent(Button, {to: 'https://shopify.com'}, 'Request return'),
root.createComponent(Button, {appearance: 'critical'}, 'Cancel order'),
]);
menuFragment.appendChild(menu);
const button = root.createComponent(
Button,
{overlay: menuFragment},
'Manage',
);
root.appendChild(button);
}
```
## MenuProps
### MenuProps
### accessibilityLabel
value: `string`
A label to describe the purpose of the menu that is announced by screen readers.
### id
value: `string`
A unique identifier for the component.
### onClose
value: `() => void`
Callback to run when the Menu is closed
### onOpen
value: `() => void`
Callback to run when the Menu is opened
## Related
- [Popover](../../../checkout-ui-extensions/unstable/components/overlays/popover)
## ButtonProps children
The Menu component exclusively accepts Button elements with restricted props as its children. The `appearance` prop will always be set to monochrome by default.
### Docs_Menu_Button_Action
### accessibilityLabel
value: `string`
A label used for buyers using assistive technologies. When set, any `children` supplied to this component will not be announced to screen reader users.
### accessibilityRole
value: `ButtonAccessibilityRole`
- ButtonAccessibilityRole: 'button' | 'submit'
The role of the button that will be rendered.
`button`: renders a regular button.
`submit`: renders a button that submits a form.
### activateAction
value: `'auto' | 'copy'`
Sets the action the `activateTarget` should take when this pressable is activated.
Supported actions by component:
| Component | Supported Actions | Default ('auto') |
|---------------|-------------------|-------------------|
| [`ClipboardItem`](https://shopify.dev/docs/api/checkout-ui-extensions/latest/clipboarditem) | 'copy' | 'copy' |
### activateTarget
value: `string`
ID of a component that should respond to activations (e.g. clicks) on this pressable.
See `activateAction` for how to control the behavior of the target.
### appearance
value: `Extract`
- Appearance: 'base' | 'accent' | 'decorative' | 'interactive' | 'subdued' | 'info' | 'success' | 'warning' | 'critical' | 'monochrome'
Specify the color treatment of the Button.
### disabled
value: `boolean`
Disables the button, disallowing any interaction.
### id
value: `string`
A unique identifier for the component.
### loading
value: `boolean`
Replaces content with a loading indicator.
### loadingLabel
value: `string`
Accessible label for the loading indicator when user prefers reduced motion. This value is only used if `loading` is true.
### onPress
value: `() => void`
Callback that is run when the button is pressed.
### overlay
value: `RemoteFragment`
An overlay component to render when the user interacts with the component.
### submit
value: `boolean`
Allows the button to submit a form.
### to
value: `string`
Destination URL to link to.
### toggles
value: `string`
The component's identifier whose visibility will be toggled when this component is actioned.
## Related
- [Popover](../../../checkout-ui-extensions/unstable/components/overlays/popover)