A collapsible panel controlled by a button.
Installation
npx shadcn@latest add @caprice/collapsiblepnpm dlx shadcn@latest add @caprice/collapsibleyarn dlx shadcn@latest add @caprice/collapsiblebunx shadcn@latest add @caprice/collapsiblenpm install @caprice-ui/reactpnpm add @caprice-ui/reactyarn add @caprice-ui/reactbun add @caprice-ui/reactInstall the following dependencies:
npm install @base-ui/react lucide-reactpnpm add @base-ui/react lucide-reactyarn add @base-ui/react lucide-reactbun add @base-ui/react lucide-reactAdd a cn helper
import { cn as merge } from 'cn';
import type { VariantProps } from 'cva';
import { defineConfig } from 'cva/config';
import { getSchema } from 'cva/tools';
export const { cva, cx: cn } = defineConfig({
cx: merge,
});
export type { VariantProps };
export { getSchema };
Copy and paste the following code into your project.
'use client';
import { Collapsible as CollapsiblePrimitive } from '@base-ui/react/collapsible';
/**
* Groups all parts of the collapsible.
* Renders a `<div>` element.
*
* Documentation: [Caprice UI Collapsible](https://caprice-ui.com/docs/components/collapsible)
*
* API Reference: [Base UI Collapsible](https://base-ui.com/react/components/collapsible#root)
*/
export namespace Root {
export type State = CollapsiblePrimitive.Root.State;
export type Props = React.ComponentProps<typeof CollapsiblePrimitive.Root>;
export type ChangeEventDetails = CollapsiblePrimitive.Root.ChangeEventDetails;
export type ChangeEventReason = CollapsiblePrimitive.Root.ChangeEventReason;
}
export function Root({ ...props }: Root.Props) {
return <CollapsiblePrimitive.Root data-slot="collapsible" {...props} />;
}
/**
* A button that opens and closes the collapsible panel.
* Renders a `<button>` element.
*
* Documentation: [Caprice UI Collapsible](https://caprice-ui.com/docs/components/collapsible)
*
* API Reference: [Base UI Collapsible](https://base-ui.com/react/components/collapsible#trigger)
*/
export namespace Trigger {
export type Props = React.ComponentProps<typeof CollapsiblePrimitive.Trigger>;
}
export function Trigger({ ...props }: Trigger.Props) {
return <CollapsiblePrimitive.Trigger data-slot="collapsible-trigger" {...props} />;
}
/**
* A panel with the collapsible contents.
* Renders a `<div>` element.
*
* Documentation: [Caprice UI Collapsible](https://caprice-ui.com/docs/components/collapsible)
*
* API Reference: [Base UI Collapsible](https://base-ui.com/react/components/collapsible#panel)
*/
export namespace Panel {
export type State = CollapsiblePrimitive.Panel.State;
export type Props = React.ComponentProps<typeof CollapsiblePrimitive.Panel>;
}
export function Panel({ ...props }: Panel.Props) {
return <CollapsiblePrimitive.Panel data-slot="collapsible-panel" {...props} />;
}
Update the import paths to match your project setup.
Usage
import * as Collapsible from "@/components/caprice-ui/collapsible"import * as Collapsible from "@caprice-ui/react/collapsible"Examples
API Reference
Root
Prop
Type
Default
Trigger
Prop
Type
Default
Panel
Prop
Type
Default
Last updated on