accordion-custom-indicator-demo

PreviousNext
Docs
pureuiexample

Preview

Loading preview…
registry/pure-ui/examples/accordion/accordion-custom-indicator-demo.tsx
import { Plus, ChevronDown, ChevronsDown } from "lucide-react";

import {
  Accordion,
  AccordionPanel,
  AccordionItem,
  AccordionTrigger,
} from "@/registry/pure-ui/ui/accordion";
import { cn } from "@/lib/classes";

export function AccordionCustomIndicatorDemo() {
  return (
    <Accordion className="w-full max-w-xl">
      <AccordionItem value="item-1">
        <AccordionTrigger
          icon={({ open }) => (
            <Plus
              className={cn(
                "size-4 transition-transform duration-300 ease",
                open ? "rotate-45" : "rotate-0"
              )}
            />
          )}
        >
          What is Base UI?
        </AccordionTrigger>
        <AccordionPanel className="flex flex-col gap-4 text-balance">
          <p className="text-[15px] text-muted-foreground">
            Base UI is a library of high-quality unstyled React components for
            design systems and web apps.
          </p>
        </AccordionPanel>
      </AccordionItem>
      <AccordionItem value="item-2">
        <AccordionTrigger
          icon={({ open }) => (
            <ChevronDown
              className={cn(
                "size-4 transition-transform duration-300 ease",
                open ? "rotate-180" : "rotate-0"
              )}
            />
          )}
        >
          How do I get started?
        </AccordionTrigger>
        <AccordionPanel className="flex flex-col gap-4 text-balance">
          <p className="text-[15px] text-muted-foreground">
            Head to the “Quick start” guide in the docs. If you’ve used unstyled
            libraries before, you’ll feel at home.
          </p>
        </AccordionPanel>
      </AccordionItem>
      <AccordionItem value="item-3">
        <AccordionTrigger
          icon={({ open }) => (
            <ChevronsDown
              className={cn(
                "size-4 transition-transform duration-300 ease",
                open ? "rotate-180" : "rotate-0"
              )}
            />
          )}
        >
          Can I use it for my project?
        </AccordionTrigger>
        <AccordionPanel className="flex flex-col gap-4 text-balance">
          <p className="text-[15px] text-muted-foreground">
            Of course! Base UI is free and open source.
          </p>
        </AccordionPanel>
      </AccordionItem>
    </Accordion>
  );
}

Installation

npx shadcn@latest add @pureui/accordion-custom-indicator-demo

Usage

import { AccordionCustomIndicatorDemo } from "@/components/accordion-custom-indicator-demo"
<AccordionCustomIndicatorDemo />