createModCard = (mod) => {
const hasPreviewImage =
mod.preview_image && mod.preview_image.s3bucket && mod.preview_image.s3key;
const imageUrl = hasPreviewImage
? `https://ugcmods.bethesda.net/image/${btoa(
JSON.stringify({
bucket: mod.preview_image.s3bucket,
key: mod.preview_image.s3key,
edits: { resize: { width: 120, height: 90 } },
outputFormat: "webp"
})
)}`
: defaultImageUrl;
return htl.html`
<article class="card col">
<header class="grid" style="align-items: center;">
<figure class="col-3" style="margin: 0;">
<img src="${imageUrl}" alt="${
mod.title
}" style="width: 100%; height: auto; border-radius: 4px;">
</figure>
<div class="col-9">
<h4>${mod.title}</h4>
<p style="margin: 0;"><strong>Author:</strong> ${
mod.author_displayname || "Unknown"
}</p>
<p style="margin: 0;"><strong>Downloads:</strong> ${
mod.stats?.totals?.downloads || 0
}</p>
</div>
</header>
<footer style="margin-top: 10px;">
<details>
<summary>Description</summary>
<p>${md`${mod.description || "No description available."}`}</p>
</details>
</footer>
</article>`;
}