Toggle
Toggle wraps Base UI’s toggle button with Density’s shared control attributes.
import { useState } from "react";
import { Toggle } from "density-base-ui";
import { Star } from "lucide-react";
export default function ToggleExample() {
const [pressed, setPressed] = useState(false);
return (
<Toggle pressed={pressed} onPressedChange={setPressed}>
<Star
aria-hidden="true"
fill={pressed ? "currentColor" : "none"}
size={16}
strokeWidth={1.75}
/>
{pressed ? "Unstar" : "Star"}
</Toggle>
);
}Props
| Prop | Attribute | Values | Default |
|---|---|---|---|
presentation |
data-dn-presentation |
button |
button |
label |
None | React node | None |
hint |
None | React node | None |
fieldOrientation |
None | vertical, horizontal |
vertical |
emphasis |
data-dn-emphasis |
primary, secondary, outline, ghost |
secondary |
size |
data-dn-size |
2xs, xs, sm, md, lg, xl, 2xl, 3xl |
md |
| Other props | Mixed | Base UI toggle props | None |
Label and hint
Pinned in project switchers.
import { Toggle } from "density-base-ui";
export default function ToggleFieldExample() {
return (
<Toggle
pressed
label="Project shortcut"
hint="Pinned in project switchers."
>
Starred
</Toggle>
);
}Field orientation
import { Toggle } from "density-base-ui";
export default function ToggleFieldOrientationExample() {
return (
<div style={{ display: "grid", gap: "1rem" }}>
<Toggle pressed fieldOrientation="vertical" label="Vertical">
Starred
</Toggle>
<Toggle pressed fieldOrientation="horizontal" label="Horizontal">
Starred
</Toggle>
</div>
);
}Emphasis
import { Toggle } from "density-base-ui";
export default function ToggleEmphasisExample() {
return (
<div style={{ display: "flex", flexWrap: "wrap", gap: "0.75rem" }}>
<Toggle pressed emphasis="primary">
Primary
</Toggle>
<Toggle pressed emphasis="secondary">
Secondary
</Toggle>
<Toggle pressed emphasis="outline">
Outline
</Toggle>
<Toggle pressed emphasis="ghost">
Ghost
</Toggle>
</div>
);
}Size
import { Toggle } from "density-base-ui";
export default function ToggleSizeExample() {
return (
<div
style={{
display: "flex",
alignItems: "center",
flexWrap: "wrap",
gap: "0.75rem",
}}
>
<Toggle pressed size="2xs">
2xs
</Toggle>
<Toggle pressed size="xs">
xs
</Toggle>
<Toggle pressed size="sm">
sm
</Toggle>
<Toggle pressed size="md">
md
</Toggle>
<Toggle pressed size="lg">
lg
</Toggle>
<Toggle pressed size="xl">
xl
</Toggle>
<Toggle pressed size="2xl">
2xl
</Toggle>
<Toggle pressed size="3xl">
3xl
</Toggle>
</div>
);
}