2025-10-11 22:26:10 +03:00

39 lines
1.2 KiB
TypeScript

import { ComponentChildren, HTMLAttributes } from "preact";
import { Link } from "./Button.js";
import Icon from "./Icon.js";
import { t } from "../i18n.js";
interface CardProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
title: ComponentChildren;
imageUrl?: string;
iconSvg?: string;
className?: string;
moreInfoUrl?: string;
children: ComponentChildren;
}
export default function Card({ title, children, imageUrl, iconSvg, className, moreInfoUrl, ...restProps }: CardProps) {
return (
<div className={`card ${className}`} {...restProps}>
{imageUrl && <img class="image" src={imageUrl} loading="lazy" />}
<div className="card-content">
<h3>
{iconSvg && <Icon svg={iconSvg} />}{" "}
<span>{title}</span>
</h3>
<div className="card-content-inner">
{children}
</div>
{moreInfoUrl && (
<div className="more-info-container">
<Link href={moreInfoUrl} className="more-info" openExternally>{t("components.link_learn_more")}</Link>
</div>
)}
</div>
</div>
)
}