Measured entry
shadcn-menubar
A copy-in React and TypeScript menubar wrapper built on Radix UI primitives. It ships as source rather than a packaged widget, with styled exports for menus, submenus, checkbox and radio items, labels, separators, shortcuts, and destructive actions. It depends on Radix UI, Lucide icons, Tailwind theme utilities, and a local cn helper.



Measured
Every value below was written by the harness on the run that produced the frames above. None of it is derived from the prose.
| Build | OK |
|---|---|
| Mount | OK |
| Console errors | 0 |
| Uncaught page errors | 0 |
| Horizontal overflow | clean at 375, 768, 1440 |
| Axe critical | 0 |
| Axe serious | 0 |
| Axe moderate | 0 |
| Axe minor | 0 |
| Gzip marginal | 58.8 KB (124.2 KB build, 65.4 KB baseline) |
| Bare mode | FAIL |
| Provider required | NO |
| Demo used | written from the component source API |
What the harness recorded
BARE BUILD
✗ Build failed in 4.14s error during build: [vite:load-fallback] Could not load <sandbox>/src/lib/utils (imported by src/cut/components/ui/menubar.tsx): ENOENT: no such file or directory, open '<sandbox>/src/lib/utils'
Verdict
A solid choice for shadcn-based application chrome, with broad menu composition and dependable Radix foundations. It needs a shadcn-style setup and does not mount in a bare project because the local utility import and styling conventions are required.
Use it if
- You need a desktop-style command bar with nested menus and keyboard-oriented Radix behavior.
- Your app already follows shadcn conventions and you want editable source that matches its theme tokens.
- You need checkbox, radio, disabled, inset, shortcut, and destructive menu-item variants in one component family.
Skip it if
- Your interface is primarily touch-first, where a persistent desktop menubar is a poor navigation pattern.
- You want a self-contained package that works without Tailwind tokens, path aliases, or local utility helpers.
- You only need a simple dropdown and do not want the broader menubar API or added client dependency.
Install
| Declared dependencies | radix-ui |
|---|---|
| Missing on install | none |
| Bare install | fails once the shadcn-style helpers are removed, so it needs that setup |
| Provider | no provider required in the harness |
A non-shadcn project must add Radix UI and Lucide React, provide the cn class-merging helper and matching import alias, configure Tailwind with the referenced color, shadow, radius, state, and animation utilities, and map the theme tokens used by the classes.
Source and credit
This page is a review, not a copy. The component source lives with its author and this site does not republish it. Read the license before you use anything.
Author repository
github.com/shadcn-ui/uiAlternatives
Other published entries for the navbar pattern, ordered by what they measured: mounts first, then clean axe scans, then bare-mode passes, then the smaller bundle.
- hyperui-headers-4editorial
- Renders
- YES
- A11y
- 0
- Gzip
- 19.1KB
- Bare
- pass
- Prov
- NO
- kibo-dialog-stackminimal-flat
- Renders
- YES
- A11y
- 0
- Gzip
- 33.4KB
- Bare
- pass
- Prov
- NO
- ruixen-floating-navbarunclassified
- Renders
- YES
- A11y
- 0
- Gzip
- 59.9KB
- Bare
- pass
- Prov
- NO
- ruixen-hover-gradient-navbargradient-glow
- Renders
- YES
- A11y
- 0
- Gzip
- 60.9KB
- Bare
- pass
- Prov
- NO
- ruixen-expandable-menu-navbarunclassified
- Renders
- YES
- A11y
- 0
- Gzip
- 61.8KB
- Bare
- pass
- Prov
- NO
- hextaui-cardminimal-flat
- Renders
- YES
- A11y
- 0
- Gzip
- 26.7KB
- Bare
- fail
- Prov
- NO