64 lines
1.3 KiB
TypeScript
64 lines
1.3 KiB
TypeScript
import { cn } from "@/lib/utils"
|
|
|
|
interface CardProps {
|
|
className?: string
|
|
children: React.ReactNode
|
|
}
|
|
|
|
export function Card({ className, children }: CardProps) {
|
|
return (
|
|
<div
|
|
className={cn(
|
|
"backdrop-blur-md bg-foreground/10 border border-foreground/20 rounded-lg shadow-lg shadow-background/40",
|
|
className
|
|
)}
|
|
>
|
|
{children}
|
|
</div>
|
|
)
|
|
}
|
|
|
|
export function CardHeader({ className, children }: CardProps) {
|
|
return (
|
|
<div className={cn("flex flex-col space-y-1.5 p-6", className)}>
|
|
{children}
|
|
</div>
|
|
)
|
|
}
|
|
|
|
export function CardTitle({ className, children }: CardProps) {
|
|
return (
|
|
<h3
|
|
className={cn(
|
|
"text-2xl font-bold leading-none tracking-tight text-foreground",
|
|
className
|
|
)}
|
|
>
|
|
{children}
|
|
</h3>
|
|
)
|
|
}
|
|
|
|
export function CardDescription({ className, children }: CardProps) {
|
|
return (
|
|
<p className={cn("text-sm text-muted-foreground", className)}>
|
|
{children}
|
|
</p>
|
|
)
|
|
}
|
|
|
|
export function CardContent({ className, children }: CardProps) {
|
|
return (
|
|
<div className={cn("p-6 pt-0", className)}>
|
|
{children}
|
|
</div>
|
|
)
|
|
}
|
|
|
|
export function CardFooter({ className, children }: CardProps) {
|
|
return (
|
|
<div className={cn("flex items-center p-6 pt-0", className)}>
|
|
{children}
|
|
</div>
|
|
)
|
|
} |