Toolbar
Toolbar is a native div wrapper for three-part horizontal control layouts. Use childrenStart, children, and childrenEnd to place arbitrary content into start, centered middle, and end slots.
My App
import { Button, ButtonGroup, Toolbar, View } from "density-base-ui";
import { Redo2, Undo2 } from "lucide-react";
export default function ToolbarExample() {
return (
<Toolbar
aria-label="Document actions"
childrenStart={
<ButtonGroup aria-label="Edit history">
<Button type="button" aria-label="Undo" square>
<Undo2 aria-hidden="true" size={16} strokeWidth={1.75} />
</Button>
<Button type="button" aria-label="Redo" disabled square>
<Redo2 aria-hidden="true" size={16} strokeWidth={1.75} />
</Button>
</ButtonGroup>
}
childrenMiddle={<span>My App</span>}
childrenEnd={
<View gap="sm" orientation="horizontal" padding={false}>
<Button type="button">Preview</Button>
<Button type="button" emphasis="primary">
Publish
</Button>
</View>
}
/>
);
}Depth
import { Skeleton, Toolbar, View } from "density-base-ui";
export default function ToolbarDepthExample() {
return (
<View>
<Toolbar
depth="1"
childrenEnd={<ToolbarSkeletonGroup />}
childrenMiddle={<ToolbarMiddleSkeleton />}
childrenStart={<ToolbarSkeletonGroup />}
/>
<Toolbar
depth="2"
childrenEnd={<ToolbarSkeletonGroup />}
childrenMiddle={<ToolbarMiddleSkeleton />}
childrenStart={<ToolbarSkeletonGroup />}
/>
<Toolbar
depth="3"
childrenEnd={<ToolbarSkeletonGroup />}
childrenMiddle={<ToolbarMiddleSkeleton />}
childrenStart={<ToolbarSkeletonGroup />}
/>
<Toolbar
depth="4"
childrenEnd={<ToolbarSkeletonGroup />}
childrenMiddle={<ToolbarMiddleSkeleton />}
childrenStart={<ToolbarSkeletonGroup />}
/>
<Toolbar
depth="5"
childrenEnd={<ToolbarSkeletonGroup />}
childrenMiddle={<ToolbarMiddleSkeleton />}
childrenStart={<ToolbarSkeletonGroup />}
/>
<Toolbar
depth="6"
childrenEnd={<ToolbarSkeletonGroup />}
childrenMiddle={<ToolbarMiddleSkeleton />}
childrenStart={<ToolbarSkeletonGroup />}
/>
<Toolbar
depth="7"
childrenEnd={<ToolbarSkeletonGroup />}
childrenMiddle={<ToolbarMiddleSkeleton />}
childrenStart={<ToolbarSkeletonGroup />}
/>
</View>
);
}
function ToolbarSkeletonGroup() {
return (
<>
<Skeleton style={{ width: "var(--dn-size-current-height)" }} />
<Skeleton style={{ width: "var(--dn-size-current-height)" }} />
</>
);
}
function ToolbarMiddleSkeleton() {
return (
<Skeleton style={{ width: "calc(var(--dn-size-current-height) * 5)" }} />
);
}Size
import { Skeleton, Toolbar, View } from "density-base-ui";
export default function ToolbarSizeExample() {
return (
<View>
<Toolbar
size="2xs"
childrenEnd={<ToolbarSkeletonGroup />}
childrenMiddle={<ToolbarMiddleSkeleton />}
childrenStart={<ToolbarSkeletonGroup />}
/>
<Toolbar
size="xs"
childrenEnd={<ToolbarSkeletonGroup />}
childrenMiddle={<ToolbarMiddleSkeleton />}
childrenStart={<ToolbarSkeletonGroup />}
/>
<Toolbar
size="sm"
childrenEnd={<ToolbarSkeletonGroup />}
childrenMiddle={<ToolbarMiddleSkeleton />}
childrenStart={<ToolbarSkeletonGroup />}
/>
<Toolbar
size="md"
childrenEnd={<ToolbarSkeletonGroup />}
childrenMiddle={<ToolbarMiddleSkeleton />}
childrenStart={<ToolbarSkeletonGroup />}
/>
<Toolbar
size="lg"
childrenEnd={<ToolbarSkeletonGroup />}
childrenMiddle={<ToolbarMiddleSkeleton />}
childrenStart={<ToolbarSkeletonGroup />}
/>
<Toolbar
size="xl"
childrenEnd={<ToolbarSkeletonGroup />}
childrenMiddle={<ToolbarMiddleSkeleton />}
childrenStart={<ToolbarSkeletonGroup />}
/>
<Toolbar
size="2xl"
childrenEnd={<ToolbarSkeletonGroup />}
childrenMiddle={<ToolbarMiddleSkeleton />}
childrenStart={<ToolbarSkeletonGroup />}
/>
<Toolbar
size="3xl"
childrenEnd={<ToolbarSkeletonGroup />}
childrenMiddle={<ToolbarMiddleSkeleton />}
childrenStart={<ToolbarSkeletonGroup />}
/>
</View>
);
}
function ToolbarSkeletonGroup() {
return (
<>
<Skeleton style={{ width: "var(--dn-size-current-height)" }} />
<Skeleton style={{ width: "var(--dn-size-current-height)" }} />
</>
);
}
function ToolbarMiddleSkeleton() {
return (
<Skeleton style={{ width: "calc(var(--dn-size-current-height) * 5)" }} />
);
}Padding
import { Skeleton, Toolbar, View } from "density-base-ui";
export default function ToolbarPaddingExample() {
return (
<View>
<Toolbar
padding={false}
childrenEnd={<ToolbarSkeletonGroup />}
childrenMiddle={<ToolbarMiddleSkeleton />}
childrenStart={<ToolbarSkeletonGroup />}
/>
<Toolbar
childrenEnd={<ToolbarSkeletonGroup />}
childrenMiddle={<ToolbarMiddleSkeleton />}
childrenStart={<ToolbarSkeletonGroup />}
/>
</View>
);
}
function ToolbarSkeletonGroup() {
return (
<>
<Skeleton style={{ width: "var(--dn-size-current-height)" }} />
<Skeleton style={{ width: "var(--dn-size-current-height)" }} />
</>
);
}
function ToolbarMiddleSkeleton() {
return (
<Skeleton style={{ width: "calc(var(--dn-size-current-height) * 5)" }} />
);
}| Prop | Values | Required | Default | Behavior | Description |
|---|---|---|---|---|---|
border | none, border | Not required | "none" | Attribute: data-dn-border | — |
childrenEnd | React.ReactNode | Not required | — | — | — |
childrenMiddle | React.ReactNode | Not required | — | — | — |
childrenStart | React.ReactNode | Not required | — | — | — |
depth | 1, 2, 3, 4, 5, 6, 7 | Not required | — | Attribute: data-dn-depth | — |
orientation | vertical, horizontal | Not required | "horizontal" | — | — |
padding | false, true | Not required | true | Attribute: data-dn-padding | — |
size | 2xs, xs, sm, md, lg, xl, 2xl, 3xl | Not required | — | Attribute: data-dn-size | — |
This component also accepts props from native APIs. They are passed through and intentionally kept out of this focused Density API table.