slide = (
{ images, tags = [], color = "#2F405C", url = "/collections/whats-new" },
callback
) => {
const createImageURL = (src, width) => `${src}&width=${width} ${width}w`;
const createProductTag = ({
name,
url,
top,
left,
color
}) => `<a href="${url}">
<div class="hero-product-tag" style="top: ${top}; left: ${left}; color: ${color}">${name}</div>
</a>`;
const layers = [
"https://cdn.shopify.com/s/files/1/1748/5525/files/Background.png?v=1696261608",
...images
].map(
(url, index) => html`<img
src="${url}&width=${width}"
srcset="
${createImageURL(url, 180)},
${createImageURL(url, 360)},
${createImageURL(url, 540)},
${createImageURL(url, 720)},
${createImageURL(url, 900)},
${createImageURL(url, 1080)},
${createImageURL(url, 1260)},
${createImageURL(url, 1140)},
${createImageURL(url, 1620)},
${createImageURL(url, 1800)},
${createImageURL(url, 1980)},
${createImageURL(url, 2160)},
${createImageURL(url, 1620)},
${createImageURL(url, 2340)},
${createImageURL(url, 2520)},
${createImageURL(url, 2700)},
${createImageURL(url, 2880)},
${createImageURL(url, 3060)},
"
class="hero-layer-${index}"
loading="${index === 0 ? "eager" : "lazy"}"
/>`
);
const producTagsLayer = html`<div class="hero-product-tags hero-layer-${
layers.length
}">
${tags.map((tag) => createProductTag({ ...tag, color })).join("\n")}
</div>`;
const slide = html`<a href="${url}"><div class="hero-slide">
${layers}
${producTagsLayer}
</div></a>`;
callback(slide);
const container = html`<div class="hero-slide-container">
${slide}
</div>`;
return container;
}