diff options
| author | schererleander <leander@schererleander.de> | 2025-05-30 01:01:17 +0200 |
|---|---|---|
| committer | schererleander <leander@schererleander.de> | 2025-05-30 01:01:17 +0200 |
| commit | afdc982863b6cca573f1db58e1795aa8c45fabca (patch) | |
| tree | 6b94d2ffdcb0e1b5ccbaf584c825763ab72ab99d /src/components/CardLink.tsx | |
| parent | 8f2c8393510dfefc22871661b0ef9964569e290b (diff) | |
rewrite site
Diffstat (limited to 'src/components/CardLink.tsx')
| -rw-r--r-- | src/components/CardLink.tsx | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/components/CardLink.tsx b/src/components/CardLink.tsx new file mode 100644 index 0000000..3492038 --- /dev/null +++ b/src/components/CardLink.tsx @@ -0,0 +1,29 @@ +import ExternalLinkIcon from "./ExternalLink"; + +interface Props { + title: string; + body: string; + href?: string; + imgSrc?: string; +} + +export default function CardLink({ title, body, href, imgSrc }: Props) { + const Wrapper = href ? 'a' : 'div'; + return ( + <Wrapper + {...(href && { + href, + target: '_blank', + rel: 'noopener noreferrer', + })} + className="group flex items-center gap-4 py-2 px-2 rounded-lg" + > + <img src={imgSrc || ''} className="w-20 h-20 object-cover rounded-lg transition-transform duration-200 group-hover:scale-105"/> + <div className="flex-1"> + <h3 className="font-medium">{title}</h3> + <p className="text-sm text-gray-600 black:text-gray-300">{body}</p> + </div> + {href && <ExternalLinkIcon />} + </Wrapper> + ); +}
\ No newline at end of file |
