import * as React from "react"; import { cva, type VariantProps } from "class-variance-authority"; import { cn } from "@/lib/utils"; const cardVariants = cva( "rounded-lg bg-card text-card-foreground border border-border transition-all duration-200", { variants: { variant: { default: "shadow-sm hover:shadow-card-hover hover:border-primary/30", flat: "shadow-none", elevated: "shadow-md hover:shadow-lg hover:border-primary/30", ghost: "border-transparent shadow-none bg-transparent", }, padding: { none: "", sm: "p-4", default: "p-6", lg: "p-8", }, }, defaultVariants: { variant: "default", padding: "none", }, } ); export interface CardProps extends React.HTMLAttributes, VariantProps {} const Card = React.forwardRef( ({ className, variant, padding, ...props }, ref) => (
) ); Card.displayName = "Card"; const CardHeader = React.forwardRef< HTMLDivElement, React.HTMLAttributes >(({ className, ...props }, ref) => (
)); CardHeader.displayName = "CardHeader"; const CardTitle = React.forwardRef< HTMLParagraphElement, React.HTMLAttributes >(({ className, ...props }, ref) => (

)); CardTitle.displayName = "CardTitle"; const CardLabel = React.forwardRef< HTMLParagraphElement, React.HTMLAttributes >(({ className, ...props }, ref) => (

)); CardLabel.displayName = "CardLabel"; const CardDescription = React.forwardRef< HTMLParagraphElement, React.HTMLAttributes >(({ className, ...props }, ref) => (

)); CardDescription.displayName = "CardDescription"; const CardContent = React.forwardRef< HTMLDivElement, React.HTMLAttributes >(({ className, ...props }, ref) => (

)); CardContent.displayName = "CardContent"; const CardFooter = React.forwardRef< HTMLDivElement, React.HTMLAttributes >(({ className, ...props }, ref) => (
)); CardFooter.displayName = "CardFooter"; export { Card, CardHeader, CardFooter, CardTitle, CardLabel, CardDescription, CardContent, cardVariants };