PhiaUi.Components.Menubar (phia_ui v0.1.17)

Copy Markdown View Source

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

FunctionElementPurpose
menubar/1divHorizontal container with role="menubar"
menubar_menu/1divRelative wrapper for one menu + its content
menubar_trigger/1buttonToggle button (role="menubutton")
menubar_content/1divFloating panel (role="menu", hidden)
menubar_item/1buttonClickable item (role="menuitem")
menubar_separator/1divVisual 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", and aria-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 disabled attribute 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.

Functions