sushilideaclan01's picture
..
fe48c70
import React from "react";
import { cn } from "@/lib/utils/cn";
interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
variant?: "default" | "outline" | "elevated" | "glass";
}
export const Card: React.FC<CardProps> = ({
children,
variant = "default",
className,
...props
}) => {
const variants = {
default: "bg-white/80 backdrop-blur-sm border border-gray-200/50 shadow-md hover:shadow-lg transition-all duration-300",
outline: "bg-transparent border-2 border-gray-300/50 hover:border-gray-400 transition-all duration-300",
elevated: "bg-white shadow-xl hover:shadow-2xl transition-all duration-300 hover:-translate-y-1",
glass: "glass border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300 hover:-translate-y-1",
};
return (
<div
className={cn("rounded-2xl p-6 hover-lift", variants[variant], className)}
{...props}
>
{children}
</div>
);
};
export const CardHeader: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({
children,
className,
...props
}) => (
<div className={cn("mb-6", className)} {...props}>
{children}
</div>
);
export const CardTitle: React.FC<React.HTMLAttributes<HTMLHeadingElement>> = ({
children,
className,
...props
}) => (
<h3 className={cn("text-2xl font-bold gradient-text", className)} {...props}>
{children}
</h3>
);
export const CardDescription: React.FC<React.HTMLAttributes<HTMLParagraphElement>> = ({
children,
className,
...props
}) => (
<p className={cn("text-sm text-gray-600 mt-2", className)} {...props}>
{children}
</p>
);
export const CardContent: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({
children,
className,
...props
}) => (
<div className={cn("", className)} {...props}>
{children}
</div>
);
export const CardFooter: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({
children,
className,
...props
}) => (
<div className={cn("mt-6 flex items-center justify-between", className)} {...props}>
{children}
</div>
);