| import * as React from "react"; |
| import { cn } from "@/lib/utils"; |
|
|
| export const Card = React.forwardRef< |
| HTMLDivElement, |
| React.HTMLAttributes<HTMLDivElement> |
| >(({ className, ...props }, ref) => ( |
| <div |
| ref={ref} |
| className={cn( |
| "rounded-xl border border-border bg-card text-card-foreground shadow-sm", |
| className |
| )} |
| {...props} |
| /> |
| )); |
| Card.displayName = "Card"; |
|
|
| export const CardHeader = React.forwardRef< |
| HTMLDivElement, |
| React.HTMLAttributes<HTMLDivElement> |
| >(({ className, ...props }, ref) => ( |
| <div |
| ref={ref} |
| className={cn("flex flex-col gap-1.5 p-6 pb-4", className)} |
| {...props} |
| /> |
| )); |
| CardHeader.displayName = "CardHeader"; |
|
|
| export const CardTitle = React.forwardRef< |
| HTMLHeadingElement, |
| React.HTMLAttributes<HTMLHeadingElement> |
| >(({ className, ...props }, ref) => ( |
| <h3 |
| ref={ref} |
| className={cn("text-base font-semibold tracking-tight", className)} |
| {...props} |
| /> |
| )); |
| CardTitle.displayName = "CardTitle"; |
|
|
| export const CardDescription = React.forwardRef< |
| HTMLParagraphElement, |
| React.HTMLAttributes<HTMLParagraphElement> |
| >(({ className, ...props }, ref) => ( |
| <p |
| ref={ref} |
| className={cn("text-sm text-muted-foreground", className)} |
| {...props} |
| /> |
| )); |
| CardDescription.displayName = "CardDescription"; |
|
|
| export const CardContent = React.forwardRef< |
| HTMLDivElement, |
| React.HTMLAttributes<HTMLDivElement> |
| >(({ className, ...props }, ref) => ( |
| <div ref={ref} className={cn("p-6 pt-0", className)} {...props} /> |
| )); |
| CardContent.displayName = "CardContent"; |
|
|
| export const CardFooter = React.forwardRef< |
| HTMLDivElement, |
| React.HTMLAttributes<HTMLDivElement> |
| >(({ className, ...props }, ref) => ( |
| <div |
| ref={ref} |
| className={cn("flex items-center p-6 pt-0", className)} |
| {...props} |
| /> |
| )); |
| CardFooter.displayName = "CardFooter"; |
|
|