This component no longer exists. It was in neobrutal-ui’s manifest when we first indexed it and is not there now — the registry served its inventory on 2026-08-06 and this item was not on it. The install command below will fail. It is kept here because a tutorial somewhere still tells people to run it.
Menubar
neobrutal-ui/menubarRemovedComponent
neobrutal-ui publishes no description for this item.
Live preview
live · rendered by the registry
Rendered by neobrutal-ui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://neobrutal-ui.andongmin.com/r/menubar.jsonSource
1"use client";23import * as React from "react";4import { DirectionProvider } from "@base-ui/react/direction-provider";5import { Menubar as MenubarPrimitive } from "@base-ui/react/menubar";67import { cn } from "@/lib/utils";8import {9 DropdownMenu,10 DropdownMenuCheckboxItem,11 DropdownMenuContent,12 DropdownMenuGroup,13 DropdownMenuItem,14 DropdownMenuLabel,15 DropdownMenuPortal,16 DropdownMenuRadioGroup,17 DropdownMenuRadioItem,18 DropdownMenuSeparator,19 DropdownMenuShortcut,20 DropdownMenuSub,21 DropdownMenuSubContent,22 DropdownMenuSubTrigger,23 DropdownMenuTrigger,24} from "@/components/ui/dropdown-menu";2526type MenubarValueContextValue = {27 setValue: (value: string) => void;28 value: string;29 valueRef: React.MutableRefObject<string>;30};3132const MenubarValueContext = React.createContext<MenubarValueContextValue | null>(null);3334type MenubarMenuContextValue = {35 defaultTriggerId: string;36 setTriggerId: React.Dispatch<React.SetStateAction<string>>;37};3839const MenubarMenuContext = React.createContext<MenubarMenuContextValue | null>(null);4041type CSSPropertiesWithVariables = React.CSSProperties & {42 [name: `--${string}`]: string | number | undefined;43};44type MenubarContentStyle = React.ComponentProps<typeof DropdownMenuContent>["style"];4546const menubarCssVariables: CSSPropertiesWithVariables = {47 "--radix-menubar-content-available-height": "var(--available-height)",48 "--radix-menubar-content-available-width": "var(--available-width)",49 "--radix-menubar-content-transform-origin": "var(--transform-origin)",50 "--radix-menubar-trigger-height": "var(--anchor-height)",51 "--radix-menubar-trigger-width": "var(--anchor-width)",52};5354function mergeContentStyle(style: MenubarContentStyle): MenubarContentStyle {55 if (typeof style === "function") {56 return (state) => ({ ...menubarCssVariables, ...style(state) });57 }5859 return { ...menubarCssVariables, ...style };60}6162function getAsChildElement(children: React.ReactNode, componentName: string) {63 const child = React.Children.toArray(children).find(React.isValidElement);6465 if (!child) {66 throw new Error(`${componentName} with asChild requires a valid React element child.`);67 }6869 return child as React.ReactElement<{70 [key: string]: unknown;71 children?: React.ReactNode;72 }>;73}7475function useMenubarValueContext() {76 const context = React.useContext(MenubarValueContext);7778 if (!context) {79 throw new Error("MenubarMenu must be used within Menubar");80 }81 return context;82}8384// … truncated
What it pulls in
npm packages
