(function ItemsRenderer(
{ label, items, onSelect, tone, icon, disabled, ariaLabel },
ref,
) {
// Read context from the Root we sit inside.
return (
{label}
{items.map((item, idx) => {
const kind: DropdownItemKind = item.kind ?? 'item';
if (kind === 'separator') return ;
if (kind === 'header') return {item.label};
const common = {
value: item.value,
disabled: item.disabled,
tone: item.tone,
shortcut: item.shortcut,
onSelect: () => onSelect(item.value),
};
if (kind === 'checkbox') {
return (
{item.label}
);
}
if (kind === 'radio') {
return (
{item.label}
);
}
// 'item' or 'submenu' (submenu = item w/ chevron affordance for now)
return (
▸ : undefined)}
>
{item.label}
);
})}
);
});
ItemsRenderer.displayName = 'PixelDropdown.ItemsRenderer';
export const PixelDropdown = PixelDropdownBase as PixelDropdownComponent;
PixelDropdown.Root = DropdownRoot;
PixelDropdown.Trigger = DropdownTrigger;
PixelDropdown.Content = DropdownContent;
PixelDropdown.Item = DropdownItem;
PixelDropdown.Separator = DropdownSeparator;
PixelDropdown.Header = DropdownHeader;
PixelDropdown.CheckboxItem = DropdownCheckboxItem;
PixelDropdown.RadioItem = DropdownRadioItem;