Disclosure

PreviousNext
Docs
react-ariaui

Preview

Loading preview…
components/ui/Disclosure.tsx
'use client';
import {
  Button,
  Disclosure as AriaDisclosure,
  DisclosurePanel as AriaDisclosurePanel,
  DisclosureProps,
  DisclosurePanelProps,
  HeadingProps,
} from 'react-aria-components';
import {Heading} from '@/registry/react-aria/ui/Content';
import {ChevronRight} from 'lucide-react';
import './Disclosure.css';

export function Disclosure(props: DisclosureProps) {
  return <AriaDisclosure {...props} />;
}

export function DisclosureHeader({children, ...props}: HeadingProps) {
  return (
    <Heading {...props}>
      <Button slot="trigger" className="disclosure-button">
        <ChevronRight size={16} />
        <span>{children}</span>
      </Button>
    </Heading>
  );
}

export function DisclosurePanel(props: DisclosurePanelProps) {
  return (
    <AriaDisclosurePanel {...props}>
      <div>{props.children}</div>
    </AriaDisclosurePanel>
  );
}

Installation

npx shadcn@latest add @react-aria/css-disclosure

Usage

import { CssDisclosure } from "@/components/ui/css-disclosure"
<CssDisclosure />