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 } 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" size="lg">
<Button type="button" size="lg" aria-label="Undo" square>
<Undo2 aria-hidden="true" size={16} strokeWidth={1.75} />
</Button>
<Button type="button" size="lg" aria-label="Redo" disabled square>
<Redo2 aria-hidden="true" size={16} strokeWidth={1.75} />
</Button>
</ButtonGroup>
}
childrenMiddle={<span>My App</span>}
childrenEnd={
<div style={styles.group}>
<Button type="button" emphasis="primary" size="lg">
Publish
</Button>
<Button type="button" size="lg">
Preview
</Button>
</div>
}
size="lg"
/>
);
}
const styles = {
group: {
display: "flex",
gap: "0.375rem",
},
} as const;Props
| Prop | Attribute | Values | Default |
|---|---|---|---|
depth |
data-dn-depth |
1, 2, 3, 4, 5, 6, 7 |
1 |
size |
data-dn-size |
2xs, xs, sm, md, lg, xl, 2xl, 3xl |
lg |
padding |
data-dn-padding |
none, 2xs, xs, sm, md, lg, xl, 2xl, 3xl |
md |
childrenStart |
None | ReactNode |
None |
children |
None | ReactNode |
None |
childrenEnd |
None | ReactNode |
None |
| Other native div props | Mixed | HTMLAttributes<HTMLDivElement> |
None |
Depth
import { Toolbar } from "density-base-ui";
export default function ToolbarDepthExample() {
return (
<div style={{ display: "grid", gap: "0.5rem", width: "100%" }}>
<Toolbar depth="1">Depth 1</Toolbar>
<Toolbar depth="2">Depth 2</Toolbar>
<Toolbar depth="3">Depth 3</Toolbar>
<Toolbar depth="4">Depth 4</Toolbar>
<Toolbar depth="5">Depth 5</Toolbar>
<Toolbar depth="6">Depth 6</Toolbar>
<Toolbar depth="7">Depth 7</Toolbar>
</div>
);
}Size
import { Toolbar } from "density-base-ui";
export default function ToolbarSizeExample() {
return (
<div style={{ display: "grid", gap: "0.5rem", width: "100%" }}>
<Toolbar size="2xs">2xs</Toolbar>
<Toolbar size="xs">xs</Toolbar>
<Toolbar size="sm">sm</Toolbar>
<Toolbar size="md">md</Toolbar>
<Toolbar size="lg">lg</Toolbar>
<Toolbar size="xl">xl</Toolbar>
<Toolbar size="2xl">2xl</Toolbar>
<Toolbar size="3xl">3xl</Toolbar>
</div>
);
}Padding
import { Toolbar } from "density-base-ui";
export default function ToolbarPaddingExample() {
return (
<div style={{ display: "grid", gap: "0.5rem", width: "100%" }}>
<Toolbar padding="none">None</Toolbar>
<Toolbar padding="2xs">2xs</Toolbar>
<Toolbar padding="xs">xs</Toolbar>
<Toolbar padding="sm">sm</Toolbar>
<Toolbar padding="md">md</Toolbar>
<Toolbar padding="lg">lg</Toolbar>
<Toolbar padding="xl">xl</Toolbar>
<Toolbar padding="2xl">2xl</Toolbar>
<Toolbar padding="3xl">3xl</Toolbar>
</div>
);
}Arbitrary children
Toolbar slot props render plain React nodes.
import { Toolbar } from "density-base-ui";
export default function ToolbarRenderExample() {
return (
<Toolbar aria-label="Toolbar native button example" size="lg">
<button type="button" data-dn-presentation="button">
Native button
</button>
</Toolbar>
);
}