Collapsible
A collapsible panel controlled by a button.
View as MarkdownAnatomy
Import the component and assemble its parts:
import { Collapsible } from '@base-ui-components/react/collapsible';
<Collapsible.Root>
  <Collapsible.Trigger />
  <Collapsible.Panel />
</Collapsible.Root>API reference
Root
Groups all parts of the collapsible.
Renders a <div> element.
defaultOpenboolean
false
defaultOpenboolean
false
- Name
- Description
- Whether the collapsible panel is initially open. - To render a controlled collapsible, use the - openprop instead.
- Type
- boolean | undefined
- Default
- false
openboolean
—
openboolean
—- Name
- Description
- Whether the collapsible panel is currently open. - To render an uncontrolled collapsible, use the - defaultOpenprop instead.
- Type
- boolean | undefined
onOpenChangefunction
—
onOpenChangefunction
—- Name
- Description
- Event handler called when the panel is opened or closed. 
- Type
- | (( open: boolean, eventDetails: Collapsible.Root.ChangeEventDetails, ) => void) | undefined
disabledboolean
false
disabledboolean
false
- Name
- Description
- Whether the component should ignore user interaction. 
- Type
- boolean | undefined
- Default
- false
classNamestring | function
—
classNamestring | function
—- Name
- Description
- CSS class applied to the element, or a function that returns a class based on the component’s state. 
- Type
- string | ((state: Collapsible.Root.State) => string)
renderReactElement | function
—
renderReactElement | function
—- Name
- Type
- | ReactElement | (( props: HTMLProps, state: Collapsible.Root.State, ) => ReactElement) | null
Trigger
A button that opens and closes the collapsible panel.
Renders a <button> element.
nativeButtonboolean
true
nativeButtonboolean
true
- Name
- Description
- Whether the component renders a native - <button>element when replacing it via the- renderprop. Set to- falseif the rendered element is not a button (e.g.- <div>).
- Type
- boolean | undefined
- Default
- true
classNamestring | function
—
classNamestring | function
—- Name
- Description
- CSS class applied to the element, or a function that returns a class based on the component’s state. 
- Type
- string | ((state: Collapsible.Root.State) => string)
renderReactElement | function
—
renderReactElement | function
—- Name
- Description
- Allows you to replace the component’s HTML element with a different tag, or compose it with another component. - Accepts a - ReactElementor a function that returns the element to render.
- Type
- | ReactElement | (( props: HTMLProps, state: Collapsible.Root.State, ) => ReactElement)
data-panel-open
Present when the collapsible panel is open.
Panel
A panel with the collapsible contents.
Renders a <div> element.
- Name
- Description
- Allows the browser’s built-in page search to find and expand the panel contents. - Overrides the - keepMountedprop and uses- hidden="until-found"to hide the element without removing it from the DOM.
- Type
- boolean | undefined
- Default
- false
classNamestring | function
—
classNamestring | function
—- Name
- Description
- CSS class applied to the element, or a function that returns a class based on the component’s state. 
- Type
- string | ((state: Collapsible.Panel.State) => string)
keepMountedboolean
false
keepMountedboolean
false
- Name
- Description
- Whether to keep the element in the DOM while the panel is hidden. This prop is ignored when - hiddenUntilFoundis used.
- Type
- boolean | undefined
- Default
- false
renderReactElement | function
—
renderReactElement | function
—- Name
- Description
- Allows you to replace the component’s HTML element with a different tag, or compose it with another component. - Accepts a - ReactElementor a function that returns the element to render.
- Type
- | ReactElement | (( props: HTMLProps, state: Collapsible.Panel.State, ) => ReactElement)
data-open
Present when the collapsible panel is open.
data-closed
Present when the collapsible panel is closed.
data-starting-style
Present when the panel is animating in.
data-ending-style
Present when the panel is animating out.
--collapsible-panel-height
The collapsible panel's height.
--collapsible-panel-width
The collapsible panel's width.