返回 presentation-ai
card.tsx
根目录 / src / components / ui / card.tsx
1 import * as React from "react";
2
3 import { cn } from "@/lib/utils";
4
5 const Card = React.forwardRef<
6 HTMLDivElement,
7 React.HTMLAttributes<HTMLDivElement>
8 >(({ className, ...props }, ref) => (
9 <div
10 ref={ref}
11 className={cn(
12 "rounded-lg border bg-card text-card-foreground shadow-2xs",
13 className,
14 )}
15 {...props}
16 />
17 ));
18 Card.displayName = "Card";
19
20 const CardHeader = React.forwardRef<
21 HTMLDivElement,
22 React.HTMLAttributes<HTMLDivElement>
23 >(({ className, ...props }, ref) => (
24 <div
25 ref={ref}
26 className={cn("flex flex-col space-y-1.5 p-6", className)}
27 {...props}
28 />
29 ));
30 CardHeader.displayName = "CardHeader";
31
32 const CardTitle = React.forwardRef<
33 HTMLDivElement,
34 React.HTMLAttributes<HTMLDivElement>
35 >(({ className, ...props }, ref) => (
36 <div
37 ref={ref}
38 className={cn(
39 "text-2xl leading-none font-semibold tracking-tight",
40 className,
41 )}
42 {...props}
43 />
44 ));
45 CardTitle.displayName = "CardTitle";
46
47 const CardDescription = React.forwardRef<
48 HTMLDivElement,
49 React.HTMLAttributes<HTMLDivElement>
50 >(({ className, ...props }, ref) => (
51 <div
52 ref={ref}
53 className={cn("text-sm text-muted-foreground", className)}
54 {...props}
55 />
56 ));
57 CardDescription.displayName = "CardDescription";
58
59 const CardContent = React.forwardRef<
60 HTMLDivElement,
61 React.HTMLAttributes<HTMLDivElement>
62 >(({ className, ...props }, ref) => (
63 <div ref={ref} className={cn("p-6 pt-0", className)} {...props} />
64 ));
65 CardContent.displayName = "CardContent";
66
67 const CardFooter = React.forwardRef<
68 HTMLDivElement,
69 React.HTMLAttributes<HTMLDivElement>
70 >(({ className, ...props }, ref) => (
71 <div
72 ref={ref}
73 className={cn("flex items-center p-6 pt-0", className)}
74 {...props}
75 />
76 ));
77 CardFooter.displayName = "CardFooter";
78
79 export {
80 Card,
81 CardContent,
82 CardDescription,
83 CardFooter,
84 CardHeader,
85 CardTitle,
86 };
87
87 lines Plain Text