Files
formbricks/apps/web/modules/ui/components/card/index.tsx
T
2025-10-20 14:28:14 +00:00

89 lines
2.5 KiB
TypeScript

import * as React from "react";
import { cn } from "@/lib/cn";
interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
label?: string;
description?: string;
connectText?: string;
connectHref?: string;
connectNewTab?: boolean;
docsText?: string;
docsHref?: string;
docsNewTab?: boolean;
connected?: boolean;
statusText?: string;
icon?: React.ReactNode;
}
const Card = React.forwardRef<HTMLDivElement, CardProps>(
(
{
className,
label,
description,
connectText,
connectHref,
connectNewTab,
docsText,
docsHref,
docsNewTab,
connected,
statusText,
icon,
...props
},
ref
) => (
<div
ref={ref}
className={cn("text-card-foreground rounded-xl border border-slate-200 bg-white shadow-sm", className)}
{...props}
/>
)
);
Card.displayName = "Card";
const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
({ className, ...props }, ref) => (
<div ref={ref} className={cn("flex flex-col space-y-1.5 p-6", className)} {...props} />
)
);
CardHeader.displayName = "CardHeader";
const CardTitle = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLHeadingElement>>(
({ className, children, ...props }, ref) => {
const headingContent = children || <span className="sr-only">Title</span>;
return (
<h3
ref={ref}
className={cn("text-2xl font-semibold leading-none tracking-tight", className)}
{...props}>
{headingContent}
</h3>
);
}
);
CardTitle.displayName = "CardTitle";
const CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(
({ className, ...props }, ref) => (
<p ref={ref} className={cn("text-muted-foreground text-sm", className)} {...props} />
)
);
CardDescription.displayName = "CardDescription";
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";
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";
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };