import type { VariantProps } from "@karma/cva";
import { cva, cx } from "@karma/cva";
import * as AccordionPrimitive from "@radix-ui/react-accordion";
import React from "react";

const accordionVariants = cva({
  base: "w-full rounded-md",
  variants: {
    variant: {
      accent: "bg-accent text-secondary",
      primary: "bg-background text-primary",
      outline: "border border-accent text-primary",
      muted: "bg-muted text-secondary",
      none: "rounded-none border-0 bg-transparent text-secondary",
    },
  },
  defaultVariants: {
    variant: "primary",
  },
});

export type AccordionProps = React.ComponentPropsWithoutRef<
  typeof AccordionPrimitive.Root
> &
  VariantProps<typeof accordionVariants>;

export const Accordion = React.forwardRef<
  React.ElementRef<typeof AccordionPrimitive.Root>,
  AccordionProps
>(({ className, variant, ...props }, ref) => (
  <AccordionPrimitive.Root
    ref={ref}
    className={cx(accordionVariants({ variant, className }))}
    {...props}
  />
));

Accordion.displayName = AccordionPrimitive.Root.displayName;
