Collapsible
A component that allows users to hide and show content.
Overview
The Collapsible component is a specialized component that allows users to hide and show content.
Default
import * as UI from "@iyk/ui"
export default () => (
<UI.Collapsible.Root>
<UI.Collapsible.Trigger>Toggle</UI.Collapsible.Trigger>
<UI.Collapsible.Content>
<div className="my-2 px-4 py-2 border">Content</div>
</UI.Collapsible.Content>
</UI.Collapsible.Root>
)
With large content
import * as UI from "@iyk/ui"
export default () => (
<UI.Collapsible.Root>
<UI.Collapsible.Trigger>Toggle</UI.Collapsible.Trigger>
<UI.Collapsible.Content>
<div className="my-2 px-4 py-2 border">
Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos.
</div>
</UI.Collapsible.Content>
</UI.Collapsible.Root>
)
If you want to adjust the width to the available space, you can add w-max
to the content
container
import * as UI from "@iyk/ui"
export default () => (
<UI.Collapsible.Root>
<UI.Collapsible.Trigger>Toggle</UI.Collapsible.Trigger>
<UI.Collapsible.Content>
<div className="my-2 px-4 py-2 border w-max">
Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos.
</div>
</UI.Collapsible.Content>
</UI.Collapsible.Root>
)
Hook
The Collapsible component also provides a hook that can be used to control the collapsible state. This is useful if you want to control the collapsible state and create custom triggers or content.
import * as UI from "@iyk/ui"
export default () => (
<UI.Collapsible.Root>
<MyCustomTrigger />
<UI.Collapsible.Content>
<div className="my-2 px-4 py-2 border">Content</div>
</UI.Collapsible.Content>
</UI.Collapsible.Root>
)
const MyCustomTrigger = () => {
const { isOpen, toggle } = UI.Collapsible.useCollapsible()
return (
<UI.Button onClick={toggle} kind="outline" size="sm" type="button">
{isOpen ? "Close" : "Open"}
</UI.Button>
)
}