diff --git a/frontend/src/components/info-card.tsx b/frontend/src/components/info-card.tsx new file mode 100644 index 0000000..af74b42 --- /dev/null +++ b/frontend/src/components/info-card.tsx @@ -0,0 +1,142 @@ +import React from "react"; +import Image from "next/image"; +import Link from "next/link"; +import { Card } from "@/components/ui/card"; +import { Button } from "@/components/ui/button"; +import { cn } from "@/lib/utils"; + +interface CardButton { + text: string; + href: string; + backgroundColor?: string; + textColor?: string; +} + +interface InfoCardProps { + imageSrc?: string | null; + imageAlt?: string; + imagePosition?: "left" | "right"; + borderColor?: string; + backgroundColor?: string; + boxShadow?: string; + headingText: string; + headingStyle?: React.CSSProperties; + bodyText?: string; + bodyTextColor?: string; + buttonProps?: CardButtonProps; +} + +interface CardButtonProps { + text: string; + href: string; + backgroundColor?: string; + textColor?: string; +} + +const InfoCard: React.FC = ({ + imageSrc, + imageAlt = "Image", + imagePosition = "left", + borderColor = "#ccc", + backgroundColor = "rgba(240,233,214,0.7)", + boxShadow = "0 2px 4px rgba(0, 0, 0, 0.05)", + headingText, + headingStyle = {}, + bodyText, + bodyTextColor = "#555", + buttonProps, +}) => { + const imageElement = ( +
+
+ {imageSrc ? ( +
+ {imageAlt +
+ ) : ( +

{imageAlt ?? "Image"}

+ )} +
+
+ ); + + return ( +
+ {imageElement} + + + {imageSrc && ( +
+ )} + +

+ {headingText} +

+ + {bodyText && ( +

+ {bodyText} +

+ )} + + {buttonProps && ( +
+ + + +
+ )} + +
+ ); +}; + +export default InfoCard;