VerticalGlobalNav
VerticalGlobalNav is an icon rail for switching between global app areas. It uses native buttons inside Panel, keeps active state controlled by props, and leaves icons to the caller.
import { VerticalGlobalNav, Panel } from "density-base-ui";
import { Blocks, Files, GitBranch, Search, Terminal } from "lucide-react";
const items = [
{
id: "files",
label: "Files",
icon: <Files aria-hidden="true" size={18} strokeWidth={1.75} />,
},
{
id: "search",
label: "Search",
icon: <Search aria-hidden="true" size={18} strokeWidth={1.75} />,
},
{
id: "source-control",
label: "Source control",
icon: <GitBranch aria-hidden="true" size={18} strokeWidth={1.75} />,
},
{
id: "terminal",
label: "Terminal",
icon: <Terminal aria-hidden="true" size={18} strokeWidth={1.75} />,
},
{
id: "extensions",
label: "Extensions",
icon: <Blocks aria-hidden="true" size={18} strokeWidth={1.75} />,
},
];
export default function VerticalGlobalNavExample() {
return (
<Panel>
<VerticalGlobalNav
aria-label="Workspace views"
activeId="files"
items={items}
/>
<section style={styles.content}>Files</section>
</Panel>
);
}
const styles = {
content: {
display: "grid",
placeItems: "center",
},
} as const;Props
| Prop | Attribute | Values | Default |
|---|---|---|---|
items |
None | { id, label, icon, disabled? }[] |
Required |
activeId |
None | string |
Required |
onActiveIdChange |
None | (id) => void |
None |
renderItem |
None | (item, state) => ReactNode |
None |
density-level |
data-dn-level |
1, 2, 3, 4, 5, 6, 7 |
2 |
density-size |
data-dn-size |
2xs, xs, sm, md, lg, xl, 2xl, 3xl |
sm |
| Other native div props | Mixed | HTMLAttributes<HTMLDivElement> |
None |