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>
);
}Emphasis
import { useState, type ComponentProps } from "react";
import { Toggle, View } from "density-base-ui";
function EmphasisToggle({
emphasis,
children,
}: Pick<ComponentProps<typeof Toggle>, "emphasis" | "children">) {
const [pressed, setPressed] = useState(true);
return (
<Toggle emphasis={emphasis} onPressedChange={setPressed} pressed={pressed}>
{children}
</Toggle>
);
}
export default function ToggleEmphasisExample() {
return (
<View orientation="horizontal" padding={false} wrap>
<EmphasisToggle emphasis="primary">Primary</EmphasisToggle>
<EmphasisToggle emphasis="secondary">Secondary</EmphasisToggle>
<EmphasisToggle emphasis="outline">Outline</EmphasisToggle>
<EmphasisToggle emphasis="ghost-primary">Ghost primary</EmphasisToggle>
<EmphasisToggle emphasis="ghost-secondary">
Ghost secondary
</EmphasisToggle>
<EmphasisToggle emphasis="ghost-tertiary">Ghost tertiary</EmphasisToggle>
</View>
);
}Size
import { useState, type ComponentProps } from "react";
import { Toggle, View } from "density-base-ui";
function SizeToggle({ size }: { size: ComponentProps<typeof Toggle>["size"] }) {
const [pressed, setPressed] = useState(true);
return (
<Toggle onPressedChange={setPressed} pressed={pressed} size={size}>
{size}
</Toggle>
);
}
export default function ToggleSizeExample() {
return (
<View align="center" orientation="horizontal" padding={false} wrap>
<SizeToggle size="2xs" />
<SizeToggle size="xs" />
<SizeToggle size="sm" />
<SizeToggle size="md" />
<SizeToggle size="lg" />
<SizeToggle size="xl" />
<SizeToggle size="2xl" />
<SizeToggle size="3xl" />
</View>
);
}| Prop | Values | Required | Default | Behavior | Description |
|---|---|---|---|---|---|
emphasis | primary, secondary, outline, ghost-primary, ghost-secondary, ghost-tertiary | Not required | — | Attribute: data-dn-emphasis | — |
padding | false, true | Not required | true | — | — |
size | 2xs, xs, sm, md, lg, xl, 2xl, 3xl | Not required | — | Attribute: data-dn-size | — |
This component also accepts props from Base UI APIs. They are passed through and intentionally kept out of this focused Density API table.