UNPKG

lightswind

Version:

A professionally designed component library & templates market that brings together functionality, accessibility, and beautiful aesthetics for modern applications.

60 lines (59 loc) 2.85 kB
import { jsx as _jsx } from "react/jsx-runtime"; import * as React from "react"; import { cn } from "../lib/utils"; const Card = React.forwardRef(({ className, hoverable = false, bordered = false, compact = false, ...props }, ref) => (_jsx("div", { ref: ref, className: cn("rounded-lg bg-card text-card-foreground shadow-sm", bordered ? "border" : "border border-transparent", hoverable ? "transition-shadow duration-200 hover:shadow-md" : "", compact ? "p-3" : "p-0", className), ...props }))); Card.displayName = "Card"; const CardHeader = React.forwardRef(({ className, spacing = "default", ...props }, ref) => { const spacingClasses = { compact: "flex flex-col space-y-1 p-4", default: "flex flex-col space-y-1.5 p-6", relaxed: "flex flex-col space-y-2 p-8", }; return (_jsx("div", { ref: ref, className: cn(spacingClasses[spacing], className), ...props })); }); CardHeader.displayName = "CardHeader"; const CardTitle = React.forwardRef(({ className, as = "h3", size = "default", ...props }, ref) => { const Component = as; const sizeClasses = { sm: "text-lg", default: "text-2xl", lg: "text-3xl" }; return (_jsx(Component, { ref: ref, className: cn("font-semibold leading-none tracking-tight", sizeClasses[size], className), ...props })); }); CardTitle.displayName = "CardTitle"; const CardDescription = React.forwardRef(({ className, size = "default", ...props }, ref) => { const sizeClasses = { xs: "text-xs", sm: "text-sm", default: "text-sm" }; return (_jsx("p", { ref: ref, className: cn("text-muted-foreground", sizeClasses[size], className), ...props })); }); CardDescription.displayName = "CardDescription"; const CardContent = React.forwardRef(({ className, removeTopPadding = true, padding = "default", ...props }, ref) => { const paddingClasses = { none: "p-0", sm: "px-4 py-3", default: "p-6", lg: "p-8" }; return (_jsx("div", { ref: ref, className: cn(paddingClasses[padding], removeTopPadding && padding !== "none" ? "pt-0" : "", className), ...props })); }); CardContent.displayName = "CardContent"; const CardFooter = React.forwardRef(({ className, align = "center", direction = "row", ...props }, ref) => { const alignClasses = { start: "justify-start", center: "justify-center", end: "justify-end", between: "justify-between", around: "justify-around" }; const directionClasses = { row: "flex-row", column: "flex-col" }; return (_jsx("div", { ref: ref, className: cn("flex items-center p-6 pt-0", alignClasses[align], directionClasses[direction], className), ...props })); }); CardFooter.displayName = "CardFooter"; export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };