MobileNav
Slide-out mobile navigation drawer built on React Aria Modal — focus trap, Escape, and backdrop dismissal included. Control open state with isOpen / onOpenChange, or share state through MobileNavProvider + MobileNav.Toggle.
Examples
Default
Controlled open state from a button.
import { MobileNav } from '@var-ui/react';
<MobileNav isOpen={open} onOpenChange={setOpen} header="Menu">
<SideNav.Item label="Home" href="/" />
</MobileNav>Provider and toggle
Wrap the hamburger and drawer in MobileNavProvider so MobileNav.Toggle and MobileNav share open state without prop drilling. AppShell already provides this at the mobile breakpoint.
import { MobileNav, MobileNavProvider, SideNav } from '@var-ui/react';
<MobileNavProvider defaultIsOpen>
<MobileNav.Toggle />
<MobileNav header="Menu">
<SideNav.Section title="Browse">
<SideNav.Item label="Home" href="/" isSelected />
<SideNav.Item label="Docs" href="/docs" />
</SideNav.Section>
</MobileNav>
</MobileNavProvider>Props
Accessibility
The panel is a dialog (label defaults to "Navigation") with a labeled close control. MobileNav.Toggle sets aria-expanded from provider or explicit isOpen, and defaults to aria-label="Open navigation". Prefer the provider pattern when the toggle lives in top chrome and the drawer is a sibling (as in AppShell).