web/app/components/ui/card.tsxblame
View source
4dfd09b1const variantStyles = {
4dfd09b2 default: {
4dfd09b3 backgroundColor: "var(--bg-card)",
4dfd09b4 border: "1px solid var(--border-subtle)",
4dfd09b5 },
4dfd09b6 inset: {
4dfd09b7 backgroundColor: "var(--bg-inset)",
4dfd09b8 border: "1px solid var(--border)",
4dfd09b9 },
4dfd09b10} as const;
4dfd09b11
4dfd09b12export interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
4dfd09b13 variant?: "default" | "inset";
4dfd09b14 noPadding?: boolean;
4dfd09b15 hoverable?: boolean;
4dfd09b16}
4dfd09b17
4dfd09b18export function Card({
4dfd09b19 variant = "default",
4dfd09b20 noPadding = false,
4dfd09b21 hoverable = false,
4dfd09b22 className = "",
4dfd09b23 style,
4dfd09b24 children,
4dfd09b25 ...props
4dfd09b26}: CardProps) {
4dfd09b27 return (
4dfd09b28 <div
4dfd09b29 className={`${noPadding ? "" : "p-3"} ${hoverable ? "card-hover" : ""} ${className}`}
4dfd09b30 style={{ ...variantStyles[variant], ...style }}
4dfd09b31 {...props}
4dfd09b32 >
4dfd09b33 {children}
4dfd09b34 </div>
4dfd09b35 );
4dfd09b36}
4dfd09b37
4dfd09b38export interface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}
4dfd09b39
4dfd09b40export function CardHeader({
4dfd09b41 className = "",
4dfd09b42 style,
4dfd09b43 children,
4dfd09b44 ...props
4dfd09b45}: CardHeaderProps) {
4dfd09b46 return (
4dfd09b47 <div
4dfd09b48 className={`px-3 py-2 ${className}`}
4dfd09b49 style={{
4dfd09b50 backgroundColor: "var(--bg-inset)",
4dfd09b51 borderBottom: "1px solid var(--border-subtle)",
4dfd09b52 ...style,
4dfd09b53 }}
4dfd09b54 {...props}
4dfd09b55 >
4dfd09b56 {children}
4dfd09b57 </div>
4dfd09b58 );
4dfd09b59}
4dfd09b60
4dfd09b61export interface CardFooterProps extends React.HTMLAttributes<HTMLDivElement> {}
4dfd09b62
4dfd09b63export function CardFooter({
4dfd09b64 className = "",
4dfd09b65 style,
4dfd09b66 children,
4dfd09b67 ...props
4dfd09b68}: CardFooterProps) {
4dfd09b69 return (
4dfd09b70 <div
4dfd09b71 className={`px-3 py-2 ${className}`}
4dfd09b72 style={{
4dfd09b73 borderTop: "1px solid var(--border-subtle)",
4dfd09b74 ...style,
4dfd09b75 }}
4dfd09b76 {...props}
4dfd09b77 >
4dfd09b78 {children}
4dfd09b79 </div>
4dfd09b80 );
4dfd09b81}