Accordion
Accordion composes Base UI’s accordion primitives with Density attributes on each trigger.
Review the project scope and current status.
import { Accordion } from "density-base-ui";
export default function AccordionExample() {
return (
<Accordion.Root defaultValue={["overview"]}>
<Accordion.Item value="overview">
<Accordion.Header>
<Accordion.Trigger>Overview</Accordion.Trigger>
</Accordion.Header>
<Accordion.Panel style={styles.panel}>
Review the project scope and current status.
</Accordion.Panel>
</Accordion.Item>
<Accordion.Item value="activity">
<Accordion.Header>
<Accordion.Trigger>Activity</Accordion.Trigger>
</Accordion.Header>
<Accordion.Panel style={styles.panel}>
Scan recent updates, comments, and handoffs.
</Accordion.Panel>
</Accordion.Item>
</Accordion.Root>
);
}
const styles = {
panel: {
padding: "0.5rem 0.75rem",
color: "color-mix(in srgb, var(--dn-color-text) 72%, transparent)",
fontSize: "0.875rem",
},
} as const;Props
| Prop | Attribute | Values | Default |
|---|---|---|---|
Accordion.Root |
None | Base UI root props | None |
Accordion.Item |
None | Base UI item props | None |
Accordion.Header |
None | Base UI header props | None |
Accordion.Panel |
None | Base UI panel props | None |
Accordion.Trigger density-presentation |
data-dn-presentation |
button |
button |
Accordion.Trigger density-emphasis |
data-dn-emphasis |
primary, secondary, outline, ghost |
secondary |
Accordion.Trigger density-size |
data-dn-size |
2xs, xs, sm, md, lg, xl, 2xl, 3xl |
md |
Emphasis
Secondary trigger.
import { Accordion } from "density-base-ui";
export default function AccordionEmphasisExample() {
return (
<Accordion.Root defaultValue={["secondary"]} style={styles.root}>
<Accordion.Item value="primary">
<Accordion.Header>
<Accordion.Trigger density-emphasis="primary">
Primary
</Accordion.Trigger>
</Accordion.Header>
<Accordion.Panel style={styles.panel}>Primary trigger.</Accordion.Panel>
</Accordion.Item>
<Accordion.Item value="secondary">
<Accordion.Header>
<Accordion.Trigger density-emphasis="secondary">
Secondary
</Accordion.Trigger>
</Accordion.Header>
<Accordion.Panel style={styles.panel}>
Secondary trigger.
</Accordion.Panel>
</Accordion.Item>
<Accordion.Item value="outline">
<Accordion.Header>
<Accordion.Trigger density-emphasis="outline">
Outline
</Accordion.Trigger>
</Accordion.Header>
<Accordion.Panel style={styles.panel}>Outline trigger.</Accordion.Panel>
</Accordion.Item>
<Accordion.Item value="ghost">
<Accordion.Header>
<Accordion.Trigger density-emphasis="ghost">Ghost</Accordion.Trigger>
</Accordion.Header>
<Accordion.Panel style={styles.panel}>Ghost trigger.</Accordion.Panel>
</Accordion.Item>
</Accordion.Root>
);
}
const styles = {
root: {
display: "grid",
gap: "0.375rem",
},
panel: {
padding: "0.375rem 0.75rem",
color: "color-mix(in srgb, var(--dn-color-text) 72%, transparent)",
fontSize: "0.875rem",
},
} as const;Size
Compact disclosure.
import { Accordion } from "density-base-ui";
export default function AccordionSizeExample() {
return (
<Accordion.Root defaultValue={["sm"]} style={styles.root}>
<Accordion.Item value="sm">
<Accordion.Header>
<Accordion.Trigger density-size="sm">Small</Accordion.Trigger>
</Accordion.Header>
<Accordion.Panel style={styles.panel}>
Compact disclosure.
</Accordion.Panel>
</Accordion.Item>
<Accordion.Item value="md">
<Accordion.Header>
<Accordion.Trigger density-size="md">Medium</Accordion.Trigger>
</Accordion.Header>
<Accordion.Panel style={styles.panel}>
Default disclosure.
</Accordion.Panel>
</Accordion.Item>
<Accordion.Item value="lg">
<Accordion.Header>
<Accordion.Trigger density-size="lg">Large</Accordion.Trigger>
</Accordion.Header>
<Accordion.Panel style={styles.panel}>
Roomier disclosure.
</Accordion.Panel>
</Accordion.Item>
</Accordion.Root>
);
}
const styles = {
root: {
display: "grid",
gap: "0.375rem",
},
panel: {
padding: "0.375rem 0.75rem",
color: "color-mix(in srgb, var(--dn-color-text) 72%, transparent)",
fontSize: "0.875rem",
},
} as const;