Menubar component — a horizontal bar of menus for application-level navigation.
Follows the WAI-ARIA Menu Button pattern. Each menu within the bar is
triggered by a button (menubutton role) and reveals a floating content
panel (menu role) containing menuitem children.
The component renders full DOM structure with data-menubar-* attributes for
JS hook wiring. Content panels are hidden by default via the hidden class;
a JS hook toggles visibility at runtime.
Sub-components
| Function | Element | Purpose |
|---|---|---|
menubar/1 | div | Horizontal container with role="menubar" |
menubar_menu/1 | div | Relative wrapper for one menu + its content |
menubar_trigger/1 | button | Toggle button (role="menubutton") |
menubar_content/1 | div | Floating panel (role="menu", hidden) |
menubar_item/1 | button | Clickable item (role="menuitem") |
menubar_separator/1 | div | Visual divider (role="separator") |
Example
<.menubar id="main-menubar">
<.menubar_menu>
<.menubar_trigger>File</.menubar_trigger>
<.menubar_content>
<.menubar_item on_click="new_file">New File</.menubar_item>
<.menubar_separator />
<.menubar_item on_click="save" shortcut="⌘S">Save</.menubar_item>
</.menubar_content>
</.menubar_menu>
<.menubar_menu>
<.menubar_trigger>Edit</.menubar_trigger>
<.menubar_content>
<.menubar_item disabled>Undo</.menubar_item>
</.menubar_content>
</.menubar_menu>
</.menubar>Accessibility
- The outer container has
role="menubar". - Each trigger button has
role="menubutton",aria-haspopup="menu", andaria-expanded="false"(updated by the JS hook when the panel is open). - Each content panel has
role="menu". - Each item has
role="menuitem". - Disabled items use the HTML
disabledattribute on the button, which prevents interaction while keeping the item visible. - Separators use
role="separator".
Summary
Functions
Renders the horizontal menubar container.
Renders the floating content panel for a menubar menu.
Renders a clickable menu item with role="menuitem".
Renders the relative-positioned wrapper for a single menu within the menubar.
Renders a horizontal visual divider between groups of menu items.
Renders the trigger button for a menubar menu.