'use client';
import { cn } from '../../../lib';
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuTrigger,
} from '../dropdown-menu';
import { renderItems } from './render-items';
import type { MenuBuilderProps } from './types';
/**
* MenuBuilder — declarative menu.
*
* Pass `items: MenuItem[]` and a trigger; it renders a fully accessible
* menu through the existing Radix `DropdownMenu*` primitives (items,
* submenus, radio groups, checkboxes, separators, section labels,
* shortcuts, icons, descriptions).
*
* @example
*
*
*
*/
export function MenuBuilder({
items,
children,
open,
onOpenChange,
defaultOpen,
side,
align = 'start',
sideOffset,
alignOffset,
contentClassName,
showDescriptions = true,
}: MenuBuilderProps) {
return (
{/* The trigger opens the menu on click; suppress its focus-visible ring
so there's no stray outline around the avatar/button. */}
{children}
{renderItems(items, { showDescriptions })}
);
}