initial commit

This commit is contained in:
Gerhard Scheikl
2026-08-24 21:41:12 +02:00
commit 5c952a25b1
367 changed files with 134961 additions and 0 deletions
+102
View File
@@ -0,0 +1,102 @@
const SCROLL_ANIMATION_TRIGGER_CLASSNAME = 'scroll-trigger';
const SCROLL_ANIMATION_OFFSCREEN_CLASSNAME = 'scroll-trigger--offscreen';
const SCROLL_ZOOM_IN_TRIGGER_CLASSNAME = 'animate--zoom-in';
const SCROLL_ANIMATION_CANCEL_CLASSNAME = 'scroll-trigger--cancel';
// Scroll in animation logic
function onIntersection(elements, observer) {
elements.forEach((element, index) => {
if (element.isIntersecting) {
const elementTarget = element.target;
if (elementTarget.classList.contains(SCROLL_ANIMATION_OFFSCREEN_CLASSNAME)) {
elementTarget.classList.remove(SCROLL_ANIMATION_OFFSCREEN_CLASSNAME);
if (elementTarget.hasAttribute('data-cascade'))
elementTarget.setAttribute('style', `--animation-order: ${index};`);
}
observer.unobserve(elementTarget);
} else {
element.target.classList.add(SCROLL_ANIMATION_OFFSCREEN_CLASSNAME);
element.target.classList.remove(SCROLL_ANIMATION_CANCEL_CLASSNAME);
}
});
}
function initializeScrollAnimationTrigger(rootEl = document, isDesignModeEvent = false) {
const animationTriggerElements = Array.from(rootEl.getElementsByClassName(SCROLL_ANIMATION_TRIGGER_CLASSNAME));
if (animationTriggerElements.length === 0) return;
if (isDesignModeEvent) {
animationTriggerElements.forEach((element) => {
element.classList.add('scroll-trigger--design-mode');
});
return;
}
const observer = new IntersectionObserver(onIntersection, {
rootMargin: '0px 0px -50px 0px',
});
animationTriggerElements.forEach((element) => observer.observe(element));
}
// Zoom in animation logic
function initializeScrollZoomAnimationTrigger() {
if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;
const animationTriggerElements = Array.from(document.getElementsByClassName(SCROLL_ZOOM_IN_TRIGGER_CLASSNAME));
if (animationTriggerElements.length === 0) return;
const scaleAmount = 0.2 / 100;
animationTriggerElements.forEach((element) => {
let elementIsVisible = false;
const observer = new IntersectionObserver((elements) => {
elements.forEach((entry) => {
elementIsVisible = entry.isIntersecting;
});
});
observer.observe(element);
element.style.setProperty('--zoom-in-ratio', 1 + scaleAmount * percentageSeen(element));
window.addEventListener(
'scroll',
throttle(() => {
if (!elementIsVisible) return;
element.style.setProperty('--zoom-in-ratio', 1 + scaleAmount * percentageSeen(element));
}),
{ passive: true }
);
});
}
function percentageSeen(element) {
const viewportHeight = window.innerHeight;
const scrollY = window.scrollY;
const elementPositionY = element.getBoundingClientRect().top + scrollY;
const elementHeight = element.offsetHeight;
if (elementPositionY > scrollY + viewportHeight) {
// If we haven't reached the image yet
return 0;
} else if (elementPositionY + elementHeight < scrollY) {
// If we've completely scrolled past the image
return 100;
}
// When the image is in the viewport
const distance = scrollY + viewportHeight - elementPositionY;
let percentage = distance / ((viewportHeight + elementHeight) / 100);
return Math.round(percentage);
}
window.addEventListener('DOMContentLoaded', () => {
initializeScrollAnimationTrigger();
initializeScrollZoomAnimationTrigger();
});
if (Shopify.designMode) {
document.addEventListener('shopify:section:load', (event) => initializeScrollAnimationTrigger(event.target, true));
document.addEventListener('shopify:section:reorder', () => initializeScrollAnimationTrigger(document, true));
}
+3612
View File
File diff suppressed because it is too large Load Diff
+192
View File
@@ -0,0 +1,192 @@
if (!customElements.get('cart-disclosure-modal')) {
class CartDisclosureModal extends HTMLElement {
constructor() {
super();
this.onOpenerClick = this.onOpenerClick.bind(this);
this.onCloseClick = this.onCloseClick.bind(this);
this.onModalClick = this.onModalClick.bind(this);
this.onKeyUp = this.onKeyUp.bind(this);
this.removeIfOpenerDisconnected = this.removeIfOpenerDisconnected.bind(this);
}
connectedCallback() {
if (this.initialized) return;
this.initialized = true;
this.dialog = this.querySelector('[role="dialog"]');
const controlsId = this.dialog?.id;
this.opener = this.previousElementSibling?.classList.contains('cart-item__disclosure')
? this.previousElementSibling
: controlsId
? document.querySelector(`[aria-controls="${controlsId}"]`)
: null;
this.closeButton = this.querySelector('[data-cart-disclosure-close]');
let shouldRestoreOpen = false;
document.querySelectorAll('cart-disclosure-modal').forEach((modal) => {
if (modal === this || modal.id !== this.id) return;
shouldRestoreOpen = shouldRestoreOpen || modal.hasAttribute('open');
modal.remove();
});
this.opener?.addEventListener('click', this.onOpenerClick);
this.closeButton?.addEventListener('click', this.onCloseClick);
this.addEventListener('click', this.onModalClick);
this.addEventListener('keyup', this.onKeyUp);
if (this.parentElement !== document.body) {
this.isMoving = true;
document.body.appendChild(this);
this.isMoving = false;
}
this.observeOpener();
if (shouldRestoreOpen) this.show();
}
disconnectedCallback() {
if (this.isMoving) return;
this.openerObserver?.disconnect();
this.opener?.removeEventListener('click', this.onOpenerClick);
this.closeButton?.removeEventListener('click', this.onCloseClick);
this.removeEventListener('click', this.onModalClick);
this.removeEventListener('keyup', this.onKeyUp);
if (this.hasAttribute('open')) this.hide(false);
}
observeOpener() {
this.openerObserver?.disconnect();
if (!this.opener) return;
this.openerObserver = new MutationObserver(this.removeIfOpenerDisconnected);
this.openerObserver.observe(document.body, { childList: true, subtree: true });
this.removeIfOpenerDisconnected();
}
removeIfOpenerDisconnected() {
if (this.isMoving || !this.isConnected || this.opener?.isConnected) return;
this.remove();
}
onOpenerClick(event) {
event.preventDefault();
event.stopPropagation();
this.show();
}
onCloseClick(event) {
event.preventDefault();
event.stopPropagation();
this.hide();
}
onModalClick(event) {
event.stopPropagation();
if (event.target === this) this.hide();
}
onKeyUp(event) {
if (event.code.toUpperCase() !== 'ESCAPE') return;
event.preventDefault();
event.stopPropagation();
this.hide();
}
show() {
if (this.hasAttribute('open')) return;
document.querySelectorAll('cart-disclosure-modal[open]').forEach((modal) => {
if (modal !== this) modal.hide(false);
});
this.lockScroll();
this.setAttribute('open', '');
this.opener?.setAttribute('aria-expanded', 'true');
if (typeof trapFocus === 'function') {
trapFocus(this, this.dialog);
} else {
this.dialog?.focus();
}
window.pauseAllMedia();
}
hide(restoreFocus = true) {
if (!this.hasAttribute('open')) return;
this.removeAttribute('open');
this.opener?.setAttribute('aria-expanded', 'false');
this.unlockScroll();
if (restoreFocus) {
this.restoreFocusTrap();
} else if (typeof removeTrapFocus === 'function') {
removeTrapFocus();
}
window.pauseAllMedia();
}
lockScroll() {
this.bodyOverflowWasHidden = document.body.classList.contains('overflow-hidden');
this.previousBodyPaddingRight = document.body.style.paddingRight;
if (this.bodyOverflowWasHidden) return;
const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
if (scrollbarWidth > 0) {
const currentPaddingRight = parseFloat(window.getComputedStyle(document.body).paddingRight) || 0;
document.body.style.paddingRight = `${currentPaddingRight + scrollbarWidth}px`;
}
document.body.classList.add('overflow-hidden');
}
unlockScroll() {
if (this.bodyOverflowWasHidden) return;
document.body.classList.remove('overflow-hidden');
document.body.style.paddingRight = this.previousBodyPaddingRight;
}
restoreFocusTrap() {
const cartDrawer = this.opener?.closest('cart-drawer.active');
const cartNotification = this.opener?.closest('cart-notification')?.querySelector('#cart-notification.active');
if (cartDrawer && typeof trapFocus === 'function') {
const containerToTrapFocusOn = cartDrawer.classList.contains('is-empty')
? cartDrawer.querySelector('.drawer__inner-empty')
: document.getElementById('CartDrawer');
if (containerToTrapFocusOn) {
trapFocus(containerToTrapFocusOn, this.opener);
return;
}
}
if (cartNotification && typeof trapFocus === 'function') {
trapFocus(cartNotification, this.opener);
return;
}
if (typeof removeTrapFocus === 'function') {
removeTrapFocus(this.opener);
} else {
this.opener?.focus();
}
}
}
customElements.define('cart-disclosure-modal', CartDisclosureModal);
}
+45
View File
@@ -0,0 +1,45 @@
(function () {
// Keeps the cart disclosure hover tooltip within the viewport.
// On hover we measure the tooltip and set a `--cart-disclosure-tooltip-shift`
// custom property that nudges it back into view;
// the arrow is counter-shifted in CSS so it keeps pointing at the icon.
const VIEWPORT_MARGIN = 16;
function positionTooltip(button) {
const tooltip = button.querySelector('.cart-item__disclosure-tooltip');
if (!tooltip) return;
// Reset before measuring so we read the natural, centered position.
tooltip.style.setProperty('--cart-disclosure-tooltip-shift', '0px');
const rect = tooltip.getBoundingClientRect();
const viewportWidth = document.documentElement.clientWidth;
let shift = 0;
if (rect.right > viewportWidth - VIEWPORT_MARGIN) {
shift = viewportWidth - VIEWPORT_MARGIN - rect.right;
} else if (rect.left < VIEWPORT_MARGIN) {
shift = VIEWPORT_MARGIN - rect.left;
}
tooltip.style.setProperty('--cart-disclosure-tooltip-shift', `${Math.round(shift)}px`);
}
function onPointerOver(event) {
const button = event.target.closest?.('.cart-item__disclosure');
if (!button || button.dataset.tooltipPositioned === 'true') return;
button.dataset.tooltipPositioned = 'true';
positionTooltip(button);
}
function onPointerOut(event) {
const button = event.target.closest?.('.cart-item__disclosure');
if (button && !button.contains(event.relatedTarget)) {
delete button.dataset.tooltipPositioned;
}
}
document.addEventListener('pointerover', onPointerOver);
document.addEventListener('pointerout', onPointerOut);
})();
+142
View File
@@ -0,0 +1,142 @@
class CartDrawer extends HTMLElement {
constructor() {
super();
this.addEventListener('keyup', (evt) => evt.code === 'Escape' && this.close());
this.querySelector('#CartDrawer-Overlay').addEventListener('click', this.close.bind(this));
this.setHeaderCartIconAccessibility();
}
setHeaderCartIconAccessibility() {
const cartLink = document.querySelector('#cart-icon-bubble');
if (!cartLink) return;
cartLink.setAttribute('role', 'button');
cartLink.setAttribute('aria-haspopup', 'dialog');
cartLink.addEventListener('click', (event) => {
event.preventDefault();
this.open(cartLink);
});
cartLink.addEventListener('keydown', (event) => {
if (event.code.toUpperCase() === 'SPACE') {
event.preventDefault();
this.open(cartLink);
}
});
}
open(triggeredBy) {
if (this.classList.contains('active')) return;
if (triggeredBy) this.setActiveElement(triggeredBy);
const cartDrawerNote = this.querySelector('[id^="Details-"] summary');
if (cartDrawerNote && !cartDrawerNote.hasAttribute('role')) this.setSummaryAccessibility(cartDrawerNote);
// here the animation doesn't seem to always get triggered. A timeout seem to help
setTimeout(() => {
this.classList.add('animate', 'active');
});
this.addEventListener(
'transitionend',
() => {
const containerToTrapFocusOn = this.classList.contains('is-empty')
? this.querySelector('.drawer__inner-empty')
: document.getElementById('CartDrawer');
const focusElement = this.querySelector('.drawer__inner') || this.querySelector('.drawer__close');
trapFocus(containerToTrapFocusOn, focusElement);
},
{ once: true },
);
document.body.classList.add('overflow-hidden');
// cart-drawer-items is a CartItems subclass that extends createViewEventElement.
// Its `view-event-trigger="manual"` skips auto-dispatch on connect; we fire
// it here when the drawer opens, with `context: 'dialog'` from the payload attribute.
this.querySelector('cart-drawer-items')?.dispatchViewEvent();
}
close() {
this.classList.remove('active');
removeTrapFocus(this.activeElement);
document.body.classList.remove('overflow-hidden');
}
setSummaryAccessibility(cartDrawerNote) {
cartDrawerNote.setAttribute('role', 'button');
cartDrawerNote.setAttribute('aria-expanded', 'false');
if (cartDrawerNote.nextElementSibling.getAttribute('id')) {
cartDrawerNote.setAttribute('aria-controls', cartDrawerNote.nextElementSibling.id);
}
cartDrawerNote.addEventListener('click', (event) => {
event.currentTarget.setAttribute('aria-expanded', !event.currentTarget.closest('details').hasAttribute('open'));
});
cartDrawerNote.parentElement.addEventListener('keyup', onKeyUpEscape);
}
renderContents(parsedState) {
this.querySelector('.drawer__inner').classList.contains('is-empty') &&
this.querySelector('.drawer__inner').classList.remove('is-empty');
this.productId = parsedState.id;
this.getSectionsToRender().forEach((section) => {
const sectionElement = section.selector
? document.querySelector(section.selector)
: document.getElementById(section.id);
if (!sectionElement) return;
sectionElement.innerHTML = this.getSectionInnerHTML(parsedState.sections[section.id], section.selector);
});
setTimeout(() => {
this.querySelector('#CartDrawer-Overlay').addEventListener('click', this.close.bind(this));
this.open();
});
}
getSectionInnerHTML(html, selector = '.shopify-section') {
return new DOMParser().parseFromString(html, 'text/html').querySelector(selector).innerHTML;
}
getSectionsToRender() {
return [
{
id: 'cart-drawer',
selector: '#CartDrawer',
},
{
id: 'cart-icon-bubble',
},
];
}
getSectionDOM(html, selector = '.shopify-section') {
return new DOMParser().parseFromString(html, 'text/html').querySelector(selector);
}
setActiveElement(element) {
this.activeElement = element;
}
}
customElements.define('cart-drawer', CartDrawer);
class CartDrawerItems extends CartItems {
getSectionsToRender() {
return [
{
id: 'CartDrawer',
section: 'cart-drawer',
selector: '.drawer__inner',
},
{
id: 'cart-icon-bubble',
section: 'cart-icon-bubble',
selector: '.shopify-section',
},
];
}
}
customElements.define('cart-drawer-items', CartDrawerItems);
+112
View File
@@ -0,0 +1,112 @@
class CartNotification extends HTMLElement {
constructor() {
super();
this.notification = document.getElementById('cart-notification');
this.header = document.querySelector('sticky-header');
this.onBodyClick = this.handleBodyClick.bind(this);
this.notification.addEventListener('keyup', (evt) => evt.code === 'Escape' && this.close());
this.querySelectorAll('button[type="button"]').forEach((closeButton) =>
closeButton.addEventListener('click', this.close.bind(this))
);
}
open() {
this.notification.classList.add('animate', 'active');
this.notification.addEventListener(
'transitionend',
() => {
this.notification.focus();
trapFocus(this.notification);
},
{ once: true }
);
document.body.addEventListener('click', this.onBodyClick);
this.dispatchCartViewEvent();
}
// The notification's outer element is server-rendered once at page load, so
// its `cart` Liquid object reflects the pre-add state. The morphed children
// (inserted from the /cart/add.js sections response in renderContents) are
// post-add, but they don't expose the full cart shape we need for the event
// payload. So we keep an explicit /cart.json fetch on open. Migrating to the
// factory + filter would require re-rendering the notification element
// itself in sections, which is out of scope for this PR.
async dispatchCartViewEvent() {
const { CartViewEvent } = window.StandardEvents || {};
if (!CartViewEvent) return;
try {
const response = await fetch(`${routes.cart_url}.json`);
const cart = await response.json();
if (!cart?.currency) return;
this.dispatchEvent(
new CartViewEvent({
context: 'dialog',
cart: CartViewEvent.createCartFromAjaxResponse(cart),
})
);
} catch (e) {
// cart:view is informational; swallow fetch errors
}
}
close() {
this.notification.classList.remove('active');
document.body.removeEventListener('click', this.onBodyClick);
removeTrapFocus(this.activeElement);
}
renderContents(parsedState) {
this.cartItemKey = parsedState.key;
this.getSectionsToRender().forEach((section) => {
document.getElementById(section.id).innerHTML = this.getSectionInnerHTML(
parsedState.sections[section.id],
section.selector
);
});
if (this.header) this.header.reveal();
this.open();
}
getSectionsToRender() {
return [
{
id: 'cart-notification-product',
selector: `[id="cart-notification-product-${this.cartItemKey}"]`,
},
{
id: 'cart-notification-button',
},
{
id: 'cart-icon-bubble',
},
];
}
getSectionInnerHTML(html, selector = '.shopify-section') {
return new DOMParser().parseFromString(html, 'text/html').querySelector(selector).innerHTML;
}
handleBodyClick(evt) {
const target = evt.target;
if (target !== this.notification && !target.closest('cart-notification')) {
const disclosure = target.closest('details-disclosure, header-menu');
this.activeElement = disclosure ? disclosure.querySelector('summary') : null;
this.close();
}
}
setActiveElement(element) {
this.activeElement = element;
}
}
customElements.define('cart-notification', CartNotification);
+415
View File
@@ -0,0 +1,415 @@
class CartRemoveButton extends HTMLElement {
constructor() {
super();
this.addEventListener('click', (event) => {
event.preventDefault();
const cartItems = this.closest('cart-items') || this.closest('cart-drawer-items');
cartItems.updateQuantity(this.dataset.index, 0, event);
});
}
}
customElements.define('cart-remove-button', CartRemoveButton);
class CartItems extends window.StandardEvents.createViewEventElement(HTMLElement) {
constructor() {
super();
this.lineItemStatusElement =
document.getElementById('shopping-cart-line-item-status') || document.getElementById('CartDrawer-LineItemStatus');
const debouncedOnChange = debounce((event) => {
this.onChange(event);
}, ON_CHANGE_DEBOUNCE_TIMER);
this.addEventListener('change', debouncedOnChange.bind(this));
}
cartUpdateUnsubscriber = undefined;
static pendingCartDataPromise = null;
connectedCallback() {
// The factory base class auto-dispatches cart:view from the
// `view-event-payload` attribute (Liquid filter output). The drawer
// sets `view-event-trigger="manual"` to skip auto-dispatch.
super.connectedCallback();
this.cartUpdateUnsubscriber = subscribe(PUB_SUB_EVENTS.cartUpdate, (event) => {
if (event.source === 'cart-items') return;
return this.onCartUpdate();
});
}
// Fetches the full cart shape (used to resolve the cart:lines-update event
// promise after /cart/add.js, which only returns the added line — not the
// post-mutation cart aggregates). De-duplicated across concurrent callers.
static fetchCartData() {
if (!CartItems.pendingCartDataPromise) {
const pendingCartDataPromise = fetch(`${routes.cart_url}.json`)
.then((response) => response.json())
.catch(() => null)
.finally(() => {
if (CartItems.pendingCartDataPromise === pendingCartDataPromise) CartItems.pendingCartDataPromise = null;
});
CartItems.pendingCartDataPromise = pendingCartDataPromise;
}
return CartItems.pendingCartDataPromise;
}
disconnectedCallback() {
if (this.cartUpdateUnsubscriber) {
this.cartUpdateUnsubscriber();
}
}
resetQuantityInput(id) {
const input = this.querySelector(`#Quantity-${id}`);
input.value = input.getAttribute('value');
this.isEnterPressed = false;
}
setValidity(event, index, message) {
event.target.setCustomValidity(message);
event.target.reportValidity();
this.resetQuantityInput(index);
event.target.select();
}
validateQuantity(event) {
const inputValue = parseInt(event.target.value);
const index = event.target.dataset.index;
let message = '';
if (inputValue < event.target.dataset.min) {
message = window.quickOrderListStrings.min_error.replace('[min]', event.target.dataset.min);
} else if (inputValue > parseInt(event.target.max)) {
message = window.quickOrderListStrings.max_error.replace('[max]', event.target.max);
} else if (inputValue % parseInt(event.target.step) !== 0) {
message = window.quickOrderListStrings.step_error.replace('[step]', event.target.step);
}
if (message) {
this.setValidity(event, index, message);
} else {
event.target.setCustomValidity('');
event.target.reportValidity();
this.updateQuantity(
index,
inputValue,
event,
document.activeElement.getAttribute('name'),
event.target.dataset.quantityVariantId
);
}
}
onChange(event) {
this.validateQuantity(event);
}
onCartUpdate() {
if (this.tagName === 'CART-DRAWER-ITEMS') {
return fetch(`${routes.cart_url}?section_id=cart-drawer`)
.then((response) => response.text())
.then((responseText) => {
const html = new DOMParser().parseFromString(responseText, 'text/html');
const selectors = ['cart-drawer-items', '.cart-drawer__footer'];
for (const selector of selectors) {
const targetElement = document.querySelector(selector);
const sourceElement = html.querySelector(selector);
if (targetElement && sourceElement) {
targetElement.replaceWith(sourceElement);
}
}
})
.catch((e) => {
console.error(e);
});
} else {
return fetch(`${routes.cart_url}?section_id=main-cart-items`)
.then((response) => response.text())
.then((responseText) => {
const html = new DOMParser().parseFromString(responseText, 'text/html');
const sourceQty = html.querySelector('cart-items');
this.innerHTML = sourceQty.innerHTML;
})
.catch((e) => {
console.error(e);
});
}
}
getSectionsToRender() {
return [
{
id: 'main-cart-items',
section: document.getElementById('main-cart-items').dataset.id,
selector: '.js-contents',
},
{
id: 'cart-icon-bubble',
section: 'cart-icon-bubble',
selector: '.shopify-section',
},
{
id: 'cart-live-region-text',
section: 'cart-live-region-text',
selector: '.shopify-section',
},
{
id: 'main-cart-footer',
section: document.getElementById('main-cart-footer').dataset.id,
selector: '.js-contents',
},
];
}
updateQuantity(line, quantity, event, name, variantId) {
const eventTarget = event.currentTarget instanceof CartRemoveButton ? 'clear' : 'change';
const cartPerformanceUpdateMarker = CartPerformance.createStartingMarker(`${eventTarget}:user-action`);
this.enableLoading(line);
const action = quantity === 0 ? 'remove' : 'update';
const quantityInput = this.querySelector(`#Quantity-${line}`) || this.querySelector(`#Drawer-quantity-${line}`);
const lineVariantId = variantId || quantityInput?.dataset.quantityVariantId;
const lineKey = quantityInput?.dataset.quantityLineKey;
const linesUpdateDeferred = this.createCartLinesUpdateEvent(action, lineVariantId, quantity, lineKey);
// Cache sections before the fetch so we read dataset.id while elements still exist in the DOM
const sectionsToRender = this.getSectionsToRender();
const body = JSON.stringify({
line,
quantity,
sections: sectionsToRender.map((section) => section.section),
sections_url: window.location.pathname,
});
fetch(`${routes.cart_change_url}`, { ...fetchConfig(), ...{ body } })
.then((response) => {
return response.text();
})
.then((state) => {
const parsedState = JSON.parse(state);
if (parsedState.errors) {
this.dispatchCartErrorEvent(parsedState.errors, 'INVALID');
linesUpdateDeferred?.reject(new Error(parsedState.errors));
} else {
this.resolveCartLinesUpdate(linesUpdateDeferred, parsedState);
}
CartPerformance.measure(`${eventTarget}:paint-updated-sections`, () => {
const quantityElement =
document.getElementById(`Quantity-${line}`) || document.getElementById(`Drawer-quantity-${line}`);
const items = document.querySelectorAll('.cart-item');
if (parsedState.errors) {
quantityElement.value = quantityElement.getAttribute('value');
this.updateLiveRegions(line, parsedState.errors);
return;
}
this.classList.toggle('is-empty', parsedState.item_count === 0);
const cartDrawerWrapper = document.querySelector('cart-drawer');
const cartFooter = document.getElementById('main-cart-footer');
if (cartFooter) cartFooter.classList.toggle('is-empty', parsedState.item_count === 0);
if (cartDrawerWrapper) cartDrawerWrapper.classList.toggle('is-empty', parsedState.item_count === 0);
sectionsToRender.forEach((section) => {
const elementToReplace =
document.getElementById(section.id).querySelector(section.selector) ||
document.getElementById(section.id);
elementToReplace.innerHTML = this.getSectionInnerHTML(
parsedState.sections[section.section],
section.selector
);
});
const updatedValue = parsedState.items[line - 1] ? parsedState.items[line - 1].quantity : undefined;
let message = '';
if (items.length === parsedState.items.length && updatedValue !== parseInt(quantityElement.value)) {
if (typeof updatedValue === 'undefined') {
message = window.cartStrings.error;
} else {
message = window.cartStrings.quantityError.replace('[quantity]', updatedValue);
}
}
this.updateLiveRegions(line, message);
const lineItem =
document.getElementById(`CartItem-${line}`) || document.getElementById(`CartDrawer-Item-${line}`);
if (lineItem && lineItem.querySelector(`[name="${name}"]`)) {
cartDrawerWrapper
? trapFocus(cartDrawerWrapper, lineItem.querySelector(`[name="${name}"]`))
: lineItem.querySelector(`[name="${name}"]`).focus();
} else if (parsedState.item_count === 0 && cartDrawerWrapper?.querySelector('.drawer__inner-empty')) {
trapFocus(cartDrawerWrapper.querySelector('.drawer__inner-empty'), cartDrawerWrapper.querySelector('a'));
} else if (document.querySelector('.cart-item') && cartDrawerWrapper) {
trapFocus(cartDrawerWrapper, document.querySelector('.cart-item__name'));
}
});
publish(PUB_SUB_EVENTS.cartUpdate, { source: 'cart-items', cartData: parsedState, variantId: variantId });
})
.catch((e) => {
this.querySelectorAll('.loading__spinner').forEach((overlay) => overlay.classList.add('hidden'));
const errors = document.getElementById('cart-errors') || document.getElementById('CartDrawer-CartErrors');
if (errors) errors.textContent = window.cartStrings.error;
this.dispatchCartErrorEvent(window.cartStrings.error, 'SERVICE_UNAVAILABLE');
linesUpdateDeferred?.reject(e);
})
.finally(() => {
this.disableLoading(line);
CartPerformance.measureFromMarker(`${eventTarget}:user-action`, cartPerformanceUpdateMarker);
});
}
createCartLinesUpdateEvent(action, variantId, quantity, lineKey) {
const { CartLinesUpdateEvent } = window.StandardEvents || {};
if (!CartLinesUpdateEvent || !variantId) return null;
// No AJAX line key on the row — likely cached HTML rendered before this
// attribute landed. Skip dispatch rather than emit an event with id: ''.
if (!lineKey) return null;
const deferred = CartLinesUpdateEvent.createPromise();
this.dispatchEvent(
new CartLinesUpdateEvent({
action,
context: 'cart',
lines: [{ id: lineKey, quantity }],
promise: deferred.promise,
})
);
return deferred;
}
resolveCartLinesUpdate(deferred, parsedState) {
if (!deferred) return;
const { CartLinesUpdateEvent } = window.StandardEvents || {};
if (!CartLinesUpdateEvent) return;
deferred.resolve({ cart: CartLinesUpdateEvent.createCartFromAjaxResponse(parsedState) });
}
dispatchCartErrorEvent(message, code) {
const { CartErrorEvent } = window.StandardEvents || {};
if (!CartErrorEvent) return;
this.dispatchEvent(new CartErrorEvent({ error: message, code }));
}
updateLiveRegions(line, message) {
const lineItemError =
document.getElementById(`Line-item-error-${line}`) || document.getElementById(`CartDrawer-LineItemError-${line}`);
if (lineItemError) lineItemError.querySelector('.cart-item__error-text').textContent = message;
this.lineItemStatusElement.setAttribute('aria-hidden', true);
const cartStatus =
document.getElementById('cart-live-region-text') || document.getElementById('CartDrawer-LiveRegionText');
cartStatus.setAttribute('aria-hidden', false);
setTimeout(() => {
cartStatus.setAttribute('aria-hidden', true);
}, 1000);
}
getSectionInnerHTML(html, selector) {
return new DOMParser().parseFromString(html, 'text/html').querySelector(selector).innerHTML;
}
enableLoading(line) {
const mainCartItems = document.getElementById('main-cart-items') || document.getElementById('CartDrawer-CartItems');
mainCartItems.classList.add('cart__items--disabled');
const cartItemElements = this.querySelectorAll(`#CartItem-${line} .loading__spinner`);
const cartDrawerItemElements = this.querySelectorAll(`#CartDrawer-Item-${line} .loading__spinner`);
[...cartItemElements, ...cartDrawerItemElements].forEach((overlay) => overlay.classList.remove('hidden'));
document.activeElement.blur();
this.lineItemStatusElement.setAttribute('aria-hidden', false);
}
disableLoading(line) {
const mainCartItems = document.getElementById('main-cart-items') || document.getElementById('CartDrawer-CartItems');
mainCartItems.classList.remove('cart__items--disabled');
const cartItemElements = this.querySelectorAll(`#CartItem-${line} .loading__spinner`);
const cartDrawerItemElements = this.querySelectorAll(`#CartDrawer-Item-${line} .loading__spinner`);
cartItemElements.forEach((overlay) => overlay.classList.add('hidden'));
cartDrawerItemElements.forEach((overlay) => overlay.classList.add('hidden'));
}
}
customElements.define('cart-items', CartItems);
if (!customElements.get('cart-note')) {
customElements.define(
'cart-note',
class CartNote extends HTMLElement {
constructor() {
super();
this.addEventListener(
'input',
debounce((event) => {
const newNote = event.target.value;
const noteDeferred = this.dispatchNoteUpdateEvent(newNote);
const body = JSON.stringify({ note: newNote });
fetch(`${routes.cart_update_url}`, { ...fetchConfig(), ...{ body } })
.then((r) => r.json())
.then((cart) => {
if (!cart || cart.errors) {
throw Object.assign(new Error(cart?.errors), { code: 'INVALID' });
}
if (noteDeferred) {
const { CartNoteUpdateEvent } = window.StandardEvents || {};
if (CartNoteUpdateEvent) {
noteDeferred.resolve({ cart: CartNoteUpdateEvent.createCartFromAjaxResponse(cart) });
}
}
CartPerformance.measureFromEvent('note-update:user-action', event);
})
.catch((e) => {
noteDeferred?.reject(e);
const { CartErrorEvent } = window.StandardEvents || {};
if (CartErrorEvent) {
this.dispatchEvent(
new CartErrorEvent({
error: e.message || 'Note update failed',
code: e.code || 'SERVICE_UNAVAILABLE',
})
);
}
});
}, ON_CHANGE_DEBOUNCE_TIMER)
);
}
dispatchNoteUpdateEvent(newNote) {
const { CartNoteUpdateEvent } = window.StandardEvents || {};
if (!CartNoteUpdateEvent) return null;
const context = this.closest('dialog') || this.closest('cart-drawer') ? 'dialog' : 'cart';
const deferred = CartNoteUpdateEvent.createPromise();
this.dispatchEvent(
new CartNoteUpdateEvent({
context,
note: newNote,
promise: deferred.promise,
})
);
return deferred;
}
}
);
}
+202
View File
@@ -0,0 +1,202 @@
.collage-wrapper-title {
margin-top: 0;
margin-bottom: 3rem;
}
.collage {
display: grid;
}
.collage__item > * {
width: 100%;
}
.collage__item .card__content {
flex-grow: initial;
}
@media screen and (max-width: 749px) {
.collage {
grid-column-gap: var(--grid-mobile-horizontal-spacing);
grid-row-gap: var(--grid-mobile-vertical-spacing);
}
.collage--mobile {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.collage--mobile .collage__item--left:nth-child(3n - 2) {
grid-column: span 2;
}
.collage--mobile .collage__item--left:nth-child(3n - 2):nth-last-child(2) {
grid-column: span 1;
}
.collage--mobile .collage__item--left:nth-child(3n) {
grid-column-start: 2;
}
.collage--mobile .collage__item--right:nth-child(3n - 2) {
grid-column-start: 1;
}
.collage--mobile .collage__item--right:nth-child(3n - 2):last-child {
grid-column: span 2;
}
.collage--mobile .collage__item--right:nth-child(3n - 1) {
grid-column-start: 2;
}
.collage--mobile .collage__item--right:nth-child(3n) {
grid-column: 1 / span 2;
}
}
@media screen and (min-width: 750px) {
.collage {
grid-auto-flow: column;
grid-column-gap: var(--grid-desktop-horizontal-spacing);
grid-row-gap: var(--grid-desktop-vertical-spacing);
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.collage__item--left:nth-child(3n - 2) {
grid-column: 1 / span 2;
grid-row: span 2;
}
.collage__item--left:nth-child(3n - 2):last-child {
grid-column: 1 / span 3;
}
.collage__item--left:nth-child(3n - 1),
.collage__item--left:nth-child(3n) {
grid-column-start: 3;
}
.collage__item--left:nth-child(3n - 1):last-child {
grid-row: span 2;
}
.collage__item--right:nth-child(3n - 2) {
grid-column: 1 / span 1;
grid-row: span 1;
}
.collage__item--right:nth-child(3n - 2):last-child {
grid-column: 1 / span 3;
}
.collage__item--right:nth-child(3n - 1) {
grid-column-start: 1;
}
.collage__item--right:nth-child(3n-1):last-child {
grid-column: span 2;
}
.collage__item--right:nth-child(3n) {
grid-column: 2 / span 2;
grid-row: span 2;
}
.collage__item--collection:only-child,
.collage__item--product:only-child {
justify-self: center;
max-width: 73rem;
width: 100%;
}
}
.collage-card {
height: 100%;
position: relative;
border-radius: var(--border-radius);
border: var(--border-width) solid rgba(var(--color-foreground), var(--border-opacity));
padding: var(--image-padding);
}
/* Needed for gradient continuity with or without animation, background-attachment: local scopes the gradient to its container which happens automatically when a transform is applied (animation on scroll) */
.collage-card.gradient {
transform: perspective(0);
}
.collage-card:after {
content: '';
position: absolute;
z-index: -1;
border-radius: var(--border-radius);
box-shadow: var(--shadow-horizontal-offset) var(--shadow-vertical-offset) var(--shadow-blur-radius)
rgba(var(--color-shadow), var(--shadow-opacity));
width: calc(var(--border-width) * 2 + 100%);
height: calc(var(--border-width) * 2 + 100%);
top: calc(var(--border-width) * -1);
left: calc(var(--border-width) * -1);
}
.collage-card.product-card-wrapper {
--border-radius: var(--product-card-corner-radius);
--border-width: var(--product-card-border-width);
--border-opacity: var(--product-card-border-opacity);
--shadow-horizontal-offset: var(--product-card-shadow-horizontal-offset);
--shadow-vertical-offset: var(--product-card-shadow-vertical-offset);
--shadow-blur-radius: var(--product-card-shadow-blur-radius);
--shadow-opacity: var(--product-card-shadow-opacity);
--shadow-visible: var(--product-card-shadow-visible);
--image-padding: var(--product-card-image-padding);
}
.collage-card .media {
height: 100%;
overflow: hidden;
border-radius: calc(var(--border-radius) - var(--border-width) - var(--image-padding));
}
.collage-card .deferred-media {
height: 100%;
overflow: visible;
}
.collage-card__link {
display: block;
height: 100%;
}
.collage-card .deferred-media__poster {
background-color: transparent;
border: 0;
}
.collage-card .deferred-media__poster:after {
content: '';
position: absolute;
z-index: 1;
outline-offset: 0.3rem;
bottom: calc(var(--border-width) * -1);
left: calc(var(--border-width) * -1);
right: calc(var(--border-width) * -1);
top: calc(var(--border-width) * -1);
}
.collage-card .deferred-media__poster:focus:after {
box-shadow: 0 0 0 0.3rem rgb(var(--color-background)), 0 0 0.5rem 0.4rem rgba(var(--color-foreground), 0.3);
outline: 0.2rem solid rgba(var(--color-foreground), 0.5);
}
.collage-card .deferred-media__poster:focus-visible:after {
box-shadow: 0 0 0 0.3rem rgb(var(--color-background)), 0 0 0.5rem 0.4rem rgba(var(--color-foreground), 0.3);
outline: 0.2rem solid rgba(var(--color-foreground), 0.5);
}
.collage-card .deferred-media__poster:focus:not(:focus-visible),
.collage-card .deferred-media__poster:focus:not(:focus-visible):after {
outline: none;
box-shadow: none;
}
.collage-card .deferred-media__poster:focus {
outline: none;
box-shadow: none;
}
+128
View File
@@ -0,0 +1,128 @@
.collapsible-content {
position: relative;
z-index: 0;
}
.collapsible-section-layout {
padding-bottom: 5rem;
padding-top: 5rem;
}
@media screen and (min-width: 750px) {
.collapsible-section-layout {
padding-bottom: 7rem;
padding-top: 7rem;
}
}
/* Needed for gradient continuity with or without animation so that transparent PNG images come up as we would expect */
.collapsible-content__media {
background: transparent;
}
.collapsible-content__media--small {
height: 19.4rem;
}
.collapsible-content__media--large {
height: 43.5rem;
}
@media screen and (min-width: 750px) {
.collapsible-content__media--small {
height: 31.4rem;
}
.collapsible-content__media--large {
height: 69.5rem;
}
}
@media screen and (min-width: 750px) {
.collapsible-content__grid--reverse {
flex-direction: row-reverse;
}
}
.collapsible-content-wrapper-narrow {
margin: 0 auto;
padding-right: 1.5rem;
padding-left: 1.5rem;
max-width: 73.4rem;
}
.collapsible-content__header {
word-break: break-word;
}
.collapsible-content__heading {
margin-bottom: 2rem;
margin-top: 0;
}
@media screen and (min-width: 750px) {
.collapsible-content__heading {
margin-bottom: 3rem;
}
}
.collapsible-none-layout .accordion + .accordion {
border-top: 0;
}
.collapsible-row-layout .accordion:not(:first-child):not(.color-scheme-1) {
margin-top: 1rem;
}
.caption-with-letter-spacing + h2 {
margin-top: 1rem;
}
@media screen and (min-width: 750px) {
.collapsible-content .accordion {
margin-top: 0;
}
}
.collapsible-row-layout .accordion {
border: var(--text-boxes-border-width) solid rgba(var(--color-foreground), var(--text-boxes-border-opacity));
margin-bottom: 1.5rem;
/* Needed for gradient continuity with or without animation, the transform scopes the gradient to its container which happens already when animation are turned on */
transform: perspective(0);
}
.collapsible-row-layout .accordion summary,
.collapsible-row-layout .accordion .accordion__content {
padding: 1.5rem;
}
.collapsible-row-layout .accordion .accordion__content {
padding-top: 0;
}
.collapsible-content summary:hover {
background: rgba(var(--color-foreground), 0.04);
}
.collapsible-content summary:hover .accordion__title {
text-decoration: underline;
text-underline-offset: 0.3rem;
}
/* check for flexbox gap in older Safari versions */
@supports not (inset: 10px) {
@media screen and (min-width: 750px) {
.collapsible-content__grid:not(.collapsible-content__grid--reverse) .grid__item:last-child,
.collapsible-content__grid--reverse .collapsible-content__grid-item {
padding-left: 5rem;
padding-right: 0;
}
}
@media screen and (min-width: 990px) {
.collapsible-content__grid:not(.collapsible-content__grid--reverse) .grid__item:last-child,
.collapsible-content__grid--reverse .collapsible-content__grid-item {
padding-left: 7rem;
}
}
}
+58
View File
@@ -0,0 +1,58 @@
.accordion summary {
display: flex;
position: relative;
line-height: 1;
padding: 1.5rem 0;
}
.accordion .summary__title {
display: flex;
flex: 1;
}
.accordion .summary__title + .icon-caret {
height: calc(var(--font-heading-scale) * 0.6rem);
}
.accordion + .accordion {
margin-top: 0;
border-top: none;
}
.accordion {
margin-top: 2.5rem;
margin-bottom: 0;
border-top: 0.1rem solid rgba(var(--color-foreground), 0.08);
border-bottom: 0.1rem solid rgba(var(--color-foreground), 0.08);
}
.accordion__title {
display: inline-block;
max-width: calc(100% - 6rem);
min-height: 1.6rem;
margin: 0;
word-break: break-word;
}
.accordion .svg-wrapper {
align-self: center;
fill: rgb(var(--color-foreground));
height: calc(var(--font-heading-scale) * 2rem);
margin-right: calc(var(--font-heading-scale) * 1rem);
width: calc(var(--font-heading-scale) * 2rem);
}
.accordion details[open] > summary .icon-caret {
transform: rotate(180deg);
}
.accordion__content {
margin-bottom: 1.5rem;
word-break: break-word;
overflow-x: auto;
padding: 0 0.6rem;
}
.accordion__content img {
max-width: 100%;
}
+142
View File
@@ -0,0 +1,142 @@
@media screen and (max-width: 749px) {
.articles-wrapper .article {
width: 100%;
}
}
.article {
display: flex;
align-items: center;
}
.article.grid__item {
padding: 0;
}
.grid--peek .article-card {
box-sizing: border-box;
}
.article-card__image-wrapper > a {
display: block;
}
.article-card__title {
text-decoration: none;
word-break: break-word;
}
.article-card__title a:after {
bottom: 0;
content: '';
height: 100%;
left: 0;
position: absolute;
right: 0;
top: 0;
width: 100%;
z-index: 1;
}
.article-card__link.link {
padding: 0;
}
.article-card__link {
text-underline-offset: 0.3rem;
}
.article-card .card__heading {
margin-bottom: 0.6rem;
}
.blog-articles .article-card .card__information,
.blog__posts .article-card .card__information {
padding-left: 2rem;
padding-right: 2rem;
}
.article-card__info {
padding-top: 0.4rem;
}
.article-card__footer {
letter-spacing: 0.1rem;
font-size: 1.4rem;
}
.article-card__footer:not(:last-child) {
margin-bottom: 1rem;
}
.article-card__footer:last-child {
margin-top: auto;
}
.article-card__excerpt {
width: 100%;
margin-top: 1.2rem;
}
.article-card__link:not(:only-child) {
margin-right: 3rem;
}
@media screen and (min-width: 990px) {
.article-card__link:not(:only-child) {
margin-right: 4rem;
}
}
.article-card__image--small .ratio::before {
padding-bottom: 11rem;
}
.article-card__image--medium .ratio::before {
padding-bottom: 22rem;
}
.article-card__image--large .ratio::before {
padding-bottom: 33rem;
}
@media screen and (min-width: 750px) {
.article-card__image--small .ratio::before {
padding-bottom: 14.3rem;
}
.article-card__image--medium .ratio::before {
padding-bottom: 21.9rem;
}
.article-card__image--large .ratio::before {
padding-bottom: 27.5rem;
}
}
@media screen and (min-width: 990px) {
.article-card__image--small .ratio::before {
padding-bottom: 17.7rem;
}
.article-card__image--medium .ratio::before {
padding-bottom: 30.7rem;
}
.article-card__image--large .ratio::before {
padding-bottom: 40.7rem;
}
}
/* check for flexbox gap in older Safari versions */
@supports not (inset: 10px) {
.articles-wrapper.grid {
margin: 0 0 5rem 0;
}
@media screen and (min-width: 750px) {
.articles-wrapper.grid {
margin-bottom: 7rem;
}
}
}
+595
View File
@@ -0,0 +1,595 @@
.card-wrapper {
color: inherit;
height: 100%;
position: relative;
text-decoration: none;
}
.card {
text-decoration: none;
text-align: var(--text-alignment);
}
.card:not(.ratio) {
display: flex;
flex-direction: column;
height: 100%;
}
.card.card--horizontal {
--text-alignment: left;
--image-padding: 0rem;
flex-direction: row;
align-items: flex-start;
gap: 1.5rem;
}
.card--horizontal.ratio:before {
padding-bottom: 0;
}
.card--card.card--horizontal {
padding: 1.2rem;
}
.card--card.card--horizontal.card--text {
column-gap: 0;
}
.card--card {
height: 100%;
}
.card--card,
.card--standard .card__inner {
position: relative;
box-sizing: border-box;
border-radius: var(--border-radius);
border: var(--border-width) solid rgba(var(--color-foreground), var(--border-opacity));
}
.card--card:after,
.card--standard .card__inner:after {
content: '';
position: absolute;
z-index: -1;
width: calc(var(--border-width) * 2 + 100%);
height: calc(var(--border-width) * 2 + 100%);
top: calc(var(--border-width) * -1);
left: calc(var(--border-width) * -1);
border-radius: var(--border-radius);
box-shadow: var(--shadow-horizontal-offset) var(--shadow-vertical-offset) var(--shadow-blur-radius)
rgba(var(--color-shadow), var(--shadow-opacity));
}
/* Needed for gradient continuity with or without animation, the transform scopes the gradient to its container which happens already when animation are turned on */
.card--card.gradient,
.card__inner.gradient {
transform: perspective(0);
}
/* Needed for gradient continuity with or without animation so that transparent PNG images come up as we would expect */
.card__inner.color-scheme-1 {
background: transparent;
}
.card .card__inner .card__media {
overflow: hidden;
/* Fix for Safari border bug on hover */
z-index: 0;
border-radius: calc(var(--border-radius) - var(--border-width) - var(--image-padding));
}
.card--card .card__inner .card__media {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.card--standard.card--text {
background-color: transparent;
}
.card-information {
text-align: var(--text-alignment);
}
.card__media,
.card .media {
bottom: 0;
position: absolute;
top: 0;
}
.card .media {
width: 100%;
}
.card__media {
margin: var(--image-padding);
width: calc(100% - 2 * var(--image-padding));
}
.card--standard .card__media {
margin: var(--image-padding);
}
.card__inner {
width: 100%;
}
.card--media .card__inner .card__content {
position: relative;
padding: calc(var(--image-padding) + 1rem);
}
.card__content {
display: grid;
grid-template-rows: minmax(0, 1fr) max-content minmax(0, 1fr);
padding: 1rem;
width: 100%;
flex-grow: 1;
}
.card__content--auto-margins {
grid-template-rows: minmax(0, auto) max-content minmax(0, auto);
}
.card__information {
grid-row-start: 2;
padding: 1.3rem 1rem;
}
.card:not(.ratio) > .card__content {
grid-template-rows: max-content minmax(0, 1fr) max-content auto;
}
.card-information .card__information-volume-pricing-note {
margin-top: 0.6rem;
line-height: calc(0.5 + 0.4 / var(--font-body-scale));
color: rgba(var(--color-foreground), 0.75);
}
.card__information-volume-pricing-note--button,
.card__information-volume-pricing-note--button.quantity-popover__info-button--icon-with-label {
position: relative;
z-index: 1;
cursor: pointer;
padding: 0;
margin: 0;
text-align: var(--text-alignment);
min-width: auto;
}
.card__information-volume-pricing-note--button:hover {
text-decoration: underline;
}
.card__information-volume-pricing-note--button + .global-settings-popup.quantity-popover__info {
transform: initial;
top: auto;
bottom: 4rem;
max-width: 20rem;
width: calc(95% + 2rem);
}
.card__information-volume-pricing-note--button + .global-settings-popup.quantity-popover__info span:first-of-type {
padding-right: 0.3rem;
}
.card__information-volume-pricing-note--button-right + .global-settings-popup.quantity-popover__info {
right: 0;
left: auto;
}
.card__information-volume-pricing-note--button-center + .global-settings-popup.quantity-popover__info {
left: 50%;
transform: translate(-50%);
}
.card__information-volume-pricing-note--button + .global-settings-popup.quantity-popover__info .quantity__rules {
text-align: left;
}
@media screen and (min-width: 990px) {
.grid--6-col-desktop .card__content quick-add-bulk .quantity {
width: auto;
}
.grid--6-col-desktop .card__content quick-add-bulk .quantity__button {
width: calc(3rem / var(--font-body-scale));
}
.grid--6-col-desktop .card__information-volume-pricing-note--button + .global-settings-popup.quantity-popover__info {
left: 50%;
transform: translate(-50%);
width: calc(100% + var(--border-width) + 3.5rem);
}
.grid--6-col-desktop
.card--standard
.card__information-volume-pricing-note--button
+ .global-settings-popup.quantity-popover__info {
width: calc(100% + var(--border-width) + 1rem);
}
}
@media screen and (max-width: 749px) {
.grid--2-col-tablet-down .card__content quick-add-bulk .quantity__button {
width: calc(3.5rem / var(--font-body-scale));
}
.grid--2-col-tablet-down
.card--card
.card__information-volume-pricing-note--button
+ .global-settings-popup.quantity-popover__info,
.grid--2-col-tablet-down
.card--standard
.card__information-volume-pricing-note--button
+ .global-settings-popup.quantity-popover__info {
left: 50%;
transform: translate(-50%);
}
.grid--2-col-tablet-down
.card--standard
.card__information-volume-pricing-note--button
+ .global-settings-popup.quantity-popover__info {
width: 100%;
}
.grid--2-col-tablet-down
.card--card
.card__information-volume-pricing-note--button
+ .global-settings-popup.quantity-popover__info {
width: calc(100% + var(--border-width) + 4rem);
}
.grid--2-col-tablet-down .card__content quick-add-bulk .quantity {
width: auto;
}
}
.card-information quantity-popover volume-pricing {
margin-top: 0;
}
@media screen and (max-width: 989px) {
.card-information quantity-popover .quantity__rules ~ volume-pricing {
margin-top: 0;
}
.card-information quantity-popover volume-pricing {
margin-top: 4.2rem;
}
}
@media screen and (min-width: 750px) {
.card__information {
padding-bottom: 1.7rem;
padding-top: 1.7rem;
}
}
.card__badge {
align-self: flex-end;
grid-row-start: 3;
justify-self: flex-start;
}
.card__badge.top {
align-self: flex-start;
grid-row-start: 1;
}
.card__badge.right {
justify-self: flex-end;
}
.card:not(.card--horizontal) > .card__content > .card__badge {
margin: 1.3rem;
}
.card__media .media img {
height: 100%;
object-fit: cover;
object-position: center center;
width: 100%;
}
.card__inner:not(.ratio) > .card__content {
height: 100%;
}
.card__heading {
margin-top: 0;
margin-bottom: 0;
}
.card__heading:last-child {
margin-bottom: 0;
}
.card--horizontal .card__heading,
.card--horizontal .price__container .price-item,
.card--horizontal__quick-add {
font-size: calc(var(--font-heading-scale) * 1.2rem);
}
.card--horizontal
.card-information
> *:not(.visually-hidden:first-child)
+ *:not(.rating):not(.card__information-volume-pricing-note) {
margin-top: 0;
}
.card--horizontal__quick-add:before {
box-shadow: none;
}
@media only screen and (min-width: 750px) {
.card--horizontal .card__heading,
.card--horizontal .price__container .price-item,
.card--horizontal__quick-add {
font-size: calc(var(--font-heading-scale) * 1.3rem);
}
}
.card--card.card--media > .card__content {
margin-top: calc(0rem - var(--image-padding));
}
.card--standard.card--text a::after,
.card--card .card__heading a::after {
bottom: calc(var(--border-width) * -1);
left: calc(var(--border-width) * -1);
right: calc(var(--border-width) * -1);
top: calc(var(--border-width) * -1);
}
.card__heading a::after {
bottom: 0;
content: '';
left: 0;
position: absolute;
right: 0;
top: 0;
z-index: 1;
}
.card__heading a:after {
outline-offset: 0.3rem;
}
.card__heading a:focus:after {
box-shadow: 0 0 0 0.3rem rgb(var(--color-background)), 0 0 0.5rem 0.4rem rgba(var(--color-foreground), 0.3);
outline: 0.2rem solid rgba(var(--color-foreground), 0.5);
}
.card__heading a:focus-visible:after {
box-shadow: 0 0 0 0.3rem rgb(var(--color-background)), 0 0 0.5rem 0.4rem rgba(var(--color-foreground), 0.3);
outline: 0.2rem solid rgba(var(--color-foreground), 0.5);
}
.card__heading a:focus:not(:focus-visible):after {
box-shadow: none;
outline: 0;
}
.card__heading a:focus {
box-shadow: none;
outline: 0;
}
@media screen and (min-width: 990px) {
.card .media.media--hover-effect > img:only-child,
.card-wrapper .media.media--hover-effect > img:only-child {
transition: transform var(--duration-long) ease;
}
.card:hover .media.media--hover-effect > img:first-child:only-child,
.card-wrapper:hover .media.media--hover-effect > img:first-child:only-child {
transform: scale(1.03);
}
.card-wrapper:hover .media.media--hover-effect > img:first-child:not(:only-child) {
opacity: 0;
}
.card-wrapper:hover .media.media--hover-effect > img + img {
opacity: 1;
transition: transform var(--duration-long) ease;
transform: scale(1.03);
}
.underline-links-hover:hover a {
text-decoration: underline;
text-underline-offset: 0.3rem;
}
}
.card--standard.card--media .card__inner .card__information,
.card--standard.card--text:not(.card--horizontal) > .card__content .card__heading:not(.card__heading--placeholder),
.card--standard:not(.card--horizontal) > .card__content .card__badge,
.card--standard.card--text.article-card > .card__content .card__information,
.card--standard > .card__content .card__caption {
display: none;
}
.card--standard:not(.card--horizontal) .placeholder-svg {
width: 100%;
}
.card--standard > .card__content {
padding: 0;
}
.card--standard > .card__content .card__information {
padding-left: 0;
padding-right: 0;
}
.card--card.card--media .card__inner .card__information,
.card--card.card--text .card__inner,
.card--card.card--media > .card__content .card__badge {
display: none;
}
.card--horizontal .card__badge,
.card--horizontal.card--text .card__inner {
display: none;
}
.card--extend-height {
height: 100%;
}
.card--extend-height.card--standard.card--text,
.card--extend-height.card--media {
display: flex;
flex-direction: column;
}
.card--extend-height.card--standard.card--text .card__inner,
.card--extend-height.card--media .card__inner {
flex-grow: 1;
}
.card .icon-wrap {
margin-left: 0.8rem;
white-space: nowrap;
transition: transform var(--duration-short) ease;
overflow: hidden;
}
.card-information > * + * {
margin-top: 0.5rem;
}
.card-information {
width: 100%;
}
.card-information > * {
line-height: calc(1 + 0.4 / var(--font-body-scale));
color: rgb(var(--color-foreground));
}
.card-information > .price {
color: rgb(var(--color-foreground));
}
.card--horizontal .card-information > .price {
color: rgba(var(--color-foreground), 0.75);
}
.card-information > .rating {
margin-top: 0.4rem;
}
/* Specificity needed due to the changes below */
.card-information
> *:not(.visually-hidden:first-child)
+ quantity-popover:not(.rating):not(.card__information-volume-pricing-note),
.card-information .card__information-volume-pricing-note.card__information-volume-pricing-note--button {
margin-top: 0;
}
.card-information > *:not(.visually-hidden:first-child) + *:not(.rating):not(.card__information-volume-pricing-note) {
margin-top: 0.7rem;
}
.card-information .caption {
letter-spacing: 0.07rem;
}
.card-article-info {
margin-top: 1rem;
}
/* Card Shapes */
.card--shape .card__content {
padding-top: 0;
}
.card--shape.card--standard:not(.card--text) .card__inner {
border: 0;
/* Border is not currently compatible with image shapes for standard cards. */
background-color: transparent;
filter: drop-shadow(
var(--shadow-horizontal-offset) var(--shadow-vertical-offset) var(--shadow-blur-radius)
rgba(var(--color-shadow), var(--shadow-opacity))
);
}
.card--shape.card--standard:not(.card--text) .card__inner:after {
display: none;
}
.grid__item:nth-child(2n) .shape--blob {
clip-path: polygon(var(--shape--blob-2));
}
.grid__item:nth-child(3n) .shape--blob {
clip-path: polygon(var(--shape--blob-3));
}
.grid__item:nth-child(4n) .shape--blob {
clip-path: polygon(var(--shape--blob-4));
}
.grid__item:nth-child(5n) .shape--blob {
clip-path: polygon(var(--shape--blob-5));
}
.grid__item:nth-child(7n) .shape--blob {
clip-path: polygon(var(--shape--blob-6));
}
.grid__item:nth-child(8n) .shape--blob {
clip-path: polygon(var(--shape--blob-1));
}
/* Card Shape Hover Rules */
@media (prefers-reduced-motion: no-preference) {
.product-card-wrapper .shape--round {
transition: clip-path var(--duration-long) ease;
}
.product-card-wrapper:hover .shape--round {
clip-path: ellipse(47% 47% at 50% 50%);
}
.product-card-wrapper .shape--blob {
transition: clip-path var(--duration-long) ease-in-out;
}
.product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-5));
}
.grid__item:nth-child(2n) .product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-6));
}
.grid__item:nth-child(3n) .product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-1));
}
.grid__item:nth-child(4n) .product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-2));
}
.grid__item:nth-child(5n) .product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-3));
}
.grid__item:nth-child(7n) .product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-4));
}
.grid__item:nth-child(8n) .product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-5));
}
}
+414
View File
@@ -0,0 +1,414 @@
.drawer {
position: fixed;
z-index: 1000;
left: 0;
top: 0;
width: 100vw;
height: 100%;
display: flex;
justify-content: flex-end;
background-color: rgba(var(--color-foreground), 0.5);
transition: visibility var(--duration-default) ease;
}
.drawer.active {
visibility: visible;
}
.drawer__inner {
height: 100%;
width: 40rem;
max-width: calc(100vw - 3rem);
padding: 0 1.5rem;
border: 0.1rem solid rgba(var(--color-foreground), 0.2);
border-right: 0;
overflow: hidden;
display: flex;
flex-direction: column;
transform: translateX(100%);
transition: transform var(--duration-default) ease;
}
.drawer__inner-empty {
height: 100%;
padding: 0 1.5rem;
overflow: hidden;
display: flex;
flex-direction: column;
}
.cart-drawer__warnings {
display: flex;
flex-direction: column;
flex: 1;
justify-content: center;
}
cart-drawer.is-empty .drawer__inner {
display: grid;
grid-template-rows: 1fr;
align-items: center;
padding: 0;
}
cart-drawer.is-empty .drawer__header {
display: none;
}
cart-drawer:not(.is-empty) .cart-drawer__warnings,
cart-drawer:not(.is-empty) .cart-drawer__collection {
display: none;
}
.cart-drawer__warnings--has-collection .cart__login-title {
margin-top: 2.5rem;
}
.drawer.active .drawer__inner {
transform: translateX(0);
}
.drawer__header {
position: relative;
padding: 1.5rem 0;
display: flex;
justify-content: space-between;
align-items: center;
}
.drawer__heading {
margin: 0 0 1rem;
}
.drawer__close {
display: inline-block;
padding: 0;
min-width: 4.4rem;
min-height: 4.4rem;
box-shadow: 0 0 0 0.2rem rgba(var(--color-button), 0);
position: absolute;
top: 10px;
right: -10px;
color: rgb(var(--color-foreground));
background-color: transparent;
border: none;
cursor: pointer;
}
.cart-drawer__warnings .drawer__close {
right: 5px;
}
.drawer__close .svg-wrapper {
height: 2rem;
width: 2rem;
}
.drawer__contents {
flex-grow: 1;
display: flex;
flex-direction: column;
}
.drawer__footer {
border-top: 0.1rem solid rgba(var(--color-foreground), 0.2);
padding: 1.5rem 0;
}
cart-drawer-items.is-empty + .drawer__footer {
display: none;
}
.drawer__footer > details {
margin-top: -1.5rem;
border-bottom: 0.1rem solid rgba(var(--color-foreground), 0.2);
}
.drawer__footer > details[open] {
padding-bottom: 1.5rem;
}
.drawer__footer summary {
display: flex;
position: relative;
line-height: 1;
padding: 1.5rem 2.8rem 1.5rem 0;
}
.drawer__footer > details + .cart-drawer__footer {
padding-top: 1.5rem;
}
cart-drawer {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100%;
}
.cart-drawer__overlay {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.cart-drawer__overlay:empty {
display: block;
}
.cart-drawer__form {
flex-grow: 1;
display: flex;
flex-wrap: wrap;
}
.cart-drawer__collection {
margin: 0 2.5rem 1.5rem;
}
.cart-drawer .drawer__cart-items-wrapper {
flex-grow: 1;
}
.cart-drawer .cart-items,
.cart-drawer tbody {
display: block;
width: 100%;
}
.cart-drawer thead {
display: inline-table;
width: 100%;
}
cart-drawer-items {
overflow: auto;
flex: 1;
}
@media screen and (max-height: 650px) {
cart-drawer-items {
overflow: visible;
}
.drawer__inner {
overflow: scroll;
}
}
.cart-drawer .cart-item {
display: grid;
grid-template: repeat(2, auto) / repeat(4, 1fr);
gap: 1rem;
margin-bottom: 0;
}
.cart-drawer .cart-item:last-child {
margin-bottom: 1rem;
}
.cart-drawer .cart-item__media {
grid-row: 1 / 3;
}
.cart-drawer .cart-item__image {
max-width: 100%;
}
.cart-drawer .cart-item__nested-line .cart-item__image {
max-width: 60%;
float: right;
}
.cart-drawer .cart-items thead {
margin-bottom: 0.5rem;
}
.cart-drawer .cart-items thead th:first-child,
.cart-drawer .cart-items thead th:last-child {
width: 0;
padding: 0;
}
.cart-drawer .cart-items thead th:nth-child(2) {
width: 50%;
padding-left: 0;
}
.cart-drawer .cart-items thead tr {
display: table-row;
margin-bottom: 0;
}
.cart-drawer .cart-items th {
border-bottom: 0.1rem solid rgba(var(--color-foreground), 0.08);
}
.cart-drawer .cart-item:last-child {
margin-bottom: 1.5rem;
}
.cart-drawer .cart-item .loading__spinner {
right: 5px;
padding-top: 2.5rem;
}
.cart-drawer .cart-items td {
padding-top: 1.7rem;
}
.cart-drawer .cart-items .cart-item__nested-line td:not(.cart-item__quantity) {
padding-top: 1rem;
}
.cart-drawer .cart-item > td + td {
padding-left: 1rem;
}
.cart-drawer .cart-item__details {
width: auto;
grid-column: 2 / 4;
}
.cart-drawer .cart-item__totals {
pointer-events: none;
display: flex;
align-items: flex-start;
justify-content: flex-end;
}
.cart-drawer.cart-drawer .cart-item__price-wrapper > *:only-child {
margin-top: 0;
}
.cart-drawer .cart-item__price-wrapper .cart-item__discounted-prices {
display: flex;
flex-direction: column;
gap: 0.6rem;
}
.cart-drawer .unit-price {
margin-top: 0.6rem;
}
.cart-drawer .cart-items .cart-item__quantity {
padding-top: 0;
grid-column: 2 / 5;
}
@media screen and (max-width: 749px) {
.cart-drawer .cart-item cart-remove-button {
margin-left: 0;
}
}
.cart-drawer__footer > * + * {
margin-top: 1rem;
}
.cart-drawer .totals {
justify-content: space-between;
}
.cart-drawer .price {
line-height: 1;
}
.cart-drawer .tax-note {
margin: 1.2rem 0 2rem auto;
text-align: left;
}
.cart-drawer .product-option dd {
word-break: break-word;
}
.cart-drawer details[open] > summary .icon-caret {
transform: rotate(180deg);
}
.cart-drawer .cart__checkout-button {
max-width: none;
}
.drawer__footer .cart__dynamic-checkout-buttons {
max-width: 100%;
}
.drawer__footer #dynamic-checkout-cart ul {
flex-wrap: wrap !important;
flex-direction: row !important;
margin: 0.5rem -0.5rem 0 0 !important;
gap: 0.5rem;
}
.drawer__footer [data-shopify-buttoncontainer] {
justify-content: flex-start;
}
.drawer__footer #dynamic-checkout-cart ul > li {
flex-basis: calc(50% - 0.5rem) !important;
margin: 0 !important;
}
.drawer__footer #dynamic-checkout-cart ul > li:only-child {
flex-basis: 100% !important;
margin-right: 0.5rem !important;
}
@media screen and (min-width: 750px) {
.drawer__footer #dynamic-checkout-cart ul > li {
flex-basis: calc(100% / 3 - 0.5rem) !important;
margin: 0 !important;
}
.drawer__footer #dynamic-checkout-cart ul > li:first-child:nth-last-child(2),
.drawer__footer #dynamic-checkout-cart ul > li:first-child:nth-last-child(2) ~ li,
.drawer__footer #dynamic-checkout-cart ul > li:first-child:nth-last-child(4),
.drawer__footer #dynamic-checkout-cart ul > li:first-child:nth-last-child(4) ~ li {
flex-basis: calc(50% - 0.5rem) !important;
}
}
cart-drawer-items::-webkit-scrollbar {
width: 3px;
}
cart-drawer-items::-webkit-scrollbar-thumb {
background-color: rgba(var(--color-foreground), 0.7);
border-radius: 100px;
}
cart-drawer-items::-webkit-scrollbar-track-piece {
margin-top: 31px;
}
.cart-drawer .quantity-popover-container {
padding: 0;
}
.cart-drawer .quantity-popover__info.global-settings-popup {
transform: translateY(0);
top: 100%;
}
.cart-drawer .cart-item__error {
margin-top: 0.8rem;
}
.cart-drawer .quantity-popover__info + .cart-item__error {
margin-top: 0.2rem;
}
@media screen and (min-width: 750px) {
.cart-drawer .cart-item__quantity--info quantity-popover > * {
padding-left: 0;
}
.cart-drawer .cart-item__error {
margin-left: 0;
}
}
+624
View File
@@ -0,0 +1,624 @@
cart-items .title-wrapper-with-link {
margin-top: 0;
}
.cart-items td,
.cart-items th {
padding: 0;
border: none;
}
.cart-items th {
text-align: left;
padding-bottom: 1.8rem;
opacity: 0.85;
font-weight: normal;
}
.cart-item__quantity-wrapper {
display: flex;
}
.cart-item__totals {
position: relative;
}
.cart-items *.right {
text-align: right;
}
.cart-item__image-container {
display: inline-flex;
align-items: flex-start;
}
.cart-item__nested-line .cart-item__image-container {
min-width: calc(10rem / var(--font-body-scale));
justify-content: right;
img {
width: 60%;
}
}
.cart-item__image-container:after {
content: none;
}
.cart-item__image {
height: auto;
max-width: calc(10rem / var(--font-body-scale));
}
@media screen and (min-width: 750px) {
.cart-item__image {
max-width: 100%;
}
}
.cart-item__details {
font-size: 1.6rem;
line-height: calc(1 + 0.4 / var(--font-body-scale));
}
.cart-item__details > * {
margin: 0;
max-width: 30rem;
}
.cart-item__details > * + * {
margin-top: 0.6rem;
}
.cart-item__media {
position: relative;
}
.cart-item__link {
display: block;
bottom: 0;
left: 0;
position: absolute;
right: 0;
top: 0;
width: 100%;
height: 100%;
}
.cart-item__name {
text-decoration: none;
display: block;
}
.cart-item__title {
align-items: flex-start;
display: flex;
font-size: calc(var(--font-heading-scale) * 1.5rem);
gap: 0.6rem;
line-height: calc(1 + 0.3 / max(1, var(--font-heading-scale)));
}
.cart-item__title .cart-item__name {
flex: 0 1 auto;
min-width: 0;
}
.cart-item__disclosure {
appearance: none;
background: none;
border: 0;
color: inherit;
cursor: pointer;
display: inline-flex;
flex: 0 0 auto;
font: inherit;
line-height: 1;
margin: 0;
padding: 0;
position: relative;
top: 0.2rem;
}
.cart-item__disclosure-indicator {
--icon-stroke-width: 1.2;
color: rgb(var(--color-foreground));
height: 1em;
width: 1em;
}
.cart-item__disclosure-tooltip {
--cart-disclosure-tooltip-symbol-height: 1.3rem;
--cart-disclosure-tooltip-symbol-width: calc(var(--cart-disclosure-tooltip-symbol-height) * 40 / 31);
background-color: rgb(var(--color-background));
border: var(--popup-border-width) solid rgba(var(--color-foreground), var(--popup-border-opacity));
bottom: calc(100% + 0.9rem);
box-shadow: var(--popup-shadow-horizontal-offset) var(--popup-shadow-vertical-offset)
var(--popup-shadow-blur-radius) rgba(var(--color-shadow), var(--popup-shadow-opacity));
color: rgb(var(--color-foreground));
display: flex;
flex-direction: column;
font-family: var(--font-body-family);
font-size: 1.2rem;
font-style: var(--font-body-style);
font-weight: var(--font-body-weight);
gap: 0.6rem;
left: 50%;
letter-spacing: 0;
line-height: 1.35;
max-width: min(36rem, calc(100vw - 4rem));
opacity: 0;
padding: 0.8rem 1rem;
pointer-events: none;
position: absolute;
text-align: left;
transform: translateX(calc(-50% + var(--cart-disclosure-tooltip-shift, 0px)));
transition: opacity var(--duration-short) ease, visibility var(--duration-short) ease;
visibility: hidden;
width: max-content;
z-index: 3;
}
.cart-item__disclosure-tooltip-row {
align-items: flex-start;
column-gap: 0.6rem;
display: grid;
grid-template-columns: var(--cart-disclosure-tooltip-symbol-width) minmax(0, 1fr);
}
.cart-item__disclosure-tooltip-symbol-slot {
align-items: flex-start;
display: inline-flex;
height: var(--cart-disclosure-tooltip-symbol-height);
justify-content: center;
margin-top: 0.16rem;
width: var(--cart-disclosure-tooltip-symbol-width);
}
.cart-item__disclosure-tooltip-symbol {
display: block;
height: 100%;
max-width: 100%;
object-fit: contain;
width: auto;
}
.cart-item__disclosure-tooltip-title {
min-width: 0;
overflow-wrap: anywhere;
white-space: normal;
}
@media (hover: hover) and (pointer: fine) {
.cart-item__disclosure:hover .cart-item__disclosure-tooltip {
opacity: 1;
visibility: visible;
}
}
.cart-disclosure-modal {
align-items: center;
background: rgba(var(--color-foreground), 0.58);
box-sizing: border-box;
display: flex;
height: 100%;
justify-content: center;
left: 0;
opacity: 0;
overflow: auto;
padding: 2rem;
pointer-events: none;
position: fixed;
top: 0;
visibility: hidden;
width: 100%;
z-index: -1;
}
.cart-disclosure-modal[open] {
opacity: 1;
pointer-events: auto;
visibility: visible;
z-index: 1001;
}
.cart-disclosure-modal__content {
background-color: rgb(var(--color-background));
border: var(--popup-border-width) solid rgba(var(--color-foreground), var(--popup-border-opacity));
border-radius: var(--popup-corner-radius);
box-sizing: border-box;
box-shadow: var(--popup-shadow-horizontal-offset) var(--popup-shadow-vertical-offset)
var(--popup-shadow-blur-radius) rgba(var(--color-shadow), var(--popup-shadow-opacity));
color: rgb(var(--color-foreground));
margin: auto;
max-height: calc(100vh - 4rem);
max-width: min(100%, 56rem);
min-width: min(100%, 39rem);
overflow-y: auto;
padding: 2rem;
position: relative;
width: fit-content;
}
.cart-disclosure-modal__close {
align-items: center;
appearance: none;
background: none;
border: 0;
color: rgba(var(--color-foreground), 0.65);
cursor: pointer;
display: flex;
height: 3.6rem;
justify-content: center;
margin: 0;
padding: 0;
position: absolute;
right: 0.8rem;
top: 0.8rem;
width: 3.6rem;
}
.cart-disclosure-modal__close:hover {
color: rgb(var(--color-foreground));
}
.cart-disclosure-modal__close .icon {
height: 1.6rem;
width: 1.6rem;
}
.cart-disclosure-modal__title {
font-family: var(--font-heading-family);
font-size: calc(var(--font-heading-scale) * 1.8rem);
font-weight: var(--font-body-weight-bold);
line-height: calc(1 + 0.3 / max(1, var(--font-heading-scale)));
margin: 0 4rem 1.8rem 0;
}
.cart-disclosure-modal__item + .cart-disclosure-modal__item {
margin-top: 2.4rem;
}
.cart-disclosure-modal__item-header {
--cart-disclosure-modal-symbol-height: 1.8rem;
--cart-disclosure-modal-symbol-width: calc(var(--cart-disclosure-modal-symbol-height) * 40 / 31);
--cart-disclosure-modal-title-font-size: 1.4rem;
--cart-disclosure-modal-title-line-height-ratio: calc(1 + 0.35 / var(--font-body-scale));
--cart-disclosure-modal-title-line-height: calc(
var(--cart-disclosure-modal-title-font-size) * var(--cart-disclosure-modal-title-line-height-ratio)
);
align-items: flex-start;
display: grid;
gap: 0.9rem;
grid-template-columns: var(--cart-disclosure-modal-symbol-width) minmax(0, 1fr);
margin-bottom: 0.8rem;
}
.cart-disclosure-modal__symbol-slot {
align-items: flex-start;
display: inline-flex;
height: var(--cart-disclosure-modal-symbol-height);
justify-content: center;
margin-top: calc(
(var(--cart-disclosure-modal-title-line-height) - var(--cart-disclosure-modal-symbol-height)) / 2
);
width: var(--cart-disclosure-modal-symbol-width);
}
.cart-disclosure-modal__symbol {
display: block;
height: 100%;
max-width: 100%;
object-fit: contain;
width: auto;
}
.cart-disclosure-modal__item-title {
font-size: var(--cart-disclosure-modal-title-font-size);
font-weight: var(--font-body-weight-bold);
line-height: var(--cart-disclosure-modal-title-line-height-ratio);
margin: 0;
}
.cart-disclosure-modal__item-content {
font-size: 1.3rem;
line-height: calc(1 + 0.45 / var(--font-body-scale));
}
.cart-disclosure-modal__item-content p {
margin: 0;
}
.cart-disclosure-modal__item-content p + p {
margin-top: 1rem;
}
@media screen and (max-width: 749px) {
.cart-disclosure-modal {
padding: 1.6rem;
}
.cart-disclosure-modal__content {
max-height: calc(100vh - 3.2rem);
max-width: 100%;
padding: 1.8rem;
}
}
.cart-item__name:hover {
text-decoration: underline;
text-underline-offset: 0.3rem;
text-decoration-thickness: 0.2rem;
}
.cart-item__price-wrapper > * {
display: block;
margin: 0;
padding: 0;
}
.cart-item__discounted-prices dd {
margin: 0;
}
.cart-item__discounted-prices .cart-item__old-price {
font-size: 1.4rem;
}
.cart-item__old-price {
opacity: 0.7;
}
.cart-item__final-price {
font-weight: 400;
}
.product-option {
font-size: 1.4rem;
word-break: break-word;
line-height: calc(1 + 0.5 / var(--font-body-scale));
}
.cart-item cart-remove-button {
display: flex;
margin-left: 1rem;
}
@media screen and (min-width: 750px) and (max-width: 989px) {
.cart-item cart-remove-button {
width: 4.5rem;
height: 4.5rem;
}
}
cart-remove-button .button {
min-width: calc(4.5rem / var(--font-body-scale));
min-height: 4.5rem;
padding: 0;
margin: 0 0.1rem 0.1rem 0;
}
cart-remove-button .button:before,
cart-remove-button .button:after {
content: none;
}
cart-remove-button .button:not([disabled]):hover {
color: rgb(var(--color-foreground));
}
@media screen and (min-width: 750px) {
cart-remove-button .button {
min-width: 3.5rem;
min-height: 3.5rem;
}
}
cart-remove-button .icon-remove {
height: 1.5rem;
width: 1.5rem;
}
.cart-item .loading__spinner {
top: 0;
left: auto;
right: auto;
bottom: 0;
padding: 0;
}
@media screen and (min-width: 750px) {
.cart-item .loading__spinner {
right: 0;
padding-top: 4.5rem;
bottom: auto;
}
}
.cart-item .loading__spinner:not(.hidden) ~ * {
visibility: hidden;
}
.cart-item__error {
display: flex;
align-items: flex-start;
margin-top: 0.2rem;
width: min-content;
min-width: 100%;
}
.cart-item__error-text {
font-size: 1.3rem;
line-height: 1.4;
letter-spacing: 0.04rem;
order: 1;
}
.cart-item__error-text + .svg-wrapper {
flex-shrink: 0;
width: 1.5rem;
height: 1.5rem;
margin-right: 0.7rem;
margin-top: 0.25rem;
}
.cart-item__error-text:empty + .svg-wrapper {
display: none;
}
.product-option + .product-option {
margin-top: 0.4rem;
}
.product-option * {
display: inline;
margin: 0;
}
.cart-items thead th {
text-transform: uppercase;
}
@media screen and (max-width: 749px) {
.cart-items,
.cart-items thead,
.cart-items tbody {
display: block;
width: 100%;
}
.cart-items thead tr {
display: flex;
justify-content: space-between;
border-bottom: 0.1rem solid rgba(var(--color-foreground), 0.2);
margin-bottom: 4rem;
}
.cart-item {
display: grid;
grid-template: repeat(2, auto) / repeat(4, 1fr);
gap: 1.5rem;
margin-bottom: 3.5rem;
}
.cart-item:has(+ .cart-item__nested-line) {
margin-bottom: 1.5rem;
}
.cart-item:last-child {
margin-bottom: 0;
}
.cart-item__media {
grid-row: 1 / 3;
}
.cart-item__details {
grid-column: 2 / 4;
}
.cart-item__quantity {
grid-column: 2 / 5;
}
.cart-item__quantity-wrapper {
flex-wrap: wrap;
}
.cart-item__totals {
display: flex;
align-items: flex-start;
justify-content: flex-end;
}
}
@media screen and (min-width: 750px) {
.cart-items {
border-spacing: 0;
border-collapse: separate;
box-shadow: none;
width: 100%;
display: table;
}
.cart-items th {
border-bottom: 0.1rem solid rgba(var(--color-foreground), 0.08);
}
.cart-items thead th:first-child {
width: 50%;
}
.cart-items th + th {
padding-left: 4rem;
}
.cart-items td {
vertical-align: top;
padding-top: 4rem;
}
.cart-items .cart-item__nested-line td {
padding-top: 1rem;
}
.cart-item {
display: table-row;
}
.cart-item > td + td {
padding-left: 4rem;
}
.cart-item__details {
width: 35rem;
}
.cart-item__media {
width: 10rem;
}
.cart-item__price-wrapper > *:only-child:not(.cart-item__discounted-prices) {
margin-top: 1rem;
}
.cart-item__error {
margin-left: 0.3rem;
}
}
@media screen and (min-width: 990px) {
.cart-item .cart-item__quantity,
.cart-items .cart-items__heading--wide {
padding-left: 6rem;
}
.cart-item__details {
width: 50rem;
}
.cart-items thead th:first-child {
width: 60%;
}
}
@media screen and (min-width: 750px) {
.cart-items .cart-items__heading--quantity,
.cart-item .cart-item__quantity,
.cart-item__quantity--info quantity-popover > * {
padding-left: 5rem;
}
.cart-item .cart-item__quantity--info,
.cart-item__quantity--info .cart-item__quantity-wrapper,
.cart-item__quantity--info .cart-items__info {
padding-left: 0;
}
}
@media screen and (max-width: 989px) {
.cart-items .quantity-popover__info-button {
padding-left: 0;
}
}
+143
View File
@@ -0,0 +1,143 @@
.cart-notification-wrapper {
position: relative;
}
.cart-notification-wrapper .cart-notification {
display: block;
}
.cart-notification {
border-bottom-right-radius: var(--popup-corner-radius);
border-bottom-left-radius: var(--popup-corner-radius);
border-color: rgba(var(--color-foreground), var(--popup-border-opacity));
border-style: solid;
border-width: 0 0 var(--popup-border-width);
padding: 2.5rem 3.5rem;
position: absolute;
right: 0;
transform: translateY(-100%);
visibility: hidden;
width: 100%;
box-shadow: var(--popup-shadow-horizontal-offset) var(--popup-shadow-vertical-offset) var(--popup-shadow-blur-radius)
rgba(var(--color-shadow), var(--popup-shadow-opacity));
z-index: -1;
}
.cart-notification.focused {
box-shadow: 0 0 0.2rem 0 rgba(var(--color-foreground), 0.3),
var(--popup-shadow-horizontal-offset) var(--popup-shadow-vertical-offset) var(--popup-shadow-blur-radius)
rgba(var(--color-shadow), var(--popup-shadow-opacity));
}
.cart-notification:focus-visible {
box-shadow: 0 0 0.2rem 0 rgba(var(--color-foreground), 0.3),
var(--popup-shadow-horizontal-offset) var(--popup-shadow-vertical-offset) var(--popup-shadow-blur-radius)
rgba(var(--color-shadow), var(--popup-shadow-opacity));
}
@media screen and (min-width: 750px) {
.header-wrapper:not(.header-wrapper--border-bottom) + cart-notification .cart-notification {
border-top-width: var(--popup-border-width);
}
.cart-notification {
border-width: 0 var(--popup-border-width) var(--popup-border-width);
max-width: 36.8rem;
right: 2.2rem;
}
}
@media screen and (min-width: 990px) {
.cart-notification-wrapper:is(.page-width) > .cart-notification {
right: 4rem;
}
}
.cart-notification.animate {
transition: transform var(--duration-short) ease, visibility 0s var(--duration-short) ease;
}
.cart-notification.active {
transform: translateY(0);
transition: transform var(--duration-default) ease, visibility 0s;
visibility: visible;
}
.cart-notification__header {
align-items: flex-start;
display: flex;
}
.cart-notification__heading {
align-items: center;
display: flex;
flex-grow: 1;
margin-bottom: 0;
margin-top: 0;
}
.cart-notification__heading .icon-checkmark {
color: rgb(var(--color-foreground));
margin-right: 1rem;
width: 1.3rem;
}
.cart-notification__close {
margin-top: -2rem;
margin-right: -3rem;
}
.cart-notification__links {
text-align: center;
}
.cart-notification__links > * {
margin-top: 1rem;
}
.cart-notification-product {
align-items: flex-start;
display: flex;
padding-bottom: 3rem;
padding-top: 2rem;
}
.cart-notification-product dl {
margin-bottom: 0;
margin-top: 0;
}
.cart-notification-product__image {
display: inline-flex;
margin-right: 1.5rem;
margin-top: 0.5rem;
}
.cart-notification-product__image:after {
content: none;
}
.cart-notification-product__title {
align-items: flex-start;
display: flex;
gap: 0.6rem;
margin-bottom: 0.5rem;
}
.cart-notification-product__title .cart-notification-product__name {
margin: 0;
}
.cart-notification-product__title .cart-item__disclosure {
font-size: calc(var(--font-heading-scale) * 1.5rem);
}
.cart-notification-product__name {
margin-bottom: 0.5rem;
margin-top: 0;
}
.cart-notification .cart-item__disclosure-tooltip {
bottom: auto;
top: calc(100% + 0.9rem);
}
+222
View File
@@ -0,0 +1,222 @@
.cart {
position: relative;
display: block;
}
.cart__empty-text,
.is-empty .cart__contents,
cart-items.is-empty .title-wrapper-with-link,
.is-empty .cart__footer {
display: none;
}
.is-empty .cart__empty-text,
.is-empty .cart__warnings {
display: block;
}
.cart__warnings {
display: none;
text-align: center;
padding: 3rem 0 1rem;
}
.cart__empty-text {
margin: 4.5rem 0 2rem;
}
.cart__contents > * + * {
margin-top: 2.5rem;
}
.cart__login-title {
margin: 5.5rem 0 0.5rem;
}
.cart__login-paragraph {
margin-top: 0.8rem;
}
.cart__login-paragraph a {
font-size: inherit;
}
@media screen and (min-width: 990px) {
.cart__warnings {
padding: 7rem 0 1rem;
}
.cart__empty-text {
margin: 0 0 3rem;
}
}
cart-items {
display: block;
}
.cart__items {
position: relative;
padding-bottom: 3rem;
border-bottom: 0.1rem solid rgba(var(--color-foreground), 0.08);
}
.cart__items--disabled {
pointer-events: none;
}
.cart__footer-wrapper:last-child .cart__footer {
padding-bottom: 5rem;
}
.cart__footer > div:only-child {
margin-left: auto;
}
.cart__footer > * + * {
margin-top: 6.5rem;
}
.cart__footer .discounts {
margin-bottom: 1rem;
}
.cart__note {
height: fit-content;
top: 2.5rem;
}
.cart__note label {
display: flex;
align-items: flex-end;
position: absolute;
line-height: 1;
height: 1.8rem;
top: -3rem;
color: rgba(var(--color-foreground), 0.75);
}
.cart__note .field__input {
height: 100%;
position: relative;
border-radius: var(--inputs-radius);
padding: 1rem 2rem;
}
.cart__note .text-area {
resize: vertical;
}
.cart__note:after,
.cart__note:hover.cart__note:after,
.cart__note:before,
.cart__note:hover.cart__note:before,
.cart__note .field__input:focus,
.cart__note .field__input {
border-bottom-right-radius: 0;
}
@media screen and (min-width: 750px) {
.cart__items {
grid-column-start: 1;
grid-column-end: 3;
padding-bottom: 4rem;
}
.cart__contents > * + * {
margin-top: 0;
}
.cart__items + .cart__footer {
grid-column: 2;
}
.cart__footer {
display: flex;
justify-content: space-between;
border: 0;
}
.cart__footer-wrapper:last-child {
padding-top: 0;
}
.cart__footer > * {
width: 35rem;
}
.cart__footer > * + * {
margin-left: 4rem;
margin-top: 0;
}
}
.cart__ctas button {
width: 100%;
}
.cart__ctas > * + * {
margin-top: 1rem;
}
.cart__update-button {
margin-bottom: 1rem;
}
.cart__dynamic-checkout-buttons {
max-width: 36rem;
margin: 0 auto;
}
.cart__dynamic-checkout-buttons:has(.dynamic-checkout__content:empty) {
margin: 0;
}
.cart__blocks > * + * {
margin-top: 1rem;
}
.cart-note__label {
display: inline-block;
margin-bottom: 1rem;
line-height: calc(1 + 1 / var(--font-body-scale));
}
.tax-note {
margin: 2.2rem 0 1.6rem auto;
text-align: center;
display: block;
}
.cart__checkout-button {
max-width: 36rem;
}
.cart__ctas {
text-align: center;
}
@media screen and (min-width: 750px) {
.cart-note {
max-width: 35rem;
}
.cart__update-button {
margin-bottom: 0;
margin-right: 0.8rem;
}
.tax-note {
margin-bottom: 2.2rem;
text-align: right;
}
[data-shopify-buttoncontainer] {
justify-content: flex-end;
}
.cart__ctas {
display: flex;
gap: 1rem;
}
}
+98
View File
@@ -0,0 +1,98 @@
.collection-hero__inner {
display: flex;
flex-direction: column;
}
.collection-hero--with-image .collection-hero__inner {
margin-bottom: 0;
padding-bottom: 2rem;
}
@media screen and (min-width: 750px) {
.collection-hero.collection-hero--with-image {
padding: calc(4rem + var(--page-width-margin)) 0 calc(4rem + var(--page-width-margin));
overflow: hidden;
}
.collection-hero--with-image .collection-hero__inner {
padding-bottom: 0;
}
}
.collection-hero__text-wrapper {
flex-basis: 100%;
}
@media screen and (min-width: 750px) {
.collection-hero {
padding: 0;
}
.collection-hero__inner {
align-items: center;
flex-direction: row;
padding-bottom: 0;
}
}
.collection-hero__title {
margin: 2.5rem 0;
}
.collection-hero__title + .collection-hero__description {
margin-top: 1.5rem;
margin-bottom: 1.5rem;
font-size: 1.6rem;
line-height: calc(1 + 0.5 / var(--font-body-scale));
}
@media screen and (min-width: 750px) {
.collection-hero__title + .collection-hero__description {
font-size: 1.8rem;
margin-top: 2rem;
margin-bottom: 2rem;
}
.collection-hero__description {
max-width: 66.67%;
}
.collection-hero--with-image .collection-hero__description {
max-width: 100%;
}
}
.collection-hero--with-image .collection-hero__title {
margin: 0;
}
.collection-hero--with-image .collection-hero__text-wrapper {
padding: 5rem 0 4rem;
}
.collection-hero__image-container {
border: var(--media-border-width) solid rgba(var(--color-foreground), var(--media-border-opacity));
border-radius: var(--media-radius);
box-shadow: var(--media-shadow-horizontal-offset) var(--media-shadow-vertical-offset) var(--media-shadow-blur-radius)
rgba(var(--color-shadow), var(--media-shadow-opacity));
}
@media screen and (max-width: 749px) {
.collection-hero__image-container {
height: 20rem;
}
}
@media screen and (min-width: 750px) {
.collection-hero--with-image .collection-hero__text-wrapper {
padding: 4rem 2rem 4rem 0;
flex-basis: 50%;
}
.collection-hero__image-container {
align-self: stretch;
flex: 1 0 50%;
margin-left: 3rem;
min-height: 20rem;
}
}
+161
View File
@@ -0,0 +1,161 @@
.complementary-products__container {
display: flex;
flex-direction: column;
gap: 1.3rem;
}
product-recommendations:not(.is-accordion) .complementary-products__container {
margin-top: 1.5rem;
}
.complementary-products__container > details[open] {
padding-bottom: 1.5rem;
}
.complementary-slider {
margin-top: 0;
gap: 0;
}
.complementary-slide {
--shadow-padding-sides: calc((var(--shadow-horizontal-offset) + var(--shadow-blur-radius)) * var(--shadow-visible));
--shadow-padding-sides-negative: calc(
(var(--shadow-horizontal-offset) * -1 + var(--shadow-blur-radius)) * var(--shadow-visible)
);
}
.complementary-slide > ul {
display: flex;
flex-direction: column;
gap: var(--grid-mobile-vertical-spacing);
}
.complementary-slide.complementary-slide--standard > ul {
gap: calc(var(--grid-mobile-vertical-spacing) + 8px);
}
@media screen and (min-width: 750px) {
.complementary-slide > ul {
gap: var(--grid-desktop-vertical-spacing);
}
.complementary-slide.complementary-slide--standard > ul {
gap: calc(var(--grid-desktop-vertical-spacing) + 8px);
}
}
.complementary-slide.grid__item {
width: 100%;
padding-top: max(var(--focus-outline-padding), var(--shadow-padding-top));
padding-bottom: max(var(--focus-outline-padding), var(--shadow-padding-bottom));
padding-right: max(var(--focus-outline-padding), var(--shadow-padding-sides));
padding-left: max(var(--focus-outline-padding), var(--shadow-padding-sides-negative));
}
.complementary-slide .card-wrapper {
height: auto;
}
.complementary-products > .summary__title {
display: flex;
line-height: 1;
padding: 1.5rem 0;
}
.accordion + product-recommendations .accordion,
product-recommendations.is-accordion + .accordion {
margin-top: 0;
border-top: none;
}
.complementary-products > .summary__title .icon-accordion {
fill: rgb(var(--color-foreground));
height: calc(var(--font-heading-scale) * 2rem);
margin-right: calc(var(--font-heading-scale) * 1rem);
width: calc(var(--font-heading-scale) * 2rem);
}
.complementary-products__container .card--card .card__content,
.complementary-products__container .card--horizontal .card__information {
padding: 0;
}
.complementary-products__container .card--horizontal .card__inner {
max-width: 20%;
}
@media screen and (min-width: 750px) and (max-width: 1200px) {
.complementary-products__container .card--horizontal .card__inner {
max-width: 25%;
}
}
.complementary-slide .card--text .card__content {
grid-template-rows: minmax(0, 1fr) max-content auto;
}
.complementary-products__container .card--card.card--media > .card__content {
margin-top: 0;
}
.complementary-products-contains-quick-add .underline-links-hover:hover a {
text-decoration: initial;
}
.complementary-products-contains-quick-add .card__heading:hover a {
text-decoration: underline;
}
.complementary-products__container .card--card .card__inner .card__media {
border-radius: calc(var(--corner-radius) - var(--border-width) - var(--image-padding));
}
.complementary-products__container .card--horizontal .quick-add {
margin: 0;
max-width: 20rem;
}
.complementary-products__container .quick-add__submit {
padding: 1.5rem 0;
min-height: inherit;
}
.complementary-products__container .quick-add__submit .icon-plus {
width: 1.2rem;
}
.complementary-products__container .icon-wrap {
display: flex;
}
.complementary-products .sold-out-message:not(.hidden) + .icon-wrap {
display: none;
}
.complementary-products__container .quick-add__submit:not(.animate-arrow) .icon-wrap {
transition: transform var(--duration-short) ease;
}
.complementary-products__container .quick-add__submit:not(.animate-arrow):hover .icon-wrap {
transform: rotate(90deg);
}
.complementary-products__container .quick-add__submit:after,
.complementary-products__container .quick-add__submit:hover:after {
box-shadow: none;
}
.complementary-products__container .card--horizontal .quick-add,
.complementary-products__container .card__badge {
justify-self: var(--text-alignment);
}
.product--no-media .complementary-products__container .price {
text-align: var(--text-alignment);
}
@media screen and (min-width: 750px) {
.complementary-products__container .price--on-sale .price-item--regular {
font-size: 1.3rem;
}
}
+98
View File
@@ -0,0 +1,98 @@
.deferred-media__poster {
background-color: transparent;
border: none;
cursor: pointer;
margin: 0;
padding: 0;
height: 100%;
width: 100%;
overflow: hidden;
border-radius: calc(var(--border-radius) - var(--border-width));
}
.media > .deferred-media__poster {
display: flex;
align-items: center;
justify-content: center;
}
.deferred-media__poster img {
width: auto;
max-width: 100%;
height: 100%;
}
.deferred-media {
overflow: hidden;
}
.deferred-media:not([loaded]) template {
z-index: -1;
}
.deferred-media[loaded] > .deferred-media__poster {
display: none;
}
.deferred-media__poster:focus-visible {
outline: none;
box-shadow: 0 0 0 var(--media-border-width) rgba(var(--color-foreground), var(--media-border-opacity)),
0 0 0 calc(var(--media-border-width) + 0.3rem) rgb(var(--color-background)),
0 0 0 calc(var(--media-border-width) + 0.5rem) rgba(var(--color-foreground), 0.5);
border-radius: calc(var(--media-radius) - var(--media-border-width));
}
.deferred-media__poster:focus {
outline: none;
box-shadow: 0 0 0 var(--media-border-width) rgba(var(--color-foreground), var(--media-border-opacity)),
0 0 0 calc(var(--media-border-width) + 0.3rem) rgb(var(--color-background)),
0 0 0 calc(var(--media-border-width) + 0.5rem) rgba(var(--color-foreground), 0.5);
border-radius: calc(var(--media-radius) - var(--media-border-width));
}
.global-media-settings--full-width .deferred-media__poster,
.global-media-settings--full-width .deferred-media__poster:is(:focus, :focus-visible) {
border-radius: 0;
}
/* outline styling for Windows High Contrast Mode */
@media (forced-colors: active) {
.deferred-media__poster:focus {
outline: transparent solid 1px;
}
}
.deferred-media__poster:focus:not(:focus-visible) {
outline: 0;
box-shadow: none;
}
.deferred-media__poster-button {
background-color: rgb(var(--color-background));
border: 0.1rem solid rgba(var(--color-foreground), 0.1);
border-radius: 50%;
color: rgb(var(--color-foreground));
display: flex;
align-items: center;
justify-content: center;
height: 6.2rem;
width: 6.2rem;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%) scale(1);
transition: transform var(--duration-short) ease, color var(--duration-short) ease;
z-index: 1;
}
.deferred-media__poster-button:hover {
transform: translate(-50%, -50%) scale(1.1);
}
.deferred-media__poster-button .icon {
width: 2rem;
height: 2rem;
}
.deferred-media__poster-button .icon-play {
margin-left: 0.2rem;
}
+165
View File
@@ -0,0 +1,165 @@
.disclosures {
container-type: inline-size;
--disclosures-icon-height: 1.6rem;
}
.disclosures__heading {
margin-bottom: 2rem;
}
.disclosures__details {
border-top: 0.1rem solid rgba(var(--color-foreground), 0.08);
border-bottom: 0.1rem solid rgba(var(--color-foreground), 0.08);
}
.disclosures__summary {
padding: 2rem 0;
display: flex;
align-items: center;
justify-content: space-between;
cursor: pointer;
list-style: none;
}
.disclosures__summary::-webkit-details-marker {
display: none;
}
.disclosures__details[open] .disclosures__summary {
padding-bottom: 0rem;
padding-bottom: 0.5rem;
}
.disclosures__summary-content {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0.5rem 0;
flex: 1;
max-width: calc(100% - 3rem);
word-break: break-word;
}
.disclosures-summary-item {
display: inline-flex;
align-items: flex-start;
gap: 0.5rem;
}
.disclosures-summary-item__open-title {
display: none;
}
.disclosures__details[open] .disclosures-summary-item__title {
display: none;
}
.disclosures__details[open] .disclosures-summary-item__open-title {
display: inline;
font-weight: var(--font-body-weight-bold);
}
.disclosures-separator {
padding: 0 1rem;
}
.disclosures__icon {
display: block;
flex-shrink: 0;
width: auto;
height: var(--disclosures-icon-height);
}
.disclosures-summary-item .disclosures__icon,
.disclosures-item__header .disclosures__icon {
margin-block-start: calc((1em * calc(1 + 0.8 / var(--font-body-scale)) - var(--disclosures-icon-height)) / 2);
}
.disclosures__content {
padding-top: 0;
padding-bottom: 2rem;
cursor: pointer;
}
.disclosures-item {
position: relative;
cursor: auto;
}
.disclosures-item::after {
content: '';
position: absolute;
top: 0;
bottom: 0;
left: 50rem;
right: 0;
cursor: pointer;
}
.disclosures-item + .disclosures-item {
padding-top: 2rem;
}
.disclosures-item:last-child {
padding-bottom: 2rem;
}
.disclosures-item__content {
max-width: 50rem;
cursor: auto;
}
.disclosures-item__content p:first-child {
margin: 0;
}
.disclosures-item__header {
display: flex;
align-items: flex-start;
gap: 0.5rem;
padding-bottom: 0.5rem;
}
.disclosures-item__header span,
.disclosures-item__header img {
margin: 0;
cursor: auto;
}
.disclosures-item__header span {
font-weight: var(--font-body-weight-bold);
}
.disclosures__details[open] .disclosures__summary-content > *:not(:first-child) {
display: none;
}
.disclosures__summary > .icon-caret {
position: absolute;
right: auto;
inset-inline-end: 1.5rem;
top: calc(50% - 0.75rem);
width: 1.5rem;
height: 1.5rem;
flex-shrink: 0;
transition: transform 0.2s ease;
}
.disclosures__details[open] .disclosures__summary > .icon-caret {
transform: rotate(180deg);
}
@container (max-width: 700px) {
.disclosures__summary-content {
flex-direction: column;
align-items: flex-start;
}
.disclosures__summary > .icon-caret {
top: calc(2rem + (1em * calc(1 + 0.8 / var(--font-body-scale)) - 1.5rem) / 2);
}
.disclosures-separator {
display: none;
}
}
+30
View File
@@ -0,0 +1,30 @@
.discounts {
font-size: 1.2rem;
}
.discounts__discount {
display: flex;
align-items: center;
line-height: calc(1 + 0.5 / var(--font-body-scale));
}
.discounts__discount svg {
color: rgba(var(--color-button), var(--alpha-button-background));
}
.discounts__discount--position {
justify-content: center;
}
@media screen and (min-width: 750px) {
.discounts__discount--position {
justify-content: flex-end;
}
}
.discounts__discount > .icon {
color: rgb(var(--color-foreground));
width: 1.2rem;
height: 1.2rem;
margin-right: 0.7rem;
}
File diff suppressed because it is too large Load Diff
+417
View File
@@ -0,0 +1,417 @@
.image-with-text .grid {
margin-bottom: 0;
}
.image-with-text .grid__item {
position: relative;
}
@media screen and (min-width: 750px) {
.image-with-text__grid--reverse {
flex-direction: row-reverse;
}
}
.image-with-text__media {
min-height: 100%;
overflow: visible;
}
.image-with-text__media--small {
height: 19.4rem;
}
.image-with-text__media--medium {
height: 29.6rem;
}
.image-with-text__media--large {
height: 43.5rem;
}
@media screen and (min-width: 750px) {
.image-with-text__media--small {
height: 31.4rem;
}
.image-with-text__media--medium {
height: 46rem;
}
.image-with-text__media--large {
height: 69.5rem;
}
}
.image-with-text__media--placeholder {
position: relative;
overflow: hidden;
}
.image-with-text__media--placeholder:after {
content: '';
position: absolute;
background: rgba(var(--color-foreground), 0.04);
}
.image-with-text__media--placeholder.image-with-text__media--adapt {
height: 20rem;
}
@media screen and (min-width: 750px) {
.image-with-text__media--placeholder.image-with-text__media--adapt {
height: 30rem;
}
}
.image-with-text__media--placeholder > svg {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 100%;
height: 100%;
fill: currentColor;
}
.image-with-text__media--placeholder:is(.animate--ambient, .animate--zoom-in) > .svg-wrapper {
top: 0;
left: 0;
transform: translate(0);
}
.image-with-text__content {
align-items: flex-start;
display: flex;
flex-direction: column;
height: 100%;
justify-content: center;
align-self: center;
padding: 4rem calc(4rem / var(--font-body-scale)) 5rem;
position: relative;
z-index: 1;
}
.image-with-text .grid__item::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
}
.image-with-text:not(.image-with-text--overlap) .image-with-text__media-item:after {
border-radius: var(--media-radius);
box-shadow: var(--media-shadow-horizontal-offset) var(--media-shadow-vertical-offset) var(--media-shadow-blur-radius)
rgba(var(--color-shadow), var(--media-shadow-opacity));
}
.image-with-text:not(.image-with-text--overlap) .image-with-text__text-item:after {
border-radius: var(--text-boxes-radius);
box-shadow: var(--text-boxes-shadow-horizontal-offset) var(--text-boxes-shadow-vertical-offset)
var(--text-boxes-shadow-blur-radius) rgba(var(--color-shadow), var(--text-boxes-shadow-opacity));
}
.image-with-text .image-with-text__media-item > * {
border-radius: var(--media-radius);
overflow: hidden;
box-shadow: var(--media-shadow-horizontal-offset) var(--media-shadow-vertical-offset) var(--media-shadow-blur-radius)
rgba(var(--color-shadow), var(--media-shadow-opacity));
}
.image-with-text .global-media-settings {
overflow: hidden !important;
}
.image-with-text .image-with-text__text-item > * {
border-radius: var(--text-boxes-radius);
overflow: hidden;
box-shadow: var(--text-boxes-shadow-horizontal-offset) var(--text-boxes-shadow-vertical-offset)
var(--text-boxes-shadow-blur-radius) rgba(var(--color-shadow), var(--text-boxes-shadow-opacity));
}
.image-with-text:not(.image-with-text--overlap) .image-with-text__media-item > *,
.image-with-text:not(.image-with-text--overlap) .image-with-text__text-item > * {
box-shadow: none;
}
@media screen and (max-width: 749px) {
.image-with-text.collapse-corners:not(.image-with-text--overlap) .image-with-text__media-item:after,
.image-with-text.collapse-corners:not(.image-with-text--overlap) .grid__item .image-with-text__media,
.image-with-text.collapse-corners:not(.image-with-text--overlap) .image-with-text__media img,
.image-with-text.collapse-corners:not(.image-with-text--overlap) .image-with-text__media .placeholder-svg {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.image-with-text.collapse-corners:not(.image-with-text--overlap) .image-with-text__text-item:after,
.image-with-text.collapse-corners:not(.image-with-text--overlap) .grid__item .image-with-text__content {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.image-with-text.collapse-borders:not(.image-with-text--overlap) .image-with-text__content {
border-top: 0;
}
}
.image-with-text__content--mobile-right > * {
align-self: flex-end;
text-align: right;
}
.image-with-text__content--mobile-center > * {
align-self: center;
text-align: center;
}
.image-with-text--overlap .image-with-text__content {
width: 90%;
margin: -3rem auto 0;
}
@media screen and (min-width: 750px) {
.image-with-text__grid--reverse .image-with-text__content {
margin-left: auto;
}
.image-with-text__content--bottom {
justify-content: flex-end;
align-self: flex-end;
}
.image-with-text__content--top {
justify-content: flex-start;
align-self: flex-start;
}
.image-with-text__content--desktop-right > * {
align-self: flex-end;
text-align: right;
}
.image-with-text__content--desktop-left > * {
align-self: flex-start;
text-align: left;
}
.image-with-text__content--desktop-center > * {
align-self: center;
text-align: center;
}
.image-with-text--overlap .image-with-text__text-item {
display: flex;
padding: 3rem 0;
}
.image-with-text--overlap .image-with-text__content {
height: auto;
width: calc(100% + 4rem);
min-width: calc(100% + 4rem);
margin-top: 0;
margin-left: -4rem;
}
.image-with-text--overlap .image-with-text__grid--reverse .image-with-text__content {
margin-left: 0;
margin-right: -4rem;
}
.image-with-text--overlap .image-with-text__grid--reverse .image-with-text__text-item {
justify-content: flex-end;
}
.image-with-text--overlap .image-with-text__media-item--top {
align-self: flex-start;
}
.image-with-text--overlap .image-with-text__media-item--middle {
align-self: center;
}
.image-with-text--overlap .image-with-text__media-item--bottom {
align-self: flex-end;
}
.image-with-text__media-item--small,
.image-with-text__media-item--large + .image-with-text__text-item {
flex-grow: 0;
}
.image-with-text.collapse-corners:not(.image-with-text--overlap)
.grid:not(.image-with-text__grid--reverse)
.image-with-text__media-item:after,
.image-with-text.collapse-corners:not(.image-with-text--overlap)
.grid:not(.image-with-text__grid--reverse)
.image-with-text__media,
.image-with-text.collapse-corners:not(.image-with-text--overlap)
.grid:not(.image-with-text__grid--reverse)
.image-with-text__media
img,
.image-with-text.collapse-corners:not(.image-with-text--overlap)
.grid:not(.image-with-text__grid--reverse)
.image-with-text__media
.placeholder-svg,
.image-with-text.collapse-corners:not(.image-with-text--overlap)
.image-with-text__grid--reverse
.image-with-text__text-item:after,
.image-with-text.collapse-corners:not(.image-with-text--overlap)
.image-with-text__grid--reverse
.image-with-text__content,
.image-with-text.collapse-corners:not(.image-with-text--overlap)
.image-with-text__grid--reverse
.image-with-text__content:after {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.image-with-text.collapse-corners:not(.image-with-text--overlap)
.grid:not(.image-with-text__grid--reverse)
.image-with-text__text-item:after,
.image-with-text.collapse-corners:not(.image-with-text--overlap)
.grid:not(.image-with-text__grid--reverse)
.image-with-text__content,
.image-with-text.collapse-corners:not(.image-with-text--overlap)
.grid:not(.image-with-text__grid--reverse)
.image-with-text__content:after,
.image-with-text.collapse-corners:not(.image-with-text--overlap)
.image-with-text__grid--reverse
.image-with-text__media-item:after,
.image-with-text.collapse-corners:not(.image-with-text--overlap)
.image-with-text__grid--reverse
.image-with-text__media,
.image-with-text.collapse-corners:not(.image-with-text--overlap)
.image-with-text__grid--reverse
.image-with-text__media
img,
.image-with-text.collapse-corners:not(.image-with-text--overlap)
.image-with-text__grid--reverse
.image-with-text__media
.placeholder-svg {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.image-with-text.collapse-borders:not(.image-with-text--overlap)
.grid:not(.image-with-text__grid--reverse)
.image-with-text__content {
border-left: 0;
}
.image-with-text.collapse-borders:not(.image-with-text--overlap)
.image-with-text__grid--reverse
.image-with-text__content {
border-right: 0;
}
}
.image-with-text:not(.collapse-corners, .image-with-text--overlap) .image-with-text__media-item {
z-index: 2;
}
/* Needed for gradient continuity with or without animation so that transparent PNG images come up as we would expect */
.image-with-text.image-with-text--overlap .backround-transparent,
.image-with-text:not(.image-with-text--overlap) .background-transparent {
background: transparent;
}
/* Needed for gradient continuity with or without animation, the transform scopes the gradient to its container which happens already when animation are turned on */
.image-with-text .gradient {
transform: perspective(0);
}
.image-with-text__content {
border-radius: var(--text-boxes-radius);
box-shadow: var(--text-boxes-shadow-horizontal-offset) var(--text-boxes-shadow-vertical-offset)
var(--text-boxes-shadow-blur-radius) rgba(var(--color-shadow), var(--text-boxes-shadow-opacity));
word-break: break-word;
}
@media screen and (min-width: 990px) {
.image-with-text__content {
padding: 6rem 7rem 7rem;
}
}
.image-with-text__content > * + * {
margin-top: 2rem;
}
.image-with-text__content > .image-with-text__text:empty ~ a {
margin-top: 2rem;
}
.image-with-text__content > :first-child:is(.image-with-text__heading),
.image-with-text__text--caption + .image-with-text__heading,
.image-with-text__text--caption:first-child {
margin-top: 0;
}
.image-with-text__content :last-child:is(.image-with-text__heading),
.image-with-text__text--caption {
margin-bottom: 0;
}
.image-with-text__content .button + .image-with-text__text {
margin-top: 2rem;
}
.image-with-text__content .image-with-text__text + .button {
margin-top: 3rem;
}
.image-with-text__heading {
margin-bottom: 0;
}
.image-with-text__text p {
margin-top: 0;
margin-bottom: 1rem;
}
@media screen and (max-width: 749px) {
.collapse-padding .image-with-text__grid .image-with-text__content {
padding-left: 0;
padding-right: 0;
}
}
@media screen and (min-width: 750px) {
.collapse-padding
.image-with-text__grid:not(.image-with-text__grid--reverse)
.image-with-text__content:not(.image-with-text__content--desktop-center) {
padding-right: 0;
}
.collapse-padding
.image-with-text__grid--reverse
.image-with-text__content:not(.image-with-text__content--desktop-center) {
padding-left: 0;
}
}
/* check for flexbox gap in older Safari versions */
@supports not (inset: 10px) {
.image-with-text .grid {
margin-left: 0;
}
}
/*
Multirow
note: consider removing from this stylesheet if multirow-specific styles increase signficantly
*/
.multirow__inner {
display: flex;
flex-direction: column;
row-gap: var(--grid-mobile-vertical-spacing);
}
@media screen and (min-width: 750px) {
.multirow__inner {
row-gap: var(--grid-desktop-vertical-spacing);
}
}
+30
View File
@@ -0,0 +1,30 @@
.list-menu--right {
right: 0;
}
.list-menu--disclosure {
position: absolute;
min-width: 100%;
width: 20rem;
border: 1px solid rgba(var(--color-foreground), 0.2);
}
.list-menu--disclosure:focus {
outline: none;
}
.list-menu__item--active {
text-decoration: underline;
text-underline-offset: 0.3rem;
}
.list-menu__item--active:hover {
text-decoration-thickness: 0.2rem;
}
.list-menu--disclosure.localization-selector {
max-height: 18rem;
overflow: auto;
width: 10rem;
padding: 0.5rem;
}
+22
View File
@@ -0,0 +1,22 @@
.list-payment {
display: flex;
flex-wrap: wrap;
justify-content: center;
margin: -0.5rem 0;
padding-top: 1rem;
padding-left: 0;
}
@media screen and (min-width: 750px) {
.list-payment {
justify-content: flex-end;
margin: -0.5rem;
padding-top: 0;
}
}
.list-payment__item {
align-items: center;
display: flex;
padding: 0.5rem;
}
+32
View File
@@ -0,0 +1,32 @@
.list-social {
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
}
@media only screen and (max-width: 749px) {
.list-social {
justify-content: center;
}
}
.list-social__item .icon {
height: 2.2rem;
width: 2.2rem;
}
.list-social__link {
align-items: center;
display: flex;
padding: 1.1rem;
color: rgb(var(--color-foreground));
}
.utility-bar .list-social__link {
padding: 0 0.8rem;
height: 3.8rem;
}
.list-social__link:hover .icon {
transform: scale(1.07);
}
+451
View File
@@ -0,0 +1,451 @@
.localization-form {
display: flex;
flex-direction: column;
flex: auto 1 0;
padding: 1rem;
margin: 0 auto;
}
.localization-form:only-child {
display: inline-flex;
flex-wrap: wrap;
flex: initial;
padding: 1rem 0;
}
.localization-form:only-child .button,
.localization-form:only-child .localization-form__select {
margin: 1rem 1rem 0.5rem;
flex-grow: 1;
}
@media screen and (min-width: 750px) {
.localization-form {
padding: 1rem 2rem 1rem 0;
}
.localization-form:first-of-type {
padding-left: 0;
}
.localization-form:only-child {
justify-content: start;
width: auto;
margin: 0 1rem 0 0;
}
.localization-form:only-child .button,
.localization-form:only-child .localization-form__select {
margin: 1rem 0;
}
}
.localization-form .button {
padding: 1rem;
}
.localization-form__currency {
opacity: 0;
transition: opacity 0.15s cubic-bezier(0.25, 0.46, 0.45, 0.94);
white-space: nowrap;
padding-right: 1.7rem;
}
@media screen and (max-width: 749px) {
.localization-form .button {
word-break: break-all;
}
.localization-form__currency {
opacity: 1;
}
}
.localization-form__select {
border-radius: var(--inputs-radius-outset);
position: relative;
margin-bottom: 1.5rem;
padding-left: 1rem;
text-align: left;
min-height: calc(4rem + var(--inputs-border-width) * 2);
min-width: calc(7rem + var(--inputs-border-width) * 2);
}
.disclosure__button.localization-form__select {
padding: calc(2rem + var(--inputs-border-width));
background: rgb(var(--color-background));
}
.localization-form__select .icon-caret {
position: absolute;
content: '';
height: 0.6rem;
right: calc(var(--inputs-border-width) + 1.5rem);
top: calc(50% - 0.2rem);
}
.localization-selector.link {
text-decoration: none;
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
color: rgb(var(--color-foreground));
width: 100%;
padding-right: 4rem;
padding-bottom: 1.5rem;
}
.disclosure .localization-form__select {
padding-top: 1.5rem;
}
.localization-selector option {
color: #000000;
}
.localization-selector + .disclosure__list-wrapper {
opacity: 1;
animation: animateLocalization var(--duration-default) ease;
}
.disclosure {
position: relative;
}
.disclosure__button {
align-items: center;
cursor: pointer;
display: flex;
height: 4rem;
padding: 0 1.5rem 0 1.5rem;
font-size: 1.3rem;
background-color: transparent;
}
.disclosure__list-wrapper {
border-width: var(--popup-border-width);
border-style: solid;
border-color: rgba(var(--color-foreground), var(--popup-border-opacity));
overflow: hidden;
position: absolute;
bottom: 100%;
transform: translateY(-1rem);
z-index: 2;
background-color: rgb(var(--color-background));
border-radius: var(--popup-corner-radius);
box-shadow: var(--popup-shadow-horizontal-offset) var(--popup-shadow-vertical-offset) var(--popup-shadow-blur-radius)
rgba(var(--color-shadow), var(--popup-shadow-opacity));
max-height: 27.5rem;
}
.disclosure__list {
position: relative;
overflow-y: auto;
font-size: 1.4rem;
padding-bottom: 0.5rem;
padding-top: 0.5rem;
scroll-padding: 0.5rem 0;
max-height: 20.5rem;
max-width: 25.5rem;
min-width: 12rem;
width: max-content;
}
.country-selector__list {
padding-bottom: 0.95rem;
padding-top: 0;
}
.country-selector__list--with-multiple-currencies {
width: 25.5rem;
}
.country-selector__close-button {
display: none;
}
.country-filter {
display: flex;
justify-content: end;
align-items: center;
gap: 0.5rem;
padding: 1.5rem 1.5rem 0.6rem;
position: sticky;
top: -0.02rem;
background-color: rgb(var(--color-background));
z-index: 6;
}
.country-filter__input {
min-width: 200px;
}
.country-filter__reset-button,
.country-filter__search-icon {
right: calc(var(--inputs-border-width));
top: var(--inputs-border-width);
}
.country-filter__reset-button:not(:focus-visible)::after,
.country-filter__reset-button:not(:focus)::after {
display: block;
height: calc(100% - 1.8rem);
content: '';
position: absolute;
right: 0;
}
.country-filter__reset-button:focus,
.country-filter__reset-button:focus-visible {
background-color: rgb(var(--color-background));
z-index: 4;
}
.country-filter__reset-button:not(:focus-visible):not(.focused) {
box-shadow: inherit;
background-color: inherit;
}
.country-filter__reset-button:hover .icon {
transform: scale(1.07);
}
.country-filter__reset-button .icon.icon-close,
.country-filter__search-icon .icon {
height: 1.8rem;
width: 1.8rem;
stroke-width: 0.1rem;
}
.country-filter__search-icon {
transition: opacity var(--duration-short) ease, visibility var(--duration-short) ease;
opacity: 1;
visibility: visible;
pointer-events: none;
cursor: text;
}
.country-filter__search-icon--hidden {
opacity: 0;
visibility: hidden;
}
@media screen and (max-width: 749px) {
.disclosure__list-wrapper.country-selector:not([hidden]) + .country-selector__overlay:empty {
display: block;
}
.country-selector__overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(var(--color-foreground), 0.5);
z-index: 3;
animation: animateLocalization var(--duration-default) ease;
}
.disclosure__list-wrapper.country-selector {
position: fixed;
bottom: -1rem;
left: 0;
width: 100%;
height: 80%;
max-height: 80vh;
border-radius: 0;
border: none;
box-shadow: none;
z-index: 4;
}
.disclosure__list.country-selector__list {
max-height: 85%;
min-width: 100%;
margin-bottom: 0;
z-index: 5;
}
.country-selector__close-button.link {
display: flex;
justify-content: center;
align-items: center;
padding: 0rem;
background-color: transparent;
height: 4.4rem;
width: 4.4rem;
}
.country-selector__close-button .icon {
width: 2rem;
height: 2rem;
}
.country-filter {
padding: 1.5rem 2rem 0.6rem 1.5rem;
}
}
@media screen and (min-width: 750px) {
.country-filter--no-padding {
padding: 0;
}
}
.countries {
padding-top: 0.6rem;
}
.popular-countries {
border-bottom: 1px solid rgba(var(--color-foreground), 0.2);
padding-bottom: 0.6rem;
padding-top: 0.6rem;
}
.disclosure__item {
position: relative;
}
.disclosure__link {
display: grid;
grid-template-columns: auto 1fr auto;
gap: 0.5rem;
padding: 0.9rem 1.5rem;
text-decoration: none;
line-height: calc(1 + 0.8 / var(--font-body-scale));
color: rgba(var(--color-foreground), 0.75);
word-break: break-word;
}
.disclosure__link:hover {
color: rgb(var(--color-foreground));
}
.disclosure__link .icon-checkmark {
width: 1rem;
margin-right: 0.2rem;
}
.disclosure__link:hover .localization-form__currency,
.disclosure__link:focus-visible .localization-form__currency,
.disclosure__link:focus .localization-form__currency {
display: inline-block;
opacity: 1;
}
.disclosure__button[aria-expanded='true'] .icon-caret {
transform: rotate(180deg);
}
/* Header localization */
.header-localization .localization-form:only-child {
margin: 0;
padding: 0;
}
.header-localization .disclosure .localization-form__select {
font-size: 1.4rem;
letter-spacing: 0.06rem;
height: auto;
min-height: initial;
background: transparent;
}
.header-localization .disclosure .localization-form__select:hover {
text-decoration: underline;
}
.header-localization .localization-form__select.link:after,
.header-localization .localization-form__select.link:before {
box-shadow: none;
}
.header-localization .localization-form__select.link:focus-visible {
outline: 0.2rem solid rgba(var(--color-foreground), 0.5);
outline-offset: -0.2rem;
box-shadow: 0 0 0.2rem 0 rgba(var(--color-foreground), 0.3);
}
/* Header icons (desktop) */
.desktop-localization-wrapper {
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
}
.desktop-localization-wrapper .localization-selector + .disclosure__list-wrapper {
animation: animateMenuOpen var(--duration-default) ease;
}
.desktop-localization-wrapper .localization-form:only-child {
padding: 0;
}
.header-localization:not(.menu-drawer__localization) {
align-items: center;
}
.js .header-localization:not(.menu-drawer__localization) .localization-form__select {
padding: 0 2.7rem 0 1.2rem;
width: max-content;
height: 3.8rem;
}
.header-localization:not(.menu-drawer__localization) .localization-form:only-child .localization-form__select {
margin: 0;
}
.header-localization:not(.menu-drawer__localization).localization-form__select > span {
max-width: 20ch;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.header-localization:not(.menu-drawer__localization) localization-form:only-child .localization-form__select > span {
max-width: 26ch;
}
.header-localization:not(.menu-drawer__localization) .localization-form__select .icon-caret {
right: 0.8rem;
}
.header-localization:not(.menu-drawer__localization) .disclosure__list-wrapper {
bottom: initial;
top: 100%;
right: 0;
transform: translateY(0);
}
/* Menu drawer */
@media screen and (min-width: 990px) {
.menu-drawer__localization {
display: none;
}
}
.menu-drawer__localization localization-form {
display: block;
}
.menu-drawer__localization .localization-form__select {
background-color: initial;
margin-top: 0;
padding: 1rem 3.6rem 1rem 0rem;
}
.menu-drawer__localization .localization-form {
padding: 0;
}
.menu-drawer__localization .localization-form:only-child .localization-form__select {
margin: 0;
}
.menu-drawer__localization + .list-social {
margin-top: 1rem;
}
.language-selector .disclosure__list {
min-width: 200px;
}
+87
View File
@@ -0,0 +1,87 @@
.mega-menu {
position: static;
}
.mega-menu__content {
background-color: rgb(var(--color-background));
border-left: 0;
border-radius: 0;
border-right: 0;
left: 0;
overflow-y: auto;
padding-bottom: 3rem;
padding-top: 3rem;
position: absolute;
right: 0;
top: 100%;
}
.shopify-section-header-sticky .mega-menu__content {
max-height: calc(100vh - var(--header-bottom-position-desktop, 20rem) - 4rem);
}
.header-wrapper--border-bottom .mega-menu__content {
border-top: 0;
}
.js .mega-menu__content {
opacity: 0;
transform: translateY(-1.5rem);
}
.mega-menu[open] .mega-menu__content {
opacity: 1;
transform: translateY(0);
}
.mega-menu__list {
display: grid;
gap: 1.8rem 4rem;
grid-template-columns: repeat(6, minmax(0, 1fr));
list-style: none;
}
.mega-menu__link {
color: rgba(var(--color-foreground), 0.75);
display: block;
line-height: calc(1 + 0.3 / var(--font-body-scale));
padding-bottom: 0.6rem;
padding-top: 0.6rem;
text-decoration: none;
transition: text-decoration var(--duration-short) ease;
word-wrap: break-word;
}
.mega-menu__link--level-2 {
font-weight: bold;
}
.header--top-center .mega-menu__list {
display: flex;
justify-content: center;
flex-wrap: wrap;
column-gap: 0;
}
.header--top-center .mega-menu__list > li {
width: 16%;
padding-right: 2.4rem;
}
.mega-menu__link:hover,
.mega-menu__link--active {
color: rgb(var(--color-foreground));
text-decoration: underline;
}
.mega-menu__link--active:hover {
text-decoration-thickness: 0.2rem;
}
.mega-menu .mega-menu__list--condensed {
display: block;
}
.mega-menu__list--condensed .mega-menu__link {
font-weight: normal;
}
+243
View File
@@ -0,0 +1,243 @@
.header__icon--menu {
position: initial;
}
.js menu-drawer > details > summary::before,
.js menu-drawer > details[open]:not(.menu-opening) > summary::before {
content: '';
position: absolute;
cursor: default;
width: 100%;
height: calc(100vh - 100%);
height: calc(var(--viewport-height, 100vh) - (var(--header-bottom-position, 100%)));
top: 100%;
left: 0;
background: rgba(var(--color-foreground), 0.5);
opacity: 0;
visibility: hidden;
z-index: 2;
transition: opacity 0s, visibility 0s;
}
menu-drawer > details[open] > summary::before {
visibility: visible;
opacity: 1;
transition: opacity var(--duration-default) ease, visibility var(--duration-default) ease;
}
.menu-drawer {
position: absolute;
transform: translateX(-100%);
visibility: hidden;
z-index: 3;
left: 0;
top: 100%;
width: 100%;
padding: 0;
background-color: rgb(var(--color-background));
overflow-x: hidden;
filter: drop-shadow(
var(--drawer-shadow-horizontal-offset) var(--drawer-shadow-vertical-offset) var(--drawer-shadow-blur-radius)
rgba(var(--color-shadow), var(--drawer-shadow-opacity))
);
}
.js .menu-drawer {
height: calc(100vh - 100%);
height: calc(var(--viewport-height, 100vh) - (var(--header-bottom-position, 100%)));
}
.js details[open] > .menu-drawer,
.js details[open] > .menu-drawer__submenu {
transition: transform var(--duration-default) ease, visibility var(--duration-default) ease;
}
.js details[open].menu-opening > .menu-drawer,
details[open].menu-opening > .menu-drawer__submenu {
transform: translateX(0);
visibility: visible;
}
.js .menu-drawer__navigation .submenu-open {
visibility: hidden; /* hide menus from screen readers when hidden by submenu */
}
@media screen and (min-width: 750px) {
.menu-drawer {
width: 40rem;
border-width: 0 var(--drawer-border-width) 0 0;
border-style: solid;
border-color: rgba(var(--color-foreground), var(--drawer-border-opacity));
}
}
.menu-drawer__inner-container {
position: relative;
height: 100%;
}
.menu-drawer__navigation-container {
display: grid;
grid-template-rows: 1fr auto;
align-content: space-between;
overflow-y: auto;
height: 100%;
}
.menu-drawer__navigation {
padding: 3rem 0;
}
.menu-drawer__inner-submenu {
height: 100%;
overflow-x: hidden;
overflow-y: auto;
}
.js .menu-drawer__menu li {
margin-bottom: 0.2rem;
}
.menu-drawer__menu-item {
padding: 1.1rem 3rem;
text-decoration: none;
font-size: 1.8rem;
}
.menu-drawer summary.menu-drawer__menu-item {
padding-right: 5.2rem;
}
.menu-drawer__menu-item--active,
.menu-drawer__menu-item:focus,
.menu-drawer__close-button:focus,
.menu-drawer__menu-item:hover,
.menu-drawer__close-button:hover {
color: rgb(var(--color-foreground));
background-color: rgba(var(--color-foreground), 0.04);
}
.menu-drawer__menu-item--active:hover {
background-color: rgba(var(--color-foreground), 0.08);
}
.js .menu-drawer__menu-item .icon-caret {
display: none;
}
.menu-drawer__menu-item > .svg-wrapper {
width: 15px;
position: absolute;
right: 3rem;
top: 50%;
transform: translateY(-50%);
}
.js .menu-drawer__submenu {
position: absolute;
top: 0;
width: 100%;
bottom: 0;
left: 0;
background-color: rgb(var(--color-background));
z-index: 1;
transform: translateX(100%);
visibility: hidden;
}
.js .menu-drawer__submenu .menu-drawer__submenu {
overflow-y: auto;
}
.menu-drawer__close-button {
margin-top: 1.5rem;
padding: 1.2rem 2.6rem 1.2rem 3rem;
text-decoration: none;
display: flex;
align-items: center;
font-size: 1.4rem;
width: 100%;
background-color: transparent;
font-family: var(--font-body-family);
font-style: var(--font-body-style);
text-align: left;
}
.menu-drawer__close-button .svg-wrapper {
transform: rotate(180deg);
margin-right: 1rem;
width: 15px;
}
.menu-drawer__utility-links {
padding: 0;
background-color: rgba(var(--color-foreground), 0.03);
position: relative;
}
.header--has-social .menu-drawer__utility-links {
padding: 2rem 3rem;
}
@media screen and (max-width: 749px) {
.header--has-account:where(:not(.header--has-social):not(.header--has-localizations)) .menu-drawer__utility-links {
padding: 2rem 3rem;
}
}
@media screen and (max-width: 989px) {
.header--has-localizations:where(:not(.header--has-social)) .menu-drawer__utility-links {
padding: 2rem 3rem;
}
}
.menu-drawer__account {
display: inline-flex;
align-items: center;
text-decoration: none;
padding: 1rem 0;
font-size: 1.4rem;
color: rgb(var(--color-foreground));
margin-bottom: 0;
}
.menu-drawer__utility-links:has(.menu-drawer__localization) .menu-drawer__account {
margin: 0;
}
.menu-drawer__account account-icon > .svg-wrapper {
height: 2rem;
width: 2rem;
margin-right: 1rem;
}
.menu-drawer__account shop-user-avatar {
--shop-avatar-size: 2.4rem;
margin-right: 0.55rem;
margin-left: -0.45rem;
}
.menu-drawer__account:hover account-icon > .svg-wrapper {
transform: scale(1.07);
}
.menu-drawer .list-social {
justify-content: flex-start;
margin-left: -1.25rem;
}
.menu-drawer .list-social:empty {
display: none;
}
.menu-drawer .list-social__link {
padding: 1.1rem 1.1rem;
}
@media screen and (max-width: 749px) {
.menu-drawer.country-selector-open {
transform: none !important;
filter: none !important;
transition: none !important;
}
}
+102
View File
@@ -0,0 +1,102 @@
.modal-video {
background: rgba(var(--color-foreground), 0.2);
box-sizing: border-box;
height: 100%;
left: 0;
margin: 0 auto;
opacity: 0;
overflow: auto;
position: fixed;
top: 0;
visibility: hidden;
width: 100%;
z-index: -1;
}
.modal-video[open] {
opacity: 1;
visibility: visible;
z-index: 101;
}
.modal-video__content {
background-color: rgb(var(--color-background));
height: 100%;
margin: 0;
overflow: auto;
padding: 0;
position: absolute;
width: 100%;
}
.modal-video__toggle {
align-items: center;
background-color: rgb(var(--color-background));
border-radius: 50%;
border: 0.1rem solid rgba(var(--color-foreground), 0.1);
color: rgba(var(--color-foreground), 0.55);
cursor: pointer;
display: flex;
justify-content: center;
margin: 0 0 0 auto;
padding: 1.2rem;
position: fixed;
right: 0.5rem;
top: 2rem;
width: 4rem;
z-index: 2;
}
@media screen and (min-width: 750px) {
.modal-video__toggle {
right: 4.8rem;
top: 3.5rem;
}
}
@media screen and (min-width: 990px) {
.modal-video__toggle {
right: 4.3rem;
top: 3rem;
}
}
.modal-video__toggle .icon {
height: auto;
margin: 0;
width: 2.2rem;
}
.modal-video__content-info {
height: calc(100% - 6rem);
margin: 0 auto;
padding-top: 8rem;
width: calc(100% - 1rem);
}
@media screen and (min-width: 750px) {
.modal-video__content-info {
height: calc(100% - 7.5rem);
padding-top: 9.5rem;
width: calc(100% - 9.6rem);
}
}
@media screen and (min-width: 990px) {
.modal-video__content-info {
height: calc(100% - 7rem);
padding-top: 9rem;
width: calc(100% - 8.6rem);
}
}
.modal-video__video,
.modal-video__video iframe {
height: 100%;
width: 100%;
}
.modal-video__video iframe {
position: static;
border: 0;
}
+42
View File
@@ -0,0 +1,42 @@
.shopify-model-viewer-ui .shopify-model-viewer-ui__controls-area {
background: rgb(var(--color-background));
border-color: rgba(var(--color-foreground), 0.04);
}
.shopify-model-viewer-ui .shopify-model-viewer-ui__button {
color: rgba(var(--color-foreground), 0.75);
}
.shopify-model-viewer-ui .shopify-model-viewer-ui__button--control:hover {
color: rgba(var(--color-foreground), 0.55);
}
.shopify-model-viewer-ui .shopify-model-viewer-ui__button--control:active,
.shopify-model-viewer-ui .shopify-model-viewer-ui__button--control.focus-visible:focus {
color: rgba(var(--color-foreground), 0.55);
background: rgba(var(--color-foreground), 0.04);
}
.shopify-model-viewer-ui .shopify-model-viewer-ui__button--control:not(:last-child):after {
border-color: rgba(var(--color-foreground), 0.04);
}
.shopify-model-viewer-ui .shopify-model-viewer-ui__button--poster {
border-radius: 50%;
color: rgb(var(--color-foreground));
background: rgb(var(--color-background));
border-color: rgba(var(--color-foreground), 0.1);
transform: translate(-50%, -50%) scale(1);
transition: transform var(--duration-short) ease, color var(--duration-short) ease;
}
.shopify-model-viewer-ui .shopify-model-viewer-ui__poster-control-icon {
width: 4.8rem;
height: 4.8rem;
margin-top: 0.3rem;
}
.shopify-model-viewer-ui .shopify-model-viewer-ui__button--poster:hover,
.shopify-model-viewer-ui .shopify-model-viewer-ui__button--poster:focus {
transform: translate(-50%, -50%) scale(1.1);
}
+71
View File
@@ -0,0 +1,71 @@
.newsletter-form {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
position: relative;
}
@media screen and (min-width: 750px) {
.newsletter-form {
align-items: flex-start;
margin: 0 auto;
max-width: 36rem;
}
}
.newsletter-form__field-wrapper {
width: 100%;
}
.newsletter-form__field-wrapper .field__input {
padding-right: 5rem;
}
.newsletter-form__field-wrapper .field {
z-index: 0;
}
.newsletter-form__message {
justify-content: center;
margin-bottom: 0;
}
.newsletter-form__message--success {
margin-top: 2rem;
}
@media screen and (min-width: 750px) {
.newsletter-form__message {
justify-content: flex-start;
}
}
.newsletter-form__button {
width: 4.4rem;
margin: 0;
right: var(--inputs-border-width);
top: 0;
height: 100%;
z-index: 2;
}
.newsletter-form__button:focus-visible {
box-shadow: 0 0 0 0.3rem rgb(var(--color-background)), 0 0 0 0.4rem rgba(var(--color-foreground));
background-color: rgb(var(--color-background));
}
.newsletter-form__button:focus {
box-shadow: 0 0 0 0.3rem rgb(var(--color-background)), 0 0 0 0.4rem rgba(var(--color-foreground));
background-color: rgb(var(--color-background));
}
.newsletter-form__button:not(:focus-visible):not(.focused) {
box-shadow: inherit;
background-color: inherit;
}
.newsletter-form__button .icon {
width: 1.5rem;
}
+82
View File
@@ -0,0 +1,82 @@
.pagination-wrapper {
margin-top: 4rem;
}
@media screen and (min-width: 990px) {
.pagination-wrapper {
margin-top: 5rem;
}
}
.pagination__list {
display: flex;
flex-wrap: wrap;
justify-content: center;
}
.pagination__list > li {
flex: 1 0 4.4rem;
max-width: 4.4rem;
}
.pagination__list > li:not(:last-child) {
margin-right: 1rem;
}
.pagination__item {
color: rgb(var(--color-foreground));
display: inline-flex;
justify-content: center;
align-items: center;
position: relative;
height: 4.4rem;
width: 100%;
padding: 0;
text-decoration: none;
}
a.pagination__item:hover::after {
height: 0.1rem;
}
.pagination__item .icon-caret {
height: 0.6rem;
}
.pagination__item--current::after {
height: 0.1rem;
}
.pagination__item--current::after,
.pagination__item:hover::after {
content: '';
display: block;
width: 2rem;
position: absolute;
bottom: 8px;
left: 50%;
transform: translateX(-50%);
background-color: currentColor;
}
.pagination__item--next .icon {
margin-left: -0.2rem;
transform: rotate(90deg);
}
.pagination__item--next:hover .icon {
transform: rotate(90deg) scale(1.07);
}
.pagination__item--prev .icon {
margin-right: -0.2rem;
transform: rotate(-90deg);
}
.pagination__item--prev:hover .icon {
transform: rotate(-90deg) scale(1.07);
}
.pagination__item-arrow:hover::after {
display: none;
}
+175
View File
@@ -0,0 +1,175 @@
pickup-availability {
display: block;
}
pickup-availability[available] {
min-height: 8rem;
}
.pickup-availability-preview {
align-items: flex-start;
display: flex;
gap: 0.2rem;
padding: 1rem 2rem 0 0;
}
.pickup-availability-preview .icon {
flex-shrink: 0;
height: 1.8rem;
}
.pickup-availability-preview .icon-unavailable {
height: 1.6rem;
margin-top: 0.1rem;
}
.pickup-availability-button {
background-color: transparent;
color: rgba(var(--color-foreground), 0.75);
letter-spacing: 0.06rem;
padding: 0 0 0.2rem;
text-align: left;
text-decoration: underline;
}
.pickup-availability-button:hover {
color: rgb(var(--color-foreground));
}
.pickup-availability-info * {
margin: 0 0 0.6rem;
}
pickup-availability-drawer {
background-color: rgb(var(--color-background));
height: 100%;
opacity: 0;
overflow-y: auto;
padding: 2rem;
position: fixed;
top: 0;
right: 0;
z-index: 4;
transition: opacity var(--duration-default) ease, transform var(--duration-default) ease;
transform: translateX(100%);
width: 100%;
border-width: 0 0 0 var(--drawer-border-width);
border-color: rgba(var(--color-foreground), var(--drawer-border-opacity));
border-style: solid;
filter: drop-shadow(
var(--drawer-shadow-horizontal-offset) var(--drawer-shadow-vertical-offset) var(--drawer-shadow-blur-radius)
rgba(var(--color-shadow), var(--drawer-shadow-opacity))
);
}
pickup-availability-drawer[open] {
transform: translateX(0);
opacity: 1;
}
@media screen and (min-width: 750px) {
pickup-availability-drawer {
transform: translateX(100%);
width: 37.5rem;
}
pickup-availability-drawer[open] {
opacity: 1;
transform: translateX(0);
animation: animateDrawerOpen var(--duration-default) ease;
}
}
.pickup-availability-header {
align-items: flex-start;
display: flex;
justify-content: space-between;
margin-bottom: 1.2rem;
}
.pickup-availability-drawer-title {
margin: 0.5rem 0 0;
}
.pickup-availability-header .icon {
width: 2rem;
}
.pickup-availability-drawer-button {
background-color: transparent;
border: none;
color: rgb(var(--color-foreground));
cursor: pointer;
display: block;
height: 4.4rem;
padding: 1.2rem;
width: 4.4rem;
}
.pickup-availability-drawer-button:hover {
color: rgba(var(--color-foreground), 0.75);
}
.pickup-availability-variant {
font-size: 1.3rem;
line-height: calc(1 + 0.2 / var(--font-body-scale));
margin: 0 0 1.2rem;
text-transform: capitalize;
}
.pickup-availability-variant > * + strong {
margin-left: 1rem;
}
.pickup-availability-list__item {
border-bottom: 0.1rem solid rgba(var(--color-foreground), 0.08);
padding: 2rem 0;
}
.pickup-availability-list__item:first-child {
border-top: 0.1rem solid rgba(var(--color-foreground), 0.08);
}
.pickup-availability-list__item > * {
margin: 0;
}
.pickup-availability-list__item > * + * {
margin-top: 1rem;
}
.pickup-availability-address {
font-style: normal;
font-size: 1.2rem;
line-height: calc(1 + 0.5 / var(--font-body-scale));
}
.pickup-availability-address p {
margin: 0;
}
@keyframes animateDrawerOpen {
@media screen and (max-width: 749px) {
0% {
opacity: 0;
transform: translateX(100%);
}
100% {
opacity: 1;
transform: translateX(0);
}
}
@media screen and (min-width: 750px) {
0% {
opacity: 0;
transform: translateX(100%);
}
100% {
opacity: 1;
transform: translateX(0);
}
}
}
+225
View File
@@ -0,0 +1,225 @@
.predictive-search {
display: none;
position: absolute;
top: calc(100% + 0.1rem);
left: -0.1rem;
border-width: var(--popup-border-width);
border-style: solid;
border-color: rgba(var(--color-foreground), var(--popup-border-opacity));
background-color: rgb(var(--color-background));
z-index: 3;
border-bottom-right-radius: var(--popup-corner-radius);
border-bottom-left-radius: var(--popup-corner-radius);
box-shadow: var(--popup-shadow-horizontal-offset) var(--popup-shadow-vertical-offset) var(--popup-shadow-blur-radius)
rgba(var(--color-shadow), var(--popup-shadow-opacity));
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
.predictive-search--search-template {
z-index: 2;
width: calc(100% + 0.2rem);
}
.predictive-search__results-groups-wrapper {
display: flex;
border-bottom: 0.1rem solid rgba(var(--color-foreground), 0.08);
padding-bottom: 1rem;
}
@media screen and (max-width: 749px) {
.predictive-search--header {
right: 0;
left: 0;
top: 100%;
}
.predictive-search__results-groups-wrapper {
flex-direction: column;
}
.predictive-search__results-groups-wrapper:not(.predictive-search__results-groups-wrapper--no-suggestions) {
/* On mobile, when there are no suggestions the first .predictive-search__results-groups-wrapper
* is virtually empty due to a display: hidden on the predictive-search__pages-wrapper child.
* This causes the gap to render and look like a big top margin */
gap: 2rem;
}
}
@media screen and (min-width: 750px) {
.predictive-search {
border-top: none;
width: calc(100% + 0.2rem);
}
.header predictive-search {
position: relative;
}
}
predictive-search[open] .predictive-search,
predictive-search[loading] .predictive-search {
display: block;
}
.predictive-search__result-group {
display: flex;
flex-direction: column;
flex: 1 1 auto;
gap: 2rem;
}
.predictive-search__result-group:first-child .predictive-search__pages-wrapper {
display: none;
}
@media screen and (min-width: 750px) {
.predictive-search__results-groups-wrapper--no-products .predictive-search__result-group:nth-child(2),
.predictive-search__result-group:last-child .predictive-search__pages-wrapper {
display: none;
}
.predictive-search__result-group:first-child .predictive-search__pages-wrapper {
display: initial;
}
.predictive-search__result-group:first-child {
flex: 0 0 26.4rem;
}
.predictive-search__results-groups-wrapper--no-products .predictive-search__result-group:first-child,
.predictive-search__result-group:only-child {
flex-grow: 1;
}
}
.predictive-search__heading {
border-bottom: 0.1rem solid rgba(var(--color-foreground), 0.08);
margin: 0 2rem;
padding: 1.5rem 0 0.75rem;
color: rgba(var(--color-foreground), 0.7);
}
predictive-search .spinner {
width: 1.5rem;
height: 1.5rem;
line-height: 0;
}
predictive-search:not([loading]) .predictive-search__loading-state,
predictive-search:not([loading]) .predictive-search-status__loading {
display: none;
}
predictive-search[loading] .predictive-search__loading-state {
display: flex;
justify-content: center;
padding: 1rem;
}
predictive-search[loading] .predictive-search__search-for-button {
display: none;
}
predictive-search[loading] .predictive-search__results-groups-wrapper ~ .predictive-search__loading-state {
display: none;
}
predictive-search[loading] .predictive-search__results-groups-wrapper ~ .predictive-search__search-for-button {
display: initial;
}
.predictive-search__list-item[aria-selected='true'] > *,
.predictive-search__list-item:hover > *,
.predictive-search__item[aria-selected='true'],
.predictive-search__item:hover {
color: rgb(var(--color-foreground));
background-color: rgba(var(--color-foreground), 0.04);
}
.predictive-search__list-item[aria-selected='true'] .predictive-search__item-heading,
.predictive-search__list-item:hover .predictive-search__item-heading {
text-decoration: underline;
text-underline-offset: 0.3rem;
}
.predictive-search__item {
display: flex;
padding: 1rem 2rem;
text-align: left;
text-decoration: none;
width: 100%;
}
.predictive-search__item--link-with-thumbnail {
display: grid;
grid-template-columns: 5rem 1fr;
grid-column-gap: 2rem;
grid-template-areas: 'product-image product-content';
}
.predictive-search__item-content {
grid-area: product-content;
display: flex;
flex-direction: column;
}
.predictive-search__item-content--centered {
justify-content: center;
}
.predictive-search__item-vendor {
font-size: 0.9rem;
}
.predictive-search__item-heading {
margin: 0;
}
.predictive-search__item-query-result *:not(mark) {
font-weight: bolder;
}
.predictive-search__item-query-result mark {
color: rgba(var(--color-foreground), 0.75);
}
.predictive-search__item-query-result mark {
background-color: transparent;
}
.predictive-search__item .price {
color: rgba(var(--color-foreground), 0.7);
font-size: 1.2rem;
}
.predictive-search__item-vendor + .predictive-search__item-heading,
.predictive-search .price {
margin-top: 0.5rem;
}
.predictive-search__item--term {
justify-content: space-between;
align-items: center;
padding: 1.3rem 2rem;
word-break: break-all;
line-height: calc(1 + 0.4 / var(--font-body-scale));
}
@media screen and (min-width: 750px) {
.predictive-search__item--term {
padding-top: 1rem;
padding-bottom: 1rem;
}
}
.predictive-search__item--term .icon-arrow {
width: calc(var(--font-heading-scale) * 1.4rem);
height: calc(var(--font-heading-scale) * 1.4rem);
flex-shrink: 0;
margin-left: calc(var(--font-heading-scale) * 2rem);
color: rgb(var(--color-link));
}
.predictive-search__image {
grid-area: product-image;
object-fit: contain;
font-family: 'object-fit: contain';
}
+100
View File
@@ -0,0 +1,100 @@
.price {
font-size: 1.6rem;
letter-spacing: 0.1rem;
line-height: calc(1 + 0.5 / var(--font-body-scale));
color: rgb(var(--color-foreground));
}
.price > * {
display: inline-block;
vertical-align: top;
}
.price.price--unavailable {
visibility: hidden;
}
.price--end {
text-align: right;
}
.price .price-item {
display: inline-block;
margin: 0 1rem 0 0;
}
.price__regular .price-item--regular {
margin-right: 0;
}
.price:not(.price--show-badge) .price-item--last:last-of-type {
margin: 0;
}
@media screen and (min-width: 750px) {
.price {
margin-bottom: 0;
}
}
.price--large {
font-size: 1.6rem;
line-height: calc(1 + 0.5 / var(--font-body-scale));
letter-spacing: 0.13rem;
}
@media screen and (min-width: 750px) {
.price--large {
font-size: 1.8rem;
}
}
.price--sold-out .price__availability,
.price__regular {
display: block;
}
.price__sale,
.price__availability,
.price .price__badge-sale,
.price .price__badge-sold-out,
.price--on-sale .price__regular,
.price--on-sale .price__availability {
display: none;
}
.price--sold-out .price__badge-sold-out,
.price--on-sale .price__badge-sale,
.volume-pricing--sale-badge .price__badge-sale {
display: inline-block;
}
.volume-pricing--sale-badge .price__badge-sale {
margin-left: 0.5rem;
}
.price--on-sale .price__sale {
display: initial;
flex-direction: row;
flex-wrap: wrap;
}
.price--center {
display: initial;
justify-content: center;
}
.price--on-sale .price-item--regular {
text-decoration: line-through;
color: rgba(var(--color-foreground), 0.75);
font-size: 1.3rem;
}
.unit-price {
display: block;
font-size: 1.1rem;
letter-spacing: 0.04rem;
line-height: calc(1 + 0.2 / var(--font-body-scale));
margin-top: 0.2rem;
color: rgba(var(--color-foreground), 0.7);
}
+44
View File
@@ -0,0 +1,44 @@
.product__xr-button {
background: rgba(var(--color-foreground), 0.08);
color: rgb(var(--color-foreground));
margin: 1rem auto;
box-shadow: none;
display: flex;
}
.button.product__xr-button:hover {
box-shadow: none;
}
.product__xr-button[data-shopify-xr-hidden] {
visibility: hidden;
}
.shopify-design-mode .product__xr-button[data-shopify-xr-hidden] {
display: none;
}
@media screen and (max-width: 749px) {
slider-component .product__xr-button {
display: none;
}
.active .product__xr-button:not([data-shopify-xr-hidden]) {
display: block;
}
}
@media screen and (min-width: 750px) {
slider-component + .button.product__xr-button {
display: none;
}
.product__xr-button[data-shopify-xr-hidden] {
display: none;
}
}
.product__xr-button .icon {
width: 1.4rem;
margin-right: 1rem;
}
+152
View File
@@ -0,0 +1,152 @@
variant-selects {
display: block;
}
.product--no-media .product-form__input--pill,
.product--no-media .product-form__input--swatch,
.product--no-media .product-form__input--dropdown {
display: flex;
align-items: center;
justify-content: center;
text-align: center;
}
.product--no-media .product-form__input.product-form__input--pill,
.product--no-media .product-form__input.product-form__input--swatch {
flex-wrap: wrap;
margin: 0 auto 1.2rem auto;
}
.product--no-media .product-form__input--dropdown {
flex-direction: column;
max-width: 100%;
}
:is(.product-form__input--pill, .product-form__input--swatch) .form__label {
margin-bottom: 0.2rem;
}
.product-form__input input[type='radio'] {
clip: rect(0, 0, 0, 0);
overflow: hidden;
position: absolute;
height: 1px;
width: 1px;
}
.product-form__input input[type='radio']:not(.disabled):not(.visually-disabled) + label > .label-unavailable {
display: none;
}
.product-form__input--dropdown {
--swatch-input--size: 2rem;
margin-bottom: 1.6rem;
}
.product-form__input--dropdown .dropdown-swatch + select {
padding-left: calc(2.4rem + var(--swatch-input--size));
}
.product-form__input--dropdown .dropdown-swatch {
position: absolute;
left: 1.6rem;
top: calc(50% - var(--swatch-input--size) / 2);
width: var(--swatch-input--size);
height: var(--swatch-input--size);
z-index: 1;
}
/* Custom styles for Pill display type */
.product-form__input--pill input[type='radio'] + label {
border: var(--variant-pills-border-width) solid rgba(var(--color-foreground), var(--variant-pills-border-opacity));
background-color: rgb(var(--color-background));
color: rgba(var(--color-foreground));
border-radius: var(--variant-pills-radius);
color: rgb(var(--color-foreground));
display: inline-block;
margin: 0.7rem 0.5rem 0.2rem 0;
padding: 1rem 2rem;
font-size: 1.4rem;
letter-spacing: 0.1rem;
line-height: 1;
text-align: center;
transition: border var(--duration-short) ease;
cursor: pointer;
position: relative;
}
.product-form__input--pill input[type='radio'] + label:before {
content: '';
position: absolute;
top: calc(var(--variant-pills-border-width) * -1);
right: calc(var(--variant-pills-border-width) * -1);
bottom: calc(var(--variant-pills-border-width) * -1);
left: calc(var(--variant-pills-border-width) * -1);
z-index: -1;
border-radius: var(--variant-pills-radius);
box-shadow: var(--variant-pills-shadow-horizontal-offset) var(--variant-pills-shadow-vertical-offset)
var(--variant-pills-shadow-blur-radius) rgba(var(--color-shadow), var(--variant-pills-shadow-opacity));
}
.product-form__input--pill input[type='radio'] + label:hover {
border-color: rgb(var(--color-foreground));
}
.product-form__input--pill input[type='radio']:checked + label {
background-color: rgb(var(--color-foreground));
color: rgb(var(--color-background));
}
@media screen and (forced-colors: active) {
.product-form__input--pill input[type='radio']:checked + label {
text-decoration: underline;
}
.product-form__input--pill input[type='radio']:focus-visible + label {
outline: transparent solid 1px;
outline-offset: 2px;
}
}
.product-form__input--pill input[type='radio']:checked + label::selection {
background-color: rgba(var(--color-background), 0.3);
}
.product-form__input--pill input[type='radio']:disabled + label,
.product-form__input--pill input[type='radio'].disabled + label {
border-color: rgba(var(--color-foreground), 0.1);
color: rgba(var(--color-foreground), 0.6);
text-decoration: line-through;
}
.product-form__input--pill input[type='radio'].disabled:checked + label,
.product-form__input--pill input[type='radio']:disabled:checked + label {
color: rgba(var(--color-background), 0.6);
}
.product-form__input--pill input[type='radio']:focus-visible + label {
box-shadow: 0 0 0 0.3rem rgb(var(--color-background)), 0 0 0 0.5rem rgba(var(--color-foreground), 0.55);
}
/* Fallback */
.product-form__input--pill input[type='radio'].focused + label {
box-shadow: 0 0 0 0.3rem rgb(var(--color-background)), 0 0 0 0.5rem rgba(var(--color-foreground), 0.55);
}
/* Custom styles for Swatch display type */
.product-form__input--swatch {
display: flex;
flex-wrap: wrap;
}
.product-form__input--swatch .swatch-input__input + .swatch-input__label {
--swatch-input--size: 3.6rem;
margin: 0.7rem 1.2rem 0.2rem 0;
}
@media screen and (min-width: 750px) {
.product-form__input--swatch .swatch-input__input + .swatch-input__label {
--swatch-input--size: 2.8rem;
}
}
/* End custom styles for Swatch display type */
+33
View File
@@ -0,0 +1,33 @@
.progress-bar-container {
width: 100%;
margin: auto;
}
.progress-bar {
height: 0.13rem;
width: 100%;
}
.progress-bar-value {
width: 100%;
height: 100%;
background-color: rgb(var(--color-foreground));
animation: indeterminateAnimation var(--duration-extra-longer) infinite ease-in-out;
transform-origin: 0;
}
.progress-bar .progress-bar-value {
display: block;
}
@keyframes indeterminateAnimation {
0% {
transform: translateX(-20%) scaleX(0);
}
40% {
transform: translateX(30%) scaleX(0.7);
}
100% {
transform: translateX(100%) scaleX(0);
}
}
+64
View File
@@ -0,0 +1,64 @@
.product--no-media .rating-wrapper {
text-align: center;
}
.rating {
display: inline-block;
margin: 0;
}
.product .rating-star {
--letter-spacing: 0.8;
--font-size: 1.7;
}
.card-wrapper .rating-star {
--letter-spacing: 0.7;
--font-size: 1.4;
}
.rating-star {
--color-rating-star: rgb(var(--color-foreground));
--percent: calc(
(
var(--rating) / var(--rating-max) + var(--rating-decimal) * var(--font-size) /
(var(--rating-max) * (var(--letter-spacing) + var(--font-size)))
) * 100%
);
letter-spacing: calc(var(--letter-spacing) * 1rem);
font-size: calc(var(--font-size) * 1rem);
line-height: 1;
display: inline-block;
font-family: Times;
margin: 0;
}
.rating-star::before {
content: '★★★★★';
background: linear-gradient(
90deg,
var(--color-rating-star) var(--percent),
rgba(var(--color-foreground), 0.15) var(--percent)
);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.rating-text {
display: none;
}
.rating-count {
display: inline-block;
margin: 0;
}
@media (forced-colors: active) {
.rating {
display: none;
}
.rating-text {
display: block;
}
}
+74
View File
@@ -0,0 +1,74 @@
.search__input.field__input {
padding-right: 9.8rem;
}
.search__button {
right: var(--inputs-border-width);
top: var(--inputs-border-width);
}
.reset__button {
right: calc(var(--inputs-border-width) + 4.4rem);
top: var(--inputs-border-width);
}
.reset__button:not(:focus-visible)::after {
border-right: 0.1rem solid rgba(var(--color-foreground), 0.08);
display: block;
height: calc(100% - 1.6rem);
content: '';
position: absolute;
right: 0;
}
.reset__button:not(:focus)::after {
border-right: 0.1rem solid rgba(var(--color-foreground), 0.08);
display: block;
height: calc(100% - 1.8rem);
content: '';
position: absolute;
right: 0;
}
.search__button:focus-visible,
.reset__button:focus-visible {
background-color: rgb(var(--color-background));
z-index: 4;
}
.search__button:focus,
.reset__button:focus {
background-color: rgb(var(--color-background));
z-index: 4;
}
.search__button:not(:focus-visible):not(.focused),
.reset__button:not(:focus-visible):not(.focused) {
box-shadow: inherit;
background-color: inherit;
}
.search__button:hover .icon,
.reset__button:hover .icon {
transform: scale(1.07);
}
.search__button .icon {
height: 1.8rem;
width: 1.8rem;
}
.reset__button .icon.icon-close {
height: 1.8rem;
width: 1.8rem;
stroke-width: 0.1rem;
}
/* Remove extra spacing for search inputs in Safari */
input::-webkit-search-decoration {
-webkit-appearance: none;
}
.template-search__results {
position: relative;
}
+10
View File
@@ -0,0 +1,10 @@
.button-show-more {
padding-left: 0;
justify-content: flex-start;
padding-bottom: 1.1rem;
}
.button-show-more,
.button-show-less {
margin-top: 1.5rem;
}
+377
View File
@@ -0,0 +1,377 @@
slider-component {
--desktop-margin-left-first-item: max(
5rem,
calc((100vw - var(--page-width) + 10rem - var(--grid-desktop-horizontal-spacing)) / 2)
);
position: relative;
display: block;
}
slider-component.slider-component-full-width {
--desktop-margin-left-first-item: 1.5rem;
}
@media screen and (max-width: 749px) {
slider-component.page-width {
padding: 0 1.5rem;
}
}
@media screen and (min-width: 749px) and (max-width: 990px) {
slider-component.page-width {
padding: 0 5rem;
}
}
.slider__slide {
--focus-outline-padding: 0.5rem;
--shadow-padding-top: calc((var(--shadow-vertical-offset) * -1 + var(--shadow-blur-radius)) * var(--shadow-visible));
--shadow-padding-bottom: calc((var(--shadow-vertical-offset) + var(--shadow-blur-radius)) * var(--shadow-visible));
scroll-snap-align: start;
flex-shrink: 0;
padding-bottom: 0;
}
@media screen and (max-width: 749px) {
.slider.slider--mobile {
position: relative;
flex-wrap: inherit;
overflow-x: auto;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
scroll-padding-left: 1.5rem;
-webkit-overflow-scrolling: touch;
margin-bottom: 1rem;
}
/* Fix to show some space at the end of our sliders in all browsers */
.slider--mobile:after {
content: '';
width: 0;
padding-left: 1.5rem;
}
.slider.slider--mobile .slider__slide {
margin-bottom: 0;
padding-top: max(var(--focus-outline-padding), var(--shadow-padding-top));
padding-bottom: max(var(--focus-outline-padding), var(--shadow-padding-bottom));
}
.slider.slider--mobile.contains-card--standard .slider__slide:not(.collection-list__item--no-media) {
padding-bottom: var(--focus-outline-padding);
}
.slider.slider--mobile.contains-content-container .slider__slide {
--focus-outline-padding: 0rem;
}
}
@media screen and (min-width: 750px) {
.slider.slider--tablet-up {
position: relative;
flex-wrap: inherit;
overflow-x: auto;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
scroll-padding-left: 1rem;
-webkit-overflow-scrolling: touch;
}
.slider.slider--tablet-up .slider__slide {
margin-bottom: 0;
}
}
@media screen and (max-width: 989px) {
.slider.slider--tablet {
position: relative;
flex-wrap: inherit;
overflow-x: auto;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
scroll-padding-left: 1.5rem;
-webkit-overflow-scrolling: touch;
margin-bottom: 1rem;
}
/* Fix to show some space at the end of our sliders in all browsers */
.slider--tablet:after {
content: '';
width: 0;
padding-left: 1.5rem;
margin-left: calc(-1 * var(--grid-desktop-horizontal-spacing));
}
.slider.slider--tablet .slider__slide {
margin-bottom: 0;
padding-top: max(var(--focus-outline-padding), var(--shadow-padding-top));
padding-bottom: max(var(--focus-outline-padding), var(--shadow-padding-bottom));
}
.slider.slider--tablet.contains-card--standard .slider__slide:not(.collection-list__item--no-media) {
padding-bottom: var(--focus-outline-padding);
}
.slider.slider--tablet.contains-content-container .slider__slide {
--focus-outline-padding: 0rem;
}
}
.slider--everywhere {
position: relative;
flex-wrap: inherit;
overflow-x: auto;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
-webkit-overflow-scrolling: touch;
margin-bottom: 1rem;
}
.slider.slider--everywhere .slider__slide {
margin-bottom: 0;
scroll-snap-align: center;
}
@media screen and (min-width: 990px) {
.slider-component-desktop.page-width {
max-width: none;
}
.slider--desktop {
position: relative;
flex-wrap: inherit;
overflow-x: auto;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
-webkit-overflow-scrolling: touch;
margin-bottom: 1rem;
scroll-padding-left: var(--desktop-margin-left-first-item);
}
/* Fix to show some space at the end of our sliders in all browsers */
.slider--desktop:after {
content: '';
width: 0;
padding-left: 5rem;
margin-left: calc(-1 * var(--grid-desktop-horizontal-spacing));
}
.slider.slider--desktop .slider__slide {
margin-bottom: 0;
padding-top: max(var(--focus-outline-padding), var(--shadow-padding-top));
padding-bottom: max(var(--focus-outline-padding), var(--shadow-padding-bottom));
}
.slider--desktop .slider__slide:first-child {
margin-left: var(--desktop-margin-left-first-item);
scroll-margin-left: var(--desktop-margin-left-first-item);
}
.slider-component-full-width .slider--desktop {
scroll-padding-left: 1.5rem;
}
.slider-component-full-width .slider--desktop .slider__slide:first-child {
margin-left: 1.5rem;
scroll-margin-left: 1.5rem;
}
/* Fix to show some space at the end of our sliders in all browsers */
.slider-component-full-width .slider--desktop:after {
padding-left: 1.5rem;
}
.slider--desktop.grid--5-col-desktop .grid__item {
width: calc((100% - var(--desktop-margin-left-first-item)) / 5 - var(--grid-desktop-horizontal-spacing) * 2);
}
.slider--desktop.grid--4-col-desktop .grid__item {
width: calc((100% - var(--desktop-margin-left-first-item)) / 4 - var(--grid-desktop-horizontal-spacing) * 3);
}
.slider--desktop.grid--3-col-desktop .grid__item {
width: calc((100% - var(--desktop-margin-left-first-item)) / 3 - var(--grid-desktop-horizontal-spacing) * 4);
}
.slider--desktop.grid--2-col-desktop .grid__item {
width: calc((100% - var(--desktop-margin-left-first-item)) / 2 - var(--grid-desktop-horizontal-spacing) * 5);
}
.slider--desktop.grid--1-col-desktop .grid__item {
width: calc((100% - var(--desktop-margin-left-first-item)) - var(--grid-desktop-horizontal-spacing) * 9);
}
.slider.slider--desktop.contains-card--standard .slider__slide:not(.collection-list__item--no-media) {
padding-bottom: var(--focus-outline-padding);
}
.slider.slider--desktop.contains-content-container .slider__slide {
--focus-outline-padding: 0rem;
}
}
@media (prefers-reduced-motion) {
.slider {
scroll-behavior: auto;
}
}
/* Scrollbar */
.slider {
scrollbar-color: rgb(var(--color-foreground)) rgba(var(--color-foreground), 0.04);
-ms-overflow-style: none;
scrollbar-width: none;
}
.slider::-webkit-scrollbar {
height: 0.4rem;
width: 0.4rem;
display: none;
}
.slider::-webkit-scrollbar-thumb {
background-color: rgb(var(--color-foreground));
border-radius: 0.4rem;
border: 0;
}
.slider::-webkit-scrollbar-track {
background: rgba(var(--color-foreground), 0.04);
border-radius: 0.4rem;
}
.slider-counter {
display: flex;
justify-content: center;
min-width: 4.4rem;
}
@media screen and (min-width: 750px) {
.slider-counter--dots {
margin: 0 1.2rem;
}
}
.slider-counter__link {
padding: 1rem;
}
@media screen and (max-width: 749px) {
.slider-counter__link {
padding: 0.7rem;
}
}
.slider-counter__link--dots .dot {
width: 1rem;
height: 1rem;
border-radius: 50%;
border: 0.1rem solid rgba(var(--color-foreground), 0.5);
padding: 0;
display: block;
}
.slider-counter__link--active.slider-counter__link--dots .dot {
background-color: rgb(var(--color-foreground));
}
@media screen and (forced-colors: active) {
.slider-counter__link--active.slider-counter__link--dots .dot {
background-color: CanvasText;
}
}
.slider-counter__link--dots:not(.slider-counter__link--active):hover .dot {
border-color: rgb(var(--color-foreground));
}
.slider-counter__link--dots .dot,
.slider-counter__link--numbers {
transition: transform 0.2s ease-in-out;
}
.slider-counter__link--active.slider-counter__link--numbers,
.slider-counter__link--dots:not(.slider-counter__link--active):hover .dot,
.slider-counter__link--numbers:hover {
transform: scale(1.1);
}
.slider-counter__link--numbers {
color: rgba(var(--color-foreground), 0.5);
text-decoration: none;
}
.slider-counter__link--numbers:hover {
color: rgb(var(--color-foreground));
}
.slider-counter__link--active.slider-counter__link--numbers {
text-decoration: underline;
color: rgb(var(--color-foreground));
}
.slider-buttons {
display: flex;
align-items: center;
justify-content: center;
}
@media screen and (min-width: 990px) {
.slider:not(.slider--everywhere):not(.slider--desktop) + .slider-buttons {
display: none;
}
}
@media screen and (max-width: 989px) {
.slider--desktop:not(.slider--tablet) + .slider-buttons {
display: none;
}
}
@media screen and (min-width: 750px) {
.slider--mobile + .slider-buttons {
display: none;
}
}
.slider-button {
color: rgba(var(--color-foreground), 0.75);
background: transparent;
border: none;
cursor: pointer;
width: 44px;
height: 44px;
display: flex;
align-items: center;
justify-content: center;
}
.slider-button:not([disabled]):hover {
color: rgb(var(--color-foreground));
}
.slider-button .icon {
height: 0.6rem;
}
.slider-button[disabled] .icon {
color: rgba(var(--color-foreground), 0.3);
cursor: not-allowed;
}
.slider-button--next .icon {
transform: rotate(-90deg);
}
.slider-button--prev .icon {
transform: rotate(90deg);
}
.slider-button--next:not([disabled]):hover .icon {
transform: rotate(-90deg) scale(1.1);
}
.slider-button--prev:not([disabled]):hover .icon {
transform: rotate(90deg) scale(1.1);
}
+201
View File
@@ -0,0 +1,201 @@
slideshow-component {
position: relative;
display: flex;
flex-direction: column;
}
slideshow-component .slideshow.banner {
flex-direction: row;
flex-wrap: nowrap;
margin: 0;
gap: 0;
overflow-y: hidden;
}
.slideshow__slide {
padding: 0;
position: relative;
display: flex;
flex-direction: column;
visibility: visible;
}
@media screen and (max-width: 749px) {
.slideshow--placeholder.banner--mobile-bottom.banner--adapt_image .slideshow__media,
.slideshow--placeholder.banner--adapt_image:not(.banner--mobile-bottom) {
height: 28rem;
}
}
@media screen and (min-width: 750px) {
.slideshow--placeholder.banner--adapt_image {
height: 56rem;
}
}
.slideshow__text.banner__box {
display: flex;
flex-direction: column;
justify-content: center;
max-width: 54.5rem;
}
.slideshow__text > * {
max-width: 100%;
}
@media screen and (max-width: 749px) {
slideshow-component.page-width .slideshow__text {
border-right: var(--text-boxes-border-width) solid rgba(var(--color-foreground), var(--text-boxes-border-opacity));
border-left: var(--text-boxes-border-width) solid rgba(var(--color-foreground), var(--text-boxes-border-opacity));
}
.banner--mobile-bottom .slideshow__text.banner__box {
max-width: 100%;
}
.banner--mobile-bottom .slideshow__text-wrapper {
flex-grow: 1;
}
.banner--mobile-bottom .slideshow__text.banner__box {
height: 100%;
}
.banner--mobile-bottom .slideshow__text .button {
flex-grow: 0;
}
.slideshow__text.slideshow__text-mobile--left {
align-items: flex-start;
text-align: left;
}
.slideshow__text.slideshow__text-mobile--right {
align-items: flex-end;
text-align: right;
}
}
@media screen and (min-width: 750px) {
.slideshow__text.slideshow__text--left {
align-items: flex-start;
text-align: left;
}
.slideshow__text.slideshow__text--right {
align-items: flex-end;
text-align: right;
}
}
.slideshow:not(.banner--mobile-bottom) .slideshow__text-wrapper {
height: 100%;
}
@media screen and (min-width: 750px) {
.slideshow__text-wrapper.banner__content {
height: 100%;
padding: 5rem;
}
}
.slideshow__controls {
border: 0.1rem solid rgba(var(--color-foreground), 0.08);
}
.slideshow__controls--top {
order: 2;
z-index: 1;
}
@media screen and (max-width: 749px) {
.slideshow__controls--border-radius-mobile {
border-bottom-right-radius: var(--text-boxes-radius);
border-bottom-left-radius: var(--text-boxes-radius);
}
}
.spaced-section--full-width:last-child slideshow-component:not(.page-width) .slideshow__controls {
border-bottom: none;
}
@media screen and (min-width: 750px) {
.slideshow__controls {
position: relative;
}
}
slideshow-component:not(.page-width) .slider-buttons {
border-right: 0;
border-left: 0;
}
.slideshow__control-wrapper {
display: flex;
}
.slideshow__autoplay {
position: absolute;
right: 0;
border-left: none;
display: flex;
justify-content: center;
align-items: center;
}
@media screen and (max-width: 749px) {
slideshow-component.page-width .slideshow__autoplay {
right: 1.5rem;
}
}
@media screen and (min-width: 750px) {
.slideshow__autoplay.slider-button {
position: inherit;
margin-left: 0.6rem;
padding: 0 0 0 0.6rem;
border-left: 0.1rem solid rgba(var(--color-foreground), 0.08);
}
}
.slideshow__autoplay .icon.icon-play,
.slideshow__autoplay .icon.icon-pause {
display: block;
position: absolute;
opacity: 1;
transform: scale(1);
transition: transform 150ms ease, opacity 150ms ease;
width: 0.8rem;
height: 1.2rem;
}
.slideshow__autoplay .icon.icon-play {
height: 1rem;
}
.slideshow__autoplay path {
fill: rgba(var(--color-foreground), 0.75);
}
.slideshow__autoplay:hover path {
fill: rgb(var(--color-foreground));
}
@media screen and (forced-colors: active) {
.slideshow__autoplay path,
.slideshow__autoplay:hover path {
fill: CanvasText;
}
}
.slideshow__autoplay:hover .svg-wrapper {
transform: scale(1.1);
}
.slideshow__autoplay--paused .icon-pause,
.slideshow__autoplay:not(.slideshow__autoplay--paused) .icon-play {
visibility: hidden;
opacity: 0;
transform: scale(0.8);
}
+87
View File
@@ -0,0 +1,87 @@
/* swatch-input lives in its own file for reusability of the swatch in other areas than the product form context */
.swatch-input__input + .swatch-input__label {
--swatch-input--border-radius: 50%;
display: inline-block;
max-width: 100%;
border-radius: var(--swatch-input--border-radius);
cursor: pointer;
outline-offset: 0.2rem;
outline-color: transparent;
outline-style: solid;
transition-property: outline-color, outline-width, box-shadow;
transition-duration: var(--duration-short);
transition-timing-function: ease;
forced-color-adjust: none;
}
.swatch-input__input + .swatch-input__label.swatch-input__label--square {
--swatch-input--border-radius: 0.2rem;
}
/* Active state */
.swatch-input__input:active + .swatch-input__label,
.swatch-input__input:checked + .swatch-input__label {
outline: 0.1rem solid rgb(var(--color-foreground));
}
/* Hover state */
.swatch-input__input + .swatch-input__label:hover,
.swatch-input__input:hover + .swatch-input__label {
outline: 0.2rem solid rgba(var(--color-foreground), 0.4);
}
/* Focus visible */
.swatch-input__input:focus-visible + .swatch-input__label {
outline: 0.2rem solid rgba(var(--color-foreground), 0.5);
box-shadow: 0 0 0 0.2rem rgb(var(--color-background)), 0 0 0.1rem 0.5rem rgba(var(--color-foreground), 0.25);
}
/* Active and focused */
.swatch-input__input:active:focus-visible + .swatch-input__label,
.swatch-input__input:checked:focus-visible + .swatch-input__label {
outline: 0.1rem solid rgb(var(--color-foreground));
box-shadow: 0 0 0 0.2rem rgb(var(--color-background)), 0 0 0.1rem 0.4rem rgba(var(--color-foreground), 0.25);
}
/* Visually disabled */
.swatch-input__input.visually-disabled:not(:active):not(:checked) + .swatch-input__label {
transition: none;
}
.swatch-input__input.visually-disabled:not(:active):not(:checked) + .swatch-input__label:hover {
outline: none;
}
/* Actually disabled */
.swatch-input__input:disabled + .swatch-input__label {
pointer-events: none;
}
/* Overrides for swatch snippet when used inside disabled swatch-input */
.swatch-input__input:disabled + .swatch-input__label > .swatch,
.swatch-input__input.visually-disabled + .swatch-input__label > .swatch {
position: relative;
overflow: hidden;
}
/* Disabled styles */
.swatch-input__input:disabled + .swatch-input__label > .swatch,
.swatch-input__input.visually-disabled + .swatch-input__label > .swatch {
opacity: 0.4;
}
/* Display crossed out line over swatch when input is disabled */
.swatch-input__input:disabled + .swatch-input__label > .swatch::after,
.swatch-input__input.visually-disabled + .swatch-input__label > .swatch::after {
/* Diagonal of a square = length of the side * sqrt(2) */
--diagonal--size: calc(var(--swatch-input--size) * 1.414);
--crossed-line--size: 0.1rem;
content: '';
position: absolute;
bottom: calc(var(--crossed-line--size) * -0.5);
left: 0;
width: var(--diagonal--size);
height: var(--crossed-line--size);
background-color: rgb(var(--color-foreground));
transform: rotate(-45deg);
transform-origin: left;
}
+25
View File
@@ -0,0 +1,25 @@
/* swatch lives in its own file for reusability of the swatch in swatch-input and dropdown */
.swatch {
--swatch--size: var(--swatch-input--size, 4.4rem);
--swatch--border-radius: var(--swatch-input--border-radius, 50%);
display: block;
width: var(--swatch--size);
max-width: 100%;
aspect-ratio: 1 / 1;
background: var(--swatch--background);
background-position: var(--swatch-focal-point, initial);
background-size: cover;
background-origin: border-box;
border: 0.1rem solid rgba(var(--color-foreground), 0.15);
border-radius: var(--swatch--border-radius);
}
.swatch--square {
--swatch--border-radius: var(--swatch-input--border-radius, 0.2rem);
}
.swatch--unavailable {
border-style: dashed;
border-color: rgba(var(--color-foreground), 0.5);
}
+40
View File
@@ -0,0 +1,40 @@
.totals {
display: flex;
justify-content: center;
align-items: flex-end;
}
.totals > * {
font-size: 1.6rem;
margin: 0;
}
.totals > h2 {
font-size: calc(var(--font-heading-scale) * 1.6rem);
}
.totals * {
line-height: 1;
}
.totals > * + * {
margin-left: 2rem;
}
.totals__total {
margin-top: .5rem;
}
.totals__total-value {
font-size: 1.8rem;
}
.cart__ctas + .totals {
margin-top: 2rem;
}
@media all and (min-width: 750px) {
.totals {
justify-content: flex-end;
}
}
+70
View File
@@ -0,0 +1,70 @@
volume-pricing {
display: block;
margin-top: 2rem;
}
volume-pricing li:nth-child(odd) {
background: rgba(var(--color-foreground), 0.04);
}
volume-pricing ul {
margin-top: 1.2rem;
}
volume-pricing li {
font-size: 1.4rem;
letter-spacing: 0.06rem;
padding: 0.6rem 0.8rem;
display: flex;
justify-content: space-between;
}
div.volume-pricing-note {
margin-top: -2.6rem;
}
.product--no-media .volume-pricing-note {
text-align: center;
}
.product--no-media volume-pricing {
width: 30rem;
}
.volume-pricing-note span,
volume-pricing .label-show-more {
font-size: 1.2rem;
letter-spacing: 0.07rem;
}
volume-pricing show-more-button {
margin-top: 0.8rem;
}
.product-form__input price-per-item,
.price-per-item__container {
display: flex;
align-items: center;
gap: 1rem;
}
.product-form__input .price-per-item {
color: rgba(var(--color-foreground));
font-size: 1.4rem;
letter-spacing: 0.06rem;
}
.price-per-item dl {
margin: 0;
}
.price-per-item dd {
margin-left: 0;
}
.price-per-item__container .variant-item__old-price,
.price__regular .variant-item__old-price {
color: rgba(var(--color-foreground), 0.75);
font-size: 1.2rem;
letter-spacing: 0.07rem;
}
+9
View File
@@ -0,0 +1,9 @@
const ON_CHANGE_DEBOUNCE_TIMER = 300;
const PUB_SUB_EVENTS = {
cartUpdate: 'cart-update',
quantityUpdate: 'quantity-update',
optionValueSelectionChange: 'option-value-selection-change',
variantChange: 'variant-change',
cartError: 'cart-error',
};
+754
View File
@@ -0,0 +1,754 @@
.customer:not(.account):not(.order) {
margin: 0 auto;
max-width: 33.4rem;
padding-left: 1.5rem;
padding-right: 1.5rem;
text-align: center;
}
@media screen and (min-width: 750px) {
.customer:not(.account):not(.order) {
max-width: 47.8rem;
}
}
.customer > h1,
.customer__title {
margin-top: 0;
}
.customer form {
margin-top: 4rem;
}
.customer button {
margin: 4rem 0 1.5rem;
}
.customer ul {
line-height: calc(1 + 0.6 / var(--font-body-scale));
padding-left: 4.4rem;
text-align: left;
margin-bottom: 4rem;
}
.customer ul a {
display: inline;
}
.customer strong {
font-weight: normal;
color: rgb(var(--color-foreground));
}
.customer h2.form__message {
font-size: calc(var(--font-heading-scale) * 1.8rem);
}
@media only screen and (min-width: 750px) {
.customer h2.form__message {
font-size: calc(var(--font-heading-scale) * 2.2rem);
}
}
.customer .field {
margin: 2rem 0 0 0;
}
.customer .field:first-of-type {
margin-top: 0;
}
/* Customer Table */
.customer table {
table-layout: auto;
border-collapse: collapse;
border-bottom: 0.01rem solid rgba(var(--color-foreground), 0.08);
box-shadow: none;
width: 100%;
font-size: 1.6rem;
position: relative;
}
@media screen and (min-width: 750px) {
.customer table {
border: none;
box-shadow: 0 0 0 0.1rem rgba(var(--color-foreground), 0.08);
}
}
@media screen and (forced-colors: active) {
.customer table {
border-top: 0.1rem solid transparent;
border-bottom: 0.1rem solid transparent;
}
}
.customer tbody {
color: rgb(var(--color-foreground));
}
.customer th,
.customer td {
font-weight: 400;
line-height: 1;
border: none;
padding: 0;
}
@media screen and (min-width: 750px) {
.customer td {
padding-right: 2.2rem;
}
}
.customer tbody td {
padding-top: 1rem;
padding-bottom: 1rem;
}
.customer td:empty {
display: initial;
}
.customer thead th {
font-size: 1.2rem;
letter-spacing: 0.07rem;
text-transform: uppercase;
}
.customer tbody td:first-of-type {
padding-top: 4rem;
}
@media screen and (min-width: 750px) {
.customer th,
.customer td:first-of-type {
text-align: left;
padding-left: 0;
padding-right: 2.2rem;
}
.customer thead th,
.customer tbody td {
padding-top: 2.4rem;
padding-bottom: 2.4rem;
}
.customer th:first-of-type,
.customer td:first-of-type {
padding-left: 2.2rem;
}
.customer tbody td {
vertical-align: top;
}
.customer tbody td:first-of-type {
padding-top: 2.4rem;
}
}
.customer tbody td:last-of-type {
padding-bottom: 4rem;
}
@media screen and (min-width: 750px) {
.customer tbody td:last-of-type {
padding-bottom: 0;
}
}
.customer tbody tr {
border-top: 0.01rem solid rgba(var(--color-foreground), 0.08);
}
@media screen and (min-width: 750px) {
.customer tbody tr:first-of-type {
border-top: none;
}
}
@media screen and (forced-colors: active) {
.customer tbody tr {
border-top: 0.1rem solid transparent;
}
}
.customer tfoot td:first-of-type,
.customer tfoot td {
padding-top: 0.6rem;
padding-bottom: 0.6rem;
}
.customer tfoot td:first-of-type {
text-align: left;
}
.customer tfoot tr:first-of-type td {
padding-top: 4rem;
}
@media screen and (min-width: 750px) {
.customer tfoot tr:first-of-type td,
.customer tfoot tr:first-of-type th {
padding-top: 2.4rem;
}
}
.customer tfoot tr:last-of-type td {
padding-bottom: 4rem;
}
@media screen and (min-width: 750px) {
.customer tfoot tr:last-of-type td,
.customer tfoot tr:last-of-type th {
padding-bottom: 2.4rem;
}
}
/* works around colspan phantom border issues */
.customer thead::after,
.customer tfoot::before {
content: ' ';
height: 0.1rem;
width: 100%;
display: block;
position: absolute;
left: 0;
background: rgba(var(--color-foreground), 0.08);
}
@media screen and (forced-colors: active) {
.customer thead::after,
.customer tfoot::before {
background: CanvasText;
}
}
/* mobile table overrides */
@media screen and (max-width: 749px) {
.customer thead,
.customer th,
.customer tfoot td:first-of-type {
display: none;
}
.customer td {
display: flex;
text-align: right;
}
.customer td::before {
color: rgba(var(--color-foreground), 0.75);
content: attr(data-label);
font-size: 1.4rem;
padding-right: 2rem;
text-transform: uppercase;
flex-grow: 1;
text-align: left;
}
.customer td:first-of-type {
display: flex;
align-items: center;
}
.customer tr {
display: flex;
flex-direction: column;
justify-content: flex-start;
width: 100%;
}
}
/* Pagination */
.customer .pagination {
margin-top: 5rem;
margin-bottom: 7rem;
}
@media screen and (min-width: 990px) {
.customer .pagination {
margin-top: 7rem;
margin-bottom: 10rem;
}
}
.customer .pagination ul {
display: flex;
justify-content: center;
list-style: none;
padding: 0;
}
.customer .pagination li {
flex: 1 1;
max-width: 4rem;
}
.customer .pagination li:not(:last-child) {
margin-right: 1rem;
}
.customer .pagination li :first-child {
display: inline-flex;
justify-content: center;
align-items: center;
position: relative;
height: 4rem;
width: 100%;
padding: 0;
text-decoration: none;
}
.customer .pagination li :first-child .svg-wrapper {
height: 0.6rem;
}
.customer .pagination li:first-of-type .svg-wrapper {
margin-left: -0.2rem;
transform: rotate(90deg);
}
.customer .pagination li:last-of-type .svg-wrapper {
margin-right: -0.2rem;
transform: rotate(-90deg);
}
.customer .pagination li [aria-current]::after {
content: '';
display: block;
width: 2rem;
height: 0.01rem;
position: absolute;
bottom: 0.08rem;
left: 50%;
transform: translateX(-50%);
background-color: currentColor;
}
/* Login */
.login a {
display: block;
margin: 0 auto;
width: fit-content;
}
.login a[href='#recover'] {
margin-left: 0;
margin-right: 0;
}
.login .field + a {
margin-top: 1rem;
}
.login p {
margin: 1.5rem 0;
}
.login h3 {
margin-top: 1.5rem;
text-align: left;
font-size: calc(var(--font-heading-scale) * 1.6rem);
}
#customer_login_guest button {
margin-top: 0;
}
#recover,
#recover + div {
display: none;
}
#recover:target {
display: block;
}
#recover:target + div {
display: block;
}
#recover:target ~ #login,
#recover:target ~ #login + div {
display: none;
}
#recover,
#login {
scroll-margin-top: 20rem;
}
#recover {
margin-bottom: 0;
}
.activate button[name='decline'],
.addresses li > button,
.addresses form button[type] {
background-color: rgba(var(--color-background), var(--alpha-button-background));
color: rgb(var(--color-link));
}
@media only screen and (min-width: 750px) {
.activate button[name='decline'] {
margin-top: inherit;
margin-left: 1rem;
}
}
/* Account/Order */
:is(.account, .order) {
margin: 0 auto;
max-width: var(--page-width);
padding-left: 2rem;
padding-right: 2rem;
}
@media screen and (min-width: 750px) {
:is(.account, .order) {
padding-left: 5rem;
padding-right: 5rem;
}
}
@media screen and (min-width: 990px) {
:is(.account, .order) > div:nth-of-type(2) {
display: flex;
margin-top: 5rem;
}
}
@media screen and (min-width: 990px) {
:is(.account, .order) > div:nth-of-type(2) > div:first-of-type {
flex-grow: 1;
padding-right: 3.2rem;
}
}
@media screen and (min-width: 750px) and (max-width: 989px) {
.order > div:nth-of-type(2) > div:last-of-type {
display: flex;
}
.order > div:nth-of-type(2) > div:last-of-type div {
padding-right: 3.2rem;
}
}
:is(.account, .order) p {
margin: 0 0 2rem;
font-size: 1.6rem;
}
:is(.account, .order) h1 {
margin-bottom: 1rem;
}
:is(.account, .order) h2 {
margin-top: 4rem;
margin-bottom: 1rem;
}
@media screen and (min-width: 990px) {
:is(.account, .order) h2 {
margin-top: 0;
}
}
.account h1 + a {
display: inline-flex;
align-items: center;
}
.account a .svg-wrapper {
width: 1.5rem;
margin-bottom: -0.03rem;
margin-right: 1rem;
}
@media screen and (min-width: 750px) {
.account thead th:last-child,
.account td:last-child {
text-align: right;
}
.account table td:first-of-type {
padding-top: 1.2rem;
padding-bottom: 1.2rem;
}
}
.account table td:first-of-type a {
padding: 1.1rem 1.5rem;
text-decoration: none;
box-shadow: 0 0 0 0.1rem rgba(var(--color-link), 0.2);
border: 0.1rem solid transparent;
font-size: 1.2rem;
}
.account table td:first-of-type a:hover {
box-shadow: 0 0 0 0.2rem rgba(var(--color-link), 0.2);
}
.order td:first-of-type {
align-items: initial;
}
@media screen and (min-width: 750px) {
.order thead th:nth-last-child(-n + 3),
.order td:nth-last-child(-n + 3) {
text-align: right;
}
}
.order tfoot tr:last-of-type td,
.order tfoot tr:last-of-type th {
font-size: 2.2rem;
padding-top: 1.5rem;
padding-bottom: 4rem;
}
@media screen and (min-width: 750px) {
.order tfoot tr:last-of-type td,
.order tfoot tr:last-of-type th {
padding-bottom: 2.4rem;
}
}
.order tfoot tr:last-of-type td:before {
font-size: 2.2rem;
}
.order table p,
.order > div:nth-of-type(2) > div:first-of-type h2,
.order > div:nth-of-type(2) > div:last-of-type h2 + p {
margin-bottom: 0;
}
.order > div:nth-of-type(2) > div:first-of-type h2 ~ p {
margin-bottom: 0;
font-size: 1.4rem;
}
.order > div:nth-of-type(2) > div:first-of-type h2 ~ p:last-of-type {
margin-bottom: 3rem;
}
.order .item-props {
font-size: 1.4rem;
margin-top: 0.05px;
display: flex;
flex-direction: column;
}
.order .item-props > span {
word-break: break-all;
line-height: calc(1 + 0.2 / var(--font-body-scale));
}
.order .fulfillment {
width: fit-content;
border: 0.01rem solid rgba(var(--color-foreground), 0.2);
padding: 1rem;
margin-top: 1rem;
font-size: 1.4rem;
text-align: left;
}
.order .fulfillment a {
margin: 0.7rem 0;
}
.order .fulfillment span {
display: block;
}
.order .cart-discount {
display: block;
margin-top: 1rem;
margin-bottom: 0.5rem;
font-size: 1.2rem;
}
@media screen and (min-width: 750px) {
.order td .cart-discount {
display: none;
}
}
.order tbody ul {
list-style: none;
font-size: 1.2rem;
text-align: right;
padding-left: 0;
margin-top: 1rem;
margin-bottom: 0;
}
@media screen and (min-width: 750px) {
.order tbody ul {
text-align: left;
}
}
.order table a {
line-height: calc(1 + 0.3 / var(--font-body-scale));
}
.order tbody tr:first-of-type td:first-of-type > div {
display: flex;
flex-direction: column;
align-items: flex-end;
}
@media screen and (min-width: 750px) {
.order tbody tr:first-of-type td:first-of-type > div {
align-items: flex-start;
}
}
.order .properties {
font-size: 1.4rem;
margin-top: 1rem;
}
.order .properties span {
display: block;
line-height: calc(1 + 0.2 / var(--font-body-scale));
}
.order .svg-wrapper {
width: 1.1rem;
color: rgb(var(--color-foreground));
margin-right: 0.5rem;
}
.order dl {
margin: 0;
}
.order dd {
margin-left: 0;
line-height: calc(1 + 0.3 / var(--font-body-scale));
}
.order dd s {
color: rgba(var(--color-foreground), 0.7);
}
.order .unit-price {
font-size: 1.1rem;
letter-spacing: 0.07rem;
line-height: calc(1 + 0.2 / var(--font-body-scale));
margin-top: 0.2rem;
color: rgba(var(--color-foreground), 0.7);
}
.order .regular-price {
font-size: 1.3rem;
}
/* Addresses */
.addresses li > button {
margin-left: 0.5rem;
margin-right: 0.5rem;
}
.addresses li > button + button,
.addresses form button + button {
margin-top: 0rem;
}
@media screen and (min-width: 750px) {
.addresses li > button:first-of-type {
margin-top: 3rem;
}
}
.addresses form button:first-of-type {
margin-right: 1rem;
}
label[for='AddressCountryNew'],
label[for='AddressProvinceNew'] {
display: block;
font-size: 1.4rem;
margin-bottom: 0.6rem;
}
.addresses form {
display: flex;
flex-flow: row wrap;
}
.addresses form > div {
width: 100%;
text-align: left;
}
.addresses ul {
list-style: none;
padding-left: 0;
text-align: center;
}
li[data-address] {
margin-top: 5rem;
}
.addresses [aria-expanded='false'] ~ div[id] {
display: none;
}
.addresses [aria-expanded='true'] ~ div[id] {
display: block;
}
.addresses h2 {
text-align: left;
}
li[data-address] > h2 {
text-align: center;
font-size: calc(var(--font-heading-scale) * 1.8rem);
margin-bottom: 0;
}
@media only screen and (min-width: 750px) {
li[data-address] > h2 {
font-size: calc(var(--font-heading-scale) * 2.2rem);
}
}
.addresses ul p {
margin-bottom: 0;
}
.addresses input[type='checkbox'] {
margin-top: 2rem;
margin-left: 0;
}
@media only screen and (min-width: 750px) {
.addresses form > div:nth-of-type(1) {
margin-right: 2rem;
}
.addresses form > div:nth-of-type(2) {
margin-top: 0;
}
.addresses form > div:nth-of-type(1),
.addresses form > div:nth-of-type(2) {
box-sizing: border-box;
flex-basis: calc(50% - 1rem);
}
}
.addresses form > div:nth-of-type(7),
.addresses form > div:nth-of-type(7) + div[id] {
margin-top: 1.5rem;
}
+85
View File
@@ -0,0 +1,85 @@
const selectors = {
customerAddresses: '[data-customer-addresses]',
addressCountrySelect: '[data-address-country-select]',
addressContainer: '[data-address]',
toggleAddressButton: 'button[aria-expanded]',
cancelAddressButton: 'button[type="reset"]',
deleteAddressButton: 'button[data-confirm-message]',
};
const attributes = {
expanded: 'aria-expanded',
confirmMessage: 'data-confirm-message',
};
class CustomerAddresses {
constructor() {
this.elements = this._getElements();
if (Object.keys(this.elements).length === 0) return;
this._setupCountries();
this._setupEventListeners();
}
_getElements() {
const container = document.querySelector(selectors.customerAddresses);
return container
? {
container,
addressContainer: container.querySelector(selectors.addressContainer),
toggleButtons: document.querySelectorAll(selectors.toggleAddressButton),
cancelButtons: container.querySelectorAll(selectors.cancelAddressButton),
deleteButtons: container.querySelectorAll(selectors.deleteAddressButton),
countrySelects: container.querySelectorAll(selectors.addressCountrySelect),
}
: {};
}
_setupCountries() {
if (Shopify && Shopify.CountryProvinceSelector) {
// eslint-disable-next-line no-new
new Shopify.CountryProvinceSelector('AddressCountryNew', 'AddressProvinceNew', {
hideElement: 'AddressProvinceContainerNew',
});
this.elements.countrySelects.forEach((select) => {
const formId = select.dataset.formId;
// eslint-disable-next-line no-new
new Shopify.CountryProvinceSelector(`AddressCountry_${formId}`, `AddressProvince_${formId}`, {
hideElement: `AddressProvinceContainer_${formId}`,
});
});
}
}
_setupEventListeners() {
this.elements.toggleButtons.forEach((element) => {
element.addEventListener('click', this._handleAddEditButtonClick);
});
this.elements.cancelButtons.forEach((element) => {
element.addEventListener('click', this._handleCancelButtonClick);
});
this.elements.deleteButtons.forEach((element) => {
element.addEventListener('click', this._handleDeleteButtonClick);
});
}
_toggleExpanded(target) {
target.setAttribute(attributes.expanded, (target.getAttribute(attributes.expanded) === 'false').toString());
}
_handleAddEditButtonClick = ({ currentTarget }) => {
this._toggleExpanded(currentTarget);
};
_handleCancelButtonClick = ({ currentTarget }) => {
this._toggleExpanded(currentTarget.closest(selectors.addressContainer).querySelector(`[${attributes.expanded}]`));
};
_handleDeleteButtonClick = ({ currentTarget }) => {
// eslint-disable-next-line no-alert
if (confirm(currentTarget.getAttribute(attributes.confirmMessage))) {
Shopify.postLink(currentTarget.dataset.target, {
parameters: { _method: 'delete' },
});
}
};
}
+53
View File
@@ -0,0 +1,53 @@
class DetailsDisclosure extends HTMLElement {
constructor() {
super();
this.mainDetailsToggle = this.querySelector('details');
this.content = this.mainDetailsToggle.querySelector('summary').nextElementSibling;
this.mainDetailsToggle.addEventListener('focusout', this.onFocusOut.bind(this));
this.mainDetailsToggle.addEventListener('toggle', this.onToggle.bind(this));
}
onFocusOut() {
setTimeout(() => {
if (!this.contains(document.activeElement)) this.close();
});
}
onToggle() {
if (!this.animations) this.animations = this.content.getAnimations();
if (this.mainDetailsToggle.hasAttribute('open')) {
this.animations.forEach((animation) => animation.play());
} else {
this.animations.forEach((animation) => animation.cancel());
}
}
close() {
this.mainDetailsToggle.removeAttribute('open');
this.mainDetailsToggle.querySelector('summary').setAttribute('aria-expanded', false);
}
}
customElements.define('details-disclosure', DetailsDisclosure);
class HeaderMenu extends DetailsDisclosure {
constructor() {
super();
this.header = document.querySelector('.header-wrapper');
}
onToggle() {
if (!this.header) return;
this.header.preventHide = this.mainDetailsToggle.open;
if (document.documentElement.style.getPropertyValue('--header-bottom-position-desktop') !== '') return;
document.documentElement.style.setProperty(
'--header-bottom-position-desktop',
`${Math.floor(this.header.getBoundingClientRect().bottom)}px`
);
}
}
customElements.define('header-menu', HeaderMenu);
+47
View File
@@ -0,0 +1,47 @@
class DetailsModal extends HTMLElement {
constructor() {
super();
this.detailsContainer = this.querySelector('details');
this.summaryToggle = this.querySelector('summary');
this.detailsContainer.addEventListener('keyup', (event) => event.code.toUpperCase() === 'ESCAPE' && this.close());
this.summaryToggle.addEventListener('click', this.onSummaryClick.bind(this));
this.querySelector('button[type="button"]').addEventListener('click', this.close.bind(this));
this.summaryToggle.setAttribute('role', 'button');
}
isOpen() {
return this.detailsContainer.hasAttribute('open');
}
onSummaryClick(event) {
event.preventDefault();
event.target.closest('details').hasAttribute('open') ? this.close() : this.open(event);
}
onBodyClick(event) {
if (!this.contains(event.target) || event.target.classList.contains('modal-overlay')) this.close(false);
}
open(event) {
this.onBodyClickEvent = this.onBodyClickEvent || this.onBodyClick.bind(this);
event.target.closest('details').setAttribute('open', true);
document.body.addEventListener('click', this.onBodyClickEvent);
document.body.classList.add('overflow-hidden');
trapFocus(
this.detailsContainer.querySelector('[tabindex="-1"]'),
this.detailsContainer.querySelector('input:not([type="hidden"])')
);
}
close(focusToggle = true) {
removeTrapFocus(focusToggle ? this.summaryToggle : null);
this.detailsContainer.removeAttribute('open');
document.body.removeEventListener('click', this.onBodyClickEvent);
document.body.classList.remove('overflow-hidden');
}
}
customElements.define('details-modal', DetailsModal);
+26
View File
@@ -0,0 +1,26 @@
class DisclosuresContent extends HTMLElement {
constructor() {
super();
this.addEventListener('click', (event) => {
if (event.target.closest('.disclosures-item__content')) return;
if (
event.target.closest('.disclosures-item__header') &&
event.target !== event.target.closest('.disclosures-item__header')
)
return;
const item = event.target.closest('.disclosures-item');
if (item) {
const content = item.querySelector('.disclosures-item__content');
if (content && event.clientX <= content.getBoundingClientRect().right) return;
}
const details = this.closest('details');
if (details) details.removeAttribute('open');
});
}
}
if (!customElements.get('disclosures-content')) {
customElements.define('disclosures-content', DisclosuresContent);
}
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" class="email-signup-banner-background email-signup-banner-background-mobile" data-name="Layer 1" preserveAspectRatio="xMidYMid slice" viewBox="0 0 374.45 238.04"><defs><style>.cls-2,.cls-4,.cls-5{fill:rgb(var(--color-button))}.cls-4{opacity:.75}.cls-5{opacity:.1}</style></defs><path d="M89.5 238c-7.27-1.67-14.13-5.11-20.52-8.82a87.1 87.1 0 0 1-30.36-30.35c-6.72-11.64-9.49-24.91-9.49-39.33H29c0 14.42 2.77 27.71 9.49 39.36a87.1 87.1 0 0 0 30.36 30.35c6.39 3.71 13.25 7.15 20.52 8.82h.46Z" style="fill:none"/><path d="M106.58 95.46v-.6a80.4 80.4 0 0 1-9.11 24.62l-.6 1a80 80 0 0 1-25.22 26.36c-1 .67-2.07 1.33-3.14 1.95a78 78 0 0 1-25.42 9.44 80.3 80.3 0 0 1-14 1.26c0 14.42 2.77 27.69 9.49 39.33A87.1 87.1 0 0 0 69 229.17c6.39 3.71 13.25 7.15 20.52 8.82h4.18a15.3 15.3 0 0 1 3.38 0 74 74 0 0 0 10.2 0h-.64Z" class="cls-2"/><g style="opacity:.55"><path d="M357 118.48A78.9 78.9 0 0 0 346.42 158 78.9 78.9 0 0 0 357 197.68a79.8 79.8 0 0 0 17.46 20.88v-121A79.5 79.5 0 0 0 357 118.48" class="cls-2"/><path d="M346.42 0a78.9 78.9 0 0 1-10.56 39.25 79.66 79.66 0 0 1-28.95 29 78.6 78.6 0 0 1-39.17 10.6 78.6 78.6 0 0 1 39.15 10.59A79.23 79.23 0 0 1 346.42 158V78.86a79 79 0 0 1 28-60.49V0Zm-232.2 27.3a79.2 79.2 0 0 1-5-27.3H0v53.79a39.5 39.5 0 0 1 29.37-13h.86A39.58 39.58 0 0 1 69 78.88v1.51A39.62 39.62 0 0 1 0 107v47a78 78 0 0 0 29 5.56h.15a80.3 80.3 0 0 0 14-1.26 78 78 0 0 0 25.42-9.44 72 72 0 0 0 3.14-1.95 80 80 0 0 0 25.22-26.36l.6-1a80.4 80.4 0 0 0 9.11-24.62V78.57l24.69-24.1a79 79 0 0 1-11.41-15.19 79.3 79.3 0 0 1-5.7-11.98" class="cls-2"/></g><path d="M357 39.26a79.6 79.6 0 0 1 17.46-20.89A79.6 79.6 0 0 0 357 39.26m0 79.2A78.93 78.93 0 0 0 346.42 158a79.09 79.09 0 0 1 28-60.44 79.6 79.6 0 0 0-17.42 20.9" class="cls-2"/><path d="M357 197.68a78.9 78.9 0 0 1-10.57-39.6 79.06 79.06 0 0 0-78.68-79.14 78.6 78.6 0 0 0 39.17-10.6 79.66 79.66 0 0 0 28.95-29A78.9 78.9 0 0 0 346.42 0v-.35H109.28V0a79.2 79.2 0 0 0 5 27.3 79.3 79.3 0 0 0 5.63 12 79 79 0 0 0 11.41 15.19L187 0l57 55.91 23.36 22.93V238h107v-19.44A79.8 79.8 0 0 1 357 197.68M29.37 120A39.62 39.62 0 0 0 69 80.39v-1.51a39.56 39.56 0 0 0-38.77-38.09h-.86A39.5 39.5 0 0 0 0 53.79V107a39.52 39.52 0 0 0 29.37 13" class="cls-2"/><path d="M94.12 238h2.82a12.7 12.7 0 0 0-2.82 0" class="cls-4"/><path d="M38.47 198.87C31.75 187.22 29 173.93 29 159.51A78 78 0 0 1 0 154v84h89.35c-7.27-1.67-14.13-5.11-20.52-8.82a87.1 87.1 0 0 1-30.36-30.31" class="cls-5"/><path d="M267.41 78.88 244 55.91 187 0l-55.74 54.46-24.69 24.1v15.26c0-.21.11-.42.15-.6V238h1.41-.91 160.19zm-80.24-34.39a9.88 9.88 0 1 1 9.83-9.88 9.88 9.88 0 0 1-9.83 9.88" class="cls-4"/><path d="M106.78 238V93.22c0 .18-.1.39-.15.6v1.64l.01 142.54h1.55Z" class="cls-4"/><path d="M357 39.26a78.9 78.9 0 0 0-10.57 39.6V158a79 79 0 0 1 28-60.43v-79.2A79.6 79.6 0 0 0 357 39.26" class="cls-5"/><circle cx="187.17" cy="34.61" r="9.88" class="cls-5"/></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" id="Layer_1" x="0" y="0" class="email-signup-banner-background" preserveAspectRatio="xMidYMid slice" version="1.1" viewBox="0 0 2169.3 648"><style>.st0,.st4{fill:rgb(var(--color-button))}.st4{opacity:.55;enable-background:new}</style><path d="M1791.7 650.9V370.8h-.1s.1 271.6.1 280.1m0-280.1s-.1 0 0 0" class="st0"/><path d="M1308.6 371.2V216.6L1084.9-.1 861.4 215.8V651h447.2zm-223.3-248.4c-15 .1-27-12-27.2-26.8s12-27 26.8-27.2c15-.1 27 12 27.2 26.8v.1c0 14.9-11.9 27-26.8 27.1" style="opacity:.75;fill:rgb(var(--color-button))"/><path d="M501.6 436.9h131c-45.2-4-86.7-22.2-120-49.9-30.9-25.8-54.7-59.9-68.1-98.7-7.8-22.5-12-46.4-12-71.3V0h.5-205.7c2.5.1 5-.2 7.5 0 110.9 10.6 197.7 104.5 197.8 217.8.2 120.4-100.3 218.8-220.9 218.8h-76v213.9h152.1v-.2c.1-117.8 95.9-213.4 213.8-213.4m359.8 213.5V277.7c-4.8 17.5-11.8 34.2-20.8 50l-1.7 2.8c-6.3 10.8-13.5 20.8-21.5 30.3-.1.2-.4.4-.5.6l-.1.1c-13.5 15.8-29.2 29.6-46.7 40.9-2.9 1.8-5.6 3.6-8.6 5.3-12.8 7.5-26.3 13.6-40.4 18.3-9.5 3.1-19.1 5.6-29 7.4-10.9 1.9-21.9 3.1-33 3.3-1.8 0-3.5.1-5.3.1h-.1v.7c.1 39 7.7 74.9 25.8 106.5 11.4 19.1 25.4 36.5 41.5 51.6 12.7 11.8 26.6 22.4 41.5 31.2.1.1.4.2.5.4 22.7 13.2 48 20.9 73.9 23.1 1.2.1 2.3.2 3.5.2 3.8.2 20.8.4 20.8.4v-.5z" class="st0"/><path d="M651.6 330.4h2.6c25.2-.6 48.5-9.7 66.8-24.5 25.1-20.2 41.2-51.3 41.2-86 0-34.8-16-65.8-41.2-86-17.9-14.5-40.6-23.4-65.1-24.4-1.4 0-2.9-.1-4.3-.1-61.1 0-110.5 49.5-110.5 110.5s49.4 110.5 110.5 110.5" class="st0"/><g style="opacity:.55"><path d="M1810 371.2c-3.2 0-10.6 0-18.2-.5-3.7-.2-7.5-.6-11-1.1-1.1-.1-2.2-.4-3.2-.5-125.3-15.6-224.1-119.6-229-248.3-.1-1.1-.2-2.3-.4-3.3-11.8 130.3-108.6 234.6-231.7 252-2.6.4-5.3.7-7.9 1v.6c126.6 14 226.7 119.7 239 252.3 0 .2.6.1.7 0 12.4-133.6 114.3-239.9 242.2-252.6h1.2l.2 101.2-.3 179 384.5.1V371z" class="st0"/><path d="M1792.4 239c5.9.8 11.7 1.2 17.8 1.2 72.4 0 131-58.6 131-131 0-45.6-23.3-85.8-58.6-109.2h-144.9c-.2.1-.4-.1-.6 0-34.9 23.6-57.9 64-57.9 109.2 0 66.3 49.3 121.1 113.2 129.8" class="st0"/></g><path d="M432.6 217.8C432.5 104.5 345.7 10.6 234.8-.1l-99 .1v436.7h76c120.6-.1 221-98.5 220.8-218.9M1085 68.9c-15 .1-26.9 12.2-26.8 27.2s12.2 26.9 27.2 26.8c14.8-.1 26.8-12.1 26.8-26.9v-.1c-.2-15.1-12.3-27.2-27.2-27M763.2 627.2c-.1-.1-.4-.2-.5-.4-15.1-8.9-29-19.4-41.5-31.2-16.2-15.1-30-32.4-41.5-51.6-18.2-31.5-25.7-67.5-25.8-106.5v-.7h-.3v-.1h-152c-118 0-213.7 95.6-213.8 213.6v.3h552.9c-1.2-.1-2.3-.2-3.5-.2-26.1-2.2-51.3-10-74-23.2M1882.5-.1s.1-.1 0 0c35.4 23.4 58.7 63.7 58.7 109.2 0 72.4-58.6 131-131 131-6 0-12-.4-17.8-1.2-63.9-8.7-113.2-63.5-113.2-129.8 0-45.2 23-85.7 57.9-109.2.2-.1.4.1.6 0h.2-165.1c-15.8 33.5-24.6 71.7-24.6 111.2v4.9c0 1.7.1 3.5.1 5.1 4.9 128.6 103.7 232.7 229 248.3 1.1.1 2.2.4 3.2.5 3.5.5 7.3.8 11 1.1 7.7.5 276.9.1 276.9.1V-.1z" class="st0" style="opacity:.1"/><path d="M1308.6 216.6v153.9c2.6-.2 5.1-.6 7.8-1 123.1-17.3 219.9-121.7 231.7-251.8.1 1.1.2 2.3.4 3.3-.1-1.7-.1-3.3-.1-5.1V111c0-39.5 8.9-77.5 24.6-111h-488.1zm483 154.2c-127.8 12.8-231 119-243.5 252.6 0 .2-.1.1-.2 0-12.3-132.7-112.7-238.3-239.3-252.3l-.1 279.3v.7h483.1v-.2c.1-8.5 0-280.1 0-280.1" class="st0"/><path d="M1548.1 623.4c12.4-133.5 115.6-239.8 243.5-252.6h-1.3c-127.9 12.7-229.7 119-242.2 252.6M2068.7-.1V371h107.2V-.1z" class="st0"/><path d="M135.9-.1C59.6-.1-2.3 61.8-2.3 138.1v511.8l138.2-.4z" class="st4"/><path d="M721.2 134.3c-17.9-14.5-40.6-23.4-65.1-24.4-1.4 0-2.9-.1-4.3-.1-61.1 0-110.5 49.5-110.5 110.5s49.5 110.5 110.5 110.5h2.6c25.2-.6 48.5-9.7 66.8-24.5 25.1-20.2 41.2-51.3 41.2-86s-16.1-65.8-41.2-86" class="st0"/><path d="M870.4-.1H432.7v217.5c0 24.9 4.2 48.9 12 71.3 13.3 38.8 37.2 72.9 68.1 98.7 33.3 27.8 74.5 45.5 119.9 49.4h21.1s3.7.6 5.5.5c11.1-.2 22.1-1.4 33-3.3 9.8-1.8 19.5-4.3 29-7.4 14-4.7 27.6-10.8 40.4-18.3 2.9-1.7 5.7-3.5 8.6-5.3 17.5-11.4 33.1-25.1 46.7-40.9l.1-.1c.1-.2.4-.4.5-.6 8-9.5 15.2-19.5 21.5-30.3l1.7-2.8c9-15.8 15.9-33.1 20.7-50.6v-62l69-66.6c-37.4-38.5-60.1-91.4-60.1-149.2M721.2 306.3c-18.3 14.8-41.5 23.9-66.8 24.5h-2.6c-61.1 0-110.5-49.5-110.5-110.5s49.5-110.5 110.5-110.5c1.4 0 2.9 0 4.3.1 24.6 1 47.1 9.9 65.1 24.4 25.1 20.2 41.2 51.3 41.2 86-.1 34.8-16.1 65.8-41.2 86" class="st4"/><path d="M870.4-.1s0-.1 0 0c0 57.8 22.7 110.8 60 149.2L1084.9-.1s-214.5-.2-214.5 0" class="st0"/></svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

+442
View File
@@ -0,0 +1,442 @@
class FacetFiltersForm extends HTMLElement {
constructor() {
super();
this.onActiveFilterClick = this.onActiveFilterClick.bind(this);
this.debouncedOnSubmit = debounce((event) => {
this.onSubmitHandler(event);
}, 800);
const facetForm = this.querySelector('form');
facetForm.addEventListener('input', this.debouncedOnSubmit.bind(this));
const facetWrapper = this.querySelector('#FacetsWrapperDesktop');
if (facetWrapper) facetWrapper.addEventListener('keyup', onKeyUpEscape);
}
static setListeners() {
const onHistoryChange = (event) => {
const searchParams = event.state ? event.state.searchParams : FacetFiltersForm.searchParamsInitial;
if (searchParams === FacetFiltersForm.searchParamsPrev) return;
FacetFiltersForm.renderPage(searchParams, null, false);
};
window.addEventListener('popstate', onHistoryChange);
}
static toggleActiveFacets(disable = true) {
document.querySelectorAll('.js-facet-remove').forEach((element) => {
element.classList.toggle('disabled', disable);
});
}
static renderPage(searchParams, event, updateURLHash = true) {
FacetFiltersForm.searchParamsPrev = searchParams;
const sections = FacetFiltersForm.getSections();
const updateEvent = FacetFiltersForm.startUpdateEvent(searchParams);
const countContainer = document.getElementById('ProductCount');
const countContainerDesktop = document.getElementById('ProductCountDesktop');
const loadingSpinners = document.querySelectorAll(
'.facets-container .loading__spinner, facet-filters-form .loading__spinner',
);
loadingSpinners.forEach((spinner) => spinner.classList.remove('hidden'));
document.getElementById('ProductGridContainer').querySelector('.collection').classList.add('loading');
if (countContainer) {
countContainer.classList.add('loading');
}
if (countContainerDesktop) {
countContainerDesktop.classList.add('loading');
}
sections.forEach((section) => {
const url = `${window.location.pathname}?section_id=${section.section}&${searchParams}`;
const filterDataUrl = (element) => element.url === url;
FacetFiltersForm.filterData.some(filterDataUrl)
? FacetFiltersForm.renderSectionFromCache(filterDataUrl, event, updateEvent)
: FacetFiltersForm.renderSectionFromFetch(url, event, updateEvent);
});
if (updateURLHash) FacetFiltersForm.updateURLHash(searchParams);
}
static startUpdateEvent(searchParams) {
const { SearchUpdateEvent, CollectionUpdateEvent } = window.StandardEvents || {};
if (!SearchUpdateEvent && !CollectionUpdateEvent) return;
const facetsForm = document.querySelector('facet-filters-form');
const facetsContainer = document.querySelector('.facets-container');
const collectionId = facetsContainer?.dataset.collectionId || null;
const collectionHandle = facetsContainer?.dataset.collectionHandle || '';
const currentCount = parseInt(document.getElementById('ProductCount')?.dataset.productCount) || 0;
const urlSearchParams = new URLSearchParams(searchParams);
const isSearchPage = facetsContainer?.dataset.template === 'search';
const isCollectionPage = facetsContainer?.dataset.template === 'collection';
const dispatchTarget = facetsForm || document;
let deferred;
if (isSearchPage) {
deferred = SearchUpdateEvent.createPromise();
dispatchTarget.dispatchEvent(
new SearchUpdateEvent({
search: {
query: urlSearchParams.get('q') || '',
productFilters: SearchUpdateEvent.parseProductFilters(urlSearchParams),
sortKey: SearchUpdateEvent.getSortKey(urlSearchParams),
},
promise: deferred.promise,
}),
);
} else if (isCollectionPage) {
// collectionId is null for auto-generated collections (/collections/all,
// /collections/vendors/<x>, etc.) — the SSE schema accepts that.
deferred = CollectionUpdateEvent.createPromise();
dispatchTarget.dispatchEvent(
new CollectionUpdateEvent({
collection: { id: collectionId, handle: collectionHandle, productsCount: currentCount },
productFilters: CollectionUpdateEvent.parseProductFilters(urlSearchParams),
sortKey: CollectionUpdateEvent.getSortKey(urlSearchParams),
promise: deferred.promise,
}),
);
}
if (!deferred) return;
return {
resolve: (filteredCount) => {
deferred.resolve({ [isSearchPage ? 'totalCount' : 'productsCount']: filteredCount });
},
reject: deferred.reject,
};
}
static renderSectionFromFetch(url, event, updateEvent) {
fetch(url)
.then((response) => response.text())
.then((html) => {
FacetFiltersForm.filterData = [...FacetFiltersForm.filterData, { html, url }];
FacetFiltersForm.renderSection(html, event, updateEvent);
})
.catch((error) => {
console.error(error);
updateEvent?.reject(error);
});
}
static renderSectionFromCache(filterDataUrl, event, updateEvent) {
const html = FacetFiltersForm.filterData.find(filterDataUrl).html;
FacetFiltersForm.renderSection(html, event, updateEvent);
}
static renderSection(html, event, updateEvent) {
FacetFiltersForm.renderFilters(html, event);
FacetFiltersForm.renderProductGridContainer(html);
FacetFiltersForm.renderProductCount(html, updateEvent);
if (typeof initializeScrollAnimationTrigger === 'function') initializeScrollAnimationTrigger(html.innerHTML);
}
static renderProductGridContainer(html) {
document.getElementById('ProductGridContainer').innerHTML = new DOMParser()
.parseFromString(html, 'text/html')
.getElementById('ProductGridContainer').innerHTML;
document
.getElementById('ProductGridContainer')
.querySelectorAll('.scroll-trigger')
.forEach((element) => {
element.classList.add('scroll-trigger--cancel');
});
}
static renderProductCount(html, updateEvent) {
const parsedHtml = new DOMParser().parseFromString(html, 'text/html');
const sourceCount = parsedHtml.getElementById('ProductCount');
const count = sourceCount.innerHTML;
const container = document.getElementById('ProductCount');
const containerDesktop = document.getElementById('ProductCountDesktop');
container.innerHTML = count;
container.dataset.productCount = sourceCount.dataset.productCount || '';
container.dataset.totalCount = sourceCount.dataset.totalCount || '';
container.classList.remove('loading');
if (containerDesktop) {
containerDesktop.innerHTML = count;
containerDesktop.classList.remove('loading');
}
const loadingSpinners = document.querySelectorAll(
'.facets-container .loading__spinner, facet-filters-form .loading__spinner',
);
loadingSpinners.forEach((spinner) => spinner.classList.add('hidden'));
updateEvent?.resolve(parseInt(sourceCount.dataset.productCount) || 0);
}
static renderFilters(html, event) {
const parsedHTML = new DOMParser().parseFromString(html, 'text/html');
const facetDetailsElementsFromFetch = parsedHTML.querySelectorAll(
'#FacetFiltersForm .js-filter, #FacetFiltersFormMobile .js-filter, #FacetFiltersPillsForm .js-filter',
);
const facetDetailsElementsFromDom = document.querySelectorAll(
'#FacetFiltersForm .js-filter, #FacetFiltersFormMobile .js-filter, #FacetFiltersPillsForm .js-filter',
);
// Remove facets that are no longer returned from the server
Array.from(facetDetailsElementsFromDom).forEach((currentElement) => {
if (!Array.from(facetDetailsElementsFromFetch).some(({ id }) => currentElement.id === id)) {
currentElement.remove();
}
});
const matchesId = (element) => {
const jsFilter = event ? event.target.closest('.js-filter') : undefined;
return jsFilter ? element.id === jsFilter.id : false;
};
const facetsToRender = Array.from(facetDetailsElementsFromFetch).filter((element) => !matchesId(element));
const countsToRender = Array.from(facetDetailsElementsFromFetch).find(matchesId);
facetsToRender.forEach((elementToRender, index) => {
const currentElement = document.getElementById(elementToRender.id);
// Element already rendered in the DOM so just update the innerHTML
if (currentElement) {
document.getElementById(elementToRender.id).innerHTML = elementToRender.innerHTML;
} else {
if (index > 0) {
const { className: previousElementClassName, id: previousElementId } = facetsToRender[index - 1];
// Same facet type (eg horizontal/vertical or drawer/mobile)
if (elementToRender.className === previousElementClassName) {
document.getElementById(previousElementId).after(elementToRender);
return;
}
}
if (elementToRender.parentElement) {
document.querySelector(`#${elementToRender.parentElement.id} .js-filter`).before(elementToRender);
}
}
});
FacetFiltersForm.renderActiveFacets(parsedHTML);
FacetFiltersForm.renderAdditionalElements(parsedHTML);
if (countsToRender) {
const closestJSFilterID = event.target.closest('.js-filter').id;
if (closestJSFilterID) {
FacetFiltersForm.renderCounts(countsToRender, event.target.closest('.js-filter'));
FacetFiltersForm.renderMobileCounts(countsToRender, document.getElementById(closestJSFilterID));
const newFacetDetailsElement = document.getElementById(closestJSFilterID);
const isTextInput = event.target.getAttribute('type') === 'text';
if (!isTextInput) {
// Try to return focus to the same checkbox the user just toggled,
// re-selecting it from the freshly rendered HTML by its id.
const originatingInputId = event.target.id;
const matchingInput = originatingInputId
? newFacetDetailsElement.querySelector(`#${CSS.escape(originatingInputId)}`)
: null;
if (matchingInput) {
matchingInput.focus();
} else {
// Fallback to summary/close button if the checkbox can't be found
const fallbackSelector = newFacetDetailsElement.classList.contains('mobile-facets__details')
? `.mobile-facets__close-button`
: `.facets__summary`;
const fallbackElement = newFacetDetailsElement.querySelector(fallbackSelector);
if (fallbackElement) fallbackElement.focus();
}
}
}
}
}
static renderActiveFacets(html) {
const activeFacetElementSelectors = ['.active-facets-mobile', '.active-facets-desktop'];
activeFacetElementSelectors.forEach((selector) => {
const activeFacetsElement = html.querySelector(selector);
if (!activeFacetsElement) return;
document.querySelector(selector).innerHTML = activeFacetsElement.innerHTML;
});
FacetFiltersForm.toggleActiveFacets(false);
}
static renderAdditionalElements(html) {
const mobileElementSelectors = ['.mobile-facets__open', '.mobile-facets__count', '.sorting'];
mobileElementSelectors.forEach((selector) => {
if (!html.querySelector(selector)) return;
document.querySelector(selector).innerHTML = html.querySelector(selector).innerHTML;
});
document.getElementById('FacetFiltersFormMobile').closest('menu-drawer').bindEvents();
}
static renderCounts(source, target) {
const targetSummary = target.querySelector('.facets__summary');
const sourceSummary = source.querySelector('.facets__summary');
if (sourceSummary && targetSummary) {
targetSummary.outerHTML = sourceSummary.outerHTML;
}
const targetHeaderElement = target.querySelector('.facets__header');
const sourceHeaderElement = source.querySelector('.facets__header');
if (sourceHeaderElement && targetHeaderElement) {
targetHeaderElement.outerHTML = sourceHeaderElement.outerHTML;
}
const targetWrapElement = target.querySelector('.facets-wrap');
const sourceWrapElement = source.querySelector('.facets-wrap');
if (sourceWrapElement && targetWrapElement) {
const isShowingMore = Boolean(target.querySelector('show-more-button .label-show-more.hidden'));
if (isShowingMore) {
sourceWrapElement
.querySelectorAll('.facets__item.hidden')
.forEach((hiddenItem) => hiddenItem.classList.replace('hidden', 'show-more-item'));
}
targetWrapElement.outerHTML = sourceWrapElement.outerHTML;
}
}
static renderMobileCounts(source, target) {
const targetFacetsList = target.querySelector('.mobile-facets__list');
const sourceFacetsList = source.querySelector('.mobile-facets__list');
if (sourceFacetsList && targetFacetsList) {
targetFacetsList.outerHTML = sourceFacetsList.outerHTML;
}
}
static updateURLHash(searchParams) {
history.pushState({ searchParams }, '', `${window.location.pathname}${searchParams && '?'.concat(searchParams)}`);
}
static getSections() {
return [
{
section: document.getElementById('product-grid').dataset.id,
},
];
}
createSearchParams(form) {
const formData = new FormData(form);
return new URLSearchParams(formData).toString();
}
onSubmitForm(searchParams, event) {
FacetFiltersForm.renderPage(searchParams, event);
}
onSubmitHandler(event) {
event.preventDefault();
const sortFilterForms = document.querySelectorAll('facet-filters-form form');
if (event.srcElement.className == 'mobile-facets__checkbox') {
const searchParams = this.createSearchParams(event.target.closest('form'));
this.onSubmitForm(searchParams, event);
} else {
const forms = [];
const isMobile = event.target.closest('form').id === 'FacetFiltersFormMobile';
sortFilterForms.forEach((form) => {
if (!isMobile) {
if (form.id === 'FacetSortForm' || form.id === 'FacetFiltersForm' || form.id === 'FacetSortDrawerForm') {
forms.push(this.createSearchParams(form));
}
} else if (form.id === 'FacetFiltersFormMobile') {
forms.push(this.createSearchParams(form));
}
});
this.onSubmitForm(forms.join('&'), event);
}
}
onActiveFilterClick(event) {
event.preventDefault();
FacetFiltersForm.toggleActiveFacets();
const url =
event.currentTarget.href.indexOf('?') == -1
? ''
: event.currentTarget.href.slice(event.currentTarget.href.indexOf('?') + 1);
FacetFiltersForm.renderPage(url);
}
}
FacetFiltersForm.filterData = [];
FacetFiltersForm.searchParamsInitial = window.location.search.slice(1);
FacetFiltersForm.searchParamsPrev = window.location.search.slice(1);
customElements.define('facet-filters-form', FacetFiltersForm);
FacetFiltersForm.setListeners();
class PriceRange extends HTMLElement {
constructor() {
super();
this.querySelectorAll('input').forEach((element) => {
element.addEventListener('change', this.onRangeChange.bind(this));
element.addEventListener('keydown', this.onKeyDown.bind(this));
});
this.setMinAndMaxValues();
}
onRangeChange(event) {
this.adjustToValidValues(event.currentTarget);
this.setMinAndMaxValues();
}
onKeyDown(event) {
if (event.metaKey) return;
const pattern = /[0-9]|\.|,|'| |Tab|Backspace|Enter|ArrowUp|ArrowDown|ArrowLeft|ArrowRight|Delete|Escape/;
if (!event.key.match(pattern)) event.preventDefault();
}
setMinAndMaxValues() {
const inputs = this.querySelectorAll('input');
const minInput = inputs[0];
const maxInput = inputs[1];
if (maxInput.value) minInput.setAttribute('data-max', maxInput.value);
if (minInput.value) maxInput.setAttribute('data-min', minInput.value);
if (minInput.value === '') maxInput.setAttribute('data-min', 0);
if (maxInput.value === '') minInput.setAttribute('data-max', maxInput.getAttribute('data-max'));
}
adjustToValidValues(input) {
const value = Number(input.value);
const min = Number(input.getAttribute('data-min'));
const max = Number(input.getAttribute('data-max'));
if (value < min) input.value = min;
if (value > max) input.value = max;
}
}
customElements.define('price-range', PriceRange);
class FacetRemove extends HTMLElement {
constructor() {
super();
const facetLink = this.querySelector('a');
facetLink.setAttribute('role', 'button');
facetLink.addEventListener('click', this.closeFilter.bind(this));
facetLink.addEventListener('keyup', (event) => {
event.preventDefault();
if (event.code.toUpperCase() === 'SPACE') this.closeFilter(event);
});
}
closeFilter(event) {
event.preventDefault();
const form = this.closest('facet-filters-form') || document.querySelector('facet-filters-form');
form.onActiveFilterClick(event);
}
}
customElements.define('facet-remove', FacetRemove);
+1460
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-3d-model" viewBox="0 0 18 21"><path fill="currentColor" d="m7.68 20.629-6.4-3.906A2.71 2.71 0 0 1 0 14.405v-7.81a2.72 2.72 0 0 1 1.278-2.318l6.4-3.9a2.52 2.52 0 0 1 2.644-.003l6.4 3.9A2.72 2.72 0 0 1 18 6.6v7.809a2.71 2.71 0 0 1-1.279 2.318l-6.4 3.906A2.54 2.54 0 0 1 9 21a2.54 2.54 0 0 1-1.32-.371M8.724 2.078l-6.4 3.9a.71.71 0 0 0-.321.612v7.81a.71.71 0 0 0 .32.61L8 18.48v-7.561a1.77 1.77 0 0 1 .934-1.555l6.512-3.523L9.28 2.08a.52.52 0 0 0-.556-.002"/></svg>

After

Width:  |  Height:  |  Size: 532 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-account" viewBox="0 0 18 19"><path fill="currentColor" fill-rule="evenodd" d="M6 4.5a3 3 0 1 1 6 0 3 3 0 0 1-6 0m3-4a4 4 0 1 0 0 8 4 4 0 0 0 0-8m5.58 12.15c1.12.82 1.83 2.24 1.91 4.85H1.51c.08-2.6.79-4.03 1.9-4.85C4.66 11.75 6.5 11.5 9 11.5s4.35.26 5.58 1.15M9 10.5c-2.5 0-4.65.24-6.17 1.35C1.27 12.98.5 14.93.5 18v.5h17V18c0-3.07-.77-5.02-2.33-6.15-1.52-1.1-3.67-1.35-6.17-1.35" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 477 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-apple" viewBox="0 0 20 20"><path d="M10.662 1.843C11.5.994 12.582.556 13.336.406a.5.5 0 0 1 .589.397c.343 1.797-.22 3.099-1.099 3.97-.853.847-1.973 1.26-2.752 1.39a.5.5 0 0 1-.576-.416c-.276-1.752.305-3.035 1.164-3.904m-.23 3.208c.552-.172 1.188-.49 1.69-.988.564-.56.98-1.367.893-2.533a4.36 4.36 0 0 0-1.642 1.016c-.563.57-.985 1.374-.94 2.505"/><path d="M6.745 1.364a.5.5 0 0 1 .618-.343c1.068.307 3.061 1.669 3.137 4.663a.5.5 0 1 1-1 .025C9.437 3.226 7.811 2.19 7.087 1.983a.5.5 0 0 1-.342-.619"/><path d="M5.798 5.516c-.715.287-1.394.82-1.883 1.434-.9 1.13-1.379 2.53-1.379 4.249 0 3.129 1.845 5.768 4.544 6.885.331.137.679.126 1.143.05q.15-.024.32-.056c.384-.07.842-.155 1.314-.155s.954.084 1.369.157q.198.036.373.062c.52.08.918.09 1.273-.058a7.42 7.42 0 0 0 4.592-6.873c-.076-1.458-.297-2.505-.721-3.322-.415-.8-1.047-1.42-2.026-1.988-.795-.33-1.359-.45-1.776-.462a1.93 1.93 0 0 0-.96.2 4 4 0 0 0-.401.23l-.069.044a8 8 0 0 1-.383.231c-.34.188-.74.345-1.271.345-.63 0-1.017-.19-1.335-.44a6 6 0 0 1-.258-.218q-.065-.057-.11-.094a1.7 1.7 0 0 0-.334-.23c-.605-.306-1.31-.277-2.022.01m-.373-.928c.896-.36 1.915-.445 2.847.028.218.11.386.238.526.355.071.06.123.105.168.146.058.05.105.093.172.145.163.128.338.227.719.227.31 0 .544-.086.788-.22a7 7 0 0 0 .403-.246c.146-.091.31-.192.495-.282a2.9 2.9 0 0 1 1.43-.302c.583.019 1.28.183 2.16.552l.028.012.027.015c1.118.643 1.915 1.395 2.442 2.41.52 1.003.755 2.218.833 3.745v.026a8.42 8.42 0 0 1-5.207 7.808c-.622.259-1.254.208-1.807.124a22 22 0 0 1-.467-.078c-.39-.068-.746-.13-1.125-.13-.372 0-.705.061-1.07.128q-.194.036-.404.071c-.508.082-1.087.133-1.685-.114-3.07-1.27-5.162-4.273-5.162-7.81 0-1.918.54-3.545 1.597-4.872.584-.733 1.398-1.379 2.292-1.738"/></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewBox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 322 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-banana" viewBox="0 0 20 20"><path d="M9.59 2.05a.5.5 0 0 1 .39-.082l2.176.456a.5.5 0 0 1 .394.544l-.236 2.136c.041.034.091.067.165.116l.146.098c.326.223.766.564 1.065 1.213.334.727.613 1.583.89 2.434l.07.21c.305.935.617 1.865 1.018 2.694.4.83.872 1.525 1.475 2.01.591.475 1.334.768 2.325.757a.5.5 0 0 1 .497.59c-.092.503-.414 1.185-1.072 1.696-.671.522-1.651.835-2.995.658-1.215-.129-2.713-.701-3.892-2.269l-.054-.073c-.833 1.8-3.228 3.968-7.368 3.377a.5.5 0 0 1-.079-.973l.093-.027c.382-.11 1.198-.347 1.752-1.378.267-.756.383-1.315.423-1.803.041-.497.005-.94-.048-1.482l-.015-.15c-.11-1.082-.248-2.461.09-5.018.095-.71.45-1.423.906-1.983.367-.453.84-.854 1.358-1.059l.318-2.351a.5.5 0 0 1 .207-.342m1.683 12.058c-.766-1.551-1.252-3.724-1.236-6.735a.5.5 0 0 1 1 .005c-.02 3.76.772 6.007 1.768 7.332.989 1.314 2.218 1.773 3.204 1.877l.013.001c1.12.148 1.824-.119 2.257-.455a2 2 0 0 0 .48-.536 4.36 4.36 0 0 1-2.243-.939c-.764-.614-1.315-1.456-1.749-2.354-.433-.898-.765-1.888-1.068-2.818l-.064-.196c-.284-.869-.545-1.67-.854-2.341-.188-.41-.456-.625-.72-.805l-.085-.057a4 4 0 0 1-.339-.245c-.141-.123-.322-.328-.335-.64l.003-.075.202-1.818-1.206-.252-.29 2.136a.5.5 0 0 1-.393.422c-.34.07-.764.358-1.136.816-.367.451-.625.997-.69 1.484-.324 2.443-.193 3.737-.088 4.783l.016.155c.054.547.099 1.068.05 1.664-.05.598-.192 1.253-.49 2.09l-.028.064a3.9 3.9 0 0 1-.765 1.023c3.168-.235 4.617-2.481 4.786-3.586"/><path d="M6.271 11.8c.258-.497.332-.892.315-1.055l.994-.103c.047.447-.127 1.05-.421 1.618a5.1 5.1 0 0 1-1.425 1.709 17 17 0 0 1-2.331 1.512c2.157-.21 3.158-.685 3.534-.987l.626.78c-.77.617-2.637 1.313-6.558 1.313a.5.5 0 0 1-.21-.954l.222-.103c1.575-.73 2.596-1.204 4.111-2.357A4.1 4.1 0 0 0 6.271 11.8"/></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-bottle" viewBox="0 0 20 20"><path d="M13.144 3.025a.5.5 0 0 1 .388.815.74.74 0 0 0-.163.503.9.9 0 0 0 .09.37c1.145 1.978 1.575 4.81 1.653 5.973v8.091a.5.5 0 0 1-.5.5H5.398a.5.5 0 0 1-.5-.5v-8.041c-.056-.885.135-1.942.395-2.918.265-.99.612-1.942.894-2.62.053-.128.129-.266.185-.368l.048-.088a.8.8 0 0 0 .103-.266c.01-.08-.012-.18-.083-.312a2 2 0 0 0-.136-.217 2 2 0 0 1-.116-.182.5.5 0 0 1 .439-.74zm-.752 1h-4.93c.051.17.08.368.051.584a1.8 1.8 0 0 1-.209.598l-.083.155c-.046.083-.08.145-.112.22-.268.647-.6 1.555-.85 2.494-.253.949-.411 1.887-.363 2.61l.001.034v7.557h8.216v-7.54c-.077-1.118-.494-3.751-1.52-5.523a1.86 1.86 0 0 1-.201-1.189"/><path d="M6.373 1.698A1 1 0 0 1 7.36.859h5.109a1 1 0 0 1 .97.755l.332 1.313a1 1 0 0 1-.97 1.245h-5.95a.75.75 0 0 1-.74-.87zm6.096.161H7.36l-.215 1.313h5.656zm1.632 7.094H14.1l-.04.021-.002.001-.043.022-.043.02-.043.022-.044.022-.044.02-.045.022-.045.02-.045.021-.046.02-.046.02-.047.02-.047.02-.048.018-.048.019-.049.018-.049.017-.05.017-.05.016-.05.016-.051.015-.052.014-.051.013-.053.012-.052.012-.054.01-.053.01-.054.009-.054.008-.055.006-.054.006-.055.004-.055.004-.055.002-.056.001h-.11l-.055-.003-.055-.003-.055-.005-.054-.005-.054-.007-.054-.008-.054-.008-.053-.01-.053-.01-.053-.012-.051-.012-.052-.013-.051-.014-.05-.015-.051-.015-.05-.016-.049-.017-.049-.017-.048-.018-.048-.018-.047-.018-.047-.02-.046-.019-.046-.02-.046-.02-.045-.02-.045-.02-.044-.022-.044-.02-.044-.022-.043-.02-.043-.022-.04-.02-.002-.001-.04-.02-.002-.002-.042-.02-.241-.125-.04-.02h-.001l-.037-.019h-.002l-.036-.019-.003-.001-.035-.018-.003-.001-.036-.018-.037-.018-.037-.017-.037-.017-.036-.017-.036-.016-.035-.015-.035-.015-.034-.015-.034-.013-.033-.013-.033-.013-.033-.012-.032-.01-.031-.011-.031-.01-.03-.01-.03-.008-.03-.008-.03-.007-.028-.007-.029-.006-.028-.005-.027-.005-.028-.004-.026-.004-.027-.003-.026-.003-.027-.002h-.026l-.026-.002h-.077l-.026.002-.026.002-.027.002-.026.003-.027.003-.027.004-.028.005-.027.005-.029.006-.028.006-.03.007-.029.008-.03.008-.03.01-.031.009-.031.01-.032.011-.033.012-.032.012-.034.013-.033.013-.034.014-.035.015-.035.015-.035.016-.036.016-.037.017-.036.017-.038.018-.037.019-.038.018-.038.02-.038.018-.002.001-.037.02H8.02l-.282.144-.002.001-.042.021-.042.022-.043.021-.044.022-.043.02-.045.022-.044.021-.045.02-.046.022-.045.02-.047.02-.046.02-.048.019-.047.019-.048.018-.049.018-.049.018-.05.017-.05.016-.05.016-.05.014-.052.014-.052.014-.052.012-.053.012-.053.01-.054.01-.054.01-.054.007-.054.007-.055.005-.055.005-.055.004-.055.002-.055.001H5.9l-.055-.003-.055-.003-.055-.005-.055-.005-.054-.006-.054-.008-.054-.009-.053-.01-.001-1.086.031.011.031.01.03.01.031.008.03.008.029.007.029.007.028.006.028.005.028.005.027.004.027.004.027.003.026.003.026.002.026.001.026.001h.078l.026-.001.026-.002.026-.002.027-.003.027-.003.027-.004.027-.005.028-.005.028-.006.029-.006.029-.007.029-.008.03-.008.03-.009.031-.01.031-.01.032-.01.032-.012.033-.012.033-.013.034-.013.034-.014.035-.015.035-.015.035-.016.036-.016.036-.017.037-.018.037-.017.038-.019.038-.018.038-.02.038-.018.001-.001.038-.02h.001l.241-.123.043-.022.042-.021.043-.022.042-.021.044-.021.044-.022.044-.02.044-.022.045-.02.046-.021.045-.02.047-.02.046-.02.047-.02.048-.019.048-.018.049-.018.049-.018.05-.017.049-.016.05-.016.051-.015.052-.014.052-.013.052-.013.052-.012.054-.01.053-.01.054-.01.054-.007.054-.007.055-.006.055-.004.055-.004.055-.002.055-.002h.055l.056.001.055.002.055.003.054.005.055.005.054.006.054.008.054.008.053.01.053.01.053.011.052.013.051.013.052.013.05.015.05.015.05.016.05.016.048.018.049.017.048.018.047.019.047.019.046.02.047.02.045.02.046.02.044.02.045.02.044.022.043.02.043.022.043.021.043.022.042.02.041.022.243.124.039.02h.001l.037.02h.002l.037.018.002.002.036.017.002.002.037.017.037.019.037.017.037.017.036.017.035.016.036.016.035.015.034.014.034.014.033.013.033.012.033.012.032.012.032.01.03.01.031.01.03.008.03.008.03.008.028.006.029.006.028.006.027.005.028.004.027.004.026.003.027.003.026.002.026.001.026.001h.078l.026-.001.026-.002.026-.002.027-.003.026-.003.027-.004.028-.005.027-.005.029-.005.028-.007.03-.007.029-.007.03-.008.03-.01.03-.009.032-.01.032-.01.032-.012.033-.012.033-.013.033-.013.034-.014.035-.015.035-.015.035-.016.036-.016.036-.017.037-.017.037-.018.036-.017.038-.02h.003l.036-.018.002-.001.036-.019h.002l.038-.02.283-.144.001-.001.042-.021.043-.022.043-.021.043-.022.044-.021.044-.021.045-.021.045-.021.045-.02.046-.021.046-.02-.063 1.227-.041.02z"/></svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-box" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M9.695.679a1 1 0 0 1 .674.003l7.846 2.859a1 1 0 0 1 .658.94v9.948a1 1 0 0 1-.553.894l-7.847 3.924a1 1 0 0 1-.882.006l-8.137-3.929a1 1 0 0 1-.565-.9v-9.94a1 1 0 0 1 .668-.943zM6.08 3.01 2.535 4.257l7.614 3.378 3.42-1.517zm.706-.248L14.2 5.838l3.337-1.48-7.51-2.736zM1.89 14.424v-9.36l7.76 3.444v9.662zm15.984.005-7.224 3.612V8.508l7.224-3.205z"/></svg>

After

Width:  |  Height:  |  Size: 478 B

+1
View File
@@ -0,0 +1 @@
<svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 237 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-carrot" viewBox="0 0 20 20"><path d="M13.2 3.2c.87.248 1.604.806 2.183 1.384.838.838 1.293 1.714 1.428 2.588.136.874-.055 1.699-.428 2.425-.442.86-1.221 1.436-1.921 1.89L2.626 19.163a1.188 1.188 0 0 1-1.65-1.633l7.63-12.04c.411-.648.922-1.36 1.672-1.82 1.038-.637 2.03-.724 2.923-.47m-.273.963c-.617-.176-1.32-.134-2.126.36-.541.332-.95.873-1.35 1.504L1.82 18.065a.188.188 0 0 0 .261.258l11.836-7.675c.685-.444 1.263-.9 1.576-1.508.294-.574.427-1.187.33-1.815-.098-.626-.431-1.316-1.149-2.034-.518-.518-1.108-.947-1.748-1.128"/><path d="M10.767 12.868a.25.25 0 0 1-.353.014L8.908 11.49a.25.25 0 0 1 .339-.367l1.506 1.392a.25.25 0 0 1 .014.353m.393-4.444a.25.25 0 0 1-.353.016l-2.29-2.1a.25.25 0 1 1 .338-.368l2.29 2.1a.25.25 0 0 1 .015.352m5.327-5.394a.25.25 0 0 1 0 .354L15.119 4.75a.25.25 0 1 1-.354-.353l1.368-1.368a.25.25 0 0 1 .354 0M6.248 14.6a.25.25 0 0 1-.353.014L4.389 13.22a.25.25 0 1 1 .34-.367l1.505 1.392a.25.25 0 0 1 .014.354"/><path d="M15.149 1.795c-.338.372-.634.628-.937.782a1.74 1.74 0 0 1-.902.183h-.812c-.7.06-1.053.693-1.046 1.183l-1 .013c-.012-.85.595-2.093 1.99-2.195l.018-.001h.881c.18.008.29-.01.417-.074.148-.075.35-.232.666-.58l.015-.017.017-.016A2.44 2.44 0 0 1 16.07.42c.662-.01 1.367.252 2.046.866.311.281.753.747.945 1.372.205.666.102 1.433-.532 2.223l-.02.025-.023.022c-.16.155-.231.245-.275.362-.046.122-.08.33-.037.737l.102.77c.06.436-.085.952-.374 1.378-.3.44-.782.83-1.446.956l-.187-.982c.366-.07.633-.281.806-.535.182-.269.23-.54.21-.681V6.93l-.105-.789c-.052-.489-.028-.873.094-1.2.12-.32.315-.533.493-.708.428-.544.436-.963.338-1.28-.111-.363-.389-.68-.66-.924-.523-.473-.99-.614-1.36-.608a1.44 1.44 0 0 0-.935.374"/></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-cart-empty" viewBox="0 0 40 40"><path fill="currentColor" fill-rule="evenodd" d="M15.75 11.8h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33L28.4 11.8zm0 1h-2.22l-.71 10.67a4 4 0 0 0 3.99 4.27h7.38a4 4 0 0 0 4-4.27l-.72-10.67h-2.22v.63a4.75 4.75 0 1 1-9.5 0zm8.5 0h-7.5v.63a3.75 3.75 0 1 0 7.5 0z"/></svg>

After

Width:  |  Height:  |  Size: 388 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-cart" viewBox="0 0 40 40"><path fill="currentColor" fill-rule="evenodd" d="M20.5 6.5a4.75 4.75 0 0 0-4.75 4.75v.56h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33l-.77-11.6h-3.16v-.57A4.75 4.75 0 0 0 20.5 6.5m3.75 5.31v-.56a3.75 3.75 0 1 0-7.5 0v.56zm-7.5 1h7.5v.56a3.75 3.75 0 1 1-7.5 0zm-1 0v.56a4.75 4.75 0 1 0 9.5 0v-.56h2.22l.71 10.67a4 4 0 0 1-3.99 4.27h-7.38a4 4 0 0 1-4-4.27l.72-10.67z"/></svg>

After

Width:  |  Height:  |  Size: 485 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-chat-bubble" viewBox="0 0 20 20"><path d="M5.8 10.243a1 1 0 1 1 2 0 1 1 0 0 1-2 0M9.23 10.243a1 1 0 1 1 2 0 1 1 0 0 1-2 0M12.66 10.243a1 1 0 1 1 2 0 1 1 0 0 1-2 0"/><path fill-rule="evenodd" d="m16.645 17.204-.008-.004a19 19 0 0 1-.767-.423c-.645-.367-1.263-.72-1.442-.598a7.472 7.472 0 1 1 2.05-2.082c-.134.202.192.843.533 1.513.147.29.297.584.414.85l.006.014c.193.443.293.808.136.944-.128.136-.488.006-.922-.214m1.614.936c-.38.372-.857.345-1.046.321a2.5 2.5 0 0 1-.626-.181 11 11 0 0 1-1.081-.56l-.132-.074c-.29-.166-.538-.307-.744-.408a8.472 8.472 0 1 1 2.877-2.902l.008.02c.092.22.226.483.385.795l.084.165c.178.353.388.774.516 1.146.063.181.131.42.143.669.01.225-.02.668-.384 1.009"/></svg>

After

Width:  |  Height:  |  Size: 767 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-check-mark" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M18.5 1.5h-17v17h17zm-17-1a1 1 0 0 0-1 1v17a1 1 0 0 0 1 1h17a1 1 0 0 0 1-1v-17a1 1 0 0 0-1-1z"/><path d="M14.998 6.09a.5.5 0 0 1 .03.707l-6.112 6.666a.5.5 0 0 1-.733.004l-3.188-3.394a.5.5 0 0 1 .729-.685l2.82 3.002 5.746-6.27a.5.5 0 0 1 .707-.03"/></svg>

After

Width:  |  Height:  |  Size: 388 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 317 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="icon icon-accordion icon-clipboard" viewBox="0 0 20 20"><path d="M6.311 9.136a.25.25 0 0 1 .25-.25h7.185a.25.25 0 0 1 0 .5H6.561a.25.25 0 0 1-.25-.25M6.311 14.054a.25.25 0 0 1 .25-.25h6.878a.25.25 0 0 1 0 .5H6.561a.25.25 0 0 1-.25-.25M6.926 11.595a.25.25 0 0 1 .25-.25h5.648a.25.25 0 1 1 0 .5H7.176a.25.25 0 0 1-.25-.25M5.196 1.778a1.5 1.5 0 0 1 1.5-1.5h6.608a1.5 1.5 0 0 1 1.5 1.5v1.69a1.5 1.5 0 0 1-1.5 1.5H6.696a1.5 1.5 0 0 1-1.5-1.5zm1.5-.5a.5.5 0 0 0-.5.5v1.69a.5.5 0 0 0 .5.5h6.608a.5.5 0 0 0 .5-.5v-1.69a.5.5 0 0 0-.5-.5z"/><path d="M3.737 2.508v16.215h12.526V2.508h-1.765v-1h1.765a1 1 0 0 1 1 1v16.215a1 1 0 0 1-1 1H3.737a1 1 0 0 1-1-1V2.508a1 1 0 0 1 1-1H5.76v1z"/></svg>

After

Width:  |  Height:  |  Size: 746 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-close-small" viewBox="0 0 12 13"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M8.486 9.33 2.828 3.67M2.885 9.385l5.544-5.77"/></svg>

After

Width:  |  Height:  |  Size: 235 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-close" viewBox="0 0 18 17"><path fill="currentColor" d="M.865 15.978a.5.5 0 0 0 .707.707l7.433-7.431 7.579 7.282a.501.501 0 0 0 .846-.37.5.5 0 0 0-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 1 0-.707-.708L8.991 7.853 1.413.573a.5.5 0 1 0-.693.72l7.563 7.268z"/></svg>

After

Width:  |  Height:  |  Size: 334 B

+12
View File
@@ -0,0 +1,12 @@
<svg
class="icon icon-clipboard"
width="11"
height="13"
fill="none"
xmlns="http://www.w3.org/2000/svg"
aria-hidden="true"
focusable="false"
viewBox="0 0 11 13"
>
<path fill-rule="evenodd" clip-rule="evenodd" d="M2 1a1 1 0 011-1h7a1 1 0 011 1v9a1 1 0 01-1 1V1H2zM1 2a1 1 0 00-1 1v9a1 1 0 001 1h7a1 1 0 001-1V3a1 1 0 00-1-1H1zm0 10V3h7v9H1z" fill="currentColor"/>
</svg>

After

Width:  |  Height:  |  Size: 387 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-dairy-free" viewBox="0 0 20 20"><path d="m6.2 12.918-3.745 2.588-.569-.822 3.746-2.588zm11.198-7.654-3.1 2.055-.552-.833 3.1-2.055z"/><path d="m5.158 12.798-.168-.24.821-.572.168.241z"/><path fill-rule="evenodd" d="M9.94 18.5a8.5 8.5 0 1 0 0-17 8.5 8.5 0 0 0 0 17m0 1a9.5 9.5 0 1 0 0-19 9.5 9.5 0 0 0 0 19"/><path d="M7.72 4.91 6.224 7.186a.5.5 0 1 1-.836-.55l1.497-2.274zm5.986.266-1.165 2.178-.881-.472 1.165-2.177z"/><path d="m13.425 4.634 1.223 1.97a1 1 0 0 1 .15.527v6.9a1 1 0 0 1-.302.715l-1.65 1.609a1 1 0 0 1-.697.283h-1.427v-1h1.427l1.65-1.608V7.131l-1.224-1.97z"/><path d="M5.279 6.958a.5.5 0 0 1 .5-.5h6.856v9.18a1 1 0 0 1-1 1H6.279a1 1 0 0 1-1-1zm1 .5v8.18h5.356v-8.18zM6.5 3.5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v1.35h-1V3.5h-5V5h-1z"/><path d="M13.408 5.022H6.956v-1h6.452z"/></svg>

After

Width:  |  Height:  |  Size: 863 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-dairy" viewBox="0 0 20 20"><path d="M6.468 3.065 4.297 6.088l-.812-.583 2.17-3.023zm8.662.087-1.65 3.084-.882-.472 1.65-3.083z"/><path d="M14.522 2.583h.58l1.379 3.165a1 1 0 0 1 .083.4v9.954a1 1 0 0 1-.302.716l-2.46 2.398a1 1 0 0 1-.698.284H11v-1h2.104l2.46-2.398V6.147l-1.249-2.864.207-.09z"/><path d="M3.5 5.5h10v13a1 1 0 0 1-1 1h-8a1 1 0 0 1-1-1zm1 1v12h8v-12zm1-5a1 1 0 0 1 1-1h7.602a1 1 0 0 1 1 1v1.123h-1V1.5H6.5V3h-1z"/><path d="M15.013 3.089H5.876v-.5h9.137z"/></svg>

After

Width:  |  Height:  |  Size: 548 B

+1
View File
@@ -0,0 +1 @@
<svg class="icon icon-discount" viewBox="0 0 12 12"><path fill="currentColor" fill-rule="evenodd" d="M7 0h3a2 2 0 0 1 2 2v3a1 1 0 0 1-.3.7l-6 6a1 1 0 0 1-1.4 0l-4-4a1 1 0 0 1 0-1.4l6-6A1 1 0 0 1 7 0m2 2a1 1 0 1 0 2 0 1 1 0 0 0-2 0" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 260 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-dryer" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M18.47 1.53H1.53v16.94h16.94zM1.53.5A1.03 1.03 0 0 0 .5 1.53v16.94c0 .569.461 1.03 1.03 1.03h16.94a1.03 1.03 0 0 0 1.03-1.03V1.53A1.03 1.03 0 0 0 18.47.5z"/><path fill-rule="evenodd" d="M10 15.224a5.224 5.224 0 1 0 0-10.448 5.224 5.224 0 0 0 0 10.448m0 1.03a6.254 6.254 0 1 0 0-12.508 6.254 6.254 0 0 0 0 12.508"/></svg>

After

Width:  |  Height:  |  Size: 449 B

+1
View File
@@ -0,0 +1 @@
<svg class="icon icon-error" viewBox="0 0 13 13"><circle cx="6.5" cy="6.5" r="5.5" stroke="#fff" stroke-width="2"/><circle cx="6.5" cy="6.5" r="5.5" fill="#EB001B" stroke="#EB001B" stroke-width=".7"/><path fill="#fff" d="m5.874 3.528.1 4.044h1.053l.1-4.044zm.627 6.133c.38 0 .68-.288.68-.656s-.3-.656-.68-.656-.681.288-.681.656.3.656.68.656"/><path fill="#fff" stroke="#EB001B" stroke-width=".7" d="M5.874 3.178h-.359l.01.359.1 4.044.008.341h1.736l.008-.341.1-4.044.01-.359H5.873Zm.627 6.833c.56 0 1.03-.432 1.03-1.006s-.47-1.006-1.03-1.006-1.031.432-1.031 1.006.47 1.006 1.03 1.006Z"/></svg>

After

Width:  |  Height:  |  Size: 593 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-eye" viewBox="0 0 20 20"><path d="M9.524 4.8c-2.761.13-5.44 1.82-8.352 4.865a.484.484 0 0 0 0 .67c2.911 3.044 5.59 4.736 8.352 4.865 2.75.13 5.743-1.286 9.298-4.86a.48.48 0 0 0 0-.68c-3.555-3.574-6.549-4.99-9.298-4.86m-.049-1.04c3.177-.15 6.44 1.503 10.081 5.164a1.526 1.526 0 0 1 0 2.152c-3.641 3.66-6.904 5.314-10.08 5.165-3.167-.149-6.085-2.08-9.053-5.185a1.53 1.53 0 0 1 0-2.112C3.391 5.84 6.31 3.907 9.475 3.76"/><path d="M13.58 10a3.564 3.564 0 0 1-3.568 3.559A3.564 3.564 0 0 1 6.443 10a3.564 3.564 0 0 1 3.569-3.558A3.564 3.564 0 0 1 13.581 10m-3.568 2.517A2.524 2.524 0 0 0 12.542 10a2.524 2.524 0 0 0-2.53-2.517A2.524 2.524 0 0 0 7.482 10a2.524 2.524 0 0 0 2.53 2.517"/></svg>

After

Width:  |  Height:  |  Size: 759 B

+1
View File
@@ -0,0 +1 @@
<svg class="icon icon-facebook" viewBox="0 0 20 20"><path fill="currentColor" d="M18 10.049C18 5.603 14.419 2 10 2s-8 3.603-8 8.049C2 14.067 4.925 17.396 8.75 18v-5.624H6.719v-2.328h2.03V8.275c0-2.017 1.195-3.132 3.023-3.132.874 0 1.79.158 1.79.158v1.98h-1.009c-.994 0-1.303.621-1.303 1.258v1.51h2.219l-.355 2.326H11.25V18c3.825-.604 6.75-3.933 6.75-7.951"/></svg>

After

Width:  |  Height:  |  Size: 365 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-filter" viewBox="0 0 20 20"><path fill="currentColor" fill-rule="evenodd" d="M4.833 6.5a1.667 1.667 0 1 1 3.334 0 1.667 1.667 0 0 1-3.334 0M4.05 7H2.5a.5.5 0 0 1 0-1h1.55a2.5 2.5 0 0 1 4.9 0h8.55a.5.5 0 0 1 0 1H8.95a2.5 2.5 0 0 1-4.9 0m11.117 6.5a1.667 1.667 0 1 0-3.334 0 1.667 1.667 0 0 0 3.334 0M13.5 11a2.5 2.5 0 0 1 2.45 2h1.55a.5.5 0 0 1 0 1h-1.55a2.5 2.5 0 0 1-4.9 0H2.5a.5.5 0 0 1 0-1h8.55a2.5 2.5 0 0 1 2.45-2"/></svg>

After

Width:  |  Height:  |  Size: 497 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-fire" viewBox="0 0 20 20"><path d="m10.289.196-.272.419-.284-.412a.5.5 0 0 1 .556-.007m-.265 1.028-.056.041A31.4 31.4 0 0 0 6.36 4.368c-.987.995-1.96 2.135-2.685 3.328-.727 1.198-1.181 2.413-1.181 3.569 0 4.807 3.892 7.524 7.376 7.618 3.464.093 7.636-2.675 7.636-7.711 0-1.218-.454-2.458-1.176-3.653-.72-1.194-1.688-2.313-2.67-3.28a28.6 28.6 0 0 0-3.586-2.98zm7.162 5.778c.777 1.286 1.32 2.706 1.32 4.17 0 5.686-4.729 8.816-8.663 8.71-3.915-.105-8.35-3.164-8.35-8.617 0-1.41.55-2.807 1.327-4.088.78-1.284 1.811-2.486 2.83-3.513A32.4 32.4 0 0 1 9.707.22l.019-.013.005-.004.002-.001.284.412.272-.42.002.002.005.003.02.013a10 10 0 0 1 .33.226 29.6 29.6 0 0 1 3.717 3.088c1.016 1.001 2.045 2.186 2.823 3.475"/><path d="m10.298 6.54-.288.408-.3-.401a.5.5 0 0 1 .588-.008m-.28 1.038A19.6 19.6 0 0 0 7.93 9.54c-.597.652-1.183 1.396-1.617 2.173-.436.779-.702 1.56-.702 2.293 0 3.136 2.146 4.88 4.301 4.88 2.18 0 4.477-1.677 4.477-4.942 0-1.572-1.097-3.197-2.305-4.49a18 18 0 0 0-2.066-1.876m2.797 1.194c1.23 1.317 2.574 3.19 2.574 5.172 0 3.84-2.767 5.941-5.477 5.941-2.734 0-5.3-2.217-5.3-5.88 0-.966.346-1.918.828-2.78.485-.867 1.124-1.674 1.752-2.36A20.6 20.6 0 0 1 9.65 6.592l.044-.033.012-.01.003-.002.002-.001.3.4.287-.408.002.001.003.003.012.008.045.032.162.121a19 19 0 0 1 2.293 2.068"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-gluten_free" viewBox="0 0 20 20"><path d="m7.068 12.352-4.552 3.154-.57-.822 4.553-3.154zm10.455-7.03L12.97 8.477l-.57-.822L16.953 4.5zM9.5 16.51V7.488a.5.5 0 0 1 1 0v9.022a.5.5 0 0 1-1 0m2.15-10.34c.415-1.78-.516-3.193-1.233-3.81a.5.5 0 0 0-.697.043C8.505 3.747 8.24 5.056 8.467 6.157l.98-.203c-.136-.658-.043-1.5.67-2.462.428.55.799 1.423.56 2.45z"/><path d="M9.24 5.58a4.1 4.1 0 0 0-2.14-.93.5.5 0 0 0-.552.428c-.183 1.3-.01 2.398.47 3.183l.853-.522c-.27-.44-.436-1.105-.386-1.99.358.107.757.294 1.104.59.505.433.926 1.119.926 2.225h1c0-1.401-.551-2.364-1.276-2.984"/><path d="M10.777 5.77a4.1 4.1 0 0 1 2.139-.93.5.5 0 0 1 .552.428c.183 1.3.01 2.399-.47 3.183l-.853-.522c.27-.44.436-1.105.386-1.99a3.1 3.1 0 0 0-1.104.591c-.505.432-.926 1.118-.926 2.224h-1c0-1.401.551-2.364 1.276-2.983"/><path d="M11.131 8.036a4.1 4.1 0 0 1 2.235-.669.5.5 0 0 1 .498.49c.026 1.314-.276 2.383-.846 3.105l-.785-.62c.32-.405.564-1.045.62-1.93a3.1 3.1 0 0 0-1.167.456c-.552.369-1.052 1-1.183 2.098l-.993-.119c.167-1.391.828-2.281 1.621-2.81"/><path d="M8.784 8.016a4.1 4.1 0 0 0-2.258-.584.5.5 0 0 0-.479.509c.023 1.313.366 2.37.962 3.07l.761-.649c-.335-.393-.603-1.023-.692-1.905.37.05.794.173 1.183.411.566.348 1.089.96 1.262 2.052l.988-.156c-.22-1.384-.914-2.249-1.727-2.748"/><path d="M10.449 12.182c-1.156-1.952-3.177-2.102-4.216-1.867a.5.5 0 0 0-.38.587c.261 1.296.822 2.177 1.523 2.742.695.56 1.488.776 2.167.818l.062-.998a2.8 2.8 0 0 1-1.602-.6c-.41-.33-.792-.84-1.037-1.634.81-.02 1.925.283 2.622 1.461z"/><path d="M9.505 12.182c1.155-1.952 3.176-2.102 4.216-1.867a.5.5 0 0 1 .38.587c-.26 1.291-.806 2.176-1.492 2.747a3.7 3.7 0 0 1-2.148.833l-.062-.998a2.7 2.7 0 0 0 1.57-.604c.401-.334.776-.85 1.02-1.65-.81-.02-1.926.282-2.623 1.461z"/><path fill-rule="evenodd" d="M10 18.5a8.5 8.5 0 1 0 0-17 8.5 8.5 0 0 0 0 17m0 1a9.5 9.5 0 1 0 0-19 9.5 9.5 0 0 0 0 19"/></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-hamburger" viewBox="0 0 18 16"><path fill="currentColor" d="M1 .5a.5.5 0 1 0 0 1h15.71a.5.5 0 0 0 0-1zM.5 8a.5.5 0 0 1 .5-.5h15.71a.5.5 0 0 1 0 1H1A.5.5 0 0 1 .5 8m0 7a.5.5 0 0 1 .5-.5h15.71a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5"/></svg>

After

Width:  |  Height:  |  Size: 303 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-heart" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 5.24 8.515 3.773a4.433 4.433 0 0 0-6.21 0 4.293 4.293 0 0 0 0 6.128L10 17.495l7.695-7.593a4.293 4.293 0 0 0 0-6.128 4.433 4.433 0 0 0-6.21 0zm.765-2.177c2.113-2.084 5.538-2.084 7.65 0a5.29 5.29 0 0 1 0 7.55l-7.695 7.593a1.03 1.03 0 0 1-1.44 0l-7.696-7.594a5.29 5.29 0 0 1 0-7.549C3.697.98 7.122.98 9.234 3.063l.766.755z"/></svg>

After

Width:  |  Height:  |  Size: 461 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 15 14"><path fill="currentColor" fill-opacity=".75" fill-rule="evenodd" d="M14.5 7a7 7 0 1 1-14 0 7 7 0 0 1 14 0m-7 6.174A6.174 6.174 0 1 0 7.5.826a6.174 6.174 0 0 0 0 12.348" clip-rule="evenodd"/><path fill="currentColor" fill-opacity=".75" fill-rule="evenodd" d="M8.192 3.554c0-.39-.276-.725-.69-.725-.41 0-.696.329-.696.725 0 .392.29.719.696.719.411 0 .69-.332.69-.72" clip-rule="evenodd"/><path fill="currentColor" fill-opacity=".75" d="M6.971 5.724a.33.33 0 0 1 .33-.33H7.7a.33.33 0 0 1 .33.33v5.123a.33.33 0 0 1-.33.33h-.397a.33.33 0 0 1-.33-.33z"/></svg>

After

Width:  |  Height:  |  Size: 627 B

+1
View File
@@ -0,0 +1 @@
<svg class="icon icon-instagram" viewBox="0 0 20 20"><path fill="currentColor" fill-rule="evenodd" d="M13.23 3.492c-.84-.037-1.096-.046-3.23-.046-2.144 0-2.39.01-3.238.055-.776.027-1.195.164-1.487.273a2.4 2.4 0 0 0-.912.593 2.5 2.5 0 0 0-.602.922c-.11.282-.238.702-.274 1.486-.046.84-.046 1.095-.046 3.23s.01 2.39.046 3.229c.004.51.097 1.016.274 1.495.145.365.319.639.602.913.282.282.538.456.92.602.474.176.974.268 1.479.273.848.046 1.103.046 3.238.046s2.39-.01 3.23-.046c.784-.036 1.203-.164 1.486-.273.374-.146.648-.329.921-.602.283-.283.447-.548.602-.922.177-.476.27-.979.274-1.486.037-.84.046-1.095.046-3.23s-.01-2.39-.055-3.229c-.027-.784-.164-1.204-.274-1.495a2.4 2.4 0 0 0-.593-.913 2.6 2.6 0 0 0-.92-.602c-.284-.11-.703-.237-1.488-.273ZM6.697 2.05c.857-.036 1.131-.045 3.302-.045a63 63 0 0 1 3.302.045c.664.014 1.321.14 1.943.374a4 4 0 0 1 1.414.922c.41.397.728.88.93 1.414.23.622.354 1.279.365 1.942C18 7.56 18 7.824 18 10.005c0 2.17-.01 2.444-.046 3.292-.036.858-.173 1.442-.374 1.943-.2.53-.474.976-.92 1.423a3.9 3.9 0 0 1-1.415.922c-.51.191-1.095.337-1.943.374-.857.036-1.122.045-3.302.045-2.171 0-2.445-.009-3.302-.055-.849-.027-1.432-.164-1.943-.364a4.15 4.15 0 0 1-1.414-.922 4.1 4.1 0 0 1-.93-1.423c-.183-.51-.329-1.085-.365-1.943C2.009 12.45 2 12.167 2 10.004c0-2.161 0-2.435.055-3.302.027-.848.164-1.432.365-1.942a4.4 4.4 0 0 1 .92-1.414 4.2 4.2 0 0 1 1.415-.93c.51-.183 1.094-.33 1.943-.366Zm.427 4.806a4.105 4.105 0 1 1 5.805 5.805 4.105 4.105 0 0 1-5.805-5.805m1.882 5.371a2.668 2.668 0 1 0 2.042-4.93 2.668 2.668 0 0 0-2.042 4.93m5.922-5.942a.958.958 0 1 1-1.355-1.355.958.958 0 0 1 1.355 1.355" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

+1
View File
@@ -0,0 +1 @@
<svg class="icon icon-inventory-status"><circle cx="7.5" cy="7.5" r="7.5" fill="currentColor"/><circle cx="7.5" cy="7.5" r="5" fill="currentColor" stroke="#FFF"/></svg>

After

Width:  |  Height:  |  Size: 169 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-iron" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M7.068 2a.5.5 0 0 1 .5-.5h11.304A1.13 1.13 0 0 1 20 2.64h-1c0-.09-.064-.14-.128-.14H7.568a.5.5 0 0 1-.5-.5M.05 16.29l-.004.013-.003.015a1.83 1.83 0 0 0 .33 1.506c.332.425.838.676 1.384.676h16.486c.976 0 1.757-.81 1.757-1.782V2.641h-1v5.141h-6.65c-4.952 0-8.107 1.653-9.972 3.968a12.4 12.4 0 0 0-1.825 3.077 11.5 11.5 0 0 0-.49 1.413l-.01.036zM19 8.781h-6.65c-4.714 0-7.555 1.562-9.194 3.596a11.5 11.5 0 0 0-1.678 2.827v.002a11 11 0 0 0-.344.94l-.004.012a9 9 0 0 0-.104.354l-.01.03a.84.84 0 0 0 .147.667c.143.183.358.29.594.29h16.486a.775.775 0 0 0 .757-.782z"/><path d="M8.789 14.359c-.4 0-.7.3-.7.7 0 .39.3.69.7.69s.7-.3.7-.69a.7.7 0 0 0-.7-.7m2.83 0c-.4 0-.7.3-.7.7 0 .39.3.69.7.69s.7-.3.7-.69a.7.7 0 0 0-.7-.7m2.83 0c-.4 0-.7.3-.7.7 0 .39.3.69.7.69s.7-.3.7-.69-.3-.7-.7-.7"/></svg>

After

Width:  |  Height:  |  Size: 912 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-leaf" viewBox="0 0 20 20"><path d="M18.63.085c.291.058.627.167.869.398.25.24.363.581.421.873.062.307.08.648.08.97a14 14 0 0 1-.099 1.443l-.012.11v.006a67 67 0 0 1-.633 4.278c-.298 1.612-.694 3.382-1.214 4.954v.003c-.502 1.494-1.207 3.11-2.254 4.158-3.607 3.612-9.47 3.639-13.081.024-3.61-3.616-3.584-9.487.023-13.099C3.777 3.155 5.378 2.45 6.884 1.946h.001c1.57-.52 3.325-.917 4.948-1.215a66 66 0 0 1 4.273-.634h.005l.038-.005A14 14 0 0 1 17.665 0c.32.003.66.024.966.085m-2.41 1.018c-1.106.13-2.61.33-4.204.623-1.6.294-3.304.68-4.813 1.18-1.478.494-2.886 1.14-3.758 2.013C.229 8.14.209 13.37 3.421 16.586s8.436 3.196 11.652-.024c.871-.872 1.517-2.293 2.01-3.764.499-1.51.885-3.228 1.179-4.818a66 66 0 0 0 .635-4.327c.035-.314.09-.824.092-1.33 0-.289-.017-.554-.06-.767-.046-.229-.106-.32-.129-.341-.03-.03-.134-.09-.367-.137a4.3 4.3 0 0 0-.775-.066 13 13 0 0 0-1.408.088z"/><path d="M19.43.502a.507.507 0 0 1-.004.715L.861 19.617a.505.505 0 1 1-.711-.72L18.715.498a.505.505 0 0 1 .715.004"/><path d="M5.623 2.477h.505v11.19h11.268v.505H5.623z"/><path d="M10.188 1.188h.505v7.96h8.091v.505h-8.596z"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-leather" viewBox="0 0 20 20"><path d="M7.979 1.556a.506.506 0 0 0-.486.392l-.002.007a8 8 0 0 1-.273.897c-.12.31-.293.653-.558.92-.711.723-1.725.809-2.507.809q-.432 0-.858-.106a1.4 1.4 0 0 1-.208-.056.5.5 0 0 0-.15-.024.54.54 0 0 0-.238.057.48.48 0 0 0-.247.292l-.37 1.216a.51.51 0 0 0 .327.637 4.28 4.28 0 0 1 1.717 7.1l-.005.005a4.3 4.3 0 0 1-1.458.951.51.51 0 0 0-.293.625v-.003.005-.002l.554 1.787-.001-.004.003.01-.002-.006a.54.54 0 0 0 .313.329l-.017-.005.029.009-.012-.004c.082.022.13.028.173.028.09 0 .2-.033.292-.099.287-.203.602-.366.91-.491l.008-.003q.73-.285 1.523-.284c.97 0 1.912.342 2.655.944l.01.008.012.01c.088.08.188.168.29.27l-.008-.008.015.015-.007-.007c.16.148.292.306.409.468l-.004-.004.01.012q-.005-.003-.006-.008c.098.126.25.2.399.2V19.5c-.489 0-.953-.235-1.247-.622l-.005-.007-.005-.006a2 2 0 0 0-.279-.321l-.008-.008-.007-.007a6 6 0 0 0-.246-.228l.009.007-.019-.016.01.009a3.17 3.17 0 0 0-1.978-.7q-.596 0-1.133.21l.003-.002-.007.003.004-.002a3.5 3.5 0 0 0-.694.374 1.6 1.6 0 0 1-.906.294c-.18 0-.335-.034-.47-.07l-.014-.004-.014-.005a1.6 1.6 0 0 1-.994-1.006l-.003-.01-.559-1.801c-.23-.768.15-1.613.924-1.913h.002a3.2 3.2 0 0 0 1.096-.72l-.002.003.005-.005-.003.003A3.228 3.228 0 0 0 2.083 7.6H2.08a1.565 1.565 0 0 1-1.012-1.945v-.001l.372-1.219c.125-.408.408-.739.784-.927a1.6 1.6 0 0 1 .712-.17c.18 0 .337.034.473.074l.022.007.021.009.01.002.053.012.012.002.012.003q.31.077.614.077c.765 0 1.37-.104 1.752-.493l.003-.004q.175-.175.322-.556c.096-.249.168-.518.235-.778v.004l.001-.007v.003A1.56 1.56 0 0 1 7.978.5h3.63c.726 0 1.345.504 1.515 1.198V1.7c.06.247.135.517.235.764.103.252.217.444.337.564.425.426 1.082.652 1.75.652q.176 0 .353-.025a2.6 2.6 0 0 0 .616-.177 1.54 1.54 0 0 1 1.285.003c.394.182.71.521.84.961l.39 1.155.003.01c.122.41.08.86-.142 1.24s-.596.643-1.013.736l-.007.001a4 4 0 0 0-.626.198c-.381.17-.735.41-1.036.711a3.36 3.36 0 0 0-.99 2.384c0 .905.348 1.75.988 2.382l.002.003c.375.375.82.652 1.32.822.754.248 1.355 1.104 1.09 1.966l-.443 1.445v.003a1.55 1.55 0 0 1-1.028 1.028l-.006.002c-.132.04-.29.074-.462.074a1.57 1.57 0 0 1-.966-.329l-.003-.003a3 3 0 0 0-.668-.405h.002-.004.002a3.15 3.15 0 0 0-1.271-.265c-.721 0-1.413.245-1.966.699l.008-.007-.015.013.008-.006-.26.23.011-.01-.022.02.012-.01a3 3 0 0 0-.277.326l-.007.01.003-.004c-.281.41-.756.636-1.242.639v-1.056h-.007c.17 0 .308-.08.376-.18l.007-.01c.12-.17.253-.326.407-.48l.01-.011.298-.265.008-.006a4.15 4.15 0 0 1 2.648-.947c.588 0 1.156.118 1.696.353l.004.002c.318.142.614.319.896.542h-.002l.004.002-.002-.002a.5.5 0 0 0 .312.104.6.6 0 0 0 .153-.028h-.003l.006-.001h-.003a.5.5 0 0 0 .33-.332l.444-1.444c.065-.21-.095-.552-.412-.655l-.005-.002a4.46 4.46 0 0 1-1.73-1.076l.002.001-.003-.002.001.001a4.37 4.37 0 0 1-1.3-3.13c0-1.184.469-2.299 1.299-3.13a4.5 4.5 0 0 1 1.367-.936l.01-.004.011-.004a5 5 0 0 1 .803-.252h-.003.007-.004a.5.5 0 0 0 .325-.235.52.52 0 0 0 .045-.403l.004.011-.006-.02.002.01-.392-1.158-.003-.012a.48.48 0 0 0-.27-.306.48.48 0 0 0-.4 0l-.012.005a3.7 3.7 0 0 1-.88.254l-.01.001q-.252.037-.508.037c-.879 0-1.831-.294-2.5-.963-.261-.262-.44-.6-.567-.913a6.4 6.4 0 0 1-.283-.913.506.506 0 0 0-.486-.391z"/></svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-lightning-bolt" viewBox="0 0 20 20"><path d="M14.68.162a.5.5 0 0 1 .22.582l-2.384 7.468 4.178 1a.5.5 0 0 1 .242.834l-9.373 9.649a.5.5 0 0 1-.824-.533l2.965-7.481-4.47-1.07a.5.5 0 0 1-.245-.831L14.062.247a.5.5 0 0 1 .617-.085M6.311 9.84l4.186 1.002a.5.5 0 0 1 .348.67L8.593 17.2l7.014-7.22-3.847-.921a.5.5 0 0 1-.36-.639l1.886-5.907z"/></svg>

After

Width:  |  Height:  |  Size: 414 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-lipstick" viewBox="0 0 20 20"><path d="M5.757 9.016a1.03 1.03 0 0 1 1.431 0l4.17 4.071a.97.97 0 0 1 0 1.397L7.1 18.634a2.06 2.06 0 0 1-2.864 0l-2.739-2.675a1.94 1.94 0 0 1 .002-2.793zm4.885 4.77-4.17-4.072-4.258 4.15a.97.97 0 0 0 0 1.397l2.738 2.674a1.03 1.03 0 0 0 1.432 0z"/><path d="m9.726 6.736 3.972 3.878-3.155 3.075L6.572 9.81zm0 1.396-1.723 1.68 2.541 2.48 1.723-1.679z"/><path d="M15.513 1.095a1.03 1.03 0 0 1 1.432 0l.752.735a3.397 3.397 0 0 1-.002 4.888l-4.713 4.594L9.01 7.433zm1.468 1.433-.753-.735-5.787 5.641 2.542 2.481L16.98 6.02a2.426 2.426 0 0 0 .001-3.491"/></svg>

After

Width:  |  Height:  |  Size: 657 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-lock" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M16.5 7.118h-13V19h13zm-13-1a1 1 0 0 0-1 1V19a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V7.118a1 1 0 0 0-1-1z"/><path d="M11.443 11.92c0 .82-.646 1.486-1.443 1.486s-1.443-.665-1.443-1.486c0-.82.646-1.486 1.443-1.486s1.443.665 1.443 1.486"/><path d="M10.019 11.92c.345 0 .625.28.625.625v3.152a.625.625 0 1 1-1.25 0v-3.152c0-.345.28-.625.625-.625M6.242 3.76a3.759 3.759 0 1 1 7.516 0v2.36h-1V3.76a2.759 2.759 0 1 0-5.516 0v2.36h-1z"/></svg>

After

Width:  |  Height:  |  Size: 554 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-map-pin" viewBox="0 0 20 20"><path fill-rule="evenodd" d="m9.91 18.59 5.036-8.78c2.228-3.886-.525-8.777-4.942-8.777-4.385 0-7.147 4.822-4.992 8.713zM10.004 0C4.845 0 1.593 5.673 4.13 10.255l5.212 9.41a.64.64 0 0 0 1.12.009l5.358-9.342C18.445 5.755 15.202 0 10.004 0"/><path d="M13 6.796c0 1.76-1.399 3.187-3.124 3.187S6.752 8.556 6.752 6.796s1.399-3.187 3.124-3.187S13 5.036 13 6.796M9.876 8.949c1.166 0 2.11-.964 2.11-2.153s-.944-2.153-2.11-2.153-2.11.964-2.11 2.153.944 2.153 2.11 2.153"/></svg>

After

Width:  |  Height:  |  Size: 570 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-minus" viewBox="0 0 10 2"><path fill="currentColor" fill-rule="evenodd" d="M.5 1C.5.7.7.5 1 .5h8a.5.5 0 1 1 0 1H1A.5.5 0 0 1 .5 1" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 228 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-accordion icon-nut-free" viewBox="0 0 20 20"><path d="m8.38 11.586-5.865 3.92-.555-.831 5.865-3.92zm9.318-6.5-5.865 3.921-.556-.831 5.865-3.92z"/><path d="M6.134 9.341c.672.693 1.528 1.115 2.152 1.25a.5.5 0 0 1 .297.194c.12.163.222.3.313.42.153.203.271.36.38.527.185.28.357.6.675 1.243.529 1.067 1.519 1.364 1.902 1.461.623.133 1.131.2 1.543.199.415-.002.697-.073.894-.188.353-.207.628-.687.628-1.9a3.65 3.65 0 0 0-.824-2.287c-.49-.608-1.09-.974-1.56-1.065-1.137-.221-1.753-.919-1.937-1.346-.138-.31-.41-.778-.718-1.228-.311-.455-.618-.832-.818-1.002-.605-.468-1.034-.61-1.637-.713-1.127-.192-1.626-.023-1.873.201-.265.24-.405.684-.46 1.461-.083 1.165.381 2.09 1.043 2.773m-.718.696c-.82-.846-1.43-2.038-1.323-3.54.056-.787.204-1.602.785-2.13.599-.544 1.501-.653 2.714-.447.738.126 1.329.325 2.09.915l.014.012c.313.262.688.742 1.008 1.21.326.476.637 1.002.808 1.39l.003.006c.05.117.39.6 1.21.76.758.147 1.55.678 2.148 1.42a4.65 4.65 0 0 1 1.045 2.914c0 1.287-.28 2.27-1.123 2.763-.402.235-.879.323-1.395.325s-1.107-.082-1.765-.223l-.018-.004c-.438-.11-1.824-.5-2.562-1.99-.318-.64-.466-.912-.614-1.136a8 8 0 0 0-.317-.44l-.24-.32c-.782-.211-1.72-.713-2.468-1.485"/><path fill-rule="evenodd" d="M10 18.5a8.5 8.5 0 1 0 0-17 8.5 8.5 0 0 0 0 17m0 1a9.5 9.5 0 1 0 0-19 9.5 9.5 0 0 0 0 19"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

Some files were not shown because too many files have changed in this diff Show More