<style>
.PapathemesWidgetProductList .card-img-container {
position: relative;
}
.PapathemesWidgetProductList .card-buttons ._qty {
display: flex;
flex-direction: column;
align-items: stretch;
width: 100%;
}
.PapathemesWidgetProductList .card-buttons ._qty .card-figcaption-button {
margin: 0;
}
.PapathemesWidgetProductList .card-buttons ._qty .form-increment {
display: flex;
}
.PapathemesWidgetProductList .card-buttons ._qty .form-increment .form-input {
width: unset;
min-width: 50px;
margin-bottom: 0.75rem;
}
.PapathemesWidgetProductList .card-footer {
position: relative;
}
.PapathemesWidgetProductList .card-footer .card-buttons {
position: static;
padding: 0.375rem 0.75rem;
transform: none;
}
.PapathemesWidgetProductList .card-footer .card-buttons+.card-buttons {
padding-top: 0;
}
.PapathemesWidgetProductList .card-footer .card-buttons--alt .button {
flex: 1;
}
.PapathemesWidgetProductList .card-footer .card-buttons--alt .card-figcaption-button--compare {
flex: 0;
}
{
{
#if button.alwaysVisible
}
}
.PapathemesWidgetProductList .card-footer ._card-buttons-main {
opacity: 1;
visibility: visible;
}
.PapathemesWidgetProductList .card:hover .card-footer ._card-buttons-main {
padding-top: 0.375rem;
}
.PapathemesWidgetProductList .card:hover .card-footer .card-buttons+.card-buttons {
padding-top: 0;
}
{
{
#if button.position '==' 'below_image'
}
}
.PapathemesWidgetProductList .card-figure .card-figcaption {
position: static;
height: auto;
opacity: 1;
}
.PapathemesWidgetProductList .card-figcaption-body {
transform: none;
position: static;
}
.PapathemesWidgetProductList ._card-buttons-main {
position: static;
visibility: visible;
opacity: 1;
clip: auto;
transform: none;
padding: 0;
}
{
{
/if
}
}
{
{
/if
}
}
{
{
#if quickview.alwaysVisible
}
}
.PapathemesWidgetProductList .card-footer ._card-buttons-quickview {
opacity: 1;
visibility: visible;
}
.PapathemesWidgetProductList .card:hover .card-footer ._card-buttons-quickview {
padding-top: 0.375rem;
}
.PapathemesWidgetProductList .card:hover .card-footer .card-buttons+.card-buttons {
padding-top: 0;
}
{
{
#if quickview.position '==' 'below_image'
}
}
.PapathemesWidgetProductList .card-figure .card-figcaption {
position: static;
height: auto;
opacity: 1;
}
.PapathemesWidgetProductList .card-figcaption-body {
transform: none;
position: static;
}
.PapathemesWidgetProductList ._card-buttons-quickview {
position: static;
visibility: visible;
opacity: 1;
clip: auto;
transform: none;
}
{
{
/if
}
}
{
{
/if
}
}
{
{
#unless useCommonClass
}
}
.PapathemesWidgetProductList__productGrid {
display: grid;
grid-template-columns: 50% 50%;
gap: 0.75rem;
list-style: none;
}
.PapathemesWidgetProductList__card-figure {
position: relative;
overflow: hidden;
}
.PapathemesWidgetProductList__card-img-container {
position: relative;
}
.PapathemesWidgetProductList__card-img-container::after {
content: '';
display: block;
height: 0;
padding-bottom: 100%;
width: 100%;
}
.PapathemesWidgetProductList__card-image {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
border: 0;
font-family: "object-fit: contain;";
max-height: 100%;
object-fit: contain;
width: 100%;
}
.PapathemesWidgetProductList__card-figcaption {
display: block;
margin: 0;
}
.PapathemesWidgetProductList__card-figcaption-body {
display: flex;
flex-wrap: wrap;
gap: 0.75rem;
justify-content: center;
margin-top: 0.75rem;
}
.PapathemesWidgetProductList__card-buttons {
flex: 1;
}
.PapathemesWidgetProductList__card-buttons .button {
width: 100%;
}
.PapathemesWidgetProductList__card-body {
text-align: center;
}
.PapathemesWidgetProductList__card-title {
margin-bottom: 0.75rem;
font-weight: 700;
}
.PapathemesWidgetProductList__card-text {
margin-bottom: 0.75rem;
}
@media (min-width: 801px) {
.PapathemesWidgetProductList__productGrid {
grid-template-columns: 25% 25% 25% 25%;
gap: 1.5rem;
}
.PapathemesWidgetProductList__card-figcaption-body {
flex-wrap: nowrap;
}
.PapathemesWidgetProductList__card-buttons {
flex: 0;
}
}
{
{
/unless
}
}
</style>
<div class="PapathemesWidgetProductList PapathemesWidgetProductList-{{_.id}}" id="PapathemesWidgetProductList-{{_.id}}"
data-test="papathemes-widget-product-list">
{{#if products.value.length '>' 0}}
<ul class="{{#unless useCommonClass}}PapathemesWidgetProductList__{{/unless}}productGrid">
{{#each products.value as |product|}}
{{#each ../_.data.site.products.edges as |productResource|}}
{{#withHash root=../../this}}
{{#if (isEqual productResource.node.entityId product.productId)}}
<li class="{{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}product">
<article class="{{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card"
data-event-type="list" data-entity-id="{{productResource.node.entityId}}" data-position=""
data-name="{{productResource.node.name}}" data-product-category=""
data-product-brand="{{productResource.node.brand.name}}" data-product-price="{{#or productResource.node.priceWithTax.price productResource.node.priceWithoutTax.price}}
{{#if (isEqual root._.data.site.settings.tax.plp 'EX')}}
{{productResource.node.priceWithoutTax.price.value}}
{{else}}
{{productResource.node.priceWithTax.price.value}}
{{/if}}
{{else}}
Login for pricing
{{/or}}">
<figure class="{{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card-figure">
{{#unless productResource.node.inventory.isInStock}}
<div class="sale-flag-side sale-flag-side--outstock">
<span class="sale-text">{{root._.data.site.settings.inventory.defaultOutOfStockMessage}}</span>
</div>
{{/unless}}
{{#or productResource.node.priceWithTax.salePrice productResource.node.priceWithoutTax.salePrice}}
<div class="sale-flag-sash">
<span class="sale-text">On Sale</span>
</div>
{{/or}}
{{#if (isEqual root.productImage 'show')}}
<a href="{{productResource.node.path}}" data-event-type="product-click">
<div
class="{{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card-img-container">
<img src="{{productResource.node.defaultImage.url320wide}}" srcset="{{productResource.node.defaultImage.url80wide}} 80w,
{{productResource.node.defaultImage.url160wide}} 160w,
{{productResource.node.defaultImage.url320wide}} 320w,
{{productResource.node.defaultImage.url640wide}} 640w,
{{productResource.node.defaultImage.url960wide}} 960w,
{{productResource.node.defaultImage.url1280wide}} 1280w,
{{productResource.node.defaultImage.url1920wide}}"
alt="{{productResource.node.name}}"
class="{{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card-image"
loading="lazy">
</div>
</a>
{{/if}} <figcaption
class="{{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card-figcaption">
<div
class="{{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card-figcaption-body">
{{#if root.button.position '==' 'below_image'}}
{{#if root.button.visibility '==' 'show'}}
<div
class="{{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card-buttons _card-buttons-main">
{{#if productResource.node.showCartAction}}
<div
class="{{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}_qty">
{{#if root.button.qty}}
{{assignVar 'qtyBoxRand' (random 0 1000000)}}
<div class="form-field form-field--increments">
<label class="form-label form-label--alternate is-srOnly"
for="qty_{{id}}_{{incrementVar 'qtyBoxUID'}}_{{getVar 'qtyBoxRand'}}">{{root.button.qtyLabel}}</label>
<div class="form-increment" data-card-quantity-change>
<button class="button button--icon" data-action="dec"><span
class="is-srOnly">{{root.button.decLabel}}</span>-</button>
<input class="form-input form-input--incrementTotal"
id="qty_{{id}}_{{getVar 'qtyBoxUID'}}_{{getVar 'qtyBoxRand'}}"
name="qty_{{id}}" type="tel"
value="{{#if productResource.node.minPurchaseQuantity}}{{productResource.node.minPurchaseQuantity}}{{else}}1{{/if}}"
data-quantity-min="{{productResource.node.minPurchaseQuantity}}"
data-quantity-max="{{productResource.node.maxPurchaseQuantity}}" min="1"
pattern="[0-9]*" aria-live="polite">
<button class="button button--icon" data-action="inc"><span
class="is-srOnly">{{root.button.incLabel}}</span>+</button>
</div>
</div>
{{/if}}
{{#if productResource.node.productOptions.edges.length '>' 0}}
<a href="{{productResource.node.path}}" data-event-type="product-click"
class="button button--small button--primary card-figcaption-button quickview-alt"
data-product-id="{{productResource.node.entityId}}">{{root.button.chooseOptionsLabel}}</a>
{{else if productResource.node.availabilityV2.status '==' 'Preorder'}}
<a href="{{productResource.node.path}}" data-event-type="product-click"
class="button button--small button--primary card-figcaption-button">{{root.button.preOrderLabel}}</a>
{{else if productResource.node.addToCartUrl}}
{{#if productResource.node.inventory.isInStock}}
<a href="{{productResource.node.addToCartUrl}}" data-event-type="product-click"
class="button button--small button--primary card-figcaption-button"
data-papathemes-cart-item-add data-emthemesmodez-cart-item-add
data-chiara-cart-item-add>{{root.button.addToCartLabel}}</a>
{{/if}}
{{/if}}
{{#unless productResource.node.inventory.isInStock}}
<a href="{{productResource.node.path}}" data-event-type="product-click"
class="button button--small card-figcaption-button _outstock"
data-product-id="{{productResource.node.entityId}}">
{{root._.data.site.settings.inventory.defaultOutOfStockMessage}}
</a>
{{/unless}}
</div>
{{/if}}
</div>
{{/if}}
{{/if}}
{{#if root.quickview.position '==' 'below_image'}}
{{#if root.quickview.visibility '==' 'show'}}
<div
class="{{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card-buttons {{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card-buttons--alt _card-buttons-quickview">
<a class="button button--small card-figcaption-button quickview"
data-event-type="product-click"
data-product-id="{{productResource.node.entityId}}">{{root.quickview.label}}</a>
{{#if root._.data.site.settings.storefront.catalog.productComparisonsEnabled}}
<button type="button"
class="button button--small card-figcaption-button card-figcaption-button--compare"
data-compare-id="{{productResource.node.entityId}}"
data-compare-image="{{productResource.node.defaultImage.url160wide}}"
data-compare-title="{{productResource.node.name}}">Compare</button>
{{/if}}
</div>
{{/if}}
{{/if}}
</div>
</figcaption>
</figure>
<div class="{{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card-body">
{{#if root.productName '==' 'show'}}
<h4 class="{{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card-title">
<a href="{{productResource.node.path}}" data-instantload
data-event-type="product-click">{{productResource.node.name}}</a>
</h4>
{{/if}}
{{#if root.brand '==' 'show'}}
{{#if productResource.node.brand.name}}
<p class="{{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card-text {{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card-text--brand"
data-test-info-type="brandName">{{productResource.node.brand.name}}</p>
{{/if}}
{{/if}}
{{#if root.sku '==' 'show'}}
{{#if productResource.node.sku}}
<p class="{{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card-text {{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card-text--sku"
data-test-info-type="sku">{{productResource.node.sku}}</p>
{{/if}}
{{/if}}
{{#if root.swatches '==' 'show'}}
<div class="card-text card-text--colorswatches"></div>
{{/if}}
{{#if root.productRating '==' 'show'}}
{{#if productResource.node.reviewSummary.numberOfReviews '>' 0}}
<p class="{{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card-text {{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card-text--rating"
data-test-info-type="productRating">
<span class="rating--small">
{{#for 1 5}}
{{#if (divide productResource.node.reviewSummary.summationOfRatings
productResource.node.reviewSummary.numberOfReviews) '>=' $index}}
<span class="icon icon--ratingFull">
<svg>
<use href="#icon-star" />
</svg>
</span>
{{else}}
<span class="icon icon--ratingEmpty">
<svg>
<use href="#icon-star" />
</svg>
</span>
{{/if}}
{{/for}}
</span>
</p>
{{/if}}
{{/if}}
{{#if root.price '==' 'show'}}
{{> components/price}}
{{/if}}
<div class="{{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card-footer">
{{#if root.button.position '==' 'below_card'}}
{{#if root.button.visibility '==' 'show'}}
<div
class="{{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card-buttons _card-buttons-main">
{{#if productResource.node.showCartAction}}
<div class="{{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}_qty">
{{#if root.button.qty}}
{{assignVar 'qtyBoxRand' (random 0 1000000)}}
<div class="form-field form-field--increments">
<label class="form-label form-label--alternate is-srOnly"
for="qty_{{id}}_{{incrementVar 'qtyBoxUID'}}_{{getVar 'qtyBoxRand'}}">{{root.button.qtyLabel}}</label>
<div class="form-increment" data-card-quantity-change>
<button class="button button--icon" data-action="dec"><span
class="is-srOnly">{{root.button.decLabel}}</span>-</button>
<input class="form-input form-input--incrementTotal"
id="qty_{{id}}_{{getVar 'qtyBoxUID'}}_{{getVar 'qtyBoxRand'}}"
name="qty_{{id}}" type="tel"
value="{{#if productResource.node.minPurchaseQuantity}}{{productResource.node.minPurchaseQuantity}}{{else}}1{{/if}}"
data-quantity-min="{{productResource.node.minPurchaseQuantity}}"
data-quantity-max="{{productResource.node.maxPurchaseQuantity}}" min="1"
pattern="[0-9]*" aria-live="polite">
<button class="button button--icon" data-action="inc"><span
class="is-srOnly">{{root.button.incLabel}}</span>+</button>
</div>
</div>
{{/if}}
{{#if productResource.node.productOptions.edges.length '>' 0}}
<a href="{{productResource.node.path}}" data-event-type="product-click"
class="button button--small button--primary card-figcaption-button quickview-alt"
data-product-id="{{productResource.node.entityId}}">{{root.button.chooseOptionsLabel}}</a>
{{else if productResource.node.availabilityV2.status '==' 'Preorder'}}
<a href="{{productResource.node.path}}" data-event-type="product-click"
class="button button--small button--primary card-figcaption-button">{{root.button.preOrderLabel}}</a>
{{else if productResource.node.addToCartUrl}}
{{#if productResource.node.inventory.isInStock}}
<a href="{{productResource.node.addToCartUrl}}" data-event-type="product-click"
class="button button--small button--primary card-figcaption-button"
data-papathemes-cart-item-add data-emthemesmodez-cart-item-add
data-chiara-cart-item-add>{{root.button.addToCartLabel}}</a>
{{/if}}
{{/if}}
{{#unless productResource.node.inventory.isInStock}}
<a href="{{productResource.node.path}}" data-event-type="product-click"
class="button button--small card-figcaption-button _outstock"
data-product-id="{{productResource.node.entityId}}">
{{root._.data.site.settings.inventory.defaultOutOfStockMessage}}
</a>
{{/unless}}
</div>
{{/if}}
</div>
{{/if}}
{{/if}}
{{#if root.quickview.position '==' 'below_card'}}
{{#if root.quickview.visibility '==' 'show'}}
<div
class="{{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card-buttons {{#unless root.useCommonClass}}PapathemesWidgetProductList__{{/unless}}card-buttons--alt _card-buttons-quickview">
<a class="button button--small card-figcaption-button quickview"
data-event-type="product-click"
data-product-id="{{productResource.node.entityId}}">{{root.quickview.label}}</a>
{{#if root._.data.site.settings.storefront.catalog.productComparisonsEnabled}}
<button type="button"
class="button button--small card-figcaption-button card-figcaption-button--compare"
data-compare-id="{{productResource.node.entityId}}"
data-compare-image="{{productResource.node.defaultImage.url160wide}}"
data-compare-title="{{productResource.node.name}}">
Compare
</button>
{{/if}}
</div>
{{/if}}
{{/if}}
</div>
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "{{productResource.node.name}}",
"image": "{{productResource.node.defaultImage.url}}",
"description": "{{productResource.node.plainTextDescription}}",
"sku": "{{productResource.node.sku}}",
"aggregateRating": {
"@type": "AggregateRating",
{{#if productResource.node.reviewSummary.summationOfRatings '==' 0}}
"ratingValue": "0",
{{else}}
"ratingValue": "{{divide productResource.node.reviewSummary.summationOfRatings productResource.node.reviewSummary.numberOfReviews}}",
{{/if}}
"reviewCount": "{{productResource.node.reviewSummary.numberOfReviews}}"
},
"offers": {
"@type": "Offer",
{{#if root._.data.site.settings.tax.plp '==' 'EX'}}
"priceCurrency": "{{productResource.node.priceWithoutTax.price.currencyCode}}",
"price": "{{productResource.node.priceWithoutTax.price.value}}",
{{else}}
"priceCurrency": "{{productResource.node.priceWithTax.price.currencyCode}}",
"price": "{{productResource.node.priceWithTax.price.value}}",
{{/if}}
"seller": {
"@type": "Organization",
"name": "{{root._.data.site.settings.storeName}}"
}
}
}
</script>
{{/if}}{{/if}}{{/withHash}}{{/each}}{{/each}}
</ul>{{else}}
<p>Select some products from your catalog to feature on this page.</p>{{/if}}
</div>