import { VariantProps } from "class-variance-authority";

type ButtonDecoratorPos = "start" | "end";

type ButtonDecoratorCompound = {
  pos?: ButtonDecoratorPos;
  content: IconDefinition | React.ReactNode;
};

type ButtonDecorator =
  | IconDefinition
  | ButtonDecoratorCompound
  | React.ReactNode;

type ButtonRipple = { id: number; x: number; y: number };

type ButtonProps<T> = React.ButtonHTMLAttributes<HTMLButtonElement> &
  VariantProps<T> &
  (
    | {
        decorator: ButtonDecorator;
        children?: React.ReactNode;
      }
    | {
        children: React.ReactNode;
        decorator?: ButtonDecorator;
      }
  ) & {
    pClassName?: string;
    isIcon?: boolean;
  };
