An interactive component which expands/collapses a panel.
Installation
Install the packages
Add the shadcn-vue component
Animate it
The CLI finds your shadcn-vue components through components.json, swaps their primitive imports for Animate UI's and removes the CSS animation classes Motion replaces.
Usage
<script setup lang="ts">
import {
CollapsibleContent,
CollapsibleRoot,
CollapsibleTrigger,
} from '@animate-ui/vue/primitives/reka-ui';
</script>
<template>
<CollapsibleRoot>
<CollapsibleTrigger>Can I use this in my project?</CollapsibleTrigger>
<CollapsibleContent>
Yes. Free to use for personal and commercial projects.
</CollapsibleContent>
</CollapsibleRoot>
</template>Animation
- Content unfolds like the accordions: its height grows from 0 while the content fades in from a 2px blur, over 350ms on a soft ease-out. While it moves, its bottom edge fades (over 16px, or over the part still hidden): the content never meets what follows it with a hard cut. It folds back the same way, in reverse, then unmounts.
- Toggling it while it moves retargets from where it is.
- Open by default (
default-open), it animates open on mount (page load). --reka-collapsible-content-heightand--reka-collapsible-content-widthreadauto: classes using them follow Motion's height instead of a stale measure.- With
force-mount, closed content stays in the DOM, collapsed andinert. <AnimateUIProvider :tempo>paces both transitions.- Under reduced motion, the height changes at once; the fade and the blur still play.
API Reference
Every part takes exactly the props of reka-ui's Collapsible. Animate UI adds the animation props below.
CollapsibleRoot, CollapsibleTrigger
reka-ui props only. They are not animated.
CollapsibleContent
reka-ui props, plus:
| Prop | Type | Default |
|---|---|---|
transition? | Transition | { duration: 0.35, ease: [0.215, 0.61, 0.355, 1] } |
exit-transition? | Transition | transition |