## Background
Currently the menu component can only be triggered by a Select or Lookup component. We want to expand this to include the ability to trigger a menu with a button.
{F49489018}
### Known use cases
- The Catalog Table in the metrics platform will need this capability
- Multi-blocks project
### Existing implementations
Wikifunctions currently triggers a menu through a button, see under "Try this function": https://www.wikifunctions.org/view/en/Z10012
{F49489447}
---
## Codex implementation
- Should be implemented as a variant of the existing [[ https://doc.wikimedia.org/codex/latest/components/demos/toggle-button.html | ToggleButton ]] component (not a new component), and should use the "quiet" state so it is not too visually prominent when toggled
- Additional props may need to be added to ToggleButton to accept [[ https://doc.wikimedia.org/codex/latest/components/types-and-constants.html#menuconfig | MenuConfig ]] and/or [[ https://doc.wikimedia.org/codex/latest/components/types-and-constants.html#menuitemdata | MenuItemData ]] objects
- [[ https://doc.wikimedia.org/codex/latest/composables/demos/use-floating-menu.html | useFloatingMenu ]] composable should be used for positioning the fly-out menu; however, some tweaks may be needed because we don't want the width of the menu to be limited to the width of the triggering button. The composable may need to be updated to accept an additional argument for this usage. See how Select or Combobox use the composable to position their own Menus for examples.
- Must support robust keyboard navigation and must use appropriate ARIA roles/attributes
## Acceptance criteria
TBD
### Minimum viable product
TBD
**MVP scope**
- [] //List all parts of the MVP scope for this component//
**Design**
- [] Design the Figma spec sheet and add a link to it in this task
- [] Update the component in the [Figma library](https://www.figma.com/file/KoDuJMadWBXtsOtzGS4134/%E2%9D%96-Codex-components?node-id=1891%3A4420&viewport=287%2C338%2C0.28). //This step will be done by a DST member.//
**Code**
- [] Implement the component in Codex