NavDrawer
AppWrapper that wraps any trigger and children inside a drawer. Manages its own open/closed state. Used as AppNav's mobile menu and also works standalone.
<NavDrawer
title="Navigation"
side="left"
trigger={<Button variant="outline" iconLeft={<MenuIcon />}>Open menu</Button>}
footer={<Button variant="ghost" size="sm" fullWidth>Sign out</Button>}
>
<nav className="space-y-1 pt-1">
<a href="/" className="block px-3 py-2.5 rounded-lg bg-primary-subtle text-primary text-sm">Home</a>
<a href="/products" className="block px-3 py-2.5 rounded-lg text-text-primary hover:bg-surface-overlay text-sm">Products</a>
</nav>
</NavDrawer><NavDrawer
title="Cart"
side="right"
trigger={<Button variant="outline">🛒 Cart (3)</Button>}
>
{cartItems.map((item) => (
<div key={item.id} className="flex justify-between text-sm py-2">
<span>{item.name}</span><span>{item.price}</span>
</div>
))}
<Button variant="primary" fullWidth>Checkout</Button>
</NavDrawer>