import { cx } from 'class-variance-authority';
import { twMerge } from 'tailwind-merge';

export const cn = (...inputs: Parameters<typeof cx>) => twMerge(cx(inputs));

export const ccn = ({
  context,
  className,
  on = '',
  off = '',
}: {
  context: boolean;
  className: string;
  on: string;
  off: string;
}) => twMerge(className, context ? on : off);

export { Avatar, AvatarImage, AvatarFallback } from './avatar';
export { BasedAvatar } from './based-avatar';
export { BasedProgress } from './based-progress';
export { Button, buttonVariants } from './button';
export {
  Card,
  CardHeader,
  CardFooter,
  CardTitle,
  CardAction,
  CardDescription,
  CardContent,
} from './card';
export { Checkbox } from './checkbox';
export {
  Drawer,
  DrawerPortal,
  DrawerOverlay,
  DrawerTrigger,
  DrawerClose,
  DrawerContent,
  DrawerHeader,
  DrawerFooter,
  DrawerTitle,
  DrawerDescription,
} from './drawer';
export {
  DropdownMenu,
  DropdownMenuContent,
  DropdownMenuItem,
  DropdownMenuLabel,
  DropdownMenuSeparator,
  DropdownMenuTrigger,
} from './dropdown-menu';
export {
  useFormField,
  Form,
  FormItem,
  FormLabel,
  FormControl,
  FormDescription,
  FormMessage,
  FormField,
} from './form';
export {
  type ImageCropProps,
  type ImageCropApplyProps,
  type ImageCropContentProps,
  type ImageCropResetProps,
  type CropperProps,
  Cropper,
  ImageCrop,
  ImageCropApply,
  ImageCropContent,
  ImageCropReset,
} from './shadcn-io/image-crop';
export { Input } from './input';
export {
  InputOTP,
  InputOTPGroup,
  InputOTPSlot,
  InputOTPSeparator,
} from './input-otp';
export { Label } from './label';
export {
  Pagination,
  PaginationContent,
  PaginationLink,
  PaginationItem,
  PaginationPrevious,
  PaginationNext,
  PaginationEllipsis,
} from './pagination';
export { Progress } from './progress';
export { ScrollArea, ScrollBar } from './scroll-area';
export { Separator } from './separator';
export { StatusMessage } from './status-message';
export { SubmitButton } from './submit-button';
export { Switch } from './switch';
export {
  Table,
  TableHeader,
  TableBody,
  TableFooter,
  TableHead,
  TableRow,
  TableCell,
  TableCaption,
} from './table';
export { Tabs, TabsList, TabsTrigger, TabsContent } from './tabs';
export { Toaster } from './sonner';
export { ThemeProvider, ThemeToggle, type ThemeToggleProps } from './theme';
