Анализ сайта tupperwarebrands.com
Основное Готовность: 40%
Домен
tupperwarebrands.com
Состояние доменного имени
?
Проверяем корректность доменного имени и наличие технических проблем на уровне домена.
Длина домена велика. Но если вы продвигаете запрос, входящий в название домена, то это хорошо.
Домен второго уровня идеален для продвижения.
Ответ сервера
200 Успешный ответ
HTTP-код ответа и цепочка редиректов
?
Код 200 — страница доступна. Коды 3xx — редиректы (цепочки замедляют загрузку и размывают ссылочный вес). Коды 4xx/5xx — ошибки, поисковик не сможет проиндексировать страницу.
Кол-во редиректов 5 слишком большое! Проверьте настройки сайта и веб-сервера!
Цепочка редиректов:
http://tupperwarebrands.com
301 MovedPermanently
https://tupperwarebrands.com/
301 MovedPermanently
https://www.tupperwarebrands.com/
302 Found
https://www.tupperware.com/discover
301 MovedPermanently
https://www.tupperware.com/pages/countries
200 OK
Безопасность
Сайт безопасен
Использование HTTPS и SSL-сертификат
?
HTTPS — обязательный стандарт. Google и Яндекс отдают предпочтение защищённым сайтам. Отсутствие SSL или просроченный сертификат ведут к предупреждениям в браузере и снижению позиций.
На сайте работает защищенный протокол ssl и сайт открывается по https.
Ssl-сертификат действителен до 21.10.2026 11:52:44.
Сервер поддерживает HTTP/3 (QUIC) — новейший протокол.
Включён HSTS (Strict-Transport-Security) — защита от подмены на http.
HTTP автоматически перенаправляется на HTTPS.
Поздравляем! Сайт не содержится в реестре РКН.
Кодировка
utf-8
Кодировка символов страницы
?
Стандарт — UTF-8. Неправильная кодировка вызывает нечитаемые символы и мешает поисковику корректно распознать текст страницы.
Указана кодировка на странице utf-8.
Язык
en
Атрибут lang в HTML-теге
?
Атрибут lang (<html lang="ru">) сообщает поисковикам и браузерам, на каком языке написана страница. Помогает при ранжировании в региональном поиске.
Язык документа указан явно: en.
Скорость загрузки
~1,84сек
Время отклика сервера (TTFB)
?
Time To First Byte — время до получения первого байта от сервера. Норма до 200 мс. Медленный отклик ухудшает пользовательский опыт и ранжирование: Яндекс и Google учитывают скорость страниц.
Скорость загрузки сайта 1,84сек превышает 1 секунду. Желательно улучшить работу сайта!
Объем документа
551Кб
Размер HTML-кода страницы
?
Слишком большой HTML замедляет парсинг браузером и сканирование поисковым роботом. Рекомендуется не более 200 Кб.
Объем html-документа 551Кб оптимален.
Структура html-документа корректна.
Ресурсы
Ресурсы: 70
Внешние ресурсы страницы (CSS, JS, изображения)
?
Количество и тип подключённых ресурсов влияют на скорость загрузки. Большое число запросов увеличивает время рендеринга страницы.
Кол-во файлов ресурсов 70 много для одной страницы. Приемлемо до 10. Проведите оптимизацию файлов ресурсов!
Показать полный список ресурсов
| Тип | Название | Значение |
|---|---|---|
| stylesheet | https://www.tupperware.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css | |
| stylesheet | text/css | //www.tupperware.com/cdn/shop/t/213/assets/base.css?v=104788008648834399541763477240 |
| stylesheet | //www.tupperware.com/cdn/shop/t/213/assets/component-cart-items.css?v=23553462517231901131763477250 | |
| stylesheet | text/css | //www.tupperware.com/cdn/shop/t/213/assets/component-cart-drawer.css?v=89536534808827210831763477249 |
| stylesheet | text/css | //www.tupperware.com/cdn/shop/t/213/assets/component-cart.css?v=15907799047677804871763477252 |
| stylesheet | text/css | //www.tupperware.com/cdn/shop/t/213/assets/component-totals.css?v=26832718004391329411763477276 |
| stylesheet | text/css | //www.tupperware.com/cdn/shop/t/213/assets/component-price.css?v=71933753376578022191763477267 |
| stylesheet | text/css | //www.tupperware.com/cdn/shop/t/213/assets/component-discounts.css?v=94077899873693697281763477255 |
| stylesheet | text/css | //www.tupperware.com/cdn/shop/t/213/assets/component-localization-form.css?v=59344745210926510101763477260 |
| stylesheet | //www.tupperware.com/cdn/shop/t/213/assets/component-predictive-search.css?v=49057799600756157751763477266 | |
| stylesheet | //www.tupperware.com/cdn/shop/t/213/assets/pws-bar-@css-bundle.min.css?v=35255299326765177831763477334 | |
| stylesheet | text/css | //www.tupperware.com/cdn/shop/t/213/assets/quantity-popover.css?v=130338046883527827341763477336 |
| stylesheet | text/css | //www.tupperware.com/cdn/shop/t/213/assets/component-card.css?v=29610169991606259511763477248 |
| stylesheet | //www.tupperware.com/cdn/shop/t/213/assets/component-list-menu.css?v=98316901528393819981763477257 | |
| stylesheet | //www.tupperware.com/cdn/shop/t/213/assets/component-search.css?v=178895000145030714851763477271 | |
| stylesheet | //www.tupperware.com/cdn/shop/t/213/assets/component-menu-drawer.css?v=76627934235487603621763477261 | |
| stylesheet | //www.tupperware.com/cdn/shop/t/213/assets/component-cart-notification.css?v=156666139344457550191763477251 | |
| stylesheet | //www.tupperware.com/cdn/shop/t/213/assets/component-price.css?v=71933753376578022191763477267 | |
| stylesheet | //www.tupperware.com/cdn/shop/t/213/assets/component-mega-menu.css?v=103746980272716636421763477260 | |
| stylesheet | text/css | //www.tupperware.com/cdn/shop/t/213/assets/section-main-page.css?v=25142436280826495911763477349 |
| stylesheet | text/css | //www.tupperware.com/cdn/shop/t/213/assets/section-footer.css?v=148104447017884208091763477346 |
| stylesheet | text/css | //www.tupperware.com/cdn/shop/t/213/assets/component-newsletter.css?v=45882923870581146381763477264 |
| stylesheet | text/css | //www.tupperware.com/cdn/shop/t/213/assets/component-list-menu.css?v=98316901528393819981763477257 |
| stylesheet | text/css | //www.tupperware.com/cdn/shop/t/213/assets/component-list-payment.css?v=129328959025884189331763477258 |
| stylesheet | text/css | //www.tupperware.com/cdn/shop/t/213/assets/component-list-social.css?v=158539147378100575711763477259 |
| stylesheet | https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/storefront-layout.css | |
| js | //www.tupperware.com/cdn/shop/t/213/assets/constants.js?v=132983761750457495441763477277 | |
| js | //www.tupperware.com/cdn/shop/t/213/assets/pubsub.js?v=158357773527763999511763477333 | |
| js | //www.tupperware.com/cdn/shop/t/213/assets/global.js?v=152862011079830610291763477287 | |
| js | //www.tupperware.com/cdn/shop/t/213/assets/details-disclosure.js?v=13653116266235556501763477279 | |
| js | //www.tupperware.com/cdn/shop/t/213/assets/details-modal.js?v=25581673532751508451763477280 | |
| js | //www.tupperware.com/cdn/shop/t/213/assets/search-form.js?v=133129549252120666541763477341 | |
| js | //www.tupperware.com/cdn/shop/t/213/assets/custom-modal.js?v=182295458952117816951763477278 | |
| js | /checkouts/internal/preloads.js?locale=en-US&default_configuration_id=2771714220 | |
| js | https://shop.app/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=2771714220&shop_id=55059120300 | |
| js | module | //www.tupperware.com/cdn/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js |
| js | //www.tupperware.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js | |
| js | //www.tupperware.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-bf1cdb70.js?v=20250812 | |
| js | //cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-5059b83f.js | |
| js | //www.tupperware.com/cdn/shop/t/213/compiled_assets/scripts.js?v=175555752406273352111763477386 | |
| js | //www.tupperware.com/cdn/shop/t/213/assets/localization-form.js?v=144176611646395275351763477324 | |
| js | //www.tupperware.com/cdn/shop/t/213/assets/pws-helpers.js?v=84803056633270628571763554979 | |
| js | //www.tupperware.com/cdn/shop/t/213/assets/pws-referal-code.js?v=12685777070418336821763554418 | |
| js | //www.tupperware.com/cdn/shop/t/213/assets/pws.js?v=72003994546569371001763554963 | |
| js | https://config.gorgias.chat/bundle-loader/shopify/tupperware-usa.myshopify.com | |
| js | https://content.9gtb.com/loader.js | |
| js | https://config.gorgias.help/api/contact-forms/replace-mailto-script.js?shopName=tupperware-usa | |
| js | https://static.klaviyo.com/onsite/js/RYZJ4x/klaviyo.js?company_id=RYZJ4x | |
| js | text/javascript | https://cdn.shopify.com/extensions/01a02478-8c65-7af3-848f-b2b80f2e8343/gdpr-backpack-848/assets/consentmo_cookie_consent.js |
| js | https://www.tupperware.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.8.4.min.js | |
| js | //www.tupperware.com/cdn/shop/t/213/assets/cart.js?v=53973376719736494311763477243 | |
| js | //www.tupperware.com/cdn/shop/t/213/assets/quantity-popover.js?v=987015268078116491763477337 | |
| js | //www.tupperware.com/cdn/shop/t/213/assets/cart-notification.js?v=133508293167896966491763477242 | |
| js | module | //www.tupperware.com/cdn/shopifycloud/shop-js/modules/v2/loader.shop-follow-button.en.esm.js |
| js | //www.tupperware.com/cdn/shop/t/213/assets/predictive-search.js?v=57209189334897115771763477331 | |
| js | //www.tupperware.com/cdn/shop/t/213/assets/cart-drawer.js?v=169981311261118214701763477242 | |
| js | module | https://cdn.shopify.com/extensions/e40caddd-7e77-4cf6-94ea-3380e27a0144/tupperware-production-14/assets/attribution-BiQyg9th.js |
| js | https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/swym-local-wishlist.js | |
| js | text/javascript | //cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/swym-consent-manager.js |
| js | https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/swym-ghost-wishlist-drawer.js | |
| js | https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/advanced-header-icon.js | |
| js | https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/advanced-collections-wishlist.js | |
| js | https://cdn.shopify.com/extensions/019ffa4e-a96d-79c0-ac47-de4debe86247/product-cart-limit-91/assets/quantity-limit-widget.js | |
| js | https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/swym-consent-manager.js | |
| js | https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/async-wishlist-apis.js | |
| js | https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/storefront-layout.js | |
| js | https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/storefront-layout-components.js | |
| js | https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/swym-education-tooltip.js | |
| js | https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/swym-education.js | |
| js | module | https://cdn.shopify.com/storefront/standard-actions.js |
Серверные заголовки
Кол-во: 26
HTTP-заголовки ответа сервера
?
Заголовки сервера передают браузеру и поисковику служебную информацию: кеширование, безопасность (CSP, HSTS), сжатие (gzip). Правильная настройка ускоряет загрузку и повышает защищённость.
Найдены серверные заголовки 26шт. Подробнее про серверные заголовки.
Показать полный список серверных заголовков
| Ключ | Значение |
|---|---|
| Date | Sat, 22 Aug 2026 06:13:40 GMT |
| x-download-options | noopen |
| Set-Cookie | localization=US; path=/; expires=Sun, 22 Aug 2027 06:13:40 GMT; SameSite=Lax |
| Link | <https://cdn.shopify.com>; rel="preconnect", <https://cdn.shopify.com>; rel="preconnect"; crossorigin, <//www.tupperware.com/cdn/shop/t/213/assets/base.css?v=104788008648834399541763477240>; as="style"; rel="preload", <//www.tupperware.com/cdn/shop/t/213/assets/component-cart-drawer.css?v=89536534808827210831763477249>; as="style"; rel="preload", <//www.tupperware.com/cdn/shop/t/213/assets/component-cart.css?v=15907799047677804871763477252>; as="style"; rel="preload", <//www.tupperware.com/cdn/shop/t/213/assets/component-totals.css?v=26832718004391329411763477276>; as="style"; rel="preload", <//www.tupperware.com/cdn/shop/t/213/assets/component-price.css?v=71933753376578022191763477267>; as="style"; rel="preload", <//www.tupperware.com/cdn/shop/t/213/assets/component-discounts.css?v=94077899873693697281763477255>; as="style"; rel="preload", <//www.tupperware.com/cdn/shop/t/213/assets/component-localization-form.css?v=59344745210926510101763477260>; as="style"; rel="preload", <//www.tupperware.com/cdn/shop/t/213/assets/pws-bar-@css-bundle.min.css?v=35255299326765177831763477334>; as="style"; rel="preload", <https://www.tupperware.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css>; as="style"; rel="preload"; crossorigin, <//www.tupperware.com/cdn/shop/files/Tupp_80th_Logo_GIF.gif?v=1768342820&width=600>; as="image"; rel="preload"; imagesrcset="//www.tupperware.com/cdn/shop/files/Tupp_80th_Logo_GIF.gif?v=1768342820&width=240 240w, //www.tupperware.com/cdn/shop/files/Tupp_80th_Logo_GIF.gif?v=1768342820&width=360 360w, //www.tupperware.com/cdn/shop/files/Tupp_80th_Logo_GIF.gif?v=1768342820&width=480 480w"; imagesizes="(max-width: 480px) 50vw, 240px" |
| speculation-rules | "/cdn/shopifycloud/storefront/assets/storefront/storefronts.moderate.specrules-eb468f32.json" |
| X-Request-ID | 4eb737f3-b137-4979-8ae5-242a9d74a3e6-1787379220 |
| x-permitted-cross-domain-policies | none |
| nel | {"report_to":"cf-nel","success_fraction":0.01,"max_age":604800} |
| shopify-complexity-score | 0 |
| shopify-complexity-score-v2 | 165 |
| X-Frame-Options | DENY |
| Content-Security-Policy | block-all-mixed-content; frame-ancestors 'none'; upgrade-insecure-requests; |
| Access-Control-Allow-Origin | * |
| Strict-Transport-Security | max-age=7889238 |
| Vary | accept-encoding |
| Alt-Svc | h3=":443" |
| powered-by | Shopify |
| Server-Timing | processing;dur=171;desc="gc:6", db;dur=38, render;dur=46, asn;desc="200044", edge;desc="HEL", country;desc="RU", theme;desc="147577143468", pageType;desc="page", servedBy;desc="rlwd", requestID;desc="4eb737f3-b137-4979-8ae5-242a9d74a3e6-1787379220", _y;desc="c524549a-6f1c-459a-8d79-c75cb08308c3", _s;desc="4f59d71b-0f7b-4e2f-b756-9b0e1abaeffb", _cmp;desc="3.AMPS_RU_f_f_7GZdKBBpRHSPNBCgk*0U7w", compressionLevel;desc="5", compressionTime;dur=12.27 |
| x-dc | gcp-europe-west4,gcp-europe-west1,gcp-europe-west1 |
| X-XSS-Protection | 1; mode=block |
| cf-cache-status | DYNAMIC |
| Server | cloudflare |
| report-to | {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=7%2BbPAvF%2BPMPVYmiQPUEfuMScTb9%2FtMbpfVKqM9mCBLDvx6%2Bks%2FIKL5rxGVUthXxPfZAI2dgJG52pJhKahPLUGebcbfWsZTQuG7Jan3z8yzdu7SAtUWiXxiaAO0RzCZzxvPsjsw%3D%3D"}]} |
| X-Content-Type-Options | nosniff |
| ETag | W/"page_cache:55059120300:PageDetailsController:4e5781530e862f2c0e225563ffe3143d:9eba4b12b6053b452bc15b8b633aa4a7" |
| cf-ray | a2efbb9eec8a5325-HEL |
CMS
Система управления сайтом (движок)
?
CMS — это движок, на котором работает сайт (WordPress, 1C-Bitrix, Tilda и др.). Знание CMS помогает понять возможности SEO-оптимизации и подобрать подходящие инструменты. «Не определена» — вероятно, самописный сайт или нестандартная сборка.
Сайт работает на CMS PrestaShop.
Веб-сервер
Программное обеспечение сервера
?
Веб-сервер — это ПО, которое отдаёт страницы посетителям (nginx, Apache, IIS, LiteSpeed и др.). Определяется по серверным заголовкам ответа (Server, X-Powered-By и т.п.). «Не определён» — сервер намеренно скрывает эти заголовки, это нормальная практика безопасности.
Сайт работает на веб-сервере Cloudflare.
Мета-теги Готовность: 68%
Title
Countries
– Tupperware Brand
Заголовок страницы в браузере и поисковой выдаче
?
Title — главный SEO-заголовок страницы. Влияет на CTR в поиске и ранжирование. Оптимальная длина: 50–70 символов. Ключевые слова — ближе к началу.
Дублей словоформ в title не найдено.
Число символов в title 42 оптимально (норма: от 40 до 45).
Description
Tupperware Brand operates in these countries. Visit the one nearest you. Country Website Austria https://tupperware-eu.com/de Belgium https://tupperware-eu.com China https://www.tupperware.com.cn Denmark https://www.tupperware-nordic.com Finland https://www.tupperware-nordic.com France https://tupperware-eu.com Germany
Описание страницы в поисковой выдаче (сниппет)
?
Meta Description — текст под заголовком в выдаче. Напрямую на позиции не влияет, но влияет на CTR. Оптимальная длина: 120–160 символов.
Необходимо уменьшить число символов в description (текущее значение: 320, оптимально: от 120 до 130)
Keywords
Список ключевых слов страницы (устаревший тег)
?
Meta Keywords не учитывается Яндексом и Google для ранжирования с 2009–2012 годов. Заполнение не обязательно, но не вредит. Конкурент может использовать содержимое для анализа.
Установите мета-тег keywords!
Канонический Url
https://www.tupperware.com/pages/countries
Указывает поисковику основную версию страницы
?
Canonical (rel=canonical) предотвращает проблему дублей страниц. Должен точно совпадать с URL проверяемой страницы. Неправильный canonical может передать ссылочный вес на другую страницу.
Канонический Url прописан корректно.
Robots
Ошибок нет
Директивы для поисковых роботов на уровне страницы
?
Meta Robots управляет индексацией конкретной страницы: index/noindex — индексировать ли, follow/nofollow — следовать ли по ссылкам. Noindex полностью исключает страницу из поиска.
Meta-тег robots не указан. Страница свободна для индексации.
Адаптивность
width=device-width,initial-scale=1
Настройка масштабирования на мобильных устройствах
?
Тег viewport (<meta name="viewport">) сообщает браузеру, как масштабировать страницу на мобильных. Стандарт: width=device-width, initial-scale=1. Отсутствие — признак отсутствия мобильной версии.
Meta-тег viewport со значением-константой width=device-width задаёт ширину страницы в соответствии с размером экрана.
Meta-тег viewport со значением initial-scale=1.0 определяет масштаб 1:1, т.е. «не масштабировать».
Разметка OpenGraph
Кол-во: 9
Мета-теги для красивых превью в соцсетях
?
OpenGraph (og:title, og:description, og:image) управляет тем, как страница выглядит при репосте в социальных сетях и мессенджерах. Отсутствие OG-тегов — невзрачный превью при шеринге.
Разметка OpenGraph задана. Страница оптимизирована под социальные сети.
Показать полный список og мета-тегов
| Тип | Значение |
|---|---|
| og:site_name | Tupperware Brand |
| og:url | https://www.tupperware.com/pages/countries |
| og:title | Countries |
| og:type | website |
| og:description | Tupperware Brand operates in these countries. Visit the one nearest you. Country Website Austria https://tupperware-eu.com/de Belgium https://tupperware-eu.com China https://www.tupperware.com.cn Denmark https://www.tupperware-nordic.com Finland https://www.tupperware-nordic.com France https://tupperware-eu.com Germany |
| og:image | http://www.tupperware.com/cdn/shop/files/Wordmark-Black-Tupperware-2310.png?v=1714403887 |
| og:image:secure_url | https://www.tupperware.com/cdn/shop/files/Wordmark-Black-Tupperware-2310.png?v=1714403887 |
| og:image:width | 1200 |
| og:image:height | 628 |
Все мета-теги
Кол-во: 22
Полный список мета-тегов страницы
?
Таблица всех meta-тегов, включая нестандартные. Позволяет найти опечатки, дубли и лишние теги.
Найдены мета-теги 22шт. Мета-теги не видимы для человека и предназначены для обмена информацией между веб-страницей и поисковыми системами, браузерами и другими веб-службами. С ними роботы 🤖 и устройства ведут себя более ожидаемо.
Показать полный список мета-тегов
| Тип | Название | Значение |
|---|---|---|
| name | viewport | width=device-width,initial-scale=1 |
| name | theme-color | |
| name | description | Tupperware Brand operates in these countries. Visit the one nearest you. Country Website Austria https://tupperware-eu.com/de Belgium https://tupperware-eu.com China https://www.tupperware.com.cn Denmark https://www.tupperware-nordic.com Finland https://www.tupperware-nordic.com France https://tupperware-eu.com Germany |
| name | twitter:card | summary_large_image |
| name | twitter:title | Countries |
| name | twitter:description | Tupperware Brand operates in these countries. Visit the one nearest you. Country Website Austria https://tupperware-eu.com/de Belgium https://tupperware-eu.com China https://www.tupperware.com.cn Denmark https://www.tupperware-nordic.com Finland https://www.tupperware-nordic.com France https://tupperware-eu.com Germany |
| name | google-site-verification | FwaQgsEsf7mHBDz06_EekoHue7oAoHPqG0IvJ2mhcm8 |
| name | facebook-domain-verification | b4dqht09tog0yk4qjcmx83yh0fcakc |
| name | shopify-digital-wallet | /55059120300/digital_wallets/dialog |
| name | shopify-checkout-api-token | 9445a7ca27b7390a00b121dffe3ce01a |
| name | shopify-y | c524549a-6f1c-459a-8d79-c75cb08308c3 |
| name | shopify-s | 4f59d71b-0f7b-4e2f-b756-9b0e1abaeffb |
| name | new-cookie-storage-activated | f |
| property | og:site_name | Tupperware Brand |
| property | og:url | https://www.tupperware.com/pages/countries |
| property | og:title | Countries |
| property | og:type | website |
| property | og:description | Tupperware Brand operates in these countries. Visit the one nearest you. Country Website Austria https://tupperware-eu.com/de Belgium https://tupperware-eu.com China https://www.tupperware.com.cn Denmark https://www.tupperware-nordic.com Finland https://www.tupperware-nordic.com France https://tupperware-eu.com Germany |
| property | og:image | http://www.tupperware.com/cdn/shop/files/Wordmark-Black-Tupperware-2310.png?v=1714403887 |
| property | og:image:secure_url | https://www.tupperware.com/cdn/shop/files/Wordmark-Black-Tupperware-2310.png?v=1714403887 |
| property | og:image:width | 1200 |
| property | og:image:height | 628 |
Оптимизация Готовность: 65%
Структура
Ошибок нет
Семантические HTML-элементы страницы
?
Проверяет наличие основных структурных элементов: nav, header, footer, main. Корректная семантическая структура помогает поисковику понять архитектуру страницы.
Структура документа корректна (теги <html> и <body> присутствуют в одном экземпляре).
Контент
Есть ошибки
Объём и качество текстового содержимого
?
Анализирует объём полезного текста на странице. Слишком мало — страница может считаться малополезной. Слишком много — ухудшается читаемость и восприятие.
Слова из title 2 встречаются в тексте редко. Добавьте в контент страницы слова из тега <title>!
Абзацев с текстом 8 слишком мало. Добавьте больше абзацев с текстом (тег <p>)!
Кол-во слов 590 не очень много. Добавьте побольше текста (хотя бы 800 слов)!
Среднее число слов в абзаце 17 достаточно.
Кол-во знаков контента 4412 на странице оптимально.
Заголовки
Ошибок нет
Иерархия заголовков H1–H6
?
H1 должен быть один и содержать ключевой запрос. H2–H6 описывают подразделы. Пропуск уровней (H1 → H3) и несколько H1 — типичные ошибки, снижающие понятность страницы для поисковика.
На странице присутствуют заголовки <h1> 1. Это прекрасно.
На странице присутствуют заголовки <h2> 12. Это хорошо.
На странице присутствуют заголовки <h3> 2.
Тошнота
3,32
Насколько одно слово доминирует в тексте
?
Классическая тошнота = √(частота самого повторяющегося слова). Норма до 7–8: текст воспринимается естественно. Выше — поисковик может счесть страницу переспамленной.
Тошнота превышает норму 3. Измените текст страницы!
Академич. тошнота
7,80%
Насколько текст перенасыщен ключевыми словами
?
Академическая тошнота = (частота слова / общее количество слов) × 100%. Показывает долю конкретного слова в тексте. Норма 5–15%.
Академическая тошнота страницы в пределах нормы.
Семантическое ядро
20
Наиболее часто встречающиеся слова на странице
?
Топ слов по частоте использования. Показывает, какие слова доминируют в тексте с точки зрения поисковика.
Контент страницы содержит осмысленный текст и слова.
Показать список слов
| Слово | Кол-во | Частота |
|---|---|---|
| tupperware | 11 | 1,86% |
| https://tupperware-eu | 8 | 1,36% |
| storage | 7 | 1,19% |
| baking | 7 | 1,19% |
| https://www | 7 | 1,19% |
| vintage | 6 | 1,02% |
| united | 6 | 1,02% |
| states | 6 | 1,02% |
| english | 6 | 1,02% |
| gadgets | 5 | 0,85% |
| cooking | 5 | 0,85% |
| entertaining | 5 | 0,85% |
| tupperware-nordic | 5 | 0,85% |
| microwave | 4 | 0,68% |
| serving | 4 | 0,68% |
| tumblers | 4 | 0,68% |
| kitchen | 3 | 0,51% |
| serveware | 3 | 0,51% |
| on-the-go | 3 | 0,51% |
| essentials | 3 | 0,51% |
Индексация Готовность: 0%
Индексирование
Ошибок нет
Разрешено ли индексирование страницы
?
Проверяет, не закрыта ли страница от индексации через robots.txt, meta robots или X-Robots-Tag. Страница, закрытая от индексации, не появится в поисковой выдаче.
Анкоров на странице 151 оптимально. Поисковые роботы обязательно проиндексируют сайт.
Robots.txt
Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Кол-во редиректов для файла robots.txt 5 слишком большое! Это может вызывать затруднение при индексации поисковыми роботами!
Проверяемая страница не запрещена в robots.txt.
Robots.txt доступен по постоянному адресу
Цепочка редиректов для файла robots.txt:
http://tupperwarebrands.com/robots.txt
301 MovedPermanently
https://tupperwarebrands.com/robots.txt
301 MovedPermanently
https://www.tupperwarebrands.com/robots.txt
302 Found
https://www.tupperware.com/discover
301 MovedPermanently
https://www.tupperware.com/pages/countries
200 OK
Показать содержимое robots.txt
<!doctype html>
<html class="js" lang="en">
<head>
<!-- Google Consent Mode V2 Consentmo -->
<script>
window.consentmo_gcm_initial_state = "";
window.consentmo_gcm_state = "";
window.consentmo_gcm_security_storage = "";
window.consentmo_gcm_ad_storage = "";
window.consentmo_gcm_analytics_storage = "";
window.consentmo_gcm_functionality_storage = "";
window.consentmo_gcm_personalization_storage = "";
window.consentmo_gcm_ads_data_redaction = "";
window.consentmo_gcm_url_passthrough = "";
window.consentmo_gcm_data_layer_name = "";
// Google Consent Mode V2 integration script from Consentmo GDPR
window.isenseRules = {};
window.isenseRules.gcm = {
gcmVersion: 2,
integrationVersion: 3,
customChanges: false,
consentUpdated: false,
initialState: 7,
isCustomizationEnabled: false,
adsDataRedaction: true,
urlPassthrough: false,
dataLayer: 'dataLayer',
categories: { ad_personalization: "marketing", ad_storage: "marketing", ad_user_data: "marketing", analytics_storage: "analytics", functionality_storage: "functionality", personalization_storage: "functionality", security_storage: "strict"},
storage: { ad_personalization: "false", ad_storage: "false", ad_user_data: "false", analytics_storage: "false", functionality_storage: "false", personalization_storage: "false", security_storage: "false", wait_for_update: 2000 }
};
if(window.consentmo_gcm_state !== null && window.consentmo_gcm_state !== "" && window.consentmo_gcm_state !== "0") {
window.isenseRules.gcm.isCustomizationEnabled = true;
window.isenseRules.gcm.initialState = window.consentmo_gcm_initial_state === null || window.consentmo_gcm_initial_state.trim() === "" ? window.isenseRules.gcm.initialState : window.consentmo_gcm_initial_state;
window.isenseRules.gcm.categories.ad_storage = window.consentmo_gcm_ad_storage === null || window.consentmo_gcm_ad_storage.trim() === "" ? window.isenseRules.gcm.categories.ad_storage : window.consentmo_gcm_ad_storage;
window.isenseRules.gcm.categories.ad_user_data = window.consentmo_gcm_ad_storage === null || window.consentmo_gcm_ad_storage.trim() === "" ? window.isenseRules.gcm.categories.ad_user_data : window.consentmo_gcm_ad_storage;
window.isenseRules.gcm.categories.ad_personalization = window.consentmo_gcm_ad_storage === null || window.consentmo_gcm_ad_storage.trim() === "" ? window.isenseRules.gcm.categories.ad_personalization : window.consentmo_gcm_ad_storage;
window.isenseRules.gcm.categories.analytics_storage = window.consentmo_gcm_analytics_storage === null || window.consentmo_gcm_analytics_storage.trim() === "" ? window.isenseRules.gcm.categories.analytics_storage : window.consentmo_gcm_analytics_storage;
window.isenseRules.gcm.categories.functionality_storage = window.consentmo_gcm_functionality_storage === null || window.consentmo_gcm_functionality_storage.trim() === "" ? window.isenseRules.gcm.categories.functionality_storage : window.consentmo_gcm_functionality_storage;
window.isenseRules.gcm.categories.personalization_storage = window.consentmo_gcm_personalization_storage === null || window.consentmo_gcm_personalization_storage.trim() === "" ? window.isenseRules.gcm.categories.personalization_storage : window.consentmo_gcm_personalization_storage;
window.isenseRules.gcm.categories.security_storage = window.consentmo_gcm_security_storage === null || window.consentmo_gcm_security_storage.trim() === "" ? window.isenseRules.gcm.categories.security_storage : window.consentmo_gcm_security_storage;
window.isenseRules.gcm.urlPassthrough = window.consentmo_gcm_url_passthrough === null || window.consentmo_gcm_url_passthrough.trim() === "" ? window.isenseRules.gcm.urlPassthrough : window.consentmo_gcm_url_passthrough;
window.isenseRules.gcm.adsDataRedaction = window.consentmo_gcm_ads_data_redaction === null || window.consentmo_gcm_ads_data_redaction.trim() === "" ? window.isenseRules.gcm.adsDataRedaction : window.consentmo_gcm_ads_data_redaction;
window.isenseRules.gcm.dataLayer = window.consentmo_gcm_data_layer_name === null || window.consentmo_gcm_data_layer_name.trim() === "" ? window.isenseRules.gcm.dataLayer : window.consentmo_gcm_data_layer_name;
}
window.isenseRules.initializeGcm = function (rules) {
if(window.isenseRules.gcm.isCustomizationEnabled) {
rules.initialState = window.isenseRules.gcm.initialState;
rules.urlPassthrough = window.isenseRules.gcm.urlPassthrough === true || window.isenseRules.gcm.urlPassthrough === 'true';
rules.adsDataRedaction = window.isenseRules.gcm.adsDataRedaction === true || window.isenseRules.gcm.adsDataRedaction === 'true';
}
let initialState = parseInt(rules.initialState);
let marketingBlocked = initialState === 0 || initialState === 2 || initialState === 5 || initialState === 7;
let analyticsBlocked = initialState === 0 || initialState === 3 || initialState === 6 || initialState === 7;
let functionalityBlocked = initialState === 4 || initialState === 5 || initialState === 6 || initialState === 7;
let gdprCache = localStorage.getItem('gdprCache') ? JSON.parse(localStorage.getItem('gdprCache')) : null;
if (gdprCache && typeof gdprCache.updatedPreferences !== "undefined") {
let updatedPreferences = gdprCache.updatedPreferences;
marketingBlocked = parseInt(updatedPreferences.indexOf('marketing')) > -1;
analyticsBlocked = parseInt(updatedPreferences.indexOf('analytics')) > -1;
functionalityBlocked = parseInt(updatedPreferences.indexOf('functionality')) > -1;
}
Object.entries(rules.categories).forEach(category => {
if(rules.storage.hasOwnProperty(category[0])) {
switch(category[1]) {
case 'strict':
rules.storage[category[0]] = "granted";
break;
case 'marketing':
rules.storage[category[0]] = marketingBlocked ? "denied" : "granted";
break;
case 'analytics':
rules.storage[category[0]] = analyticsBlocked ? "denied" : "granted";
break;
case 'functionality':
rules.storage[category[0]] = functionalityBlocked ? "denied" : "granted";
break;
}
}
});
rules.consentUpdated = true;
isenseRules.gcm = rules;
}
// Google Consent Mode - initialization start
window.isenseRules.initializeGcm({
...window.isenseRules.gcm,
adsDataRedaction: true,
urlPassthrough: false,
initialState: 7
});
/*
* initialState acceptable values:
* 0 - Set both ad_storage and analytics_storage to denied
* 1 - Set all categories to granted
* 2 - Set only ad_storage to denied
* 3 - Set only analytics_storage to denied
* 4 - Set only functionality_storage to denied
* 5 - Set both ad_storage and functionality_storage to denied
* 6 - Set both analytics_storage and functionality_storage to denied
* 7 - Set all categories to denied
*/
window[window.isenseRules.gcm.dataLayer] = window[window.isenseRules.gcm.dataLayer] || [];
function gtag() { window[window.isenseRules.gcm.dataLayer].push(arguments); }
gtag("consent", "default", isenseRules.gcm.storage);
isenseRules.gcm.adsDataRedaction && gtag("set", "ads_data_redaction", isenseRules.gcm.adsDataRedaction);
isenseRules.gcm.urlPassthrough && gtag("set", "url_passthrough", isenseRules.gcm.urlPassthrough);
</script>
<!-- End Google Consent Mode V2 Consentmo -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="theme-color" content="">
<link rel="canonical" href="https://www.tupperware.com/pages/countries"><link rel="icon" type="image/png" href="//www.tupperware.com/cdn/shop/files/BigT-Icon-Shape-1200x1200px-RGB-TupperwareBrand-55.png?crop=center&height=32&v=1762348472&width=32"><link rel="preconnect" href="https://fonts.shopifycdn.com" crossorigin><title>
Countries
– Tupperware Brand</title>
<meta name="description" content="Tupperware Brand operates in these countries. Visit the one nearest you. Country Website Austria https://tupperware-eu.com/de Belgium https://tupperware-eu.com China https://www.tupperware.com.cn Denmark https://www.tupperware-nordic.com Finland https://www.tupperware-nordic.com France https://tupperware-eu.com Germany">
<meta property="og:site_name" content="Tupperware Brand">
<meta property="og:url" content="https://www.tupperware.com/pages/countries">
<meta property="og:title" content="Countries">
<meta property="og:type" content="website">
<meta property="og:description" content="Tupperware Brand operates in these countries. Visit the one nearest you. Country Website Austria https://tupperware-eu.com/de Belgium https://tupperware-eu.com China https://www.tupperware.com.cn Denmark https://www.tupperware-nordic.com Finland https://www.tupperware-nordic.com France https://tupperware-eu.com Germany"><meta property="og:image" content="http://www.tupperware.com/cdn/shop/files/Wordmark-Black-Tupperware-2310.png?v=1714403887">
<meta property="og:image:secure_url" content="https://www.tupperware.com/cdn/shop/files/Wordmark-Black-Tupperware-2310.png?v=1714403887">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="628"><meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Countries">
<meta name="twitter:description" content="Tupperware Brand operates in these countries. Visit the one nearest you. Country Website Austria https://tupperware-eu.com/de Belgium https://tupperware-eu.com China https://www.tupperware.com.cn Denmark https://www.tupperware-nordic.com Finland https://www.tupperware-nordic.com France https://tupperware-eu.com Germany">
<script src="//www.tupperware.com/cdn/shop/t/213/assets/constants.js?v=132983761750457495441763477277" defer="defer"></script>
<script src="//www.tupperware.com/cdn/shop/t/213/assets/pubsub.js?v=158357773527763999511763477333" defer="defer"></script>
<script src="//www.tupperware.com/cdn/shop/t/213/assets/global.js?v=152862011079830610291763477287" defer="defer"></script>
<script src="//www.tupperware.com/cdn/shop/t/213/assets/details-disclosure.js?v=13653116266235556501763477279" defer="defer"></script>
<script src="//www.tupperware.com/cdn/shop/t/213/assets/details-modal.js?v=25581673532751508451763477280" defer="defer"></script>
<script src="//www.tupperware.com/cdn/shop/t/213/assets/search-form.js?v=133129549252120666541763477341" defer="defer"></script>
<script src="//www.tupperware.com/cdn/shop/t/213/assets/custom-modal.js?v=182295458952117816951763477278" defer="defer"></script>
<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script><meta name="google-site-verification" content="FwaQgsEsf7mHBDz06_EekoHue7oAoHPqG0IvJ2mhcm8">
<meta name="facebook-domain-verification" content="b4dqht09tog0yk4qjcmx83yh0fcakc">
<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/55059120300/digital_wallets/dialog">
<meta name="shopify-checkout-api-token" content="9445a7ca27b7390a00b121dffe3ce01a">
<link rel="alternate" hreflang="x-default" href="https://www.tupperware.com/pages/countries">
<link rel="alternate" hreflang="en" href="https://www.tupperware.com/pages/countries">
<link rel="alternate" hreflang="es" href="https://www.tupperware.com/es/pages/countries">
<link rel="alternate" hreflang="fr" href="https://www.tupperware.com/fr/pages/countries">
<script async="async" src="/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=2771714220"></script>
<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=2771714220&shop_id=55059120300" crossorigin="anonymous"></script>
<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":55059120300,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/55059120300","merchantName":"Tupperware Brand","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"Tupperware Brand","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
<script id="shopify-features" type="application/json">{"accessToken":"9445a7ca27b7390a00b121dffe3ce01a","betas":["rich-media-storefront-analytics"],"domain":"www.tupperware.com","predictiveSearch":true,"shopId":55059120300,"locale":"en"}</script>
<script>var Shopify = Shopify || {};
Shopify.shop = "tupperware-usa.myshopify.com";
Shopify.locale = "en";
Shopify.currency = {"active":"USD","rate":"1.0"};
Shopify.country = "US";
Shopify.theme = {"name":"Shopify Merge Testing","id":147577143468,"schema_name":"Dawn","schema_version":"15.2.0","theme_store_id":887,"role":"main"};
Shopify.theme.handle = "null";
Shopify.theme.style = {"id":null,"handle":null};
Shopify.cdnHost = "www.tupperware.com/cdn";
Shopify.routes = Shopify.routes || {};
Shopify.routes.root = "/";
Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
Shopify.SignInWithShop = Shopify.SignInWithShop || {};
Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
Shopify.SignInWithShop.User.recognized = false;</script>
<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
<script>
window.ShopifyPay = window.ShopifyPay || {};
window.ShopifyPay.apiHost = "shop.app\/pay";
window.ShopifyPay.redirectState = null;
</script>
<script>
window.Shopify = window.Shopify || {};
window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 };
window.Shopify.SignInWithShop.eligible = true;
</script>
<script id="shop-js-analytics" type="application/json">{"pageType":"page"}</script>
<script defer="defer" async type="module" src="//www.tupperware.com/cdn/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
<script type="module">
await import("//www.tupperware.com/cdn/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js");
window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});
</script>
<script>
window.Shopify = window.Shopify || {};
if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
window.Shopify.featureAssets['shop-js'] = {"listener":["modules/v2/loader.listener.en.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.en.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.en.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.en.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.en.esm.js"],"shop-button":["modules/v2/loader.shop-button.en.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.en.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.en.esm.js"],"avatar":["modules/v2/loader.avatar.en.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.en.esm.js"],"pay-button":["modules/v2/loader.pay-button.en.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.en.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.en.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.en.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.en.esm.js"],"shop-login":["modules/v2/loader.shop-login.en.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.en.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.en.esm.js"]};
</script>
<script>(function() {
var isLoaded = false;
function asyncLoad() {
if (isLoaded) return;
isLoaded = true;
var urls = ["https:\/\/d23dclunsivw3h.cloudfront.net\/redirect-app.js?shop=tupperware-usa.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=tupperware-usa.myshopify.com"];
for (var i = 0; i < urls.length; i++) {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = urls[i];
var x = document.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
}
};
if(window.attachEvent) {
window.attachEvent('onload', asyncLoad);
} else {
window.addEventListener('load', asyncLoad, false);
}
})();</script>
<script id="__st">var __st={"a":55059120300,"offset":-14400,"reqid":"1f0bbf01-650d-4a0a-968b-81b561668546-1787379220","pageurl":"www.tupperware.com\/pages\/countries","s":"pages-118863495340","u":"fe587aaf4a85","p":"page","rtyp":"page","rid":118863495340};</script>
<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.2.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();</script>
<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//www.tupperware.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion < 126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion < 150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion < 27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//www.tupperware.com/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script><script crossorigin="anonymous" defer="defer" src="//www.tupperware.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-bf1cdb70.js?v=20250812"></script>
<script id="shopify-origin-trials" async="async" integrity="sha256-mqQjA+yhr1DtPsW5MhDIq3zDu+LghfjNT49r/ttG3eY=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-5059b83f.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
<script>
window.Shopify = window.Shopify || {};
window.Shopify.MCP = window.Shopify.MCP || {};
window.Shopify.MCP.enabled = true;
window.Shopify.MCP.shop = "tupperware-usa.myshopify.com";
window.Shopify.MCP.mcpEndpoint = "https:\/\/www.tupperware.com\/api\/mcp";
window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n - What is your return policy?\n - What is your shipping policy?\n - What is your phone number?\n - What are your hours of operation?\"\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."}},"required":["query"]}}];
</script>
<script>(()=>{var d="shopify:webmcp_adapter_loaded",n=Symbol.for("shopify.webmcp_adapter_loading");function s(c,a,{win:r=window,doc:o=document}={}){function p(){try{return r.localStorage.getItem(d)==="true"}catch{return!1}}function l(){try{r.localStorage.setItem(d,"true")}catch{}}function u(){return typeof(o.modelContext||r.navigator?.modelContext)?.registerTool=="function"}function f(){if(r[n]||!u())return;let t=o.head||o.getElementsByTagName("head")[0];if(!t)return;let e=o.createElement("script");e.type="module",e.crossOrigin="anonymous",a&&(e.integrity=a),e.src=c,e.addEventListener("load",l,{once:!0}),e.addEventListener("error",()=>{r[n]=!1},{once:!0}),t.appendChild(e),r[n]=!0}function _(t){let e=o.getElementById("shopify-origin-trials");if(!e||r.__shopifyOriginTrialsDone){t();return}e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0})}function i(){_(()=>r.setTimeout(f,0))}function m(){o.addEventListener("DOMContentLoaded",i,{once:!0})}p()?i():m()}s("https:\/\/cdn.shopify.com\/storefront\/webmcp\/webmcp-0.1.1.js","");})();
</script>
<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://www.tupperware.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
</script>
<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent);
</script>
<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}}));
</script>
<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://www.tupperware.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous">
<style id="shopify-accelerated-checkout-cart">
#shopify-buyer-consent {
margin-top: 1em;
display: inline-block;
width: 100%;
}
#shopify-buyer-consent.hidden {
display: none;
}
#shopify-subscription-policy-button {
background: none;
border: none;
padding: 0;
text-decoration: underline;
font-size: inherit;
cursor: pointer;
}
#shopify-subscription-policy-button::before {
box-shadow: none;
}
</style>
<script id="sections-script" data-sections="header" defer="defer" src="//www.tupperware.com/cdn/shop/t/213/compiled_assets/scripts.js?v=175555752406273352111763477386"></script>
<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
<style data-shopify>
@font-face {
font-family: Assistant;
font-weight: 400;
font-style: normal;
font-display: swap;
src: url("//www.tupperware.com/cdn/fonts/assistant/assistant_n4.9120912a469cad1cc292572851508ca49d12e768.woff2") format("woff2"),
url("//www.tupperware.com/cdn/fonts/assistant/assistant_n4.6e9875ce64e0fefcd3f4446b7ec9036b3ddd2985.woff") format("woff");
}
@font-face {
font-family: Assistant;
font-weight: 700;
font-style: normal;
font-display: swap;
src: url("//www.tupperware.com/cdn/fonts/assistant/assistant_n7.bf44452348ec8b8efa3aa3068825305886b1c83c.woff2") format("woff2"),
url("//www.tupperware.com/cdn/fonts/assistant/assistant_n7.0c887fee83f6b3bda822f1150b912c72da0f7b64.woff") format("woff");
}
@font-face {
font-family: Assistant;
font-weight: 400;
font-style: normal;
font-display: swap;
src: url("//www.tupperware.com/cdn/fonts/assistant/assistant_n4.9120912a469cad1cc292572851508ca49d12e768.woff2") format("woff2"),
url("//www.tupperware.com/cdn/fonts/assistant/assistant_n4.6e9875ce64e0fefcd3f4446b7ec9036b3ddd2985.woff") format("woff");
}
:root,
.color-scheme-1 {
--color-background: 255,255,255;
--gradient-background: #ffffff;
--color-foreground: 43,39,39;
--color-background-contrast: 191,191,191;
--color-shadow: 18,18,18;
--color-button: 18,18,18;
--color-button-text: 255,255,255;
--color-secondary-button: 255,255,255;
--color-secondary-button-text: 18,18,18;
--color-link: 18,18,18;
--color-badge-foreground: 43,39,39;
--color-badge-background: 255,255,255;
--color-badge-border: 43,39,39;
--payment-terms-background-color: rgb(255 255 255);
}
.color-scheme-2 {
--color-background: 0,0,0;
--gradient-background: #000000;
--color-foreground: 255,255,255;
--color-background-contrast: 128,128,128;
--color-shadow: 18,18,18;
--color-button: 18,18,18;
--color-button-text: 255,255,255;
--color-secondary-button: 0,0,0;
--color-secondary-button-text: 18,18,18;
--color-link: 18,18,18;
--color-badge-foreground: 255,255,255;
--color-badge-background: 0,0,0;
--color-badge-border: 255,255,255;
--payment-terms-background-color: rgb(0 0 0);
}
.color-scheme-3 {
--color-background: 36,40,51;
--gradient-background: #242833;
--color-foreground: 255,255,255;
--color-background-contrast: 47,52,66;
--color-shadow: 18,18,18;
--color-button: 0,82,79;
--color-button-text: 255,255,255;
--color-secondary-button: 36,40,51;
--color-secondary-button-text: 0,82,79;
--color-link: 0,82,79;
--color-badge-foreground: 255,255,255;
--color-badge-background: 36,40,51;
--color-badge-border: 255,255,255;
--payment-terms-background-color: rgb(36 40 51);
}
.color-scheme-4 {
--color-background: 18,18,18;
--gradient-background: #121212;
--color-foreground: 255,255,255;
--color-background-contrast: 146,146,146;
--color-shadow: 18,18,18;
--color-button: 255,255,255;
--color-button-text: 18,18,18;
--color-secondary-button: 18,18,18;
--color-secondary-button-text: 255,255,255;
--color-link: 255,255,255;
--color-badge-foreground: 255,255,255;
--color-badge-background: 18,18,18;
--color-badge-border: 255,255,255;
--payment-terms-background-color: rgb(18 18 18);
}
.color-scheme-5 {
--color-background: 255,117,0;
--gradient-background: #ff7500;
--color-foreground: 255,255,255;
--color-background-contrast: 128,58,0;
--color-shadow: 18,18,18;
--color-button: 255,255,255;
--color-button-text: 51,79,180;
--color-secondary-button: 255,117,0;
--color-secondary-button-text: 255,255,255;
--color-link: 255,255,255;
--color-badge-foreground: 255,255,255;
--color-badge-background: 255,117,0;
--color-badge-border: 255,255,255;
--payment-terms-background-color: rgb(255 117 0);
}
.color-scheme-b5b7e9ec-03c5-45c4-b98f-95032e84b686 {
--color-background: 1,71,33;
--gradient-background: #014721;
--color-foreground: 255,255,255;
--color-background-contrast: 1,96,45;
--color-shadow: 18,18,18;
--color-button: 18,18,18;
--color-button-text: 255,255,255;
--color-secondary-button: 1,71,33;
--color-secondary-button-text: 18,18,18;
--color-link: 18,18,18;
--color-badge-foreground: 255,255,255;
--color-badge-background: 1,71,33;
--color-badge-border: 255,255,255;
--payment-terms-background-color: rgb(1 71 33);
}
.color-scheme-251820e2-c992-44bc-8f87-d438456f95c4 {
--color-background: 110,19,32;
--gradient-background: #6e1320;
--color-foreground: 255,255,255;
--color-background-contrast: 132,23,38;
--color-shadow: 18,18,18;
--color-button: 18,18,18;
--color-button-text: 255,255,255;
--color-secondary-button: 110,19,32;
--color-secondary-button-text: 18,18,18;
--color-link: 18,18,18;
--color-badge-foreground: 255,255,255;
--color-badge-background: 110,19,32;
--color-badge-border: 255,255,255;
--payment-terms-background-color: rgb(110 19 32);
}
body, .color-scheme-1, .color-scheme-2, .color-scheme-3, .color-scheme-4, .color-scheme-5, .color-scheme-b5b7e9ec-03c5-45c4-b98f-95032e84b686, .color-scheme-251820e2-c992-44bc-8f87-d438456f95c4 {
color: rgba(var(--color-foreground), 0.75);
background-color: rgb(var(--color-background));
}
:root {
--font-body-family: Assistant, sans-serif;
--font-body-style: normal;
--font-body-weight: 400;
--font-body-weight-bold: 700;
--font-heading-family: Assistant, sans-serif;
--font-heading-style: normal;
--font-heading-weight: 400;
--font-body-scale: 1.0;
--font-heading-scale: 1.0;
--media-padding: px;
--media-border-opacity: 0.05;
--media-border-width: 1px;
--media-radius: 8px;
--media-shadow-opacity: 0.0;
--media-shadow-horizontal-offset: 0px;
--media-shadow-vertical-offset: 4px;
--media-shadow-blur-radius: 5px;
--media-shadow-visible: 0;
--page-width: 120rem;
--page-width-margin: 0rem;
--product-card-image-padding: 0.0rem;
--product-card-corner-radius: 0.6rem;
--product-card-text-alignment: left;
--product-card-border-width: 0.2rem;
--product-card-border-opacity: 0.1;
--product-card-shadow-opacity: 0.0;
--product-card-shadow-visible: 0;
--product-card-shadow-horizontal-offset: 0.0rem;
--product-card-shadow-vertical-offset: 0.4rem;
--product-card-shadow-blur-radius: 0.5rem;
--collection-card-image-padding: 0.0rem;
--collection-card-corner-radius: 0.0rem;
--collection-card-text-alignment: left;
--collection-card-border-width: 0.0rem;
--collection-card-border-opacity: 0.1;
--collection-card-shadow-opacity: 0.0;
--collection-card-shadow-visible: 0;
--collection-card-shadow-horizontal-offset: 0.0rem;
--collection-card-shadow-vertical-offset: 0.4rem;
--collection-card-shadow-blur-radius: 0.5rem;
--blog-card-image-padding: 0.0rem;
--blog-card-corner-radius: 0.8rem;
--blog-card-text-alignment: left;
--blog-card-border-width: 0.0rem;
--blog-card-border-opacity: 0.1;
--blog-card-shadow-opacity: 0.0;
--blog-card-shadow-visible: 0;
--blog-card-shadow-horizontal-offset: 0.0rem;
--blog-card-shadow-vertical-offset: 0.4rem;
--blog-card-shadow-blur-radius: 0.5rem;
--badge-corner-radius: 4.0rem;
--popup-border-width: 1px;
--popup-border-opacity: 0.1;
--popup-corner-radius: 8px;
--popup-shadow-opacity: 0.05;
--popup-shadow-horizontal-offset: 0px;
--popup-shadow-vertical-offset: 4px;
--popup-shadow-blur-radius: 5px;
--drawer-border-width: 1px;
--drawer-border-opacity: 0.1;
--drawer-shadow-opacity: 0.0;
--drawer-shadow-horizontal-offset: 0px;
--drawer-shadow-vertical-offset: 4px;
--drawer-shadow-blur-radius: 5px;
--spacing-sections-desktop: 0px;
--spacing-sections-mobile: 0px;
--grid-desktop-vertical-spacing: 8px;
--grid-desktop-horizontal-spacing: 12px;
--grid-mobile-vertical-spacing: 4px;
--grid-mobile-horizontal-spacing: 6px;
--text-boxes-border-opacity: 0.1;
--text-boxes-border-width: 0px;
--text-boxes-radius: 8px;
--text-boxes-shadow-opacity: 0.0;
--text-boxes-shadow-visible: 0;
--text-boxes-shadow-horizontal-offset: 0px;
--text-boxes-shadow-vertical-offset: 4px;
--text-boxes-shadow-blur-radius: 5px;
--buttons-radius: 22px;
--buttons-radius-outset: 23px;
--buttons-border-width: 1px;
--buttons-border-opacity: 1.0;
--buttons-shadow-opacity: 0.0;
--buttons-shadow-visible: 0;
--buttons-shadow-horizontal-offset: 0px;
--buttons-shadow-vertical-offset: 4px;
--buttons-shadow-blur-radius: 5px;
--buttons-border-offset: 0.3px;
--inputs-radius: 22px;
--inputs-border-width: 1px;
--inputs-border-opacity: 0.55;
--inputs-shadow-opacity: 0.0;
--inputs-shadow-horizontal-offset: 0px;
--inputs-margin-offset: 0px;
--inputs-shadow-vertical-offset: 4px;
--inputs-shadow-blur-radius: 5px;
--inputs-radius-outset: 23px;
--variant-pills-radius: 40px;
--variant-pills-border-width: 1px;
--variant-pills-border-opacity: 0.55;
--variant-pills-shadow-opacity: 0.0;
--variant-pills-shadow-horizontal-offset: 0px;
--variant-pills-shadow-vertical-offset: 4px;
--variant-pills-shadow-blur-radius: 5px;
}
*,
*::before,
*::after {
box-sizing: inherit;
}
html {
box-sizing: border-box;
font-size: calc(var(--font-body-scale) * 62.5%);
height: 100%;
}
body {
display: grid;
grid-template-rows: auto auto 1fr auto;
grid-template-columns: 100%;
min-height: 100%;
margin: 0;
font-size: 1.5rem;
letter-spacing: 0.06rem;
line-height: calc(1 + 0.8 / var(--font-body-scale));
font-family: var(--font-body-family);
font-style: var(--font-body-style);
font-weight: var(--font-body-weight);
}
@media screen and (min-width: 750px) {
body {
font-size: 1.6rem;
}
}
</style>
<link href="//www.tupperware.com/cdn/shop/t/213/assets/base.css?v=104788008648834399541763477240" rel="stylesheet" type="text/css" media="all" />
<link rel="stylesheet" href="//www.tupperware.com/cdn/shop/t/213/assets/component-cart-items.css?v=23553462517231901131763477250" media="print" onload="this.media='all'"><link href="//www.tupperware.com/cdn/shop/t/213/assets/component-cart-drawer.css?v=89536534808827210831763477249" rel="stylesheet" type="text/css" media="all" />
<link href="//www.tupperware.com/cdn/shop/t/213/assets/component-cart.css?v=15907799047677804871763477252" rel="stylesheet" type="text/css" media="all" />
<link href="//www.tupperware.com/cdn/shop/t/213/assets/component-totals.css?v=26832718004391329411763477276" rel="stylesheet" type="text/css" media="all" />
<link href="//www.tupperware.com/cdn/shop/t/213/assets/component-price.css?v=71933753376578022191763477267" rel="stylesheet" type="text/css" media="all" />
<link href="//www.tupperware.com/cdn/shop/t/213/assets/component-discounts.css?v=94077899873693697281763477255" rel="stylesheet" type="text/css" media="all" />
<link rel="preload" as="font" href="//www.tupperware.com/cdn/fonts/assistant/assistant_n4.9120912a469cad1cc292572851508ca49d12e768.woff2" type="font/woff2" crossorigin>
<link rel="preload" as="font" href="//www.tupperware.com/cdn/fonts/assistant/assistant_n4.9120912a469cad1cc292572851508ca49d12e768.woff2" type="font/woff2" crossorigin>
<link href="//www.tupperware.com/cdn/shop/t/213/assets/component-localization-form.css?v=59344745210926510101763477260" rel="stylesheet" type="text/css" media="all" />
<script src="//www.tupperware.com/cdn/shop/t/213/assets/localization-form.js?v=144176611646395275351763477324" defer="defer"></script><link
rel="stylesheet"
href="//www.tupperware.com/cdn/shop/t/213/assets/component-predictive-search.css?v=49057799600756157751763477266"
media="print"
onload="this.media='all'"
><link rel="stylesheet" href="//www.tupperware.com/cdn/shop/t/213/assets/pws-bar-@css-bundle.min.css?v=35255299326765177831763477334">
<script src="//www.tupperware.com/cdn/shop/t/213/assets/pws-helpers.js?v=84803056633270628571763554979" async></script>
<script src="//www.tupperware.com/cdn/shop/t/213/assets/pws-referal-code.js?v=12685777070418336821763554418" async></script>
<script src="//www.tupperware.com/cdn/shop/t/213/assets/pws.js?v=72003994546569371001763554963" async></script>
<script>
if (Shopify.designMode) {
document.documentElement.classList.add('shopify-design-mode');
}
</script>
<!-- BEGIN app block: shopify://apps/consentmo-gdpr/blocks/gdpr_cookie_consent/4fbe573f-a377-4fea-9801-3ee0858cae41 -->
<link rel="preconnect" href="https://app.consentmo.com" crossorigin data-csm-preconnect="app">
<link rel="dns-prefetch" href="https://workers.consentmo.com" data-csm-preconnect="workers">
<link rel="dns-prefetch" href="https://storage.consentmo.com" data-csm-preconnect="storage">
<link rel="preconnect" href="https://cdn.consentmo.com" crossorigin data-csm-preconnect="cdn"><link rel="prefetch" href="https://cdn.shopify.com/extensions/01a02478-8c65-7af3-848f-b2b80f2e8343/gdpr-backpack-848/assets/layout-cookie-bar.consentmo.js" crossorigin data-csm-layout-prefetch="banner">
<link rel="prefetch" href="https://cdn.shopify.com/extensions/01a02478-8c65-7af3-848f-b2b80f2e8343/gdpr-backpack-848/assets/layout-cookie-dialog.consentmo.js" crossorigin data-csm-layout-prefetch="dialog">
<link rel="prefetch" href="https://cdn.shopify.com/extensions/01a02478-8c65-7af3-848f-b2b80f2e8343/gdpr-backpack-848/assets/layout-cookie-box.consentmo.js" crossorigin data-csm-layout-prefetch="box">
<link rel="prefetch" href="https://cdn.shopify.com/extensions/01a02478-8c65-7af3-848f-b2b80f2e8343/gdpr-backpack-848/assets/layout-cookie-smart-banner.consentmo.js" crossorigin data-csm-layout-prefetch="smart">
<link rel="prefetch" href="https://cdn.shopify.com/extensions/01a02478-8c65-7af3-848f-b2b80f2e8343/gdpr-backpack-848/assets/layout-mobile-cookie-bar.consentmo.js" crossorigin data-csm-layout-prefetch="mobile"><script data-consentmo-data-src-bootstrap>
(function () {
'use strict';
if (window.__consentmoDataSrcBootstrapInit) return;
window.__consentmoDataSrcBootstrapInit = true;
var DATA_SRC_SELECTOR = [
'script[data-src*="consentmo_cookie_consent"]',
'script[data-src*="gdpr_cookie_consent.min"]',
'script[data-src*="gdrp_cookie_consent_unlimited"]'
].join(',');
function activateConsentmoDataSrcScripts() {
if (!window.Shopify || !window.Shopify.shop) return;
document.querySelectorAll(DATA_SRC_SELECTOR).forEach(function (scriptEl) {
// getAttribute: src="" must not count as "already has src" (.src === page URL).
if (scriptEl.getAttribute('src')) return;
var url = scriptEl.getAttribute('data-src');
if (!url) return;
if (scriptEl.getAttribute('type') === 'text/plain') {
scriptEl.removeAttribute('type');
}
scriptEl.src = url;
});
}
function scheduleActivation() {
activateConsentmoDataSrcScripts();
// Retry on next task so other DCL handlers (lazy-loaders) can finish setting Shopify.shop / data-src first.
setTimeout(activateConsentmoDataSrcScripts, 0);
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', scheduleActivation, { once: true });
} else {
scheduleActivation();
}
})();
</script>
<!-- END app block --><!-- BEGIN app block: shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507 -->
<script async src="https://static.klaviyo.com/onsite/js/RYZJ4x/klaviyo.js?company_id=RYZJ4x"></script>
<script>!function(){if(!window.klaviyo){window._klOnsite=window._klOnsite||[];try{window.klaviyo=new Proxy({},{get:function(n,i){return"push"===i?function(){var n;(n=window._klOnsite).push.apply(n,arguments)}:function(){for(var n=arguments.length,o=new Array(n),w=0;w<n;w++)o[w]=arguments[w];var t="function"==typeof o[o.length-1]?o.pop():void 0,e=new Promise((function(n){window._klOnsite.push([i].concat(o,[function(i){t&&t(i),n(i)}]))}));return e}}})}catch(n){window.klaviyo=window.klaviyo||[],window.klaviyo.push=function(){var n;(n=window._klOnsite).push.apply(n,arguments)}}}}();</script>
<script>
window.klaviyoReviewsProductDesignMode = false
</script>
<!-- BEGIN app snippet: customer-hub-data --><script>
if (!window.customerHub) {
window.customerHub = {};
}
window.customerHub.storefrontRoutes = {
login: "https://www.tupperware.com/customer_authentication/redirect?locale=en®ion_country=US?return_url=%2F%23k-hub",
register: "https://account.tupperware.com?locale=en&buyer_flags=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ0dXBwZXJ3YXJlLXVzYS5teXNob3BpZnkuY29tIiwiZmxhZ3MiOltdLCJleHAiOjE3ODc5ODQwMjAsIm5iZiI6MTc4NzM3OTIyMH0.QTvM0si7DzL8TgIi9EkQzsdv0svcLoI4QJPyAqnFJPQ?return_url=%2F%23k-hub",
logout: "/account/logout",
profile: "/account",
addresses: "/account/addresses",
};
window.customerHub.userId = null;
window.customerHub.storeDomain = "tupperware-usa.myshopify.com";
window.customerHub.storeLocale = {
currentLanguage: 'en',
currentCountry: 'US',
availableLanguages: [
{
iso_code: 'en',
endonym_name: 'English'
},
{
iso_code: 'es',
endonym_name: 'Español'
},
{
iso_code: 'fr',
endonym_name: 'français'
}
],
availableCountries: [
{
iso_code: 'CA',
name: 'Canada',
currency_code: 'CAD'
},
{
iso_code: 'US',
name: 'United States',
currency_code: 'USD'
}
]
};
</script>
<!-- END app snippet -->
<!-- BEGIN app snippet: customer-hub-replace-links -->
<script>
function replaceAccountLinks() {
const selector =
'a[href$="/account/login"], a[href$="/account"], a[href^="https://shopify.com/"][href*="/account"], a[href*="/customer_identity/redirect"], a[href*="/customer_authentication/redirect"], a[href$="/account';
const accountLinksNodes = document.querySelectorAll(selector);
for (const node of accountLinksNodes) {
const ignore = node.dataset.kHubIgnore !== undefined && node.dataset.kHubIgnore !== 'false';
if (!ignore) {
// Any login links to Shopify's account system, point them at the customer hub instead.
node.href = '#k-hub';
/**
* There are some themes which apply a page transition on every click of an anchor tag (usually a fade-out) that's supposed to be faded back in when the next page loads.
* However, since clicking the k-hub link doesn't trigger a page load, the page gets stuck on a blank screen.
* Luckily, these themes usually have a className you can add to links to skip the transition.
* Let's hope that all such themes are consistent/copy each other and just proactively add those classNames when we replace the link.
**/
node.classList.add('no-transition', 'js-no-transition');
}
}
}
if (document.readyState === 'complete') {
replaceAccountLinks();
} else {
const controller = new AbortController();
document.addEventListener(
'readystatechange',
() => {
replaceAccountLinks(); // try to replace links both during `interactive` state and `complete` state
if (document.readyState === 'complete') {
// readystatechange can fire with "complete" multiple times per page load, so make sure we're not duplicating effort
// by removing the listener afterwards.
controller.abort();
}
},
{ signal: controller.signal },
);
}
</script>
<!-- END app snippet -->
<!-- END app block --><!-- BEGIN app block: shopify://apps/gorgias-live-chat-helpdesk/blocks/gorgias/a66db725-7b96-4e3f-916e-6c8e6f87aaaa -->
<script defer data-gorgias-loader-chat src="https://config.gorgias.chat/bundle-loader/shopify/tupperware-usa.myshopify.com"></script>
<script defer data-gorgias-loader-convert src="https://content.9gtb.com/loader.js"></script>
<script defer data-gorgias-loader-mailto-replace src="https://config.gorgias.help/api/contact-forms/replace-mailto-script.js?shopName=tupperware-usa"></script>
<!-- END app block --><!-- BEGIN app block: shopify://apps/boost-ai-search-filter/blocks/boost-sd-ssr/7fc998ae-a150-4367-bab8-505d8a4503f7 --><script type="text/javascript">"use strict";(()=>{function mergeDeepMutate(target,...sources){if(!target)return target;if(sources.length===0)return target;const isObject=obj=>!!obj&&typeof obj==="object";const isPlainObject=obj=>{if(!isObject(obj))return false;const proto=Object.getPrototypeOf(obj);return proto===Object.prototype||proto===null};for(const source of sources){if(!source)continue;for(const key in source){const sourceValue=source[key];if(!(key in target)){target[key]=sourceValue;continue}const targetValue=target[key];if(Array.isArray(targetValue)&&Array.isArray(sourceValue)){target[key]=targetValue.concat(...sourceValue)}else if(isPlainObject(targetValue)&&isPlainObject(sourceValue)){target[key]=mergeDeepMutate(targetValue,sourceValue)}else{target[key]=sourceValue}}}return target}var Application=class{constructor(config,dataObjects){this.modules=[];this.cachedModulesByConstructor=new Map;this.status="created";this.cachedEventListeners={};this.registryBlockListeners=[];this.readyListeners=[];this.mode="production";this.logLevel=1;this.blocks={};const boostWidgetIntegration=window.boostWidgetIntegration;this.config=config||{logLevel:boostWidgetIntegration?.config?.logLevel,env:"production"};this.logLevel=this.config.logLevel??(this.mode==="production"?2:this.logLevel);if(this.config.logLevel==null){this.config.logLevel=this.logLevel}this.dataObjects=dataObjects||{};this.logger={debug:(...args)=>{if(this.logLevel<=0){console.debug("Boost > [DEBUG] ",...args)}},info:(...args)=>{if(this.logLevel<=1){console.info("Boost > [INFO] ",...args)}},warn:(...args)=>{if(this.logLevel<=2){console.warn("Boost > [WARN] ",...args)}},error:(...args)=>{if(this.logLevel<=3){console.error("Boost > [ERROR] ",...args)}}}}bootstrap(){if(this.status==="bootstrapped"){this.logger.warn("Application already bootstrapped");return}if(this.status==="started"){this.logger.warn("Application already started");return}this.loadModuleEventListeners();this.dispatchLifecycleEvent({name:"onBeforeAppBootstrap",payload:null});if(this.config?.customization?.app?.onBootstrap){this.config.customization.app.onBootstrap(this)}this.extendAppConfigFromModules();this.extendAppConfigFromGlobalVariables();this.initializeDataObjects();this.assignGlobalVariables();this.status="bootstrapped";this.dispatchLifecycleEvent({name:"onAppBootstrap",payload:null})}async initModules(){await Promise.all(this.modules.map(async module=>{if(!module.shouldInit()){this.logger.info("Module not initialized",module.constructor.name,"shouldInit returned false");return}module.onBeforeModuleInit?.();this.dispatchLifecycleEvent({name:"onBeforeModuleInit",payload:{module}});this.logger.info(`Initializing ${module.constructor.name} module`);try{await module.init();this.dispatchLifecycleEvent({name:"onModuleInit",payload:{module}})}catch(error){this.logger.error(`Error initializing module ${module.constructor.name}:`,error);this.dispatchLifecycleEvent({name:"onModuleError",payload:{module,error:error instanceof Error?error:new Error(String(error))}})}}))}getModule(constructor){const module=this.cachedModulesByConstructor.get(constructor);if(module&&!module.shouldInit()){return void 0}return module}getModuleByName(name){const module=this.modules.find(mod=>{const ModuleClass=mod.constructor;return ModuleClass.moduleName===name});if(module&&!module.shouldInit()){return void 0}return module}registerBlock(block){if(!block.id){this.logger.error("Block id is required");return}const blockId=block.id;if(this.blocks[blockId]){this.logger.error(`Block with id ${blockId} already exists`);return}this.blocks[blockId]=block;if(window.boostWidgetIntegration.blocks){window.boostWidgetIntegration.blocks[blockId]=block}this.dispatchLifecycleEvent({name:"onRegisterBlock",payload:{block}});this.registryBlockListeners.forEach(listener=>{try{listener(block)}catch(error){this.logger.error("Error in registry block listener:",error)}})}addRegistryBlockListener(listener){this.registryBlockListeners.push(listener);Object.values(this.blocks).forEach(block=>{try{listener(block)}catch(error){this.logger.error("Error in registry block listener for existing block:",error)}})}removeRegistryBlockListener(listener){const index=this.registryBlockListeners.indexOf(listener);if(index>-1){this.registryBlockListeners.splice(index,1)}}onReady(handler){if(this.status==="started"){try{handler()}catch(error){this.logger.error("Error in ready handler:",error)}}else{this.readyListeners.push(handler)}}assignGlobalVariables(){if(!window.boostWidgetIntegration){window.boostWidgetIntegration={}}Object.assign(window.boostWidgetIntegration,{TAEApp:this,config:this.config,dataObjects:this.dataObjects,blocks:this.blocks})}async start(){this.logger.info("Application starting");this.bootstrap();this.dispatchLifecycleEvent({name:"onBeforeAppStart",payload:null});await this.initModules();this.status="started";this.dispatchLifecycleEvent({name:"onAppStart",payload:null});this.readyListeners.forEach(listener=>{try{listener()}catch(error){this.logger.error("Error in ready listener:",error)}});if(this.config?.customization?.app?.onStart){this.config.customization.app.onStart(this)}}destroy(){if(this.status!=="started"){this.logger.warn("Application not started yet");return}this.modules.forEach(module=>{this.dispatchLifecycleEvent({name:"onModuleDestroy",payload:{module}});module.destroy()});this.modules=[];this.resetBlocks();this.status="destroyed";this.dispatchLifecycleEvent({name:"onAppDestroy",payload:null})}setLogLevel(level){this.logLevel=level;this.updateConfig({logLevel:level})}loadModule(ModuleConstructor){if(!ModuleConstructor){return this}const app=this;const moduleInstance=new ModuleConstructor(app);if(app.cachedModulesByConstructor.has(ModuleConstructor)){this.logger.warn(`Module ${ModuleConstructor.name} already loaded`);return app}this.modules.push(moduleInstance);this.cachedModulesByConstructor.set(ModuleConstructor,moduleInstance);this.logger.info(`Module ${ModuleConstructor.name} already loaded`);return app}updateConfig(newConfig){if(typeof newConfig==="function"){this.config=newConfig(this.config)}else{mergeDeepMutate(this.config,newConfig)}return this.config}dispatchLifecycleEvent(event){switch(event.name){case"onBeforeAppBootstrap":this.triggerEvent("onBeforeAppBootstrap",event);break;case"onAppBootstrap":this.logger.info("Application bootstrapped");this.triggerEvent("onAppBootstrap",event);break;case"onBeforeModuleInit":this.triggerEvent("onBeforeModuleInit",event);break;case"onModuleInit":this.logger.info(`Module ${event.payload.module.constructor.name} initialized`);this.triggerEvent("onModuleInit",event);break;case"onModuleDestroy":this.logger.info(`Module ${event.payload.module.constructor.name} destroyed`);this.triggerEvent("onModuleDestroy",event);break;case"onBeforeAppStart":this.triggerEvent("onBeforeAppStart",event);break;case"onAppStart":this.logger.info("Application started");this.triggerEvent("onAppStart",event);break;case"onAppDestroy":this.logger.info("Application destroyed");this.triggerEvent("onAppDestroy",event);break;case"onAppError":this.logger.error("Application error",event.payload.error);this.triggerEvent("onAppError",event);break;case"onModuleError":this.logger.error("Module error",event.payload.module.constructor.name,event.payload.error);this.triggerEvent("onModuleError",event);break;case"onRegisterBlock":this.logger.info(`Block registered with id: ${event.payload.block.id}`);this.triggerEvent("onRegisterBlock",event);break;default:this.logger.warn("Unknown lifecycle event",event);break}}triggerEvent(eventName,event){const eventListeners=this.cachedEventListeners[eventName];if(eventListeners){eventListeners.forEach(listener=>{try{if(eventName==="onRegisterBlock"&&event.payload&&"block"in event.payload){listener(event.payload.block)}else{listener(event)}}catch(error){this.logger.error(`Error in event listener for ${eventName}:`,error,"Event data:",event)}})}}extendAppConfigFromModules(){this.modules.forEach(module=>{const extendAppConfig=module.extendAppConfig;if(extendAppConfig){mergeDeepMutate(this.config,extendAppConfig)}})}extendAppConfigFromGlobalVariables(){const initializedGlobalConfig=window.boostWidgetIntegration?.config;if(initializedGlobalConfig){mergeDeepMutate(this.config,initializedGlobalConfig)}}initializeDataObjects(){this.modules.forEach(module=>{const dataObject=module.dataObject;if(dataObject){mergeDeepMutate(this.dataObjects,dataObject)}})}resetBlocks(){this.logger.info("Resetting all blocks");this.blocks={}}loadModuleEventListeners(){this.cachedEventListeners={};const eventNames=["onBeforeAppBootstrap","onAppBootstrap","onModuleInit","onModuleDestroy","onBeforeAppStart","onAppStart","onAppDestroy","onAppError","onModuleError","onRegisterBlock"];this.modules.forEach(module=>{eventNames.forEach(eventName=>{const eventListener=(...args)=>{if(this.status==="bootstrapped"||this.status==="started"){if(!module.shouldInit())return}return module[eventName]?.(...args)};if(typeof eventListener==="function"){if(!this.cachedEventListeners[eventName]){this.cachedEventListeners[eventName]=[]}if(eventName==="onRegisterBlock"){this.cachedEventListeners[eventName]?.push((block=>{eventListener.call(module,block)}))}else{this.cachedEventListeners[eventName]?.push(eventListener.bind(module))}}})})}};var Module=class{constructor(app){this.app=app}shouldInit(){return true}destroy(){}init(){}get extendAppConfig(){return{}}get dataObject(){return{}}};var BoostTAEAppModule=class extends Module{constructor(){super(...arguments);this.boostTAEApp=null}get TAEApp(){const boostTAE=getBoostTAE();if(!boostTAE){throw new Error("Boost TAE is not initialized")}this.boostTAEApp=boostTAE;return this.boostTAEApp}get TAEAppConfig(){return this.TAEApp.config}get TAEAppDataObjects(){return this.TAEApp.dataObjects}};var AdditionalElement=class extends BoostTAEAppModule{get extendAppConfig(){return {additionalElementSettings:Object.assign(
{
default_sort_order: {"search":"relevance","all":""},
}, {"customSortingList":"best-selling|relevance|title-ascending|title-descending|price-ascending|price-descending","enableCollectionSearch":true})};}};AdditionalElement.moduleName="AdditionalElement";function getShortenToFullParamMap(){const shortenUrlParamList=getBoostTAE().config?.filterSettings?.shortenUrlParamList;const map={};if(!Array.isArray(shortenUrlParamList)){return map}shortenUrlParamList.forEach(item=>{if(typeof item!=="string")return;const idx=item.lastIndexOf(":");if(idx===-1)return;const full=item.slice(0,idx).trim();const short=item.slice(idx+1).trim();if(!full.startsWith("pf_"))return;if(full.length>0&&short.length>0){map[short]=full}});return map}function generateUUID(){return "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".replace(/[x]/g,function(){const r=Math.random()*16|0;return r.toString(16)});}function getQueryParamByKey(key){const urlParams=new URLSearchParams(window.location.search);return urlParams.get(key)}function convertValueRequestStockStatus(v){if(typeof v==="string"){if(v==="out-of-stock")return false;return true}if(Array.isArray(v)){return v.map(_v=>{if(_v==="out-of-stock"){return false}return true})}return false}function isMobileWidth(){return window.innerWidth<576}function isTabletPortraitMaxWidth(){return window.innerWidth<=991}function detectDeviceByWidth(){let result="";if(isMobileWidth()){result+="mobile|"}else{result=result.replace("mobile|","")}if(isTabletPortraitMaxWidth()){result+="tablet_portrait_max"}else{result=result.replace("tablet_portrait_max","")}return result}function getSortBy(){const{generalSettings:{collection_id=0,page="collection",default_sort_by:defaultSortBy}={},additionalElementSettings:{default_sort_order:defaultSortOrder={},customSortingList}={}}=getBoostTAE().config;const defaultSortingList=["relevance","best-selling","manual","title-ascending","title-descending","price-ascending","price-descending","created-ascending","created-descending"];const sortQueryKey=getQueryParamByKey("sort");const sortingList=customSortingList?customSortingList.split("|"):defaultSortingList;if(sortQueryKey&&sortingList.includes(sortQueryKey))return sortQueryKey;const searchPage=page==="search";const collectionPage=page==="collection";if(searchPage)sortingList.splice(sortingList.indexOf("manual"),1);const{all,search}=defaultSortOrder;if(collectionPage){if(collection_id in defaultSortOrder){return defaultSortOrder[collection_id]}else if(all){return all}else if(defaultSortBy){return defaultSortBy}}else if(searchPage){return search||"relevance"}return""}var addParamsLocale=(params={})=>{params.return_all_currency_fields=false;return{...params,currency_rate:window.Shopify?.currency?.rate,currency:window.Shopify?.currency?.active,country:window.Shopify?.country}};var getLocalStorage=key=>{try{const value=localStorage.getItem(key);if(value)return JSON.parse(value);return null}catch{return null}};var setLocalStorage=(key,value)=>{try{localStorage.setItem(key,JSON.stringify(value))}catch(error){getBoostTAE().logger.error("Error setLocalStorage",error)}};var removeLocalStorage=key=>{try{localStorage.removeItem(key)}catch(error){getBoostTAE().logger.error("Error removeLocalStorage",error)}};function roundToNearest50(num){const remainder=num%50;if(remainder>25){return num+(50-remainder)}else{return num-remainder}}function lazyLoadImages(dom){if(!dom)return;const lazyImages=dom.querySelectorAll(".boost-sd__product-image-img[loading='lazy']");lazyImages.forEach(function(img){inViewPortHandler(img.parentElement,element=>{const imgElement=element.querySelector(".boost-sd__product-image-img[loading='lazy']");if(imgElement){imgElement.removeAttribute("loading")}})})}function inViewPortHandler(elements,callback){const observer=new IntersectionObserver(function intersectionObserverCallback(entries,observer2){entries.forEach(function(entry){if(entry.isIntersecting){callback(entry.target);observer2.unobserve(entry.target)}})});if(Array.isArray(elements)){elements.forEach(element=>observer.observe(element))}else{observer.observe(elements)}}var isBadUrl=url=>{try{if(!url){const searchString2=getWindowLocation().search;if(!searchString2||searchString2.length<=1){return false}return checkSearchStringForXSS(searchString2)}if(typeof url==="string"){const questionMarkIndex=url.indexOf("?");const searchString2=questionMarkIndex>=0?url.substring(questionMarkIndex):"";if(!searchString2||searchString2.length<=1){return false}return checkSearchStringForXSS(searchString2)}const searchString=url.search;if(!searchString||searchString.length<=1){return false}return checkSearchStringForXSS(searchString)}catch{return true}};var checkSearchStringForXSS=searchString=>{const urlParams=decodeURIComponent(searchString).split("&");for(let i=0;i<urlParams.length;i++){if(isBadSearchTerm(urlParams[i])){return true}}return false};var getWindowLocation=()=>{const href=window.location.href;const escapedHref=href.replace(/%3C/g,"<").replace(/%3E/g,">");const rebuildHrefArr=[];for(let i=0;i<escapedHref.length;i++){rebuildHrefArr.push(escapedHref.charAt(i))}const rebuildHref=rebuildHrefArr.join("").split("<").join("%3C").split(">").join("%3E");let rebuildSearch="";const hrefWithoutHash=rebuildHref.replace(/#.*$/,"");if(hrefWithoutHash.split("?").length>1){rebuildSearch=hrefWithoutHash.split("?")[1];if(rebuildSearch.length>0){rebuildSearch="?"+rebuildSearch}}return{pathname:window.location.pathname,href:rebuildHref,search:rebuildSearch}};var isBadSearchTerm=term=>{if(typeof term=="string"){term=term.toLowerCase();const domEvents=["img src","script","alert","onabort","popstate","afterprint","beforeprint","beforeunload","blur","canplay","canplaythrough","change","click","contextmenu","copy","cut","dblclick","drag","dragend","dragenter","dragleave","dragover","dragstart","drop","durationchange","ended","error","focus","focusin","focusout","fullscreenchange","fullscreenerror","hashchange","input","invalid","keydown","keypress","keyup","load","loadeddata","loadedmetadata","loadstart","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseout","mouseout","mouseup","offline","online","pagehide","pageshow","paste","pause","play","playing","progress","ratechange","resize","reset","scroll","search","seeked","seeking","select","show","stalled","submit","suspend","timeupdate","toggle","touchcancel","touchend","touchmove","touchstart","unload","volumechange","waiting","wheel"];const potentialEventRegex=new RegExp(domEvents.join("=|on"));const countOpenTag=(term.match(/</g)||[]).length;const countCloseTag=(term.match(/>/g)||[]).length;const isAlert=(term.match(/alert\(/g)||[]).length;const isConsoleLog=(term.match(/console\.log\(/g)||[]).length;const isExecCommand=(term.match(/execCommand/g)||[]).length;const isCookie=(term.match(/document\.cookie/g)||[]).length;const isJavascript=(term.match(/j.*a.*v.*a.*s.*c.*r.*i.*p.*t/g)||[]).length;const isPotentialEvent=potentialEventRegex.test(term);if(countOpenTag>0&&countCloseTag>0||countOpenTag>1||countCloseTag>1||isAlert||isConsoleLog||isExecCommand||isCookie||isJavascript||isPotentialEvent){return true}}return false};var isCollectionPage=()=>{return getBoostTAE().config.generalSettings?.page==="collection"};var isSearchPage=()=>{return getBoostTAE().config.generalSettings?.page==="search"};var isCartPage=()=>{return getBoostTAE().config.generalSettings?.page==="cart"};var isProductPage=()=>{return getBoostTAE().config.generalSettings?.page==="product"};var isHomePage=()=>{return getBoostTAE().config.generalSettings?.page==="index"};var isVendorPage=()=>{return window.location.pathname.indexOf("/collections/vendors")>-1};var getCurrentPage=()=>{let currentPage="";switch(true){case isCollectionPage():currentPage="collection_page";break;case isSearchPage():currentPage="search_page";break;case isProductPage():currentPage="product_page";break;case isCartPage():currentPage="cart_page";break;case isHomePage():currentPage="home_page";break;default:break}return currentPage};var checkExistFilterOptionParam=()=>{const queryParams=new URLSearchParams(window.location.search);const shortenToFullMap=getShortenToFullParamMap();for(const key of queryParams.keys()){if(key.startsWith("pf_"))return true;const resolved=shortenToFullMap[key];if(typeof resolved==="string"&&resolved.startsWith("pf_"))return true}return false};function getCustomerId(){return window?.__st?.cid||window?.meta?.page?.customerId||window?.ShopifyAnalytics?.meta?.page?.customerId||window?.ShopifyAnalytics?.lib?.user?.()?.traits()?.uniqToken}function isShopifyTypePage(){return window.location.pathname.indexOf("/collections/types")>-1}var Analytics=class _Analytics extends BoostTAEAppModule{saveRequestId(type,request_id,bundles=[]){const requestIds=getLocalStorage(_Analytics.STORAGE_KEY_PRE_REQUEST_IDS)||{};requestIds[type]=request_id;if(Array.isArray(bundles)){bundles?.forEach(bundle=>{let placement="";switch(type){case"search":placement=_Analytics.KEY_PLACEMENT_BY_TYPE.search_page;break;case"suggest":placement=_Analytics.KEY_PLACEMENT_BY_TYPE.instant_search;break;case"product_page_bundle":placement=_Analytics.KEY_PLACEMENT_BY_TYPE.product_page;break;default:break}requestIds[`${bundle.widgetId||""}_${placement}`]=request_id})}setLocalStorage(_Analytics.STORAGE_KEY_PRE_REQUEST_IDS,requestIds)}savePreAction(type){setLocalStorage(_Analytics.STORAGE_KEY_PRE_ACTION,type)}};Analytics.moduleName="Analytics";Analytics.STORAGE_KEY_PRE_REQUEST_IDS="boostSdPreRequestIds";Analytics.STORAGE_KEY_PRE_ACTION="boostSdPreAction";Analytics.KEY_PLACEMENT_BY_TYPE={product_page:"product_page",search_page:"search_page",instant_search:"instant_search"};var AppSettings=class extends BoostTAEAppModule{get extendAppConfig(){const config={cdn:"https://cdn.boostcommerce.io",bundleUrl:"https://services.mybcapps.com/bc-sf-filter/bundles",productUrl:"https://services.mybcapps.com/bc-sf-filter/products",productListingUrl:"https://services.mybcapps.com/bc-sf-filter/product-listing",subscriptionUrl:"https://services.mybcapps.com/bc-sf-filter/subscribe-b2s",nodeSSRUrl:"https://services.mybcapps.com/bc-sf-ssr-node",rubySSRUrl:"https://services.mybcapps.com/bc-sf-ssr-ruby",ssrUrl:"",taeSettings:window.boostWidgetIntegration?.taeSettings||{instantSearch:{enabled:false}},generalSettings:Object.assign(
{preview_mode:false,preview_path:"",page:"page",custom_js_asset_url:"",custom_css_asset_url:"",collection_id: 0,collection_handle:"",collection_product_count: 0,...
{
},collection_tags: null,current_tags: null,default_sort_by:"",swatch_extension:"png",no_image_url:"https://cdn.shopify.com/extensions/019fc5ae-c2c5-7f91-85ff-84eb227fb474/product-filter-search-222/assets/boost-pfs-no-image.jpg",search_term:"",template:"page",currencies:["CAD","USD"],current_currency:"USD",published_locales:{...
{"en":true,"es":false,"fr":false}
},current_locale:"en",ssr_engine:"node",ssr_version:"v1"},
{"addCollectionToProductUrl":true,"enableTrackingOrderRevenue":true}
),translation:{},...
{
translation: {"refine":"Refine By","refineMobile":"Refine By","refineMobileCollapse":"Hide Filter","clear":"Clear","clearAll":"Clear All","viewMore":"View More","viewLess":"View Less","apply":"Apply","close":"Close","showLimit":"Show","collectionAll":"All","under":"Under","above":"Above","ratingStars":"Star","showResult":"Show results","searchOptions":"Search Options","inCollectionSearch":"Search for products in this collection","loadMore":"Load More","loadMoreTotal":"{{ from }} - {{ to }} of {{ total }} Products","search":{"generalTitle":"Search","resultHeader":"Search results for \"{{ terms }}\"","resultNumber":"Showing {{ count }} results for \"{{ terms }}\"","seeAllProducts":"See all products","resultEmpty":"We are sorry! We couldn't find results for \"{{ terms }}\".{{ breakline }}But don't give up – check the spelling or try less specific search terms.","resultEmptyWithSuggestion":"Sorry, nothing found for \"{{ terms }}\". Check out these items instead?","searchTotalResult":"Showing {{ count }} result","searchTotalResults":"Showing {{ count }} results","searchPanelProduct":"Products","searchPanelCollection":"Collections","searchPanelPage":"Recipes","searchTipsTitle":"Search tips","searchTipsContent":"Please double-check your spelling.{{ breakline }}Use more generic search terms.{{ breakline }}Enter fewer keywords.{{ breakline }}Try searching by product type, brand, model number or product feature.","noSearchResultSearchTermLabel":"Popular Searches","noSearchResultProductsLabel":"Trending products","searchBoxOnclickRecentSearchLabel":"Recent searches","searchBoxOnclickSearchTermLabel":"Popular searches","searchBoxOnclickProductsLabel":"Trending products"},"suggestion":{"viewAll":"View all results","didYouMean":"Did you mean: {{ terms }}?","searchBoxPlaceholder":"Search","suggestQuery":"Showing results for {{ terms }}","instantSearchSuggestionsLabel":"Popular suggestions","instantSearchCollectionsLabel":"Collections","instantSearchProductsLabel":"Products","instantSearchPagesLabel":"Recipes","searchBoxOnclickRecentSearchLabel":"Recent searches","searchBoxOnclickSearchTermLabel":"Popular searches","searchBoxOnclickProductsLabel":"Trending products","noSearchResultSearchTermLabel":"Popular Searches","noSearchResultProductsLabel":"Trending products"},"error":{"noFilterResult":"Sorry, no products matched your selection","noSearchResult":"Sorry, no products matched the keyword","noProducts":"No products found in this collection","noSuggestionResult":"Sorry, nothing found for \"{{ terms }}\"","noSuggestionProducts":"Sorry, nothing found for \"{{ terms }}\""},"recommendation":{"homepage-452818":"You Recently viewed","productpage-222104":"Frequently Bought Together","cartpage-442807":"Still interested in this?","cartpage-632738":"Similar Products","collectionpage-581834":"Most Popular Products","productpage-517686":"Recently viewed","homepage-137866":"Best Sellers","collectionpage-623801":"Just dropped","homepage-247386":"Just dropped"},"productItem":{"qvBtnLabel":"Quick view","atcAvailableLabel":"Add to cart","soldoutLabel":"Sold Out","productItemSale":"Sale","productItemSoldOut":"Sold Out","viewProductBtnLabel":"View product","atcSelectOptionsLabel":"Select options","amount":"From {{minPrice}}","savingAmount":"Save {{saleAmount}}","swatchButtonText1":"+{{count}}","swatchButtonText2":"+{{count}}","swatchButtonText3":"+{{count}}","inventoryInStock":"In stock","inventoryLowStock":"Only {{count}} left!","inventorySoldOut":"Sold Out","atcAddingToCartBtnLabel":"Adding...","atcAddedToCartBtnLabel":"Added!","atcFailedToCartBtnLabel":"Failed!"},"quickView":{"qvQuantity":"Quantity","qvViewFullDetails":"View full details","buyItNowBtnLabel":"Buy it now","qvQuantityError":"Please input quantity"},"cart":{"atcMiniCartSubtotalLabel":"Subtotal","atcMiniCartEmptyCartLabel":"Your Cart Is Currently Empty","atcMiniCartCountItemLabel":"item","atcMiniCartCountItemLabelPlural":"items","atcMiniCartShopingCartLabel":"Your cart","atcMiniCartViewCartLabel":"View cart","atcMiniCartCheckoutLabel":"Checkout"},"recentlyViewed":{"recentProductHeading":"Recently Viewed Products"},"mostPopular":{"popularProductsHeading":"Popular Products"},"perpage":{"productCountPerPage":"Display: {{count}} per page"},"productCount":{"textDescriptionCollectionHeader":"{{count}} product","textDescriptionCollectionHeaderPlural":"{{count}} products","textDescriptionToolbar":"{{count}} product","textDescriptionToolbarPlural":"{{count}} products","textDescriptionPagination":"Showing {{from}} - {{to}} of {{total}} product","textDescriptionPaginationPlural":"Showing {{from}} - {{to}} of {{total}} products"},"pagination":{"loadPreviousText":"Load Previous Page","loadPreviousInfiniteText":"Load Previous Page","loadMoreText":"Load more","prevText":"Previous","nextText":"Next"},"sortingList":{"sorting":"Sort by","best-selling":"Best selling","relevance":"Relevance","title-ascending":"Title ascending","title-descending":"Title descending","price-ascending":"Price ascending","price-descending":"Price descending"},"collectionHeader":{"collectionAllProduct":"Products"},"breadcrumb":{"home":"Home","collections":"Collections","pagination":"Page {{ page }} of {{totalPages}}","toFrontPage":"Back to the front page"},"sliderProduct":{"prevButton":"Previous","nextButton":"Next"},"refineDesktop":"Filter","applyAll":"Apply All","back":"Back","ratingStar":"Star","ratingUp":"& Up","loadPreviousPage":"Load Previous Page","viewAs":"View as","listView":"List view","gridView":"Grid view","gridViewColumns":"Grid view {{count}} Columns","filterOptions":{"filterOption|nyGgYr1YyZ|pf_pt_category":"Category","filterOption|nyGgYr1YyZ|pf_p_price":"Price","filterOption|nyGgYr1YyZ|pf_c_collection":"Collection","filterOption|4dG25VwQn|pf_v_category":"Category","filterOption|4dG25VwQn|pf_pt_product_type":"Product Type","filterOption|4dG25VwQn|pf_p_price":"Price","filterOption|4dG25VwQn|pf_opt_color":"Color","filterOption|4dG25VwQn|pf_c_collection":"Collection"},"predictiveBundle":{}},
}
};const ssr_engine=config.generalSettings?.ssr_engine||"node";switch(ssr_engine){case"ruby":config.ssrUrl=config.rubySSRUrl;break;default:config.ssrUrl=config.nodeSSRUrl}return config}onBeforeAppStart(){const{templateMetadata,env}=this.TAEAppConfig;if(templateMetadata?.themeLibVersion){const themeLibVersion=templateMetadata.themeLibVersion;const versionParts=themeLibVersion.split(".").map(Number);if(versionParts[0]>1||versionParts[0]===1&&versionParts[1]>=89||env==="staging"){this.TAEAppConfig.generalSettings.ssr_version="v2"}}}};AppSettings.moduleName="AppSettings";var AssetFilesLoader=class extends BoostTAEAppModule{constructor(){super(...arguments);this.cacheVersionString=Date.now().toString()}onAppStart(){this.loadAssetFiles();this.assetLoadingPromise("themeCSS").then(()=>{this.TAEApp.updateConfig({themeCssLoaded:true})});this.assetLoadingPromise("settingsCSS").then(()=>{this.TAEApp.updateConfig({settingsCSSLoaded:true})})}loadAssetFiles(){this.loadThemeCSS();this.loadSettingsCSS();this.loadMainScript();this.loadRTLCSS();this.loadCustomizedCSSAndScript()}loadCustomizedCSSAndScript(){const{assetFilesLoader,templateMetadata}=this.TAEAppConfig;const themeCSSLinkElement=assetFilesLoader.themeCSS.element;const settingCSSLinkElement=assetFilesLoader.settingsCSS.element;const loadResources=()=>{if(this.TAEAppConfig.assetFilesLoader.themeCSS.status!=="loaded"||this.TAEAppConfig.assetFilesLoader.settingsCSS.status!=="loaded")return;if(templateMetadata?.customizeCssUrl){this.loadCSSFile("customizedCSS")}if(templateMetadata?.customizeJsUrl){this.loadScript("customizedScript")}};themeCSSLinkElement?.addEventListener("load",loadResources);settingCSSLinkElement?.addEventListener("load",loadResources)}loadSettingsCSS(){const result=this.loadCSSFile("settingsCSS");return result}loadThemeCSS(){const result=this.loadCSSFile("themeCSS");return result}loadRTLCSS(){const rtlDetected=document.documentElement.getAttribute("dir")==="rtl";if(rtlDetected){const result=this.loadCSSFile("rtlCSS");return result}}loadMainScript(){const result=this.loadScript("mainScript");return result}preloadModuleScript(module){const TAEAppConfig=this.TAEAppConfig;const inStagingEnv=TAEAppConfig.env==="staging";const themeLibVersion=inStagingEnv?"staging":TAEAppConfig.templateMetadata?.themeLibVersion;if(!inStagingEnv)return;if(!["filter","recommendation","instant-search"].includes(module))return;const scriptUrl=`${TAEAppConfig.cdn}/${"widget-integration"}/${themeLibVersion}/${module}.module.js`;const link=document.createElement("link");link.rel="preload";link.as="script";link.href=scriptUrl;document.head?.appendChild(link)}loadResourceByName(name,options){if(this.TAEAppConfig.assetFilesLoader[name].element)return;const assetsState=this.TAEAppConfig.assetFilesLoader[name];const resourceType=options?.resourceType||assetsState.type;const inStagingEnv=this.TAEAppConfig.env==="staging";let url=options?.url||assetsState.url;if(!url){switch(name){case"themeCSS":url=this.TAEAppConfig.templateMetadata?.themeCssUrl||this.TAEAppConfig.fallback?.themeCssUrl;if(inStagingEnv){url+=`?v=${this.cacheVersionString}`}break;case"settingsCSS":url=this.TAEAppConfig.templateMetadata?.settingsCssUrl||this.TAEAppConfig.fallback?.settingsCssUrl;break;case"rtlCSS":{const{themeCSS}=this.TAEAppConfig.assetFilesLoader;if(themeCSS.url){const themeCssUrl=new URL(themeCSS.url);const themeCssPathWithoutFilename=themeCssUrl.pathname.split("/").slice(0,-1).join("/");const rtlCssPath=themeCssPathWithoutFilename+"/rtl.css";url=new URL(rtlCssPath,themeCssUrl.origin).href;if(inStagingEnv){url+=`?v=${this.cacheVersionString}`}}break}case"mainScript":url=`${this.TAEAppConfig.cdn}/${"widget-integration"}/${inStagingEnv?"staging":this.TAEAppConfig.templateMetadata?.themeLibVersion}/${"bc-widget-integration.js"}`;if(inStagingEnv){url+=`?v=${this.cacheVersionString}`}break;case"customizedCSS":url=this.TAEAppConfig.templateMetadata?.customizeCssUrl;break;case"customizedScript":url=this.TAEAppConfig.templateMetadata?.customizeJsUrl;break}}if(!url)return;if(resourceType==="stylesheet"){const link=document.createElement("link");link.rel="stylesheet";link.type="text/css";link.media="all";link.href=url;document.head.appendChild(link);this.TAEApp.updateConfig({assetFilesLoader:{[name]:{element:link,status:"loading",url}}});link.onload=()=>{this.TAEApp.updateConfig({assetFilesLoader:{[name]:{element:link,status:"loaded",url}}})};link.onerror=()=>{this.TAEApp.updateConfig({assetFilesLoader:{[name]:{element:link,status:"error",url}}})}}else if(resourceType==="script"){const script=document.createElement("script");script.src=url;const strategy=options?.strategy;if(strategy==="async"){script.async=true}else if(strategy==="defer"){script.defer=true}if(assetsState.module){script.type="module"}if(strategy==="async"||strategy==="defer"){const link=document.createElement("link");link.rel="preload";link.as="script";link.href=url;document.head?.appendChild(link)}document.head.appendChild(script);this.TAEApp.updateConfig({assetFilesLoader:{[name]:{element:script,status:"loading",url}}});script.onload=()=>{this.TAEApp.updateConfig({assetFilesLoader:{[name]:{element:script,status:"loaded",url}}})};script.onerror=()=>{this.TAEApp.updateConfig({assetFilesLoader:{[name]:{element:script,status:"error",url}}})};script.onprogress=()=>{this.TAEApp.updateConfig({assetFilesLoader:{[name]:{element:script,status:"loading",url}}})}}}loadCSSFile(name,url){return this.loadResourceByName(name,{url,resourceType:"stylesheet"})}loadScript(name,url,strategy){return this.loadResourceByName(name,{strategy,url,resourceType:"script"})}assetLoadingPromise(name,timeout=5e3){return new Promise((resolve,reject)=>{let timeoutNumber=null;const{assetFilesLoader}=this.TAEAppConfig;const asset=assetFilesLoader[name];if(asset.status==="loaded"){return resolve(true)}if(!asset.element){this.loadResourceByName(name)}const assetElement=this.TAEAppConfig.assetFilesLoader[name]?.element;if(!assetElement){this.TAEApp.logger.warn(`Asset ${name} not foumd`);return resolve(false)}assetElement?.addEventListener("load",()=>{if(timeoutNumber)clearTimeout(timeoutNumber);resolve(true)});assetElement?.addEventListener("error",()=>{if(timeoutNumber)clearTimeout(timeoutNumber);reject(new Error(`Failed to load asset ${name}`))});timeoutNumber=setTimeout(()=>{reject(new Error(`Timeout loading asset ${name}`))},timeout)})}get extendAppConfig(){return{themeCssLoaded:false,settingsCSSLoaded:false,assetFilesLoader:{themeCSS:{type:"stylesheet",element:null,status:"not-initialized",url:null},settingsCSS:{type:"stylesheet",element:null,status:"not-initialized",url:null},rtlCSS:{type:"stylesheet",element:null,status:"not-initialized",url:null},customizedCSS:{type:"stylesheet",element:null,status:"not-initialized",url:null},mainScript:{type:"script",element:null,status:"not-initialized",url:null},customizedScript:{type:"script",element:null,status:"not-initialized",url:null}}}}};AssetFilesLoader.moduleName="AssetFilesLoader";var B2B=class extends BoostTAEAppModule{setQueryParams(urlParams){const{b2b}=this.TAEAppConfig;if(!b2b.enabled)return;urlParams.set("company_location_id",`${b2b.current_company_id}_${b2b.current_location_id}`);const shopifyCurrencySettings=window.Shopify?.currency;if(shopifyCurrencySettings){urlParams.set("currency",shopifyCurrencySettings.active);urlParams.set("currency_rate",shopifyCurrencySettings.rate.toString())}}get extendAppConfig(){return {b2b:Object.assign({enabled:false},
{
}
)};}};B2B.moduleName="B2B";var Fallback=class _Fallback extends BoostTAEAppModule{get extendAppConfig(){return{fallback:{containerElement:".boost-sd__filter-product-list",themeCssUrl:"https://cdn.boostcommerce.io/widget-integration/theme/default/1.0.1/main.css",settingsCssUrl:"https://boost-cdn-staging.bc-solutions.net/widget-integration/theme/default/staging/default-settings.css"}}}dispatchEvent(){const enableEvent=new CustomEvent(_Fallback.EVENT_NAME);window.dispatchEvent(enableEvent)}async loadFallbackSectionFromShopify(payload){return fetch(payload.url||`${window.location.origin}/?section_id=${payload.sectionName}`).catch(error=>{this.TAEApp.logger.error("Error loading fallback section from Shopify:",error);throw error}).then(res=>res.text())}get containerElement(){const{containerElement}=this.TAEAppConfig.fallback;if(containerElement instanceof HTMLElement){return containerElement}return document.querySelector(containerElement)}async loadFilterProductFallback(){const{fallback,cdn="https://boost-cdn-prod.bc-solutions.net",templateMetadata}=this.TAEAppConfig;const customizedFallbackSettings=fallback?.customizedTemplate||templateMetadata.customizedFallback;if(customizedFallbackSettings){const{source,templateName,templateURL}=customizedFallbackSettings;switch(source){case"Shopify":{if(!templateName&&!templateURL){this.TAEApp.logger.warn("Both templateName and templateURL are undefined");return}const html=await this.loadFallbackSectionFromShopify({sectionName:templateName,url:templateURL});const container=this.containerElement;if(!container){this.TAEApp.logger.warn("Container element not found for fallback template");return}container.innerHTML=html;this.dispatchEvent();return}default:this.TAEApp.logger.warn(`Unsupported source for customized template: ${source}`);return}}const script=document.createElement("script");script.src=`${cdn}/fallback-theme/1.0.12/boost-sd-fallback-theme.js`;script.defer=true;script.onload=()=>{this.dispatchEvent()};document.body.appendChild(script)}};Fallback.moduleName="Fallback";Fallback.EVENT_NAME="boost-sd-enable-product-filter-fallback";var SimplifiedIntegration=class extends BoostTAEAppModule{constructor(){super(...arguments);this.ensurePlaceholder=()=>{const{simplifiedIntegration:{enabled,selectedSelector,placeholderAdded}}=this.TAEAppConfig;if(!enabled||!selectedSelector){if(!this.oldldSICollectionFilterContainerDetected()){this.backwardCompatibilityModule?.legacyUpdateAppStatus("ready")}return}if(placeholderAdded){return}const container=document.querySelector(selectedSelector);if(container&&container instanceof HTMLElement){this.renderPlaceholder(container);this.collectionFilterModule?.initBlock()}else{this.TAEApp.logger.error(`Placeholder container not found: ${selectedSelector}. Please update the selector in Boost's app embed`)}}}get collectionFilterModule(){return this.TAEApp.getModule(CollectionFilter)}get backwardCompatibilityModule(){return this.TAEApp.getModule(BackwardCompatibilityV1)}get extendAppConfig(){
;return {simplifiedIntegration:{enabled:false,collectionPage:false,instantSearch:false,productListSelector:{collectionPage:[],searchPage:[]},selectedSelector:"",selectorFromMetafield:"",selectorFromAppEmbed:
""
|| "",allSyncedCollections:
""
|| {syncedCollections:[]},placeholderAdded:false,placeholder:`<!-- TEMPLATE PLACEHOLDER --><div class='boost-sd-container'><div class='boost-sd-layout boost-sd-layout--has-filter-vertical'> <div class='boost-sd-left boost-filter-tree-column'> <!-- TEMPLATE FILTER TREE PLACEHOLDER --> <div id="boost-sd__filter-tree-wrapper" class="boost-sd__filter-tree-wrapper"> <div class="boost-sd__filter-tree-vertical "> <div class="boost-sd__filter-tree-vertical-placeholder"> <div class="boost-sd__filter-tree-vertical-placeholder-item"> <span class="boost-sd__placeholder-item" style="width:80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width:65%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width:40%; border-radius: 0;"></span> </div> <div class="boost-sd__filter-tree-vertical-placeholder-item"> <span class="boost-sd__placeholder-item" style="width:80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width:65%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width:40%; border-radius: 0;"></span> </div> <div class="boost-sd__filter-tree-vertical-placeholder-item"> <span class="boost-sd__placeholder-item" style="width:80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width:65%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width:40%; border-radius: 0;"></span> </div> <div class="boost-sd__filter-tree-vertical-placeholder-item"> <span class="boost-sd__placeholder-item" style="width:80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width:65%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width:40%; border-radius: 0;"></span> </div> <div class="boost-sd__filter-tree-vertical-placeholder-item"> <span class="boost-sd__placeholder-item" style="width:80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width:65%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width:40%; border-radius: 0;"></span> </div> </div> </div> </div> </div> <div class='boost-sd-right boost-product-listing-column'> <!-- TEMPLATE IN-COLLECTION SEARCH PLACEHOLDER--> <div class='boost-sd__in-collection-search boost-sd__in-collection-search--vertical'> <span class="boost-sd__placeholder-item" style="height: 38px; border-radius: 0; width: 100%;"></span> </div> <!-- TEMPLATE TOOLBAR PLACEHOLDER--> <div class="boost-sd__toolbar-container"> <div class="boost-sd__toolbar-inner"> <div class="boost-sd__toolbar-content"> <div class="boost-sd__toolbar boost-sd__toolbar--3_1"> <span class="boost-sd__toolbar-item boost-sd__placeholder-item" style="height: 28px; border-radius: 0;"></span> <span class="boost-sd__toolbar-item boost-sd__placeholder-item" style="height: 28px; border-radius: 0; margin-bottom: 0"></span> <span class="boost-sd__toolbar-item boost-sd__placeholder-item" style="height: 28px; border-radius: 0; margin-bottom: 0"></span> </div> </div> </div> </div> <!-- TEMPLATE PRODUCT LIST PLACEHOLDER--> <div class="boost-sd__product-list-placeholder boost-sd__product-list-placeholder--4-col"> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> </div> <div class="boost-sd__pagination boost-sd__pagination--"> <span class="boost-sd__placeholder-item" style="height: 40px; border-radius: 0;"></span> </div> </div></div></div><style> .boost-sd__collection-header { width: 100%; height: 130px; display: block; background: -webkit-gradient(linear, left top, right top, color-stop(8%, #eee), color-stop(18%, #e6e6e6), color-stop(33%, #eee)); background-color: #eee; animation: banner-place-holder-shimmer 2s linear infinite forwards; } .boost-sd__collection-header:empty { display: block; } .boost-sd__collection-header .boost-sd__placeholder-item { height: 130px; } @media only screen and (min-width: 992px) { .boost-sd__collection-header, .boost-sd__collection-header .boost-sd__placeholder-item { height: 150px; } } @keyframes banner-place-holder-shimmer { 0% { background-position: -1500px 0; } 100% { background-position: 1500px 0; } } .boost-sd__in-collection-search { margin-bottom: 20px; margin-top: 20px; width: 100%; max-width: 100%; display: flex; position: relative; } .boost-sd__in-collection-search--horizontal { margin: 20px auto 0; max-width: 592px; } @media only screen and (min-width: 992px) { .boost-sd__in-collection-search { margin-bottom: 16px; margin-top: 16px; } } .boost-sd__filter-tree-vertical { margin-top: 0; margin-right: 0; } .boost-sd__filter-tree-vertical-placeholder { background: transparent; width: 100%; max-width: 100%; display: none; } .boost-sd__filter-tree-vertical-placeholder-list { margin: 30px 10px 0; padding: 0; list-style: none; } .boost-sd__filter-tree-vertical-placeholder-item { max-width: 100%; padding: 20px 0; display: block; } .boost-sd__filter-tree-vertical-placeholder-item:first-child { padding-top: 0; } .boost-sd__filter-tree-vertical-placeholder-item:not(:last-child) { border-bottom: 1px solid #ebebeb; } .boost-sd__filter-tree-vertical-placeholder-item::before, .boost-sd__filter-tree-vertical-placeholder-item::after, { display: none; } .boost-sd__filter-tree-horizontal-placeholder { display: none; } @media only screen and (min-width: 992px) { .boost-sd__filter-tree-vertical { width: 272px; } .boost-sd-layout .boost-sd-left .boost-sd__filter-tree-wrapper .boost-sd__filter-tree-vertical { margin-right: 16px; margin-left: 0; } .boost-sd__filter-tree-vertical-placeholder, .boost-sd__filter-tree-horizontal-placeholder { display: inline-block; } .boost-sd-layout--has-filter-horizontal { flex-wrap: wrap; margin-top: 0; } .boost-sd-layout--has-filter-horizontal .boost-sd-left, .boost-sd-layout--has-filter-horizontal .boost-sd-right { flex: 0 0 100%; } .boost-sd__filter-tree-horizontal { width: 100%; } .boost-sd__filter-tree-horizontal-placeholder { padding: 16px 0; border-top: 1px solid #ebebeb; width: 100%; max-width: 100%; background: transparent; } .boost-sd__filter-tree-horizontal-placeholder-list { margin: 0; padding: 0; list-style: none; border-bottom: 1px solid #e8e9eb; } .boost-sd__filter-tree-horizontal-placeholder-item { border: none; display: inline-block; margin-right: 35px; position: relative; } .boost-sd__filter-tree-horizontal-placeholder-button { width: auto; height: auto; display: inline-block; position: relative; padding: 5px 15px 5px 0; margin: 0; min-height: auto; min-width: 0; border-radius: 0; box-shadow: none; background: none; border: none; letter-spacing: normal; text-align: left; cursor: pointer; } .boost-sd__filter-tree-horizontal-placeholder-button .boost-sd__placeholder-item { width: 80px; height: 10px; display: inline-block; margin: 0 15px 0 0; } .boost-sd__filter-tree-horizontal-placeholder-icon { transform: rotate(-90deg); } } .boost-sd__in-collection-search { margin-bottom: 20px; margin-top: 20px; width: 100%; max-width: 100%; display: flex; position: relative; } .boost-sd__in-collection-search--horizontal { margin: 20px auto 0; max-width: 592px; } @media only screen and (min-width: 992px) { .boost-sd__in-collection-search { margin-bottom: 16px; margin-top: 16px; } } .boost-sd__toolbar-container { width: 100%; margin-bottom: 16px; } .boost-sd__toolbar-inner { max-width: 1216px; margin: 0 auto; } .boost-sd__toolbar-content { border-bottom: 1px solid #ebebeb; border-top: 1px solid #ebebeb; padding: 16px 0; } .boost-sd__toolbar { align-items: center; width: 100%; display: flex; flex-wrap: wrap; column-gap: 16px; justify-content: space-between; } .boost-sd__toolbar .boost-sd__placeholder-item { flex-basis: 45%; } .boost-sd__toolbar .boost-sd__placeholder-item:first-child { flex-basis: 100%; margin-bottom: 16px; } @media only screen and (min-width: 992px) { .boost-sd__toolbar-content { display: flex; align-items: center; border-bottom: none; padding: 16px 0 16px; border-top: 1px solid #ebebeb; border-bottom: 0; } .boost-sd__toolbar { flex-wrap: inherit; } .boost-sd__toolbar .boost-sd__placeholder-item { flex-basis: auto; } .boost-sd__toolbar .boost-sd__placeholder-item:first-child { flex-basis: auto; margin-bottom: 0; } .boost-sd__toolbar--3_1 .boost-sd__toolbar-item { flex: 1; } .boost-sd__toolbar--3_1 .boost-sd__toolbar-item:nth-child(2) { justify-content: center; } .boost-sd__toolbar--3_1 .boost-sd__toolbar-item:nth-child(3) { justify-content: end; } } .boost-sd__product-list-placeholder { gap: 16px; margin-bottom: 32px; flex-wrap: wrap; width: 100%; display: flex; } .boost-sd__product-list-placeholder--1-col .boost-sd__product-list-placeholder-item { width: 100%; } .boost-sd__product-list-placeholder--2-col .boost-sd__product-list-placeholder-item, .boost-sd__product-list-placeholder--3-col .boost-sd__product-list-placeholder-item, .boost-sd__product-list-placeholder--4-col .boost-sd__product-list-placeholder-item, .boost-sd__product-list-placeholder--5-col .boost-sd__product-list-placeholder-item, .boost-sd__product-list-placeholder--6-col .boost-sd__product-list-placeholder-item { width: calc(50% - 8px); } .boost-sd__product-list-placeholder .boost-sd__product-list-placeholder-item .boost-sd__placeholder-item:first-child { height: 222px; } .boost-sd__pagination { padding-top: 10px; padding-bottom: 10px; justify-content: center; align-items: center; display: flex; } @media only screen and (min-width: 576px) { .boost-sd__product-list-placeholder { gap: 32px; margin-bottom: 64px; } .boost-sd__product-list-placeholder--3-col .boost-sd__product-list-placeholder-item, .boost-sd__product-list-placeholder--4-col .boost-sd__product-list-placeholder-item, .boost-sd__product-list-placeholder--5-col .boost-sd__product-list-placeholder-item, .boost-sd__product-list-placeholder--6-col .boost-sd__product-list-placeholder-item { width: calc(33.3333333333% - (32px - 32px / 3)); } } @media only screen and (min-width: 992px) { .boost-sd__product-list-placeholder .boost-sd__placeholder-item:not(:last-child) { margin-bottom: 8px; } .boost-sd__product-list-placeholder .boost-sd__placeholder-item:first-child { margin-bottom: 16px; } .boost-sd__product-list-placeholder--3-col .boost-sd__product-list-placeholder-item .boost-sd__placeholder-item:first-child { height: 382px; } .boost-sd__product-list-placeholder--4-col .boost-sd__product-list-placeholder-item .boost-sd__placeholder-item:first-child { height: 275px; } .boost-sd__product-list-placeholder--5-col .boost-sd__product-list-placeholder-item .boost-sd__placeholder-item:first-child { height: 215px; } .boost-sd__product-list-placeholder--6-col .boost-sd__product-list-placeholder-item .boost-sd__placeholder-item:first-child { height: 175px; } .boost-sd__product-list-placeholder--3-col .boost-sd__product-list-placeholder-item { width: calc(33.3333333333% - (32px - 32px / 3)); } .boost-sd__product-list-placeholder--4-col .boost-sd__product-list-placeholder-item { width: calc(25% - (32px - 32px / 4)); } .boost-sd__product-list-placeholder--5-col .boost-sd__product-list-placeholder-item { width: calc(20% - (32px - 32px / 5)); } .boost-sd__product-list-placeholder--6-col .boost-sd__product-list-placeholder-item { width: calc(16.6666667% - (32px - 32px / 6)); } } .boost-sd-container * { box-sizing: border-box; } .boost-sd__placeholder-item { background: rgba(0, 0, 0, 0.07); border-radius: 50rem; min-width: 50px; max-width: 100%; height: 20px; animation: 2s infinite place-holder-animation; display: inline-block; } .boost-sd__placeholder-item:empty { display: block; } .boost-sd__placeholder-item:not(:last-child) { margin-bottom: 18px; } .boost-sd-layout { margin: 20px auto 0; } .boost-sd-left { position: relative; } .boost-sd-layout .boost-sd-right { width: 100%; margin-bottom: 20px; } @keyframes place-holder-animation { 0% { opacity: 1; } 50% { opacity: 0.5; } 100% { opacity: 1; } } @media only screen and (min-width: 992px) { .boost-sd-layout { display: flex; max-width: 1216px; } .boost-sd-layout .boost-sd-right { flex: auto; max-width: 100%; } }</style>`,isOnboarding:JSON.parse(
""
|| "false"),neededToHideElements:[]}};}init(){const app=this.TAEApp;const simplifiedIntegration=this.TAEAppConfig.simplifiedIntegration;const{templateMetadata:{integratedTheme={}}}=this.TAEAppConfig;const themeId=window.Shopify?.theme?.id;if(!themeId){app.logger.warn("Theme ID is missing");return}let themeIntegration=integratedTheme[themeId];if(!themeIntegration||Object.keys(themeIntegration).length===0){app.logger.warn("Theme is not integrated with SimplifiedIntegration flow");return}const{collectionPage=false,searchPage=false,instantSearch=false,productListSelector={}}=themeIntegration;const{page:currentPage,collection_id:collectionId=0}=this.TAEAppConfig.generalSettings;const isCollectionPage2=currentPage==="collection";const isSearchPage2=currentPage==="search";if(simplifiedIntegration.isOnboarding){const isCollectionSynced=this.checkSyncedCollection(collectionId);if(!isCollectionSynced){return}}if(isCollectionPage2&&collectionPage||isSearchPage2&&searchPage){const{collectionPage:collectionPageSelectors=[],searchPage:searchPageSelectors=[]}=productListSelector;const selectors=isCollectionPage2?collectionPageSelectors:searchPageSelectors;if(selectors.length===0){this.app.logger.warn("empty selectors");return}const customClassSelector=selectors[selectors.length-1];let attempts=0;const intervalId=setInterval(()=>{const hasCustomClass=!!document.querySelector(customClassSelector);const effectiveSelectors=hasCustomClass?selectors:selectors.slice(0,-1);const elements=effectiveSelectors.slice(0,-1);const mainElement=effectiveSelectors[effectiveSelectors.length-1];const selector=simplifiedIntegration.selectorFromAppEmbed||mainElement;const container=document.querySelector(selector);if(container){let insertionContainer;if(hasCustomClass){const allMatches=document.querySelectorAll(customClassSelector);insertionContainer=allMatches[allMatches.length-1]||container}else{insertionContainer=container}simplifiedIntegration.neededToHideElements=hasCustomClass?[customClassSelector]:elements;simplifiedIntegration.selectorFromMetafield=mainElement;simplifiedIntegration.selectedSelector=selector;this.renderPlaceholder(insertionContainer);this.collectionFilterModule?.initBlock();clearInterval(intervalId)}else if(++attempts>100){clearInterval(intervalId)}},50);this.TAEApp.updateConfig({simplifiedIntegration:{...simplifiedIntegration,...themeIntegration,enabled:true}})}if(instantSearch){this.setupISW()}}onAppStart(){document.addEventListener("DOMContentLoaded",()=>{this.ensurePlaceholder()})}oldldSICollectionFilterContainerDetected(){const productFilterBlock=document.querySelector(".boost-sd__filter-product-list");return!!productFilterBlock}checkSyncedCollection(collectionId){const{simplifiedIntegration}=this.TAEAppConfig;const{allSyncedCollections:{syncedCollections}}=simplifiedIntegration;const currentCollectionSynced=syncedCollections?.includes(collectionId);const collectionAllSynced=collectionId===0&&syncedCollections?.length>0;if(!currentCollectionSynced&&!collectionAllSynced){this.TAEApp.logger.warn("collection not synced -> fallback original theme");return false}return true}renderPlaceholder(originalContainer){const{simplifiedIntegration}=this.TAEAppConfig;const placeholder=simplifiedIntegration?.placeholder||"";const neededToHideElements=simplifiedIntegration?.neededToHideElements||[];const selectedSelector=simplifiedIntegration?.selectedSelector||"";originalContainer.style.display="none";this.hideNeededElements();const newProductFilterDiv=document.createElement("div");newProductFilterDiv.innerHTML=placeholder||"";newProductFilterDiv.className="boost-sd__filter-product-list boost-sd__placeholder-product-filter-tree";originalContainer.insertAdjacentElement("afterend",newProductFilterDiv);if(simplifiedIntegration){simplifiedIntegration.placeholderAdded=true;if(neededToHideElements&&selectedSelector){neededToHideElements.push(selectedSelector)}}}hideNeededElements(){const{simplifiedIntegration:{neededToHideElements}}=this.TAEAppConfig;if(neededToHideElements&&neededToHideElements.length>0){this.hideElements(neededToHideElements)}}removePlaceholder(){const{simplifiedIntegration:{placeholderAdded}}=this.TAEAppConfig;if(placeholderAdded){const placeholder=document.querySelector(".boost-sd__placeholder-product-filter-tree");if(placeholder instanceof HTMLElement){placeholder.remove()}}}hideElements(elements){if(!Array.isArray(elements))return;elements.forEach(selector=>{document.querySelectorAll(selector).forEach(el=>{if(el instanceof HTMLElement){el.style.display="none"}})})}setupISW(){this.TAEApp.updateConfig({taeSettings:{instantSearch:{enabled:true}}})}};SimplifiedIntegration.moduleName="SimplifiedIntegration";var CollectionFilter=class _CollectionFilter extends BoostTAEAppModule{constructor(){super(...arguments);this.initBlock=async()=>{const filterDom=document.querySelector(".boost-sd__filter-product-list:not(.boost-sd__filter-product-list--ready)");if(!filterDom){this.app.logger.error("Filter DOM not found");this.backwardCompatibilityV1Module?.legacyUpdateAppStatus("ready");return}this.assetFileLoaderModule?.preloadModuleScript("filter");const appConfig=this.TAEAppConfig;const{customization}=appConfig;if(typeof customization?.filter?.beforeRender==="function"){customization.filter.beforeRender()}const filterDomId=`${this.widgetId}-${generateUUID()}`;filterDom?.classList?.add("boost-sd__filter-product-list--ready");filterDom.id=filterDomId;const urlParams=this.prepareFilterAPIQueryParams();const response=await this.filterAPI(urlParams);const block={id:filterDomId,document:filterDom,widgetId:this.widgetId,defaultSort:urlParams.get("sort")||"",defaultParams:this.filterAPIDefaultParams,filterTree:{options:[]},dynamicBundles:[]};const backwardCompatibilityV1=this.backwardCompatibilityV1Module;backwardCompatibilityV1?.legacyAssignDefaultBlockAttributes(block,filterDom,"filter");const{html,bundles}=response;if(bundles){block.dynamicBundles=bundles}if(response.filter){response.filter.options=this.updateValuesOptions(response.filter.options);block.filterTree=response.filter}try{await Promise.all([this.assetFileLoaderModule?.assetLoadingPromise("themeCSS"),this.assetFileLoaderModule?.assetLoadingPromise("settingsCSS")])}catch{}if(html){filterDom.innerHTML=html}block.cache={[urlParams.toString()]:{...response,timestamp:new Date().getTime()}};this.TAEApp.registerBlock(block);this.saveFilterAPIResponseAnalyticData(response?.meta?.rid,response.bundles);this.syncAppConfigWithFilterAPIResponse(response);this.block=block;this.savePageLimitSettings();this.backwardCompatibilityV1Module?.legacyUpdateAppStatus("ready")}}get backwardCompatibilityV1Module(){return this.TAEApp.getModule(BackwardCompatibilityV1)}get b2bModule(){return this.TAEApp.getModule(B2B)}get fallbackModule(){return this.TAEApp.getModule(Fallback)}get simplifiedIntegrationModule(){return this.TAEApp.getModule(SimplifiedIntegration)}get analyticModule(){return this.TAEApp.getModule(Analytics)}get assetFileLoaderModule(){return this.TAEApp.getModule(AssetFilesLoader)}get extendAppConfig(){return {filterUrl:"https://services.mybcapps.com/bc-sf-filter/filter",filterSettings:Object.assign({swatch_extension:"png",...
{
swatch_settings: {"aquamarine":{"name":"aquamarine","type":"one_color","colorCodes":["#7FFFD4"],"imageUrl":""},"fuchsia kiss":{"name":"fuchsia kiss","type":"one_color","colorCodes":["#DA4998"],"imageUrl":""},"limelight green":{"name":"limelight green","type":"one_color","colorCodes":["#DDE693"],"imageUrl":""},"marigold muse":{"name":"marigold muse","type":"one_color","colorCodes":["#E86141"],"imageUrl":""},"mysterious green":{"name":"mysterious green","type":"one_color","colorCodes":["#014F4F"],"imageUrl":""},"navy":{"name":"navy","type":"one_color","colorCodes":["#000080"],"imageUrl":""},"orange peel":{"name":"orange peel","type":"one_color","colorCodes":["#FFCE77"],"imageUrl":""},"sorbet":{"name":"sorbet","type":"one_color","colorCodes":["#C7B6E2"],"imageUrl":""}},
}}, {"showFilterOptionCount":true,"showRefineBy":true,"showOutOfStockOption":false,"showSingleOption":true,"keepToggleState":true,"changeMobileButtonLabel":false,"sortingAvailableFirst":false,"showLoading":false,"activeScrollToTop":false,"productAndVariantAvailable":true,"availableAfterFiltering":false,"style":{"filterTitleTextColor":"rgba(35||31||32||1)","filterTitleFontSize":"","filterTitleFontWeight":500,"filterTitleFontTransform":"none","filterTitleFontFamily":"","filterOptionTextColor":"rgba(35||31||32||1)","filterOptionFontSize":15,"filterOptionFontFamily":"","filterMobileButtonTextColor":"rgba(255||255||255||1)","filterMobileButtonFontSize":"","filterMobileButtonFontWeight":"","filterMobileButtonFontTransform":"","filterMobileButtonFontFamily":"","filterMobileButtonBackgroundColor":""},"showVariantImageBasedOnSelectedFilter":"","isShortenUrlParam":false})};}get apiEndpoint(){let{filterUrl,searchUrl}=this.app.config;const{ssrUrl,generalSettings}=this.TAEAppConfig;if(generalSettings.ssr_version==="v2"&&ssrUrl){filterUrl=`${ssrUrl}/filter`;searchUrl=`${ssrUrl}/search`}const urlParams=new URLSearchParams(window.location.search);const searchQuery=urlParams.get("q");return isSearchPage()||searchQuery?searchUrl:filterUrl}get widgetId(){const{templateMetadata,generalSettings}=this.TAEAppConfig;const currentPage=generalSettings?.page||"collection";const widgetName=currentPage==="collection"?"collectionFilters":"searchPage";const widgetId=templateMetadata[widgetName]||"default";return widgetId}get filterAPIDefaultParams(){const{shop,templateSettings,templateMetadata,generalSettings,templateId,simplifiedIntegration}=this.TAEAppConfig;const historyParams=this.getHistoryParams();const productPerPage=typeof templateSettings?.themeSettings?.productList?.productsPerPage==="number"?templateSettings.themeSettings.productList.productsPerPage:16;const savedLimit=getLocalStorage(_CollectionFilter.LIMIT);const savedLimitSetting=getLocalStorage(_CollectionFilter.LIMIT_SETTING);const adminSettingChanged=savedLimitSetting&&savedLimitSetting!==`${productPerPage}`;const limit=adminSettingChanged?productPerPage:savedLimit&&!isNaN(Number(savedLimit))?Number(savedLimit):productPerPage;const widgetId=this.widgetId;const isMobileViewport=isMobileWidth();const viewportWidth=window.innerWidth;const showFilterTreeByDefault=templateSettings?.filterSettings?.filterLayout==="vertical"&&templateSettings?.filterSettings?.filterTreeVerticalStyle==="style-default"?true:false;const productPerRow=isMobileViewport?templateSettings?.themeSettings?.productList?.productsPerRowOnMobile||2:templateSettings?.themeSettings?.productList?.productsPerRowOnDesktop||3;const productImageMaxWidth=isMobileViewport?viewportWidth/productPerRow:viewportWidth/(productPerRow+(showFilterTreeByDefault?1:0));const deviceTypeByViewportWidth=detectDeviceByWidth();const showListViewDefault=templateSettings?.themeSettings?.additionalElements?.toolbar?.elements?.viewAs?.showListViewDefault;const defaultViewAs=showListViewDefault===true?"list":`grid--${isMobileWidth()?templateSettings?.themeSettings?.productList?.productsPerRowOnMobile||2:templateSettings?.themeSettings?.productList?.productsPerRowOnDesktop||3}`;return {_:"pf",t:Date.now().toString(),sid:generateUUID(),shop:shop.domain,page:Number(historyParams?.page||1),limit,sort:historyParams?.sort||getSortBy(),locale:generalSettings.current_locale,event_type:"init",pg:getCurrentPage(),build_filter_tree:true,collection_scope:generalSettings.collection_id||"0",money_format:shop.money_format,money_format_with_currency:shop.money_format_with_currency,widgetId,viewAs:defaultViewAs,device:deviceTypeByViewportWidth,first_load:true,productImageWidth:roundToNearest50(productImageMaxWidth),productPerRow,widget_updated_at:templateMetadata?.updatedAt,templateId,current_locale:(window?.Shopify?.routes?.root||"/")?.replace(/\/$/,""),simplifiedIntegration:simplifiedIntegration.enabled||false,customer_id:getCustomerId(),insert_banners:templateMetadata?.featureOptions?.enableBannerInterleaving||false,...addParamsLocale()};}savePageLimitSettings(){const{templateSettings}=this.TAEAppConfig;const productPerPage=typeof templateSettings?.themeSettings?.productList?.productsPerPage==="number"?templateSettings.themeSettings.productList.productsPerPage:16;const savedLimit=getLocalStorage(_CollectionFilter.LIMIT);const savedLimitSetting=getLocalStorage(_CollectionFilter.LIMIT_SETTING);const adminSettingChanged=savedLimitSetting&&savedLimitSetting!==`${productPerPage}`;const currentLimit=adminSettingChanged?productPerPage:savedLimit&&!isNaN(Number(savedLimit))?Number(savedLimit):productPerPage;if(typeof window!=="undefined"&&window.localStorage){try{localStorage.setItem(_CollectionFilter.LIMIT_SETTING,`${productPerPage}`);localStorage.setItem(_CollectionFilter.LIMIT,`${currentLimit}`)}catch(e){this.app.logger.error("Failed to save limit settings to localStorage",e)}}}syncAppConfigWithFilterAPIResponse(res){const{shop}=this.TAEAppConfig;if(res.meta?.money_format){shop.money_format=res.meta.money_format}if(res.meta?.money_format_with_currency){shop.money_format_with_currency=res.meta.money_format_with_currency}if(res.meta?.currency){shop.currency=res.meta.currency}this.app.updateConfig({shop});this.backwardCompatibilityV1Module?.legacyUpdateAppStatus("ready")}prepareFilterAPIQueryParams(){const{generalSettings,filterSettings,customization}=this.TAEAppConfig;const paramsHistory=this.getHistoryParams();const defaultParams=this.filterAPIDefaultParams;const urlParams=new URLSearchParams;Object.entries(defaultParams).forEach(([key,value])=>{urlParams.set(key,value!==void 0?value.toString():"")});urlParams.set("search_no_result",Object.keys(paramsHistory?.paramMap||{}).length===0?"true":"false");if(paramsHistory?.paramMap){Object.keys(paramsHistory.paramMap).forEach(key=>{paramsHistory.paramMap[key].forEach(v=>urlParams.append(`${key}[]`,key.startsWith(`${defaultParams._}_st_`)?convertValueRequestStockStatus(v).toString():v))})}const searchParams=new URLSearchParams(window.location.search);const searchQuery=searchParams.get("q");if(searchQuery){if(isVendorPage())urlParams.set("vendor",searchQuery);else if(isShopifyTypePage())urlParams.set("product_type",searchQuery);else urlParams.set("q",searchQuery);if(isCollectionPage()){urlParams.set("incollection_search","true");urlParams.set("event_type","incollection_search")}this.setSearchQueryParamsWithSuggetion(urlParams)}if(generalSettings.collection_tags?.length){generalSettings.collection_tags.forEach(tag=>{urlParams.append("tag[]",tag)})}if(filterSettings.sortingAvailableFirst){urlParams.set("sort_first","available")}const availableAfterFiltering=filterSettings?.availableAfterFiltering;const productAndVariantAvailable=filterSettings?.productAndVariantAvailable;const hasFilterParams=Array.from(urlParams.keys()).some(key=>key.startsWith("pf_"));const showAvailable=!availableAfterFiltering&&productAndVariantAvailable?"true":availableAfterFiltering?hasFilterParams?"true":"false":"false";urlParams.set("product_available",showAvailable);urlParams.set("variant_available",showAvailable);if(filterSettings.showOutOfStockOption){urlParams.set("zero_options","true")}this.b2bModule?.setQueryParams(urlParams);if(customization?.filter?.customizedAPIParams){const{customizedAPIParams}=customization.filter;Object.entries(customizedAPIParams).forEach(([key,value])=>{urlParams.set(key,value)})}return urlParams}setSearchQueryParamsWithSuggetion(params){const SUGGESTION_DATA="boostSDSuggestionData";const CLICK_SUGGESTION_TERM="boostSDClickSuggestionTerm";const term=getLocalStorage(CLICK_SUGGESTION_TERM);if(!term)return;const suggestionData=getLocalStorage(SUGGESTION_DATA);if(!suggestionData)return;params.set("query",suggestionData.query);params.set("parent_request_id",suggestionData.id);params.set("suggestion",term);params.set("item_rank",(suggestionData.suggestions.findIndex(item=>item===term)+1).toString());removeLocalStorage(CLICK_SUGGESTION_TERM);removeLocalStorage(SUGGESTION_DATA)}saveFilterAPIResponseAnalyticData(reqId,bundles){const type=isSearchPage()?"search":"filter";const analytic=this.analyticModule;if(reqId){analytic?.saveRequestId(type,reqId);if(bundles){analytic?.saveRequestId(type,reqId,bundles)}}analytic?.savePreAction(type)}formatPercentSaleLabel(to,from=0){let label="";if(!from){label=`under ${to}%`}else if(!to){label=`above ${from}%`}else{label=`${from}% - ${to}%`}return label}updateValuesOptions(options){if(!Array.isArray(options))return options;return options.map(option=>{if(option.filterType==="percent_sale"){option.values=option.values?.map(item=>{item.key=item.key.replace("*-",":").replace("-*",":").replace("-",":");item.label=this.formatPercentSaleLabel(item.to,item.from);return item})}return option})}async filterAPI(params){const appConfig=this.TAEAppConfig;const queryString=params.toString();const response=await fetch(`${this.apiEndpoint}?${queryString}`,{method:"GET"});const HTTP_STATUS_NEED_FALLBACK=[404,413,403,500];if(HTTP_STATUS_NEED_FALLBACK.includes(response.status)){if(appConfig.simplifiedIntegration?.enabled){const simplifiedIntegration=this.simplifiedIntegrationModule;simplifiedIntegration?.hideNeededElements();simplifiedIntegration?.removePlaceholder()}else{this.fallbackModule?.loadFilterProductFallback()}}return response.json()}getHistoryParams(){const url=new URL(window.location.href);const isXSS=isBadUrl(url);if(isXSS){this.app.logger.error("[Security] Potential XSS detected in URL parameters. Ignoring query params.",window.location.href);return}const rawSearch=url.search;const FILTER_HISTORY_PREFIX="pf_";const DEFAULT_SEPARATOR=",";const REGEX_ESCAPE_PATTERN=/[.*+?^${}()|[\]\\]/g;const{searchParams}=url;const sort=searchParams.get("sort");const page=searchParams.get("page");const paramMap={};const shortenToFullMap=getShortenToFullParamMap();const separator=this.TAEAppConfig.customization?.filter?.customizedAPIParams?.multipleValueSeparator||DEFAULT_SEPARATOR;const escapedSeparator=separator.replace(REGEX_ESCAPE_PATTERN,"\\$&");const encodedSeparator=encodeURIComponent(separator);const escapedEncodedSeparator=encodedSeparator.replace(REGEX_ESCAPE_PATTERN,"\\$&");const splitRegex=new RegExp(`${escapedSeparator}|${escapedEncodedSeparator}`);for(const key of searchParams.keys()){let actualKey=key;let values;if(shortenToFullMap[key]){actualKey=shortenToFullMap[key];const escapedKey=key.replace(REGEX_ESCAPE_PATTERN,"\\$&");const matchResult=rawSearch.match(new RegExp(`[?&]${escapedKey}=([^&]+)`));const rawVal=matchResult?matchResult[1]:"";const parts=rawVal.split(splitRegex);values=parts.map(p=>decodeURIComponent(p.replace(/\+/g," ")))}else{values=searchParams.getAll(key)}if(actualKey.startsWith(FILTER_HISTORY_PREFIX)&&!paramMap[actualKey]){if(actualKey==="pf_tag"){paramMap.tag=values}else{paramMap[actualKey]=values}}}return{paramMap,sort,page}}};CollectionFilter.moduleName="CollectionFilter";CollectionFilter.LIMIT="boostSDLimit";CollectionFilter.LIMIT_SETTING="boostSDLimitSetting";var BackwardCompatibilityV1=class extends BoostTAEAppModule{shouldInit(){const{templateMetadata:{themeLibVersion}={}}=this.TAEAppConfig;if(!themeLibVersion)return true;const feLibMajorVersion=themeLibVersion.split(".")[0];return Number(feLibMajorVersion)<=1}get collectionFilterModule(){return this.TAEApp.getModule(CollectionFilter)}init(){window.boostSDTaeUtils={lazyLoadImages,inViewPortHandler,initCollectionFilter:()=>{setTimeout(()=>{this.collectionFilterModule?.initBlock()})}}}onAppStart(){const app=this.TAEApp;const{env}=this.TAEAppConfig;const mergedCustomizedFilterParams={...(this.TAEAppConfig.customization?.filter?.customizedAPIParams || {}),...(window.boostSdCustomParams || {})};this.TAEApp.updateConfig(config=>{config.customization={...config.customization,filter:{...config.customization?.filter,customizedAPIParams:mergedCustomizedFilterParams}};return config});window.boostSdCustomParams=mergedCustomizedFilterParams;Object.assign(window.boostWidgetIntegration,{generalSettings:{...this.TAEAppConfig.generalSettings,templateId:this.TAEAppConfig.templateId},simplifiedIntegration:this.TAEAppConfig.simplifiedIntegration,taeSettings:this.TAEAppConfig.taeSettings,env,app:{[env]:{customization:{},...this.TAEAppConfig,...window.boostWidgetIntegration.app?.[env]}},customization:{...this.TAEAppConfig.customization,filter:{...this.TAEAppConfig.customization?.filter,customizedAPIParams:mergedCustomizedFilterParams}},regisCustomization:function(fc,scope){if(typeof fc==="function"&&fc.name&&!scope){const functionName=fc.name;window.boostWidgetIntegration.app[env].customization[functionName]=fc}else if(typeof fc==="function"&&fc.name&&scope){window.boostWidgetIntegration.app[env].customization[scope]=window.boostWidgetIntegration.app[env].customization[scope]||{};const functionName=fc.name;window.boostWidgetIntegration.app[env].customization[scope][functionName]=fc}else{app.logger.error("Invalid function or function does not have a name.")}}});Object.assign(window,{boostSDData:this.TAEAppDataObjects})}onBeforeAppStart(){Object.assign(window,{boostWidgetIntegration:{...window.boostWidgetIntegration,status:"initializing"}})}legacyUpdateAppStatus(status){Object.assign(window.boostWidgetIntegration,{status})}legacyIsUsingRecommendationAppV3(){return window.boostSDAppConfig?.themeInfo?.taeFeatures?.recommendation==="installed"}legacyInitRecommendationWidgets(widgets){window.boostWidgetIntegration.app[this.TAEAppConfig.env].recommendationWidgets=widgets}legacyAssignDefaultBlockAttributes(block,blockDOM,blockType){const{templateSettings}=this.app.config;Object.assign(block,{widgetInfo:templateSettings,templateSettings,app:window.boostWidgetIntegration.app?.[this.app.config.env],document:blockDOM,id:blockDOM.id||block.id,blockType:blockType||"filter"});if(!("widgetId"in block)){Object.assign(block,{widgetId:blockDOM.id||block.id})}}};BackwardCompatibilityV1.moduleName="BackwardCompatibilityV1";var BackInStock=class extends BoostTAEAppModule{constructor(){super(...arguments);this.initBlock=()=>{const bisDom=document.createElement("div");bisDom.id="bc-bis";bisDom.className="boost-sd__bis";bisDom.style.display="none";document.body.appendChild(bisDom);this.block={id:"bc-bis",document:bisDom};this.backwardCompatibilityV1Module?.legacyAssignDefaultBlockAttributes(this.block,bisDom,"backInStock");this.TAEApp.registerBlock(this.block)}}get extendAppConfig(){return {klaviyoBISUrl:"https://a.klaviyo.com/client/back-in-stock-subscriptions",backInStock:Object.assign(
{enabled:false,productSettings:{},displaySettings:{},isTurbo:false},
{"enabled":false,"productSettings":{"showOnPreOrderProduct":{"show":false},"showOnVariantOutOfStock":{"show":false},"hideOnSpecificCollection":{"hide":false,"collectionIds":[]},"hideOnSpecificTag":{"hide":false,"tags":[]}},"displaySettings":{"button":{"type":"floating","buttonText":"Notify me when available.","textColor":"#ffffff","backgroundColor":"#000000"},"signUpForm":{"header":"Notify me","description":"Get a notification as soon as this product is back in stock by signing up below","buttonText":"Notify me when available","textColor":"#ffffff","backgroundColor":"#000000"},"confirmationMessage":{"show":true,"message":"We will notify you when the item is available.","textColor":"#FFFFFF","iconColor":"#FFFFFF","backgroundColor":"#00A47C"}},"isTurbo":true,"notificationSettings":{"emailProvider":"boost","automatic":true}}
)};}get backwardCompatibilityV1Module(){return this.TAEApp.getModule(BackwardCompatibilityV1)}onModuleInit(){document.addEventListener("DOMContentLoaded",this.initBlock)}onModuleDestroy(){document.removeEventListener("DOMContentLoaded",this.initBlock)}};BackInStock.moduleName="BackInStock";var Cart=class extends BoostTAEAppModule{constructor(){super(...arguments);this.initBlock=()=>{this.block={id:"cart",document:document.body};this.backwardCompatibilityModule?.legacyAssignDefaultBlockAttributes(this.block,this.block.document,"cart");this.TAEApp.registerBlock(this.block)}}get extendAppConfig(){return{customization:{cart:{}}}}get backwardCompatibilityModule(){return this.TAEApp.getModule(BackwardCompatibilityV1)}onModuleInit(){document.addEventListener("DOMContentLoaded",this.initBlock)}onMouduleDestroy(){document.removeEventListener("DOMContentLoaded",this.initBlock)}};Cart.moduleName="Cart";var CountdownTimer=class extends BoostTAEAppModule{constructor(){super(...arguments);this.initBlock=()=>{if(this.block)return;const countdownTimerDom=document.querySelector(".boost-sd__countdown-timer-wrapper");if(!countdownTimerDom)return;const{template}=this.TAEAppConfig;if(typeof template?.countdownTimerPlaceholder==="string"){countdownTimerDom.innerHTML=template.countdownTimerPlaceholder}this.block={id:countdownTimerDom.id||"boost-sd-countdown-timer",document:countdownTimerDom};this.block.blockType="countdownTimer";this.TAEApp.registerBlock(this.block)}}onModuleInit(){if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",this.initBlock)}else{this.initBlock()}document.addEventListener("shopify:section:load",this.initBlock)}onModuleDestroy(){document.removeEventListener("DOMContentLoaded",this.initBlock);document.removeEventListener("shopify:section:load",this.initBlock)}};CountdownTimer.moduleName="CountdownTimer";var PreOrder=class extends BoostTAEAppModule{constructor(){super(...arguments);this.initBlock=()=>{const preOrderDom=document.querySelector(".boost-sd__preOrder-container");const{customization,template}=this.TAEAppConfig;if(typeof customization?.preOrder?.beforeRender==="function"){customization.preOrder.beforeRender()}if(!preOrderDom){return}if(typeof template?.preOrderPlaceholder==="string"){preOrderDom.innerHTML=template.preOrderPlaceholder}this.block={id:preOrderDom.id||"bc-pre-order",document:preOrderDom};this.backwardCompatibilityV1Module?.legacyAssignDefaultBlockAttributes(this.block,preOrderDom,"preOrder");this.TAEApp.registerBlock(this.block)}}get extendAppConfig(){return{customization:{preOrder:{}}}}get backwardCompatibilityV1Module(){return this.TAEApp.getModule(BackwardCompatibilityV1)}onModuleInit(){document.addEventListener("DOMContentLoaded",this.initBlock)}onModuleDestroy(){document.removeEventListener("DOMContentLoaded",this.initBlock)}};PreOrder.moduleName="PreOrder";var PredictiveBundle=class extends BoostTAEAppModule{constructor(){super(...arguments);this.initBlock=()=>{const predictiveBundleDom=document.querySelector(".boost-sd-widget-predictive-bundle");if(!predictiveBundleDom){return}this.block={id:predictiveBundleDom.id||"bc-predictive-bundle",document:predictiveBundleDom};this.backwardCompatibilityV1Module?.legacyAssignDefaultBlockAttributes(this.block,predictiveBundleDom,"predictiveBundle");this.TAEApp.registerBlock(this.block)}}get extendAppConfig(){return{predictiveBundle:{multiBundleSupport:false}}}get backwardCompatibilityV1Module(){return this.TAEApp.getModule(BackwardCompatibilityV1)}onModuleInit(){document.addEventListener("DOMContentLoaded",this.initBlock)}onModuleDestroy(){document.removeEventListener("DOMContentLoaded",this.initBlock)}};PredictiveBundle.moduleName="PredictiveBundle";var Recommendation=class extends BoostTAEAppModule{constructor(){super(...arguments);this.blocks={};this.initBlocks=()=>{if(this.backwardCompatibilityV1Module?.legacyIsUsingRecommendationAppV3()){this.backwardCompatibilityV1Module?.legacyInitRecommendationWidgets({});return}const{recommendationWidgets}=this.TAEAppConfig;this.backwardCompatibilityV1Module?.legacyInitRecommendationWidgets(recommendationWidgets);
;const recommendationWidgetDOMs=document.querySelectorAll('[id^="boost-sd-widget-"]');for(const widgetDOM of recommendationWidgetDOMs){widgetDOM.innerHTML=`<!-- TEMPLATE RECOMMENDATION PLACEHOLDER--><div class="boost-sd__rc-pl"><div class="boost-sd__rc-title-pl"> <span class="boost-sd__rc-pl-item" style="width: 150px; height: 30px;"></span></div><div class="boost-sd__rc-product-list-pl"> <span class="boost-sd__rc-pl-item"></span> <span class="boost-sd__rc-pl-item"></span> <span class="boost-sd__rc-pl-item"></span> <span class="boost-sd__rc-pl-item"></span></div><div class="boost-sd__rc-info-pl"> <span class="boost-sd__rc-pl-item"></span> <span class="boost-sd__rc-pl-item"></span> <span class="boost-sd__rc-pl-item"></span></div></div><style> .boost-sd__rc-pl { width: 100%; min-height: 600px; } .boost-sd__rc-pl-item { display: block; width: 100%; height: 20px; background: rgba(0, 0, 0, 0.07); margin-bottom: 16px; animation: 2s infinite place-holder-animation; } .boost-sd__rc-title-pl { width: 100%; display: flex; padding: 0 0 30px; } .boost-sd__rc-product-list-pl { display: flex; width: 100%; padding: 0; gap: 32px; position: relative; margin-bottom: 20px; } .boost-sd__rc-product-list-pl .boost-sd__rc-pl-item:nth-child(3), .boost-sd__rc-product-list-pl .boost-sd__rc-pl-item:nth-child(4) { display: none; } .boost-sd__rc-product-list-pl .boost-sd__rc-pl-item { display: block; flex-wrap: wrap; width: calc(50% - 8px); height: 218px; } .boost-sd__rc-info-pl .boost-sd__rc-pl-item:nth-child(2) { width: 80% } .boost-sd__rc-info-pl .boost-sd__rc-pl-item:nth-child(3) { width: 50% } @media only screen and (min-width: 768px) { .boost-sd__rc-pl-item { margin-bottom: 8px; } .boost-sd__rc-title-pl { padding-bottom: 60px; } .boost-sd__rc-product-list-pl .boost-sd__rc-pl-item:nth-child(3), .boost-sd__rc-product-list-pl .boost-sd__rc-pl-item:nth-child(4) { display: block; } .boost-sd__rc-product-list-pl .boost-sd__rc-pl-item { height: 382px; width: calc(25% - 8px); } .boost-sd__rc-info-pl .boost-sd__rc-pl-item:first-child { width: 50% } .boost-sd__rc-info-pl .boost-sd__rc-pl-item:nth-child(2) { width: 40% } .boost-sd__rc-info-pl .boost-sd__rc-pl-item:nth-child(3) { width: 30% } } @keyframes place-holder-animation { 0% { opacity: 1; } 50% { opacity: 0.5; } 100% { opacity: 1; } }</style>`;this.initBlock(widgetDOM)}}}get extendAppConfig(){const recommendationWidgets={};
recommendationWidgets['home-page'] = {"homepage-247386":{"params":{"shop":"tupperware-usa.myshopify.com","recommendationType":"newest-arrivals","limit":12,"layoutDisplay":"carousel"},"widgetName":"Just dropped","widgetStatus":"draft","widgetDesignSettings":{"tenantId":"tupperware-usa.myshopify.com","widgetId":"defaultSettings","layoutDisplay":"carousel","templateType":"customization","themePreview":"","numberOfRecommendProduct":12,"numberOfProductPerRow":4,"titleAlignment":"left","titleTextColor":"#3D4246","titleFont":"Poppins","titleTextTransform":"capitalize","titleFontSize":14,"titleFontStyle":"100"}},"homepage-137866":{"params":{"shop":"tupperware-usa.myshopify.com","recommendationType":"bestsellers","limit":12,"layoutDisplay":"carousel"},"widgetName":"Best Sellers","widgetStatus":"draft","widgetDesignSettings":{"tenantId":"tupperware-usa.myshopify.com","widgetId":"defaultSettings","layoutDisplay":"carousel","templateType":"customization","themePreview":"","numberOfRecommendProduct":12,"numberOfProductPerRow":4,"titleAlignment":"left","titleTextColor":"#3D4246","titleFont":"Poppins","titleTextTransform":"capitalize","titleFontSize":14,"titleFontStyle":"100"}},"homepage-452818":{"params":{"shop":"tupperware-usa.myshopify.com","recommendationType":"recently-viewed","limit":12,"layoutDisplay":"carousel"},"widgetName":"You Recently viewed","widgetStatus":"live","widgetDesignSettings":{"widgetId":"homepage-452818","tenantId":"tupperware-usa.myshopify.com","layoutDisplay":"carousel","numberOfProductPerRow":4,"numberOfRecommendProduct":12,"templateType":"default","themePreview":""}}}
recommendationWidgets['cart-page'] = {"cartpage-442807":{"params":{"shop":"tupperware-usa.myshopify.com","recommendationType":"recently-viewed","limit":12,"layoutDisplay":"carousel"},"widgetName":"Still interested in this?","widgetStatus":"draft","widgetDesignSettings":{"tenantId":"tupperware-usa.myshopify.com","widgetId":"defaultSettings","layoutDisplay":"carousel","templateType":"customization","themePreview":"","numberOfRecommendProduct":12,"numberOfProductPerRow":4,"titleAlignment":"left","titleTextColor":"#3D4246","titleFont":"Poppins","titleTextTransform":"capitalize","titleFontSize":14,"titleFontStyle":"100"}},"cartpage-632738":{"params":{"shop":"tupperware-usa.myshopify.com","recommendationType":"related-items","limit":12,"layoutDisplay":"carousel","modelType":"Alternative","secondaryAlgorithm":"bestsellers"},"widgetName":"Similar Products","widgetStatus":"draft","widgetDesignSettings":{"tenantId":"tupperware-usa.myshopify.com","widgetId":"defaultSettings","layoutDisplay":"carousel","templateType":"customization","themePreview":"","numberOfRecommendProduct":12,"numberOfProductPerRow":4,"titleAlignment":"left","titleTextColor":"#3D4246","titleFont":"Poppins","titleTextTransform":"capitalize","titleFontSize":14,"titleFontStyle":"100"}}}
recommendationWidgets['product-page'] = {"productpage-517686":{"params":{"shop":"tupperware-usa.myshopify.com","recommendationType":"recently-viewed","limit":12,"layoutDisplay":"carousel"},"widgetName":"Recently viewed","widgetStatus":"draft","widgetDesignSettings":{"tenantId":"tupperware-usa.myshopify.com","widgetId":"defaultSettings","layoutDisplay":"carousel","templateType":"customization","themePreview":"","numberOfRecommendProduct":12,"numberOfProductPerRow":4,"titleAlignment":"left","titleTextColor":"#3D4246","titleFont":"Poppins","titleTextTransform":"capitalize","titleFontSize":14,"titleFontStyle":"100"}},"productpage-222104":{"params":{"shop":"tupperware-usa.myshopify.com","recommendationType":"frequently-bought-together","limit":2,"layoutDisplay":"bundle","modelType":"FBT","secondaryAlgorithm":"bestsellers"},"widgetName":"Frequently Bought Together","widgetStatus":"draft","widgetDesignSettings":{"tenantId":"tupperware-usa.myshopify.com","widgetId":"productpage-222104","bundleStyle":"style1","layoutDisplay":"bundle","numberOfRecommendProduct":2,"templateType":"customization","themePreview":"","titleAlignment":"left","titleFont":"Poppins","titleFontSize":14,"titleFontStyle":"100","titleTextColor":"#3D4246","titleTextTransform":"capitalize"}}}
recommendationWidgets['collection-page'] = {"collectionpage-623801":{"params":{"shop":"tupperware-usa.myshopify.com","recommendationType":"newest-arrivals","limit":12,"layoutDisplay":"carousel"},"widgetName":"Just dropped","widgetStatus":"draft","widgetDesignSettings":{"tenantId":"tupperware-usa.myshopify.com","widgetId":"defaultSettings","layoutDisplay":"carousel","templateType":"customization","themePreview":"","numberOfRecommendProduct":12,"numberOfProductPerRow":4,"titleAlignment":"left","titleTextColor":"#3D4246","titleFont":"Poppins","titleTextTransform":"capitalize","titleFontSize":14,"titleFontStyle":"100"}},"collectionpage-581834":{"params":{"shop":"tupperware-usa.myshopify.com","recommendationType":"trending-products","limit":12,"layoutDisplay":"carousel","calculatedBasedOn":"purchase-events","rangeOfTime":"7-day"},"widgetName":"Most Popular Products","widgetStatus":"draft","widgetDesignSettings":{"tenantId":"tupperware-usa.myshopify.com","widgetId":"defaultSettings","layoutDisplay":"carousel","templateType":"customization","themePreview":"","numberOfRecommendProduct":12,"numberOfProductPerRow":4,"titleAlignment":"left","titleTextColor":"#3D4246","titleFont":"Poppins","titleTextTransform":"capitalize","titleFontSize":14,"titleFontStyle":"100"}}}
recommendationWidgets['defaultSettings'] = {"titleAlignment":"center","titleTextColor":"#3D4246","titleFont":"Assistant","titleTextTransform":"capitalize","titleFontSize":14,"titleFontStyle":"200","buttonBackgroundColor":"","buttonTextColor":"","tenantId":"tupperware-usa.myshopify.com","widgetId":"defaultSettings"}
;return{recommendUrl:"https://services.mybcapps.com/discovery/recommend",recommendationWidgets}}get backwardCompatibilityV1Module(){return this.TAEApp.getModule(BackwardCompatibilityV1)}get assetFileLoaderModule(){return this.TAEApp.getModule(AssetFilesLoader)}onModuleInit(){document.addEventListener("DOMContentLoaded",this.initBlocks)}onModuleDestroy(){document.removeEventListener("DOMContentLoaded",this.initBlocks)}initBlock(dom){const block={id:dom.id,document:dom};this.assetFileLoaderModule?.preloadModuleScript("recommendation");this.backwardCompatibilityV1Module?.legacyAssignDefaultBlockAttributes(block,dom,"recommendation");block.widgetId=dom.id?.replace("boost-sd-widget-","");this.TAEApp.registerBlock(block);this.blocks[block.id]=block}};Recommendation.moduleName="Recommendation";var Search=class extends BoostTAEAppModule{constructor(){super(...arguments);this.block={id:"bc-instant-search",document:document.createElement("div")};this.initBlock=()=>{if(!this.enabled)return;this.assetFileLoaderModule?.preloadModuleScript("instant-search");const{document:document2,id}=this.block;document2.id=id;window.document.body.appendChild(document2);this.backwardCompatibilityV1Module?.legacyAssignDefaultBlockAttributes(this.block,document2,"instantSearch");this.TAEApp.registerBlock(this.block)}}get backwardCompatibilityV1Module(){return this.TAEApp.getModule(BackwardCompatibilityV1)}get assetFileLoaderModule(){return this.TAEApp.getModule(AssetFilesLoader)}get extendAppConfig(){return{searchUrl:"https://services.mybcapps.com/bc-sf-filter/search"}}get enabled(){const{taeSettings,templateId,simplifiedIntegration}=this.TAEAppConfig;const isInstantSearchEnabled=taeSettings?.instantSearch?.enabled&&templateId&&(!simplifiedIntegration.enabled||simplifiedIntegration.instantSearch);return isInstantSearchEnabled}onModuleInit(){document.addEventListener("DOMContentLoaded",this.initBlock)}onMouduleDestroy(){document.removeEventListener("DOMContentLoaded",this.initBlock)}};Search.moduleName="Search";var SEOEnhancement=class extends BoostTAEAppModule{shouldInit(){return this.TAEAppConfig.generalSettings.enableRobot}init(){const isSupportedPage=isCollectionPage()||isSearchPage();if(!isSupportedPage)return;if(document.querySelector('meta[name="robots"]'))return;const hasFilterParam=checkExistFilterOptionParam();const hasOrphanQ=!!getQueryParamByKey("q")&&!isSearchPage();if(!hasFilterParam&&!hasOrphanQ)return;const meta=document.createElement("meta");meta.name="robots";meta.content="noindex,nofollow,nosnippet";meta.setAttribute("data-boost-injected","seo-enhancement");document.head.append(meta)}get extendAppConfig(){return{generalSettings:{enableRobot:true}}}};SEOEnhancement.moduleName="SEOEnhancement";var ShopifyMetafield=class extends BoostTAEAppModule{get extendAppConfig(){return {shop:{name:"Tupperware Brand",url:"https://www.tupperware.com",domain:"tupperware-usa.myshopify.com",currency:"USD",money_format: "\u0026#36;{{amount}}",money_format_with_currency: "\u0026#36;{{amount}} USD"},integration:{},...
{
integration: Object.assign({}, {"reviews":"yotpo"}),
}
};}};ShopifyMetafield.moduleName="ShopifyMetafield";var ShopifyDataObject=class extends BoostTAEAppModule{get dataObject(){return {user:
{
}
,product:{...(
""
|| {})}};}};ShopifyDataObject.moduleName="ShopifyDataObject";var TemplateManagement=class extends BoostTAEAppModule{get extendAppConfig(){let templateId="";templateId=templateId=
"CvK9UbrpH5"
|| "";let templateMetadata={};templateMetadata=
{"collectionFilters":"CvK9UbrpH5/themes/dawn/main__0__liquid","productList":"CvK9UbrpH5/product-list/main__0__liquid","productItem":"CvK9UbrpH5/product-item/main__0__liquid","collectionHeader":"CvK9UbrpH5/collection-header/main__0__liquid","searchPage":"CvK9UbrpH5/themes/dawn/search__0__liquid","mostPopularProducts":"CvK9UbrpH5/no-search-result-page/most-popular-products__0__liquid","recommendation":"CvK9UbrpH5/recommendation/main__0__liquid","recommendationDynamicBundle":"CvK9UbrpH5/recommendation/dynamic-bundle__0__liquid","recommendationEmbeddedBundle":"CvK9UbrpH5/recommendation/embedded-bundle__0__liquid","instantSearchWidget":"CvK9UbrpH5/instant-search-widget/main__0__liquid","quickView":"CvK9UbrpH5/quickview/main__0__liquid","cart":"CvK9UbrpH5/cart/main__0__liquid","placeholderFilterTree":"CvK9UbrpH5/place-holder/place-holder__0__liquid","placeholderRecommendation":"CvK9UbrpH5/recommendation-placeholder/main__0__liquid","preOrder":"CvK9UbrpH5/pre-order/main__0__liquid","preOrderPlaceholder":"CvK9UbrpH5/pre-order-placeholder/main__0__liquid","backInStock":"CvK9UbrpH5/back-in-stock/main__0__liquid","templateVersion":"2.24.0","setupVersion":"v3","applyUniqueVersion":true,"themeNameLib":"dawn","themeLibVersion":"1.41.0","themeCssVersion":"2.24.0","themeCssUrl":"https://cdn.boostcommerce.io/widget-integration/theme/dawn/2.24.0/main.css","settingsCssUrl":"https://cdn.shopify.com/s/files/1/0550/5912/0300/files/boost-app-do-not-delete-this-file-tupperware-usa__CvK9UbrpH5-settings.css?v=1774018644","updatedAt":1781098050,"featureOptions":{},"customizeCssUrl":"https://cdn.boostcommerce.io/widget-integration/theme/customization/tupperware-usa.myshopify.com/CvK9UbrpH5/customization-1737750428831.css","customizeJsUrl":"https://cdn.boostcommerce.io/widget-integration/theme/customization/tupperware-usa.myshopify.com/CvK9UbrpH5/customization-1736886489884.js","integratedTheme":{"139572412588":{"collectionPage":false,"searchPage":true,"instantSearch":true,"productListSelector":{"collectionPage":["#MainContent div[id$=\"__banner\"][id^=\"shopify-section-template\"]","#MainContent div[id$=\"__product-grid\"][id^=\"shopify-section-template\"]"],"searchPage":["#MainContent section[id$=\"__main\"][id^=\"shopify-section-template\"]"]}},"143708291244":{"collectionPage":false,"searchPage":true,"instantSearch":true,"productListSelector":{"collectionPage":["#MainContent div[id$=\"__banner\"][id^=\"shopify-section-template\"]","#MainContent div[id$=\"__product-grid\"][id^=\"shopify-section-template\"]"],"searchPage":["#MainContent section[id$=\"__main\"][id^=\"shopify-section-template\"]"]}},"147577143468":{"collectionPage":false,"searchPage":true,"instantSearch":true,"productListSelector":{"collectionPage":["#MainContent div[id$=\"__banner\"][id^=\"shopify-section-template\"]","#MainContent div[id$=\"__product-grid\"][id^=\"shopify-section-template\"]"],"searchPage":["#MainContent section[id$=\"__main\"][id^=\"shopify-section-template\"]"]}}},"upgradeLog":"API upgrade theme lib version to 1.41.0 by "}
|| {};let templateSettings={};templateSettings=
{"appPreferenceSettings":{"watermark":false},"preOrderSettings":{"buttonText":"Pre-order","deliveryText":"This is a pre-order. Items will ship based on the estimated delivery date.","showDeliveryText":false},"generalSettings":{"addCollectionToProductUrl":true,"breakpointmobile":"575px","breakpointtabletportraitmin":"576px","breakpointtabletportraitmax":"991px","breakpointtabletlandscapetmin":"992px","breakpointtabletlandscapemax":"1199px","breakpointdesktop":"1200px","enableTrackingOrderRevenue":true},"searchSettings":{"searchPanelBlocks":{"searchTermSuggestions":{"label":"Popular Searches","searchTermList":["bowls","lids","cups","modular mates","pitcher","bowl","vintage","canister","round container","servalier"],"backup":[],"type":"based_on_data","active":true},"mostPopularProducts":{"label":"Trending products","productList":["supersonic-chopper-compact","modular-mates-rectangular-4","classic-sheer-pitcher","aquavibe-water-bottle-40-oz-1-2-l","eco-bottles-small","hourglass-salt-and-pepper-shakers","snack-stor-container","slim-line-pitcher-with-strainer-set-of-2","vintage-servalier-36-piece-set","impressions-classic-bowls-icelandic-mist"],"backup":[],"type":"based_on_data","active":true},"products":{"label":"Products","pageSize":25,"active":true,"displayImage":true},"collections":{"label":"Collections","pageSize":25,"active":true,"displayImage":false,"displayDescription":false,"excludedValues":[]},"pages":{"label":"Recipes","pageSize":25,"active":true,"displayImage":true,"displayExcerpt":false},"searchEmptyResultMessages":{"active":true,"label":"We are sorry! We couldn't find results for \"{{ terms }}\".{{ breakline }}But don't give up – check the spelling or try less specific search terms."},"searchTips":{"label":"Search tips","active":false,"searchTips":"Please double-check your spelling.{{ breakline }}Use more generic search terms.{{ breakline }}Enter fewer keywords.{{ breakline }}Try searching by product type, brand, model number or product feature."}},"suggestionNoResult":{"search_terms":{"label":"Popular Searches","status":true,"data":["bowls","lids","cups","modular mates","pitcher","bowl","vintage","canister","round container","servalier"],"type":"based_on_data","backup":[]},"products":{"label":"Trending products","status":true,"data":["supersonic-chopper-compact","modular-mates-rectangular-4","classic-sheer-pitcher","aquavibe-water-bottle-40-oz-1-2-l","eco-bottles-small","hourglass-salt-and-pepper-shakers","snack-stor-container","slim-line-pitcher-with-strainer-set-of-2","vintage-servalier-36-piece-set","impressions-classic-bowls-icelandic-mist"],"type":"based_on_data","backup":[]}},"enableInstantSearch":true,"productAvailable":true,"showSuggestionProductImage":true,"showSuggestionProductPrice":true,"showSuggestionProductSalePrice":true,"showSuggestionProductSku":false,"showSuggestionProductVendor":false,"suggestionBlocks":[{"type":"suggestions","label":"Popular suggestions","status":"active","number":5},{"type":"collections","label":"Collections","status":"active","number":6,"excludedValues":[]},{"type":"products","label":"Products","status":"active","number":6},{"type":"pages","label":"Recipes","status":"active","number":3}],"searchBoxOnclick":{"recentSearch":{"label":"Recent searches","status":true,"number":"3"},"searchTermSuggestion":{"label":"Popular searches","status":true,"data":["bowls","lids","cups","modular mates","pitcher","bowl","vintage","canister","round container","servalier"],"backup":[],"type":"based_on_data"},"productSuggestion":{"label":"Trending products","status":true,"data":["7035590803628","6845088366764","7873224245420","8480768753836","8293106483372","8432266477740","8316207464620","7661776076972","8286453072044","7873224736940"],"backup":[],"type":"based_on_data"}},"suggestionStyle":"style2","suggestionStyle1ProductItemType":"list","suggestionStyle1ProductPosition":"none","suggestionStyle1ProductPerRow":"1","suggestionStyle2ProductItemType":"list","suggestionStyle2ProductPosition":"right","suggestionStyle2ProductPerRow":"2","suggestionStyle3ProductItemType":"list","suggestionStyle3ProductPosition":"right","suggestionStyle3ProductPerRow":"3"},"filterSettings":{"showFilterOptionCount":true,"showRefineBy":true,"showOutOfStockOption":false,"showSingleOption":true,"keepToggleState":true,"changeMobileButtonLabel":false,"sortingAvailableFirst":false,"showLoading":false,"activeScrollToTop":false,"showVariantImageBasedOnSelectedFilter":"","productAndVariantAvailable":true,"availableAfterFiltering":false,"isShortenUrlParam":false,"filterTreeMobileStyle":"style2","filterTreeVerticalStyle":"style-default","filterTreeHorizontalStyle":"style1","stickyFilterOnDesktop":false,"stickyFilterOnMobile":false,"style":{"filterTitleTextColor":"#121212","filterTitleFontSize":"inherit","filterTitleFontWeight":"inherit","filterTitleFontTransform":"none","filterTitleFontFamily":"inherit","filterOptionTextColor":"#121212","filterOptionFontSize":"inherit","filterOptionFontFamily":"inherit"},"filterLayout":"vertical"},"additionalElementSettings":{"customSortingList":"best-selling|relevance|title-ascending|title-descending|price-ascending|price-descending","enableCollectionSearch":true},"themeSettings":{"productItems":{"general":{"borderLayout":"noBorder","subLayout":"subLayout_1_2","backgroundColor":"#ffffff","backgroundColorOnHover":"#ffffff","borderColor":"#E8E8E1","borderColorOnHover":"#E8E8E1"},"productImg":{"elements":{"productSaleLabel":{"shape":"capsule","displayType":"text","displayOptions":"always","color":"#FFFFFF","backgroundColor":"#00524F","fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","fontWeight":"inherit","isEnable":true},"productSoldOutLabel":{"hideOtherLabelsWhenSoldOut":true,"shape":"capsule","displayType":"text","displayOptions":"always","color":"#FFFFFF","backgroundColor":"#898989","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","fontWeight":"inherit","isEnable":false},"productCustomLabelByTag":{"shape":"capsule","color":"#FFFFFF","backgroundColor":"#00A47C","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","fontWeight":"inherit","isEnable":false}},"grid":{"top":{"direction":"horizontal","elements":{"left":["saleLabel","soldOutLabel","customLabelByTag"]}}},"aspectRatioType":"square","cropPosition":"center","hoverEffect":"zoom-in"},"styleSettings":{"selectOptionBtn":{"showOnHovering":false,"showOn":"desktopAndMobile","displayType":"text","shape":"capsule","imgSrc":"https://boost-cdn-prod.bc-solutions.net/icon/add-to-cart.svg","iconPosition":"left","backgroundColor":"#ffffff","backgroundColorOnHover":"#ffffff","borderColor":"#00524f","borderColorOnHover":"#00524f","textColor":"#00524f","textColorOnHover":"#00524f","buttonPosition":"top","fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontFamily":"inherit","fontStyle":"inherit","textTransform":"capitalize","alignment":"left","position":7,"buttonStyling":"solid","fontWeight":"inherit","width":"100%"},"qvBtn":{"showOn":"desktopOnly","showOnHovering":false,"displayType":"text","shape":"rectangle","imgSrc":"https://boost-cdn-prod.bc-solutions.net/icon/quick-view.svg","iconPosition":"left","backgroundColor":"#ffffff","backgroundColorOnHover":"#ffffff","borderColor":"#00524f","borderColorOnHover":"#00524f","textColor":"#00524f","textColorOnHover":"#00524f","fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontFamily":"inherit","fontStyle":"inherit","textTransform":"capitalize","alignment":"left","position":8,"buttonStyling":"outline","fontWeight":"inherit","width":"100%"}},"productInfo":{"textAlign":"left","elements":{"title":{"color":"#121212","fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","isEnable":true,"fontWeight":"inherit"},"swatches.1":{"showOptionValueOnHovering":true,"shape":"circle","changeProductImageOn":"hover","isEnable":false},"vendor":{"color":"#121212","fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","isEnable":false,"fontWeight":"inherit"},"price":{"showCentAsSuperscript":false,"showCurrencyCodes":true,"compareAtPricePosition":"left","showSavingDisplay":false,"priceColor":"#121212","priceFontSizeScale":100,"priceFontFamily":"inherit","priceFontStyle":"inherit","priceFontSize":"inherit","priceFontSizeTabletPortrait":"inherit","priceFontSizeTabletLandscape":"inherit","priceFontSizeMobile":"inherit","salePriceColor":"#121212","salePriceFontSizeScale":100,"salePriceFontFamily":"inherit","salePriceFontStyle":"inherit","salePriceFontSize":"inherit","salePriceFontSizeTabletPortrait":"inherit","salePriceFontSizeTabletLandscape":"inherit","salePriceFontSizeMobile":"inherit","compareAtPriceColor":"#898989","compareAtPriceFontSizeScale":100,"compareAtPriceFontFamily":"inherit","compareAtPriceFontStyle":"inherit","compareAtPriceFontSize":"inherit","compareAtPriceFontSizeTabletPortrait":"inherit","compareAtPriceFontSizeTabletLandscape":"inherit","compareAtPriceFontSizeMobile":"inherit","savingDisplayColor":"#DD3300","savingDisplayFontSizeScale":100,"savingDisplayFontFamily":"inherit","savingDisplayFontStyle":"inherit","savingDisplayFontSize":"inherit","savingDisplayFontSizeTabletPortrait":"inherit","savingDisplayFontSizeTabletLandscape":"inherit","savingDisplayFontSizeMobile":"inherit","isEnable":true,"priceFontWeight":"inherit","salePriceFontWeight":"inherit","compareAtPriceFontWeight":"inherit","savingDisplayFontWeight":"inherit"},"rating":false,"swatches.2":{"showOptionValueOnHovering":true,"shape":"circle","changeProductImageOn":"hover","isEnable":false},"swatches.3":{"showOptionValueOnHovering":true,"shape":"circle","changeProductImageOn":"hover","isEnable":false},"selectOptionBtn":{"buttonType":"selectOptionBtn","action":"productPage","isEnable":true},"qvBtn":{"buttonType":"qvBtn","isEnable":false}}}},"additionalElements":{"pagination":{"paginationType":"infinite_scroll","productCount":{"showProductCount":false},"button":{"shape":"rectangle","color":"#121212","borderColor":"#121212","textTransform":"none","fontSizeScale":100,"fontSize":14,"fontSizeTabletPortrait":14,"fontSizeTabletLandscape":14,"fontSizeMobile":14,"fontFamily":"Assistant","fontStyle":"normal-400"}},"toolbar":{"layout":"1_1","filterText":{"color":"#121212","fontFamily":"inherit","fontStyle":"inherit","fontSizeScale":100,"textTransform":"none","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"refineByText":{"color":"#121212","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"elements":{"viewAs":{"fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","color":"#121212","fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","listType":"2,3,4columns","isEnable":false,"fontWeight":"inherit"},"showLimitList":{"fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","color":"#121212","fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","isEnable":false,"fontWeight":"inherit"},"sorting":{"fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","color":"#121212","fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","isEnable":true,"fontWeight":"inherit"},"productCount":{"fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","color":"#121212","fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","isEnable":false,"fontWeight":"inherit"}}},"collectionHeader":{"isEnable":false,"layout":2,"contentPosition":"middle-center","elements":{"breadCrumb":{"showCollectionTitle":true,"showCollectionList":true,"showPagination":false,"placement":"on-top","alignment":"middle-left","fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","color":"#121212","isEnable":true,"fontWeight":"inherit"},"collectionImage":{"size":"medium","parallaxEffect":false,"directionParallax":"vertical","isEnable":true},"collectionTitle":{"textAlign":"center","textTransform":"capitalize","fontSizeScale":100,"fontSize":40,"fontSizeTabletPortrait":40,"fontSizeTabletLandscape":40,"fontSizeMobile":30,"fontFamily":"inherit","fontStyle":"inherit","collectionTitleColor":"#121212","isEnable":true,"fontWeight":"inherit"},"productCount":{"fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","color":"#121212","isEnable":false,"fontWeight":"inherit"},"collectionDescription":{"fontSize":null,"fontSizeTabletPortrait":null,"fontSizeTabletLandscape":null,"fontSizeMobile":null,"isEnable":true}}}},"quickView":{"showProductImage":true,"thumbnailPosition":"topLeft","isEnableProductVendor":false,"showCurrencyCodes":false,"buttonOverall":{"shape":"rectangle","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"buyItNowBtn":{"enable":true,"color":"#ffffff","hoverColor":"#ffffff","backgroundColor":"#00524f","hoverBackgroundColor":"#00524f","borderColor":"#00524f","hoverBorderColor":"#00524f","textTransform":"capitalize"},"addToCartBtn":{"color":"#00524f","hoverColor":"#00524f","backgroundColor":"#ffffff","hoverBackgroundColor":"#ffffff","borderColor":"#00524f","hoverBorderColor":"#00524f","textTransform":"capitalize"}},"cart":{"enableCart":false,"cartStyle":"side","showCurrencyCodes":false,"enableWidgetRecommendation":false,"widgetRecommendationId":"","autoOpenAjaxCartOnAddToCart":false,"generalLayout":{"shape":"rectangle","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"checkoutBtn":{"textTransform":"capitalize","color":"#ffffff","hoverColor":"#ffffff","backgroundColor":"#00524f","hoverBackgroundColor":"#00524f","borderColor":"#00524f","hoverBorderColor":"#00524f"},"viewCartBtn":{"textTransform":"capitalize","color":"#00524f","hoverColor":"#00524f","backgroundColor":"#ffffff","hoverBackgroundColor":"#ffffff","borderColor":"#00524f","hoverBorderColor":"#00524f"}},"productList":{"productsPerPage":16,"productsPerRowOnDesktop":4,"productsPerRowOnMobile":2},"searchPage":{"headerBackground":"#F6F6F8","elements":{"searchHeaderText":{"color":"#121212","textTransform":"capitalize","fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontFamily":"inherit","fontStyle":"inherit","fontWeight":"inherit"},"placeholderSearch":{"color":"#898989","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"scopedSuggestionLabel":{"color":"#121212","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"scopedSuggestionItem":{"color":"#121212","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","backgroundColor":"#E8E9EB","fontWeight":"inherit"},"titleTab":{"color":"#121212","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"productCount":{"color":"#121212","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"collectionAndPageTabTitle":{"color":"#121212","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"collectionAndPageTabDescription":{"color":"#121212","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"tipForYou":{"color":"#121212","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"line":{"color":"#E8E8E1"}}},"filterTree":{"elements":{"refineBy":{"color":"#121212"},"filterTitle":{"color":"#121212","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"filterOption":{"color":"#121212","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"productCount":{"color":"#898989","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"line":{"color":"#E8E8E1"},"checkbox":{"color":"#E8E8E1"},"searchBox":{"color":"#E8E8E1"}}},"isw":{"backgroundSuggestion":"#FAFAFA","backgroundProducts":"#ffffff","hoverBackgroundSuggestion":"#E8E9EB","hoverBackgroundProducts":"#F8F8F8","elements":{"titleMultiElement":{"color":"#898989","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"results":{"color":"#121212","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"didYouMean":{"color":"#121212","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"didYouMeanResults":{"color":"#121212","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","backgroundColor":"#F6F6F7","fontWeight":"inherit"},"productTitle":{"color":"#121212","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"productVendor":{"color":"#898989","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"productPrice":{"color":"#121212","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"productSalePrice":{"color":"#121212","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"productCompareAtPrice":{"color":"#898989","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"productSKU":{"color":"#898989","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontWeight":"inherit"},"viewAllBtn":{"color":"#121212","textTransform":"none","fontSizeScale":100,"fontFamily":"inherit","fontStyle":"inherit","fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","backgroundColor":"#ffffff","hoverBackgroundColor":"#E8E9EB","fontWeight":"inherit"}}}},"currentAppIntegration":{},"themeName":"dawn","srcThemeNameLib":"dawn"}
|| {};const template={};
;template["quickView"]=`<!-- TEMPLATE QUICK VIEW -->{% if product.original_images != nil %}{% assign image_array = product.original_images %}{% else %}{% assign image_array = product.images_info %}{% endif %}{% if image_array.size == 0 %}{% assign image_array = "no_image" | split: ' ' %}{% endif %}{% assign show_prev_next_btns = image_array.size > 4 %}{% assign money_format = request.money_format | strip_html -%}{% capture productData %}{"id": "{{ product.id }}","handle": "{{ product.handle }}","variantId": "{{ product.variant_id }}","splitProduct": "{{ product.split_product }}","variants": {{ product.variants | json | escape }},"tags": {{ product.tags | json | escape }},"images": {{ image_array | json | escape }},"category": "{{ product.product_type | escape }}","tags" : {{ product.tags | json | escape }}}{% endcapture %}{% if product.variants.size == 1 and product.variants[0].title == 'Default Title' %}{% assign is_default_option = true %}{% else %}{% assign is_default_option = false %}{% endif %}<div class="boost-sd__modal" id="boost-sd__modal-quickview" aria-modal="true" role="dialog" aria-label="Quick view detail for product {{ product.title | escape }}" data-product-id='{{ productData.id }}' data-product='{{ productData | json_encode }}'><div class="boost-sd__modal-backdrop"></div><div class="boost-sd__modal-container"> <div tabindex="-1" class="boost-sd__modal-wrapper"> <div class="boost-sd__quick-view" product-id="{{ product.id }}"> <div class="boost-sd__quick-view-product-image"> <div class="boost-sd__slider boost-sd__slider--thumb-vertical"> <div class="boost-sd__thumbs-container boost-sd__thumbs-container--vertical"> {% if show_prev_next_btns %} <div class="boost-sd__thumbs-container-prev-button boost-sd__thumbs-container-prev-button--vertical"><button type="button" aria-label="Previous" class="boost-sd__button boost-sd__button--circle boost-sd__button--full-width" style="padding: 0px;" disabled=""><span class="boost-sd__icon" style="margin: 0px;"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 10 7" height="7" width="10" class="boost-sd__thumbs-container-button-icon"> <path stroke-linejoin="round" stroke-linecap="round" stroke="currentColor" d="M0.764024 5.51189L5.00002 1.28789L9.23602 5.51189"></path> </svg> </span></button></div> {% endif %} <div class="boost-sd__thumbs-container-thumbs boost-sd__thumbs-container-thumbs--vertical"> {% if request.previewMode == true %} {% for image in image_array limit: 4 %} <div class="boost-sd__thumbs-container-thumbs-item"> <div class="boost-sd__slide"> <div class="boost-sd__product-image-wrapper boost-sd__product-image-wrapper--aspect-ratio-3-4"> <div class="boost-sd__product-image"> <img id="product-image-{{ product.id }}" class="boost-sd__product-image-img boost-sd__product-image-img--main" {% if image.src %} src="{{ image.src }}" {% else %} src="https://cdn.shopify.com/extensions/201f4d7b-8d39-43a4-82de-e6f412341695/0.0.0/assets/boost-pfs-no-image.jpg?v=1677838268" {% endif %} fetchpriority="auto" sizes="200px" decoding="async" loading="eager" alt="{{ product.title | escape }}" width="auto" height="auto" /> </div> </div> </div> </div> {% endfor %} {% else %} {% for image in image_array %} <div class="boost-sd__thumbs-container-thumbs-item"> <div class="boost-sd__slide"> <div class="boost-sd__product-image-wrapper boost-sd__product-image-wrapper--aspect-ratio-3-4"> <div class="boost-sd__product-image" tabindex="0"> <img id="product-image-{{ product.id }}" class="boost-sd__product-image-img boost-sd__product-image-img--main" {% if image.src %} src="{{ image.src }}" {% else %} src="https://cdn.shopify.com/extensions/201f4d7b-8d39-43a4-82de-e6f412341695/0.0.0/assets/boost-pfs-no-image.jpg?v=1677838268" {% endif %} fetchpriority="auto" sizes="200px" decoding="async" loading="eager" alt="Load image {{ forloop.index }} in slider for product {{ product.title | escape }}" width="auto" height="auto" /> </div> </div> </div> </div> {% endfor %} {% endif %} </div> {% if show_prev_next_btns %} <div class="boost-sd__thumbs-container-next-button boost-sd__thumbs-container-next-button--vertical"><button type="button" aria-label="Next" class="boost-sd__button boost-sd__button--circle boost-sd__button--full-width" style="padding: 0px;"><span class="boost-sd__icon" style="margin: 0px;"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 10 7" height="7" width="10" class="boost-sd__thumbs-container-button-icon"> <path stroke-linejoin="round" stroke-linecap="round" stroke="currentColor" d="M0.764024 5.51189L5.00002 1.28789L9.23602 5.51189"></path> </svg> </span></button></div> {% endif %} </div> <div class="slick-slider"> {% if request.previewMode == true %} {% for image in image_array limit: 1 %} <div class="boost-sd__slide"> <div class="boost-sd__product-image-wrapper boost-sd__product-image-wrapper--aspect-ratio-3-4"> <div class="boost-sd__product-image-row boost-sd__product-image-row--top"> <div class="boost-sd__product-image-column boost-sd__product-image-column--in-top boost-sd__product-image-column--left"> {% assign hideOtherLabelsWhenSoldOut = true -%} {% assign money_format = request.money_format | strip_html -%} {% assign removePriceDecimal = false -%} {% assign showCentAsSuperscript = false -%} {% assign decimalDelimiter = '' -%} {% assign withoutTrailingZeros = true -%} {% if hideOtherLabelsWhenSoldOut != true -%} {% assign compareAtPriceMin = product.compare_at_price_min | default: 0 -%} {% if compareAtPriceMin > product.price_min -%} {% assign percent = compareAtPriceMin | minus: product.price_min | times: 100 | divided_by: compareAtPriceMin| round -%} {% assign salePercent = percent | append: '%' -%} {% assign saleAmount = compareAtPriceMin | minus: product.price_min | format_currency: money_format, showCentAsSuperscript, removePriceDecimal, decimalDelimiter, withoutTrailingZeros -%} {% assign productItemSaleTranslated = "productItem.productItemSale" | translate: translations, "Sale" | replace: '{{salePercent}}', salePercent | replace: '{{saleAmount}}', saleAmount -%} <div class="boost-sd__product-label boost-sd__product-label--text boost-sd__product-label--capsule boost-sd__product-label--sale"> <span class="boost-sd__product-label-text"> <span>{{ productItemSaleTranslated }}</span> </span> </div> {% endif -%} {% else -%} {% if product.available == false -%} {% else -%} {% assign compareAtPriceMin = product.compare_at_price_min | default: 0 -%} {% if compareAtPriceMin > product.price_min -%} {% assign percent = compareAtPriceMin | minus: product.price_min | times: 100 | divided_by: compareAtPriceMin| round -%} {% assign salePercent = percent | append: '%' -%} {% assign saleAmount = compareAtPriceMin | minus: product.price_min | format_currency: money_format, showCentAsSuperscript, removePriceDecimal, decimalDelimiter, withoutTrailingZeros -%} {% assign translatedText = "productItem.productItemSale" | translate: translations, "Sale" | replace: '{{salePercent}}', salePercent | replace: '{{saleAmount}}', saleAmount %} <div class="boost-sd__product-label boost-sd__product-label--text boost-sd__product-label--capsule boost-sd__product-label--sale"> <span class="boost-sd__product-label-text"> <span>{{ translatedText }}</span> </span> </div> {% endif -%} {% endif -%} {% endif -%} </div> </div> <div class="boost-sd__product-image"> <img id="product-image-{{ product.id }}" class="boost-sd__product-image-img boost-sd__product-image-img--main" {% if image.src %} src="{{ image.src }}" {% else %} src="https://cdn.shopify.com/extensions/201f4d7b-8d39-43a4-82de-e6f412341695/0.0.0/assets/boost-pfs-no-image.jpg?v=1677838268" {% endif %} fetchpriority="auto" sizes="200px" decoding="async" loading="eager" alt="{{ product.title | escape }}" width="auto" height="auto" /> </div> </div> </div> {% endfor %} {% else %} {% for image in image_array %} <div class="boost-sd__slide"> <div class="boost-sd__product-image-wrapper boost-sd__product-image-wrapper--aspect-ratio-3-4"> <div class="boost-sd__product-image-row boost-sd__product-image-row--top"> <div class="boost-sd__product-image-column boost-sd__product-image-column--in-top boost-sd__product-image-column--left"> {% assign hideOtherLabelsWhenSoldOut = true -%} {% assign money_format = request.money_format | strip_html -%} {% assign removePriceDecimal = false -%} {% assign showCentAsSuperscript = false -%} {% assign decimalDelimiter = '' -%} {% assign withoutTrailingZeros = true -%} {% if hideOtherLabelsWhenSoldOut != true -%} {% assign compareAtPriceMin = product.compare_at_price_min | default: 0 -%} {% if compareAtPriceMin > product.price_min -%} {% assign percent = compareAtPriceMin | minus: product.price_min | times: 100 | divided_by: compareAtPriceMin| round -%} {% assign salePercent = percent | append: '%' -%} {% assign saleAmount = compareAtPriceMin | minus: product.price_min | format_currency: money_format, showCentAsSuperscript, removePriceDecimal, decimalDelimiter, withoutTrailingZeros -%} {% assign productItemSaleTranslated = "productItem.productItemSale" | translate: translations, "Sale" | replace: '{{salePercent}}', salePercent | replace: '{{saleAmount}}', saleAmount -%} <div class="boost-sd__product-label boost-sd__product-label--text boost-sd__product-label--capsule boost-sd__product-label--sale"> <span class="boost-sd__product-label-text"> <span>{{ productItemSaleTranslated }}</span> </span> </div> {% endif -%} {% else -%} {% if product.available == false -%} {% else -%} {% assign compareAtPriceMin = product.compare_at_price_min | default: 0 -%} {% if compareAtPriceMin > product.price_min -%} {% assign percent = compareAtPriceMin | minus: product.price_min | times: 100 | divided_by: compareAtPriceMin| round -%} {% assign salePercent = percent | append: '%' -%} {% assign saleAmount = compareAtPriceMin | minus: product.price_min | format_currency: money_format, showCentAsSuperscript, removePriceDecimal, decimalDelimiter, withoutTrailingZeros -%} {% assign translatedText = "productItem.productItemSale" | translate: translations, "Sale" | replace: '{{salePercent}}', salePercent | replace: '{{saleAmount}}', saleAmount %} <div class="boost-sd__product-label boost-sd__product-label--text boost-sd__product-label--capsule boost-sd__product-label--sale"> <span class="boost-sd__product-label-text"> <span>{{ translatedText }}</span> </span> </div> {% endif -%} {% endif -%} {% endif -%} </div> </div> <div class="boost-sd__product-image"> <img id="product-image-{{ product.id }}" class="boost-sd__product-image-img boost-sd__product-image-img--main" {% if image.src %} src="{{ image.src }}" {% else %} src="https://cdn.shopify.com/extensions/201f4d7b-8d39-43a4-82de-e6f412341695/0.0.0/assets/boost-pfs-no-image.jpg?v=1677838268" {% endif %} fetchpriority="auto" sizes="200px" decoding="async" loading="eager" alt="{{ product.title | escape }}" width="auto" height="auto" /> </div> </div> </div> {% endfor %} {% endif %} </div> </div> </div> <div tabindex="0" class="boost-sd__quick-view-product-info"> <h2 class="boost-sd__quick-view-title">{{ product.title | escape }}</h2> <div class="boost-sd__quick-view-price"> <span class="boost-sd__format-currency"><span class="">{{ product.price_min | format_currency: money_format }}</span></span> </div> {% if is_default_option == false %} {% for swatch in product.options_with_values %} <div class="boost-sd__product-swatch"> <div class="boost-sd__product-swatch-title">{{ swatch.label | escape }}</div> <div class="boost-sd__product-swatch-options"> {% for value in swatch.values %} <div class="boost-sd__product-swatch-option"> <div class="boost-sd__radio"> <div class="boost-sd__tooltip"> {% if swatch.original_name == 'color' %} <div class="boost-sd__tooltip-content">{{ value.title | strip_html | escape }}</div> {% endif %} <input id="product-swatch-qv-{{ product.id }}-{{ value.title | strip_html | escape }}" class="boost-sd__radio-input boost-sd__radio-input--hidden" type="radio" value="{{ value.title | strip_html | escape }}" checked="" /> {% if swatch.original_name == 'color' %} {% assign backgroundSwatch = "background-color:" | append: value.title | strip_html | escape %} {% assign domain = request.shop %} {% assign imageName = value.title | strip_html | downcase | strip | escape %} {% if imageName contains " " %} {% assign imageName = imageName | replace: ' ', "-" %} {% endif %} {% assign url = "//" | append: domain | append: "/cdn/shop/files/" | append: imageName | append: ".png" %} {% assign backgroundSwatch = backgroundSwatch | append: "; background-image: url('" | append: url | append: "');"%} <label role="radio" tabindex="0" aria-label="{{ swatch.original_name }}:{{ value.title }}" for="product-swatch-qv-{{ product.id }}-{{ value.title | strip_html | escape }}" class="boost-sd__radio-label boost-sd__radio-label--hide-text boost-sd__radio-label--large" style="{{ backgroundSwatch }}"> {{ value.title | strip_html | escape }} </label> {% else %} <label role="radio" tabindex="0" aria-label="{{ swatch.original_name }}:{{ value.title }}" for="product-swatch-qv-{{ product.id }}-{{ value.title | strip_html | escape }}" class="boost-sd__radio-label boost-sd__radio-label--in-quick-view"> {{ value.title | strip_html | escape }} </label> {% endif %} </div> </div> </div> {% endfor %} </div> </div> {% endfor %} {% endif %} <div class="boost-sd__quick-view-quantity"> <p class="boost-sd__quick-view-quantity-title">{{ "quickView.qvQuantity" | translate: translations, 'Quantity' }}</p> <div class="boost-sd__input-number boost-sd__input-number--md"> <div class="boost-sd__input-number-btn-wrapper"> <button type="button" aria-label="Decrease quantity" class="boost-sd__button boost-sd__button--full-width boost-sd__input-number-btn"><span>-</span></button> </div> <input type="number" aria-label="Item quantity" class="boost-sd__input-number-input" value="1" /> <div class="boost-sd__input-number-btn-wrapper"> <button type="button" aria-label="Increase quantity" class="boost-sd__button boost-sd__button--full-width boost-sd__input-number-btn"><span>+</span></button> </div> </div> <div class="boost-sd__quick-view-quantity-error" style="color: red; font-size: 90%; display: none">{{ "quickView.qvQuantityError" | translate: translations, 'Please input quantity' }}</div> </div> {% comment %} TODO check preorder {% endcomment %} <div class="boost-sd__quick-view-preorder"> <!-- TEMPLATE PRE_ORDER WITH PAYMENT --> {% comment %} TODO check preorder {% endcomment %} {% if product.variants %} {% assign variants = product.variants %} {% else %} {% assign variants = variants %} {% endif %} {% for variant in variants %} {% if variant.preorder %} {% assign paymentType = variant.preorder.payment.type %} {% assign discountType = variant.preorder.payment.discountType %} {% assign discountValue = variant.preorder.payment.discountValue %} {% assign originalPrice = variant.price %} {% assign paymentLabel = '' %} {% if paymentType == 'full' %} {% assign paymentLabel = 'Full payment' %} {% endif %} {% if paymentType == 'partial' %} {% assign paymentLabel = 'Partial payment' %} {% endif %} {% if paymentType == 'none' %} {% assign paymentLabel = 'No payment' %} {% endif %} {% assign money_format = request.money_format | strip_html -%} {% assign money_rate = request.currency_rate | strip_html -%} {% if discountType == 'percentage' %} {% assign percentNum = originalPrice | times: discountValue | divided_by: 100 %} {% assign discountedPrice = originalPrice | times: 1.0 | minus: percentNum %} {% elsif discountType == 'amount' %} {% assign discountValue = discountValue | times: money_rate %} {% assign discountedPrice = originalPrice | times: 1.0 | minus: discountValue %} {% else %} {% assign discountedPrice = originalPrice %} {% endif %} {% assign removePriceDecimal = false -%} {% assign showCentAsSuperscript = false -%} {% assign decimalDelimiter = '' -%} {% assign withoutTrailingZeros = true -%} {% assign originalPriceFormat = originalPrice | format_currency: money_format, showCentAsSuperscript, removePriceDecimal, decimalDelimiter, withoutTrailingZeros -%} {% assign discountedPriceFormat = discountedPrice | format_currency: money_format, showCentAsSuperscript, removePriceDecimal, decimalDelimiter, withoutTrailingZeros -%} {% assign discountValueFormat = discountValue | format_currency: money_format, showCentAsSuperscript, removePriceDecimal, decimalDelimiter, withoutTrailingZeros %} <div class="boost-sd__preorder" tabindex="0" data-variant-id="{{ variant.id }}" role="region" aria-labelledby="preorder-title" aria-describedby="preorder-description"> <div class="boost-sd__preorder-option"> <h2 id="preorder-title" class="boost-sd__preorder-title">{{ paymentLabel }}</h2> <div id="preorder-description" class="boost-sd__preorder-discount" aria-live="polite"> {% if discountType == 'percentage' %} <span class="boost-sd__preorder-save">Save {{ discountValue }}%</span> {% elsif discountType == 'amount' %} <span class="boost-sd__preorder-save">Save {{ discountValueFormat }}</span> {% endif %} <div class="boost-sd__preorder-price"> {% if discountType != 'none' %} <span class="boost-sd__preorder-original-price" aria-label="Original Price: {{ originalPriceFormat }}">{{ originalPriceFormat }}</span> {% endif %} <span class="boost-sd__preorder-discounted-price" aria-label="Discounted Price: {{ discountedPriceFormat }}">{{ discountedPriceFormat }}</span> </div> </div> </div> </div> {% endif %} {% endfor %} {% assign button_label = 'Pre-Order' %} {% assign preOrderButtonText = variants[0].preorder.settings.buttonText %} {% assign preOrderDeliveryText = variants[0].preorder.settings.deliveryText %} {% if preOrderButtonText and preOrderButtonText != '' %} {% assign button_label = preOrderButtonText %} {% endif %} <button type="button" aria-label='{{ button_label }}' class="boost-sd__button boost-sd__button--border boost-sd__button--rectangle boost-sd__button--large boost-sd__button--preorder"> <span class="boost-sd__button-text" aria-hidden="true"> {{ button_label }} </span> </button> <p tabindex="0" class="boost-sd__preorder-note"> <strong class="boost-sd__preorder-note-title">Please note: </strong><span class="boost-sd__preorder-note-text">{{ preOrderDeliveryText }}</span> </p> </div> <div class="boost-sd__quick-view-btn"> <button type="button" class="boost-sd__button boost-sd__button--border boost-sd__button--rectangle boost-sd__button--large boost-sd__btn-add-to-cart"> <span class="boost-sd__button-text"> {{ "productItem.atcAvailableLabel" | translate: translations, 'Add to cart' }} </span> </button> <button type="button" class="boost-sd__button boost-sd__button--border boost-sd__button--rectangle boost-sd__button--large boost-sd__btn-buy-now"> <span class="boost-sd__button-text">{{ "quickView.buyItNowBtnLabel" | translate: translations, 'Buy it now' }}</span> </button> </div> <a class="boost-sd__quick-view-details-link" href="/products/{{ product.handle }}">{{ "quickView.qvViewFullDetails" | translate: translations, 'View full details' }}</a> </div> </div> <button type="button" aria-label='{{ "close" | translate: translations, "Close" }}' class="boost-sd__button boost-sd__button--transparent boost-sd__button--float boost-sd__modal-close-btn"> <svg class="boost-sd__modal-close-svg" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M19.3536 5.35355C19.5488 5.15829 19.5488 4.84171 19.3536 4.64645C19.1583 4.45118 18.8417 4.45118 18.6464 4.64645L12 11.2929L5.35355 4.64645C5.15829 4.45118 4.84171 4.45118 4.64645 4.64645C4.45118 4.84171 4.45118 5.15829 4.64645 5.35355L11.2929 12L4.64645 18.6464C4.45118 18.8417 4.45118 19.1583 4.64645 19.3536C4.84171 19.5488 5.15829 19.5488 5.35355 19.3536L12 12.7071L18.6464 19.3536C18.8417 19.5488 19.1583 19.5488 19.3536 19.3536C19.5488 19.1583 19.5488 18.8417 19.3536 18.6464L12.7071 12L19.3536 5.35355Z" fill="#222222"></path> </svg> </button> </div></div></div>`;
;template["cart"]=`<!-- TEMPLATE CART -->{% comment %} This Template contains a few variables built from the client js side {% endcomment %}{% assign current_locale = '' %}{% if locale != "" or locale != null %}{% assign current_locale = locale %}{% endif %}`;
;template["refineBy"]=`<!-- TEMPLATE REFINE BY --><div class='boost-sd__refine-by-vertical-refine-by'><div class='boost-sd__refine-by-vertical-refine-by-title'> <div class='boost-sd__refine-by-vertical-refine-by-heading'>{{ "refine" | translate: translations, "Refine By" }}</div> <button type='button' aria-label='{{ "clearAll" | translate: translations, "Clear All" }}' id='boost-sd__button--clear-all-filters' class='boost-sd__button boost-sd__button--clear' data-metadata='{ "action": { "clearAllFilter": "" } }'> <span class='boost-sd__button-text' data-metadata='{ "action": { "clearAllFilter": "" } }'>{{ "clearAll" | translate: translations, "Clear All" }}</span> </button></div><div class='boost-sd__refine-by-vertical-refine-by-list'> {% for refineByOption in refineBy.options %} <button metadata='{"action": { "clearFilter": {{ refineByOption.metaData | json | escape }} } }' class='boost-sd__refine-by-vertical-refine-by-item' aria-label='{{ "clearAll" | translate: translations, "Clear All" }}' id='{{refineByOption.data.value | downcase | replace: " ", "-" | append: "-clear-filter" | simpleMd5 }}'> <div metadata='{"action": { "clearFilter": {{ refineByOption.metaData | json | escape }} } }' class='boost-sd__refine-by-vertical-refine-by-type'> <span metadata='{"action": { "clearFilter": {{ refineByOption.metaData | json | escape }} } }' class='boost-sd__refine-by-vertical-refine-by-option'> {{ refineByOption.data.label | escape }}: </span> <span metadata='{"action": { "clearFilter": {{ refineByOption.metaData | json | escape }} } }' class='boost-sd__refine-by-vertical-refine-by-value'> {% if refineByOption.type == 'range' %} {% if refineByOption.data.key == 'pf_p_price' or refineByOption.data.key == 'pf_vp_variants_price' %} {{ refineByOption.data.value.lower | currency_format: refineByOption.data.moneyFormatValue }} - {{ refineByOption.data.value.upper | currency_format: refineByOption.data.moneyFormatValue }} {% else %} {{ refineByOption.data.value.lower | escape }} - {{ refineByOption.data.value.upper | escape }} {% endif %} {% else %} {{ refineByOption.data.valueDisplay | escape }} {% endif %} </span> </div> <svg metadata='{"action": { "clearFilter": {{ refineByOption.metaData | json | escape }} } }' class='boost-sd__refine-by-vertical-refine-by-clear' xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' role='img' aria-label='{{ "clearAll" | translate: translations, "Clear All" }}' fill='#222'> <path metadata='{"action": { "clearFilter": {{ refineByOption.metaData | json | escape }} } }' fill-rule="evenodd" clip-rule="evenodd" d="M7.41401 6.00001L11.707 1.70701C12.098 1.31601 12.098 0.684006 11.707 0.293006C11.316 -0.0979941 10.684 -0.0979941 10.293 0.293006L6.00001 4.58601L1.70701 0.293006C1.31601 -0.0979941 0.684006 -0.0979941 0.293006 0.293006C-0.0979941 0.684006 -0.0979941 1.31601 0.293006 1.70701L4.58601 6.00001L0.293006 10.293C-0.0979941 10.684 -0.0979941 11.316 0.293006 11.707C0.488006 11.902 0.744006 12 1.00001 12C1.25601 12 1.51201 11.902 1.70701 11.707L6.00001 7.41401L10.293 11.707C10.488 11.902 10.744 12 11 12C11.256 12 11.512 11.902 11.707 11.707C12.098 11.316 12.098 10.684 11.707 10.293L7.41401 6.00001Z" fill="#3D4246"> </path> </svg> </button> {% endfor %} </div></div>`;
;template["filterOptionBoxItem"]=`{% comment %} This Template contains a few variables built from the client js side {% endcomment %}{% if request.previewMode == true %}<li class="boost-sd__filter-option-item boost-sd__filter-option-box-item"><button role='checkbox' aria-label='{{ value.key | escape_once | strip_html }}' aria-checked='false' class='boost-sd__filter-option-item-button boost-sd__filter-option-item-button--as-button'> <span class='boost-sd__filter-option-item-label'> {% if option.displayAllValuesInUppercaseForm %} {{ value.key | escape | upcase }} {% else %} {{ value.key | escape }} {% endif %} </span></button></li>{% else %}<li class='{{ className }}'><button id='{{ actionId }}' data-action='{{ dataAction }}' role='checkbox' aria-label='Find product with {{ label | escape }} is {{ value.label | escape_once | strip_html }}' aria-checked='false' class='boost-sd__filter-option-item-button boost-sd__filter-option-item-button--as-button'> <span data-action='{{ dataAction }}' class='boost-sd__filter-option-item-label'> {% if displayAllValuesInUppercaseForm %} {{ value.label | escape | upcase }} {% else %} {{ value.label | escape }} {% endif %} </span></button></li>{% endif %}`;
;template["filterOptionListItem"]=`{% comment %} This Template contains a few variables built from the client js side {% endcomment %}{% if request.previewMode == true %}<li class="boost-sd__filter-option-item boost-sd__filter-option-list-option-item"><button role="checkbox" aria-checked="false" aria-label="{{ value.key | escape_once }}" class="boost-sd__filter-option-item-button boost-sd__filter-option-item-button--as-button boost-sd__filter-option-item-button--with-checkbox"> {% if option.filterType == "variants_price" or option.filterType == "price" %} {% if value.from == 0 %} {{ "under" | translate: translations, "Under" }} {{ value.to | format_currency: option.moneyFormatValue }} {% elsif value.to == nil %} {{ "above" | translate: translations, "Above" }} {{ value.from | format_currency: option.moneyFormatValue }} {% elsif value.from != 0 and value.to != nil %} {{ value.from | format_currency: option.moneyFormatValue }} - {{ value.to | format_currency: option.moneyFormatValue }} {% endif %} {% elsif option.filterType == "percent_sale" %} {% if value.from == nil %} {{ "under" | translate: translations, "Under" }} {{ value.to }} {% elsif value.to == nil %} {{ "above" | translate: translations, "Above" }} {{ value.from }} {% elsif value.from != 0 and value.to != nil %} {{ value.from }}% - {{ value.to }}% {% endif %} {% else %} <span class="boost-sd__filter-option-item-label"> {% if option.displayAllValuesInUppercaseForm %} {% if option.filterType == "stock" or option.filterType == "collection" %} {{ value.label | upcase | escape }} {% else %} {{ value.key | upcase | escape }} {% endif %} {% else %} {% if option.filterType == "stock" or option.filterType == "collection" %} {{ value.label | escape }} {% else %} {{ value.key | escape }} {% endif %} {% endif %} </span> {% endif %} {% if filterSettings.showFilterOptionCount %} <span aria-label="Number of products: ({{ value.doc_count }})" class="boost-sd__filter-option-item-amount">({{ value.doc_count }})</span> {% endif %} </button></li>{% else %}<li class='boost-sd__filter-option-item boost-sd__filter-option-list-option-item'><button id='{{ actionId }}' data-action='{{ dataAction }}' role='checkbox' aria-checked='false' aria-label='Find product with {{ label | escape }} is {{ value.label | escape_once | strip_html }}' class='{{ className }}'> <span data-action='{{ dataAction }}' class='boost-sd__filter-option-item-label'> {% if displayAllValuesInUppercaseForm %} {{ value.label | upcase | escape }} {% else %} {{ value.label | escape }} {% endif %} </span> {% if showDocCount %} <span data-action='{{ dataAction }}' aria-label='Number of products: ({{ value.doc_count }})' class='boost-sd__filter-option-item-amount'> ({{ value.doc_count }})</span> {% endif %} </button></li>{% endif %}`;
;template["filterOptionSwatchItem"]=`{% comment %} This Template contains a few variables built from the client js side {% endcomment %}{% assign swatchListStyle = option.swatchStyle == 'circle-list' or option.swatchStyle == 'square-list' %}{% if request.previewMode == true %}{% assign swatchTyleClass = "" %}{% if swatchListStyle %}{% assign swatchTyleClass = "list" %}{% else %}{% assign swatchTyleClass = "grid" %}{% endif %}<li class='boost-sd__filter-option-item boost-sd__filter-option-swatch-item'><button title='{{ value.key | strip_html | escape }}' role='checkbox' aria-checked='false' class='boost-sd__filter-option-item-button boost-sd__filter-option-item-button--as-button'> <span class='boost-sd__filter-option-swatch-item-img boost-sd__filter-option-swatch-item-img--{{swatchTyleClass}} boost-sd__filter-option-swatch-item-img--circle' style='background-color: {{ value.key | escape }};'></span> {% if swatchListStyle %} <span class='boost-sd__filter-option-item-label'> {% if option.displayAllValuesInUppercaseForm %} {{ value.key | escape | upcase }} {% else %} {{ value.key | escape }} {% endif %} </span> <span aria-label='Number of products: ({{ value.doc_count }})' class='boost-sd__filter-option-item-amount'>({{ value.doc_count }})</span> {% endif %} </button></li>{% else %}<li data-action='{{ dataAction }}' class='boost-sd__filter-option-item boost-sd__filter-option-swatch-item'><button id='{{ actionId }}' data-action='{{ dataAction }}' title='Find product with {{ label | escape }} is {{ value.label | escape | strip_html }}' role='checkbox' aria-checked='false' class='boost-sd__filter-option-item-button boost-sd__filter-option-item-button--as-button'> {% if swatchValue.backgroundColor == nil %} {% assign swatch_background_color = "none" %} {% else %} {% assign swatch_background_color = swatchValue.backgroundColor | strip_html %} {% endif %} {% if swatchValue.backgroundImage == nil %} {% assign swatch_background_image = "none" %} {% else %} {% assign swatch_background_image = swatchValue.backgroundImage | strip_html %} {% endif %} <span data-action='{{ dataAction }}' class='{{ className }}' style='background-color: {{ swatch_background_color }}; background-image: {{ swatch_background_image }}'></span> {% if swatchType == 'list' %} <span data-action='{{ dataAction }}' class='boost-sd__filter-option-item-label'> {% if option.displayAllValuesInUppercaseForm %} {{ value.label | escape | upcase }} {% else %} {{ value.label | escape }} {% endif %} </span> {% if showDocCount %} <span data-action='{{ dataAction }}' aria-label='Number of products: ({{ value.doc_count }})' class='boost-sd__filter-option-item-amount'>({{ value.doc_count }})</span> {% endif %} {% endif %} </button></li>{% endif %}`;
;template["filterOptionMultiLevelCollectionItem"]=`{% comment %} This Template contains a few variables built from the client js side {% endcomment %}{% if request.previewMode == true %}<li class='boost-sd__filter-option-item boost-sd__filter-option-item-multilevel-collections {% if option.keepValuesStatic and value.doc_count == 0 %} boost-sd__filter-option-item-multilevel-collections--disabled {% endif %}'><div class='boost-sd__filter-option-item-multilevel-collections-firstlevel'> <a title='Link to {{ value.displayName }}' href='/collections/{{ value.handle }}' class='boost-sd__filter-option-item-button boost-sd__filter-option-item-button--as-link'> <span class='boost-sd__filter-option-item-label'> {% if option.displayAllValuesInUppercaseForm %} {{ value.displayName | upcase }} {% else %} {{ value.displayName }} {% endif %} </span> </a> {% if showDocCount %} <span role='text' aria-label='Number of products: ({{ value.doc_count }})' class='boost-sd__filter-option-item-amount'>({{ value.doc_count }})</span> {% endif %} {% if value.existedTags %} <button type='button' aria-label='Expand/Collapse {{ value.displayName }}' class='boost-sd__button boost-sd__button--transparent'> <svg class='boost-sd__arrow-icon boost-sd__arrow-icon--right' xmlns='http://www.w3.org/2000/svg' width='7' height='12' role='img' aria-label='Expand/Collapse {{ value.displayName }}' viewBox='0 0 7 12' fill='#222'> <path class="boost-sd__arrow-icon-path" d="M6.58942 0.610713C6.26398 0.285274 5.73635 0.285274 5.41091 0.610713L0.611415 5.41021C0.455135 5.56649 0.366829 5.77895 0.366829 5.99996C0.366829 6.22098 0.454629 6.43294 0.610909 6.58922L5.41091 11.3892C5.73635 11.7147 6.26398 11.7147 6.58942 11.3892C6.91486 11.0638 6.91486 10.5362 6.58942 10.2107L2.37867 5.99996L6.58942 1.78922C6.91486 1.46379 6.91486 0.936153 6.58942 0.610713Z"></path> </svg> </button> {% endif %} </div></li>{% else %}{% assign current_locale = '' %}{% if locale != "" %}{% assign current_locale = '/' | append: locale %}{% endif %}<li class='boost-sd__filter-option-item boost-sd__filter-option-item-multilevel-collections {% if option.keepValuesStatic and value.doc_count == 0 %} boost-sd__filter-option-item-multilevel-collections--disabled {% endif %}'><div class='boost-sd__filter-option-item-multilevel-collections-firstlevel'> <a id='{{ actionId }}' metaData='{{ metaData | json | escape }}' title='Link to {{ value.displayName }}' data-action='select-filter-item' href='{{current_locale}}/collections/{{ value.handle }}' class='{{ className }}'> <span style='{{styleOptionItem}}' data-metadata='{{ metaData | json | escape }}' class='boost-sd__filter-option-item-label'> {% if option.displayAllValuesInUppercaseForm %} {{ value.displayName | upcase }} {% else %} {{ value.displayName }} {% endif %} </span> </a> {% if showDocCount %} <span role='text' aria-label='Number of products: ({{ value.doc_count }})' class='boost-sd__filter-option-item-amount'>({{ value.doc_count }})</span> {% endif %} {% if value.existedTags %} <button id='{{ value.actionIdArrow }}' data-metadata='{{ value.metaDataArrow | json | escape }}' type='button' aria-label='Expand/Collapse {{ value.displayName }}' class='boost-sd__button boost-sd__button--transparent' style='padding-right: 0px;'> <svg id='{{ value.targetIdArrow }}' data-metadata='{{ value.metaDataArrow | json | escape }}' class='boost-sd__arrow-icon boost-sd__arrow-icon--right' xmlns='http://www.w3.org/2000/svg' width='7' height='12' role='img' aria-label='Expand/Collapse {{ value.displayName }}' viewBox='0 0 7 12' fill='#222'> <path data-metadata='{{ value.metaDataArrow | json | escape }}' class="boost-sd__arrow-icon-path" d="M6.58942 0.610713C6.26398 0.285274 5.73635 0.285274 5.41091 0.610713L0.611415 5.41021C0.455135 5.56649 0.366829 5.77895 0.366829 5.99996C0.366829 6.22098 0.454629 6.43294 0.610909 6.58922L5.41091 11.3892C5.73635 11.7147 6.26398 11.7147 6.58942 11.3892C6.91486 11.0638 6.91486 10.5362 6.58942 10.2107L2.37867 5.99996L6.58942 1.78922C6.91486 1.46379 6.91486 0.936153 6.58942 0.610713Z"></path> </svg> </button> {% endif %} </div> {% if value.existedTags > 0 %} <ul id='{{ value.targetIdList }}' class='boost-sd__filter-option-item-multilevel-collections-listitem boost boost-sd__g-hide'> {% for tag in value.tags %} <li class='boost-sd__filter-option-item-multilevel-collections-secondlevel'> <div class='boost-sd__filter-option-item boost-sd__filter-option-item-multilevel-collections-secondlevel-title'> <a id='{{ tag.actionId }}' data-metadata='{{ tag.metaData | json | escape }}' title='Link to {{ tag.displayName }}' data-action='select-filter-item' href='{{current_locale}}/collections/frontpage/{{ tag.tag }}' class='{{ tag.className }}'> <span data-metadata='{{ tag.metaData | json | escape }}' class='boost-sd__filter-option-item-label'> {% if option.displayAllValuesInUppercaseForm %} {{ tag.displayName | upcase }} {% else %} {{ tag.displayName }} {% endif %} </span> </a> {% if tag.existedSubTags %} <button id='{{ tag.actionIdArrow }}' data-metadata='{{ tag.metaDataArrow | json | escape }}' type='button' aria-label='Expand/Collapse {{ tag.displayName }}' class='boost-sd__button boost-sd__button--transparent' style='padding-right: 0px;'> <svg id='{{ tag.targetIdArrow }}' data-metadata='{{ tag.metaDataArrow | json | escape }}' class='boost-sd__arrow-icon boost-sd__arrow-icon--right' xmlns='http://www.w3.org/2000/svg' width='7' height='12' role='img' aria-label='Expand/Collapse {{ tag.displayName }}' viewBox='0 0 7 12' fill='#222'> <path data-metadata='{{ tag.metaDataArrow | json | escape }}' class="boost-sd__arrow-icon-path" d="M6.58942 0.610713C6.26398 0.285274 5.73635 0.285274 5.41091 0.610713L0.611415 5.41021C0.455135 5.56649 0.366829 5.77895 0.366829 5.99996C0.366829 6.22098 0.454629 6.43294 0.610909 6.58922L5.41091 11.3892C5.73635 11.7147 6.26398 11.7147 6.58942 11.3892C6.91486 11.0638 6.91486 10.5362 6.58942 10.2107L2.37867 5.99996L6.58942 1.78922C6.91486 1.46379 6.91486 0.936153 6.58942 0.610713Z"></path> </svg> </button> {% endif %} </div> {% if tag.existedSubTags %} <ul id='{{ tag.targetIdList }}' class='boost-sd__filter-option-item-multilevel-collections-thirdlevel boost-sd__g-hide'> {% for subTag in tag.subTags %} <li class='boost-sd__filter-option-item boost-sd__filter-option-item-multilevel-collections-thirdlevel-title'> <a id='{{ subTag.actionId }}' data-metadata='{{ subTag.metaData | json | escape }}' title='Link to {{ subTag.displayName }}' data-action='select-filter-item' href='{{current_locale}}/collections/frontpage/{{ subTag.tag }}' class='{{ subTag.className }}'> <span data-metadata='{{ subTag.metaData | json | escape }}' class='boost-sd__filter-option-item-label'> {% if option.displayAllValuesInUppercaseForm %} {{ subTag.displayName | upcase }} {% else %} {{ subTag.displayName }} {% endif %} </span> </a> </li> {% endfor %} </ul> {% endif %} </li> {% endfor %} </ul> {% endif %}</li>{% endif %}`;
;template["filterOptionMultiLevelTagItem"]=`{% comment %} This Template contains a few variables built from the client js side {% endcomment %}{% if request.previewMode == true %}<li class='boost-sd__filter-option-item boost-sd__filter-option-list-option-item'><button role='checkbox' aria-checked='false' aria-label='{{ value.displayName }}' class='boost-sd__filter-option-item-button boost-sd__filter-option-item-button--as-button boost-sd__filter-option-item-button--with-checkbox'> <span class='boost-sd__filter-option-item-label'> {% if option.displayAllValuesInUppercaseForm %} {{ value.displayName | upcase }} {% else %} {{ value.displayName }} {% endif %} </span></button> {% assign existedTags = value.subTags | size %} {% if existedTags > 0 %} <button type='button' aria-label='Expand/Collapse {{ value.displayName }}' class='boost-sd__button boost-sd__button--transparent boost-sd__filter-option-list-option-item-collapse-btn'> <svg class='boost-sd__arrow-icon boost-sd__arrow-icon--right' xmlns='http://www.w3.org/2000/svg' width='7' height='12' role='img' aria-label='Expand/Collapse {{ value.displayName }}' viewBox='0 0 7 12' fill='#222'> <path class="boost-sd__arrow-icon-path" d="M6.58942 0.610713C6.26398 0.285274 5.73635 0.285274 5.41091 0.610713L0.611415 5.41021C0.455135 5.56649 0.366829 5.77895 0.366829 5.99996C0.366829 6.22098 0.454629 6.43294 0.610909 6.58922L5.41091 11.3892C5.73635 11.7147 6.26398 11.7147 6.58942 11.3892C6.91486 11.0638 6.91486 10.5362 6.58942 10.2107L2.37867 5.99996L6.58942 1.78922C6.91486 1.46379 6.91486 0.936153 6.58942 0.610713Z"> </path> </svg></button> {% endif %}</li>{% else %}<li class='boost-sd__filter-option-item boost-sd__filter-option-list-option-item'><button id='{{ actionId }}' data-metadata='{{ metaData | json | escape }}' role='checkbox' aria-checked='false' aria-label='Find product with {{ label | escape }} is {{ value.displayName | escape | strip_html }}' class='{{ className }}'> <span style='{{styleOptionItem}}' data-metadata='{{ metaData | json | escape }}' class='boost-sd__filter-option-item-label'> {% if option.displayAllValuesInUppercaseForm %} {{ value.displayName | upcase }} {% else %} {{ value.displayName }} {% endif %} </span></button> {% assign existedTags = value.subTags | size %} {% if existedTags > 0 %} <button id='{{ value.actionIdArrow }}' data-metadata='{{ value.metaDataArrow | json | escape }}' type='button' aria-label='Expand/Collapse {{ value.displayName }}' class='boost-sd__button boost-sd__button--transparent boost-sd__filter-option-list-option-item-collapse-btn'> <svg id='{{ value.targetIdArrow }}' data-metadata='{{ value.metaDataArrow | json | escape }}' class='boost-sd__arrow-icon boost-sd__arrow-icon--right' xmlns='http://www.w3.org/2000/svg' width='7' height='12' role='img' aria-label='Expand/Collapse {{ value.displayName }}' viewBox='0 0 7 12' fill='{{colorOptionItem}}'> <path data-metadata='{{ value.metaDataArrow | json | escape }}' class="boost-sd__arrow-icon-path" d="M6.58942 0.610713C6.26398 0.285274 5.73635 0.285274 5.41091 0.610713L0.611415 5.41021C0.455135 5.56649 0.366829 5.77895 0.366829 5.99996C0.366829 6.22098 0.454629 6.43294 0.610909 6.58922L5.41091 11.3892C5.73635 11.7147 6.26398 11.7147 6.58942 11.3892C6.91486 11.0638 6.91486 10.5362 6.58942 10.2107L2.37867 5.99996L6.58942 1.78922C6.91486 1.46379 6.91486 0.936153 6.58942 0.610713Z"></path> </svg></button> {% comment %} style="display: none" {% endcomment %} <ul id='{{ value.targetIdList }}' class='boost-sd__filter-option-list-option-item-sublist boost-sd__g-hide'> {% for tag in value.subTags %} <li class='boost-sd__filter-option-item boost-sd__filter-option-list-option-item'> <button id='{{ tag.actionId }}' data-metadata='{{ tag.metaData | json | escape }}' role='checkbox' aria-checked='false' aria-label='Find product with {{ label | escape }} is {{ tag.displayName | escape | strip_html }}' class='{{ tag.className }}'> <span style='{{styleOptionItem}}' data-metadata='{{ tag.metaData | json | escape }}' class='boost-sd__filter-option-item-label'> {% if option.displayAllValuesInUppercaseForm %} {{ tag.displayName | upcase }} {% else %} {{ tag.displayName }} {% endif %} </span> </button> {% assign existedSubTags = tag.subTags | size %} {% if existedSubTags > 0 %} <button id='{{ tag.actionIdArrow }}' data-metadata='{{ tag.metaDataArrow | json | escape }}' type='button' aria-label='Expand/Collapse {{ tag.displayName }}' class='boost-sd__button boost-sd__button--transparent boost-sd__filter-option-list-option-item-collapse-btn'> <svg id='{{ tag.targetIdArrow }}' data-metadata='{{ tag.metaDataArrow | json | escape }}' class='boost-sd__arrow-icon boost-sd__arrow-icon--right' xmlns='http://www.w3.org/2000/svg' width='7' height='12' role='img' aria-label='Expand/Collapse {{ tag.displayName }}' viewBox='0 0 7 12' fill='{{colorOptionItem}}'> <path data-metadata='{{ tag.metaDataArrow | json | escape }}' class="boost-sd__arrow-icon-path" d="M6.58942 0.610713C6.26398 0.285274 5.73635 0.285274 5.41091 0.610713L0.611415 5.41021C0.455135 5.56649 0.366829 5.77895 0.366829 5.99996C0.366829 6.22098 0.454629 6.43294 0.610909 6.58922L5.41091 11.3892C5.73635 11.7147 6.26398 11.7147 6.58942 11.3892C6.91486 11.0638 6.91486 10.5362 6.58942 10.2107L2.37867 5.99996L6.58942 1.78922C6.91486 1.46379 6.91486 0.936153 6.58942 0.610713Z"></path> </svg> </button> {% comment %} style="display: none" {% endcomment %} <ul id='{{ tag.targetIdList }}' class='boost-sd__filter-option-list-option-item-sublist boost-sd__g-hide'> {% for subTag in tag.subTags %} <li class='boost-sd__filter-option-item boost-sd__filter-option-list-option-item'> <button id='{{ subTag.actionId }}' data-metadata='{{ subTag.metaData | json | escape }}' role='checkbox' aria-checked='false' aria-label='Find product with {{ label | escape }} is {{ subTag.displayName | escape | strip_html }}' class='{{ subTag.className }}'> <span style='{{styleOptionItem}}' data-metadata='{{ subTag.metaData | json | escape }}' class='boost-sd__filter-option-item-label'> {% if option.displayAllValuesInUppercaseForm %} {{ subTag.displayName | upcase }} {% else %} {{ subTag.displayName }} {% endif %} </span> </button> </li> {% endfor %} </ul> {% endif %} </li> {% endfor %} </ul> {% endif %}</li>{% endif %}`;
;template["filterOptionRatingItem"]=`{% comment %} This Template contains a few variables built from the client js side {% endcomment %}{% if request.previewMode == true %}<li class='boost-sd__filter-option-item boost-sd__filter-option-rating-item'><button role='checkbox' aria-checked='false' aria-label='{{ value.key }} Stars. Number of products: {{value.doc_count}}' class='boost-sd__filter-option-item-button boost-sd__filter-option-item-button--as-button boost-sd__filter-option-item-button--with-checkbox'> <span role='presentation' class='boost-sd__filter-option-rating-item-presentation'> {% for i in (0..4) %} {% if i < value.from %} <i class='boost-sd__filter-option-rating-item-icon-star boost-sd__filter-option-rating-item-icon-star--active' style='color: {{ starColor }} ;'></i> {% else %} <i class='boost-sd__filter-option-rating-item-icon-star' style='color: {{ starColor }} ;'></i> {% endif %} {% endfor %} {% if showExactRating == false %} <span>& Up</span> {% endif %} </span> <span aria-label='Number of products: ({{ value.doc_count }})' class='boost-sd__filter-option-item-amount'>({{ value.doc_count }})</span></button></li>{% else %}<li data-value='{{ value.key }}' data-action='{{ dataAction }}' class='boost-sd__filter-option-item boost-sd__filter-option-rating-item'><button id='{{ actionId }}' data-action='{{ dataAction }}' role='checkbox' aria-checked='false' aria-label='{{ value.key }} Stars. Number of products: {{value.doc_count}}' class='{{ className }}'> <span data-action='{{ dataAction }}' role='presentation' class='boost-sd__filter-option-rating-item-presentation'> {% for i in (0..4) %} {% if i < value.from %} <i data-action='{{ dataAction }}' class='boost-sd__filter-option-rating-item-icon-star boost-sd__filter-option-rating-item-icon-star--active' style='color: {{ starColor }} ;'></i> {% else %} <i data-action='{{ dataAction }}' class='boost-sd__filter-option-rating-item-icon-star' style='color: {{ starColor }} ;'></i> {% endif %} {% endfor %} {% if showExactRating == false %} <span data-action='{{ dataAction }}'>& Up</span> {% endif %} </span> <span data-action='{{ dataAction }}' aria-label='Number of products: ({{ value.doc_count }})' class='boost-sd__filter-option-item-amount'>({{ value.doc_count }})</span></button></li>{% endif %}`;
;template["productPrice"]=`{% comment %} This Template contains a few variables built from the client js side {% endcomment %}{% assign removePriceDecimal = false -%}{% assign decimalDelimiter = '' -%}{% assign withoutTrailingZeros = true -%}{% assign showCentAsSuperscript = false -%}{% assign money_format = request.money_format | strip_html -%}{% assign showSavingDisplay = false -%}{% assign minPrice = product.price_min | times: 1.0 -%}{% assign maxPrice = 0 -%}{% if product.price_max -%}{% assign maxPrice = product.price_max | times: 1.0 -%}{% endif -%}{% comment %} convert variable compareAtPriceMin to number {% endcomment %}{% assign compareAtPriceMin = 0 -%}{% if product.compare_at_price_min -%}{% assign compareAtPriceMin = product.compare_at_price_min | times: 1.0 -%}{% endif -%}{% assign isSale = false -%}{% assign salePercent = 0 -%}{% assign saleAmount = 0 -%}{% if compareAtPriceMin > minPrice -%}{% assign isSale = true -%}{% endif -%}{% assign compareAtPriceWithFormat = '' -%}{% unless compareAtPriceMin == null or compareAtPriceMin == 0 or isSale == false -%}{% comment %} calculate salePercent base on compareAtPriceMin and minPrice {% endcomment %}{% assign compare = compareAtPriceMin | minus: minPrice | times: 100 -%}{% assign salePercent = compare | divided_by: compareAtPriceMin | ceil | append: '%' -%}{% comment %} compareAtPriceWithFormat is compare price with PriceMin and format currency {% endcomment %}{% assign compareAtPriceWithFormat = compareAtPriceMin | format_currency: money_format, showCentAsSuperscript, removePriceDecimal, decimalDelimiter, withoutTrailingZeros -%}{% assign saleAmount = compareAtPriceMin | minus: minPrice -%}{% endunless -%}{% comment %} Format price min {% endcomment %}{% assign priceMinWithFormat = minPrice | format_currency: money_format, showCentAsSuperscript, removePriceDecimal , decimalDelimiter, withoutTrailingZeros -%}{% comment %} Format price max {% endcomment %}{% assign priceMaxWithFormat = '' -%}{% if product.price_max and maxPrice > minPrice -%}{% assign priceMaxWithFormat = maxPrice | format_currency: money_format, showCentAsSuperscript, removePriceDecimal , decimalDelimiter, withoutTrailingZeros -%}{% endif -%}{% comment %} priceMax used for multi variant price display where it can have min-max price with format and translation {% endcomment %}{% assign hasMultiVariantPrice = false -%}{% if translations.productItem.amount contains "minPrice" -%}{% assign hasMultiVariantPrice = true -%}{% endif -%}{% assign isSamePrice = true -%}{% if minPrice != maxPrice or product.compare_at_price_min != product.compare_at_price_max -%}{% assign isSamePrice = false -%}{% endif -%}{% assign priceValueWithFormat = priceMinWithFormat -%}{% if isSamePrice == false and maxPrice > minPrice and hasMultiVariantPrice -%}{% assign priceValueWithFormat = "productItem.amount" | translate: translations, "" | replace: '{{minPrice}}', priceMinWithFormat | replace: '{{maxPrice}}', priceMaxWithFormat -%}{% endif -%}{% assign savingPriceWithFormat = '' -%}{% unless showSavingDisplay == false or saleAmount == 0 -%}{% assign saleAmountWithFormat = saleAmount | format_currency: money_format, showCentAsSuperscript, removePriceDecimal, decimalDelimiter, withoutTrailingZeros -%}{% assign savingPriceWithFormat = "productItem.savingAmount" | translate: translations, "Save {{saleAmount}}" | replace: '{{saleAmount}}', saleAmountWithFormat | replace: '{{salePercent}}', salePercent -%}{% endunless -%}{% comment %} Price compare display top or bottom {% endcomment %}{% comment %} Price compare display left or right {% endcomment %}<div aria-label="Sale price {{ priceValueWithFormat }}{% if compareAtPriceWithFormat != '' -%}, Regular price {{ compareAtPriceWithFormat }}{% endif -%}{% if savingPriceWithFormat != '' -%}, Saving {{ savingPriceWithFormat }}{% endif -%}" tabindex="0" class="boost-sd__product-price-wrapper"><span aria-hidden="true" class="boost-sd__product-price-content boost-sd__product-price-content--text-align-left"> <span class="{% if isSale == true %}boost-sd__product-price--sale{% else %}boost-sd__product-price--default{% endif %}"> <span class="boost-sd__format-currency">{{ priceValueWithFormat }}</span> </span> {% if compareAtPriceWithFormat != '' -%} <span class="boost-sd__format-currency boost-sd__format-currency--price-compare boost-sd__product-price--compare"> <span class="boost-sd__format-currency">{{ compareAtPriceWithFormat }}</span> </span> {% endif -%} </span> {% if savingPriceWithFormat != '' -%} <span aria-hidden="true" class="boost-sd__product-price--saving"> <span class="boost-sd__format-currency">{{ savingPriceWithFormat }}</span></span> {% endif -%}</div>`;
;template["recommendation"]=`<!-- TEMPLATE RECOMMENDATION -->{% assign widgetNameTranslationLabel = 'recommendation.' | append: widgetId %}{% assign widgetTitle = '' %}{% if widgetDesignSettings.titleAlignment != '' %} {% assign widgetTitle = widgetTitle | append: 'boost-sd__recommendation-title--'| append: widgetDesignSettings.titleAlignment %}{% endif %}<div id='{{ widgetId }}' class='boost-sd__recommendation' data-product-price='true'><div class='boost-sd__recommendation-title {{ widgetTitle }}'> <span tabindex="0" role="heading" aria-level="2" class='boost-sd__recommendation-title-text'> {{ widgetNameTranslationLabel | translate: translations, widgetName }} </span></div> {% if widgetDesignSettings.layoutDisplay == 'carousel' %} <!-- TEMPLATE RECOMMENDATION TYPE CAROUSEL --><div class="boost-sd__slider"><div class="boost-sd__slider-container"> {% for product in products %} <div class="boost-sd__slide"> {% capture domain %}{{ widgetDesignSettings.tenantId }}{% endcapture %} <!-- TEMPLATE GRID PRODUCT ITEM -->{% if product.original_images != nil %} {% assign imageArray = product.original_images %}{% else %} {% assign imageArray = product.images_info %}{% endif %}{% assign productId = product.id %}{% if product.variant_id %} {% assign productId = product.variant_id %}{% endif %}{% assign filterOptionIdImageBaseOn = 'pf_opt_color' %} {% capture filterOptionIdImageBaseOn %}{% endcapture %}{% assign optionName = filterOptionIdImageBaseOn | replace: 'pf_opt_', '' %}{% assign filterValues = request[filterOptionIdImageBaseOn] %}{% assign selectedVariantImageByFilterOption = nil %}{% for item in product.variants %} {% for filterValue in filterValues %} {% assign optionNameValue = optionName | append: ":" | append: filterValue | strip %} {% if item.merged_options contains optionNameValue %} {% if item.image %} {% assign selectedVariantImageByFilterOption = item.image %} {% break %} {% endif %} {% endif %} {% endfor %} {% if selectedVariantImageByFilterOption != nil %} {% break %} {% endif %}{% endfor %}{% capture productVariants %} [ {% for variant in product.variants %} {% assign preorder = '{}' %} {% if variant.preorder and variant.preorder != nil %} {% assign preorder = variant.preorder %} {% else %} {% assign preorder = '' %} {% endif %} { "title": "{{ variant.title }}", "id": "{{ variant.id }}", "available": {{ variant.available }}, "preorder": {{ preorder | json }} }{% unless forloop.last %},{% endunless %} {% endfor %} ]{% endcapture %}{% capture productData %} { "handle": "{{ product.handle }}", "variantId": "{{ product.variant_id }}", "splitProduct": "{{ product.split_product }}", "priceMin": "{{ product.price_min }}", "priceMax": "{{ product.price_max }}", "compareAtPriceMin": "{{ product.compare_at_price_min }}", "compareAtPriceMax": "{{ product.compare_at_price_max }}", "images": {{ imageArray | json | escape }}, "options_with_values": {{ product.options_with_values | json | escape }}, "selectedVariantImageByFilterOption": "{{ selectedVariantImageByFilterOption | escape }}", "category": "{{ product.product_type | escape }}", "tags" : {{ product.tags | json | escape }} }{% endcapture %}{%- capture borderLayout %}noBorder{% endcapture -%}{% if borderLayout == 'noPadding' %} {% assign border_layout_item = 'no-padding' %}{% elsif borderLayout == 'hasPadding' %} {% assign border_layout_item = 'border-has-padding' %}{% elsif borderLayout == 'noPaddingImage' %} {% assign border_layout_item = 'border-no-padding-image' %}{% else %} {% assign border_layout_item = 'no-border' %}{% endif %}{% assign product_locale = '' %}{% if request.current_locale != "" or request.current_locale != null %} {% assign product_locale = request.current_locale %}{% endif %}<div class='boost-sd__product-item boost-sd__product-item--{{ border_layout_item }} boost-sd__product-item-grid-view-layout' id='{{ product.id }}' data-product-id='{{ productId }}' data-product='{{ productData | json_encode }}'><!-- TEMPLATE GRID PRODUCT ITEM - PRODUCT IMAGE -->{%- capture aspectRatio %}square{% endcapture -%}{% capture hoverEffect %}zoom-in{% endcapture %}{% assign productImages = product.images_info %}{% if product.split_product %} {% assign productImages = product.original_images %}{% endif %}<div class="boost-sd__product-item-grid-view-layout-image"><div class="boost-sd__product-link-image"> <div style="position: relative"> {% assign effect_classes = '' %} {% if hoverEffect == 'reveal-second-image-and-zoom-in' %} {% assign effect_classes = effect_classes | append: 'boost-sd__product-image-wrapper--zoom-in' %} {% if productImages.size > 1 %} {% assign effect_classes = effect_classes | append: ' boost-sd__product-image-wrapper--has-second-image' %} {% endif %} {% endif %} {% if hoverEffect == 'reveal-second-image' and productImages.size > 1 %} {% assign effect_classes = effect_classes | append: 'boost-sd__product-image-wrapper--has-second-image' %} {% endif %} {% if hoverEffect == 'zoom-in' %} {% assign effect_classes = effect_classes | append: 'boost-sd__product-image-wrapper--zoom-in' %} {% endif %} {% assign aspect_ratio = '' -%} {% if aspectRatio == 'natural' -%} {% assign imageWidth = product.images_info[0].width -%} {% assign imageHeight = product.images_info[0].height -%} {% assign aspect_ratio = aspect_ratio | append: 'aspect-ratio:' | append: imageWidth | append: '/' | append: imageHeight -%} {% endif -%} <div class="boost-sd__product-image-wrapper boost-sd__product-image-wrapper--crop-center {{effect_classes}} boost-sd__product-image-wrapper--square" style="{{ aspect_ratio }}"> <a aria-label="{{ product.title | escape }}" class="boost-sd__product-link boost-sd__product-image" {%- if request.previewMode != true %} href="/products/{{ product.handle }}"{% endif -%}> {% assign firstImageSrc = '' -%} {% if selectedVariantImageByFilterOption != nil -%} {% assign firstImageSrc = selectedVariantImageByFilterOption -%} {% else -%} {% assign firstImageSrc = product.images_info[0].src -%} {% endif -%} {% assign widthParam = "&width=" -%} {% assign widths = "200,300,400,500,700,800" | split: "," -%} {% if request.device contains 'mobile' -%} {% assign maxWidth = 400 -%} {% else -%} {% assign maxWidth = 700 -%} {% endif -%} {% if request.productImageWidth != blank -%} {% assign imageWidth = request.productImageWidth | plus: 0 -%} {% if imageWidth > maxWidth -%} {% assign maxWidth = imageWidth -%} {% endif -%} {% endif -%} {% if product.images_info[0] -%} {% capture srcset -%} {% for width in widths -%} {% assign widthNo = width | plus: 0%} {% if widthNo < maxWidth -%} {{ firstImageSrc }}{{ widthParam }}{{ width }} {{ width }}w, {% else -%} {{ firstImageSrc }}{{ widthParam }}{{ maxWidth }} {{ maxWidth }}w {% break -%} {% endif -%} {% endfor -%} {% endcapture -%} {% assign productPerRow = 4 -%} {% if request.productPerRow != blank -%} {% assign productPerRow = request.productPerRow | plus: 0 -%} {% endif -%} <img id="product-image-{{ product.id }}" class="boost-sd__product-image-img boost-sd__product-image-img--main" {% if index and index < productPerRow -%} loading="eager" {% else -%} loading="lazy" {% endif -%} decoding="async" alt="{{ product.title | escape }}" src="{{ firstImageSrc }}&width=200" srcset="{{ srcset }}" width="auto" height="auto" /> {% if productImages.size > 1 and hoverEffect == 'reveal-second-image-and-zoom-in' or hoverEffect == 'reveal-second-image' %} {% for image in productImages %} {% if image.src contains product.images_info[0].src %} {% assign secondImage = productImages[image.position] %} {% endif %} {% endfor %} {% if secondImage -%} {% assign secondImageSrc = secondImage.src -%} {% capture secondImageSrcset -%} {% for width in widths -%} {% assign widthNo = width | plus: 0 -%} {% if widthNo < maxWidth -%} {{ secondImageSrc }}{{ widthParam }}{{ width }} {{ width }}w, {% else -%} {{ secondImageSrc }}{{ widthParam }}{{ maxWidth }} {{ maxWidth }}w {% break -%} {% endif -%} {% endfor -%} {% endcapture -%} <img width="auto" height="auto" {% if index and index < productPerRow -%} loading="eager" {% else -%} loading="lazy" {% endif -%} class="boost-sd__product-image-img boost-sd__product-image-img--second" alt="{{ product.title | escape }}" src="{{ secondImage.src }}&width=200" srcset="{{ secondImageSrcset }}"> {% endif -%} {% endif %} {% else -%} <img id="product-image-{{ product.id }}" class="boost-sd__product-image-img boost-sd__product-image-img--main" alt="{{ product.title | escape }}" src="https://cdn.shopify.com/extensions/201f4d7b-8d39-43a4-82de-e6f412341695/0.0.0/assets/boost-pfs-no-image.jpg?v=1677838268" width="auto" height="auto" /> {% endif -%} </a> <div class="boost-sd__product-image-row boost-sd__product-image-row--top "> <div class="boost-sd__product-image-column boost-sd__product-image-column--in-top boost-sd__product-image-column--left"> {% assign hideOtherLabelsWhenSoldOut = true -%}{% assign money_format = request.money_format | strip_html -%}{% assign removePriceDecimal = false -%}{% assign showCentAsSuperscript = false -%}{% assign decimalDelimiter = '' -%}{% assign withoutTrailingZeros = true -%}{% if hideOtherLabelsWhenSoldOut != true -%} {% assign compareAtPriceMin = product.compare_at_price_min | default: 0 -%} {% if compareAtPriceMin > product.price_min -%} {% assign percent = compareAtPriceMin | minus: product.price_min | times: 100 | divided_by: compareAtPriceMin| round -%} {% assign salePercent = percent | append: '%' -%} {% assign saleAmount = compareAtPriceMin | minus: product.price_min | format_currency: money_format, showCentAsSuperscript, removePriceDecimal, decimalDelimiter, withoutTrailingZeros -%} {% assign productItemSaleTranslated = "productItem.productItemSale" | translate: translations, "Sale" | replace: '{{salePercent}}', salePercent | replace: '{{saleAmount}}', saleAmount -%} <div class="boost-sd__product-label boost-sd__product-label--text boost-sd__product-label--capsule boost-sd__product-label--sale"> <span class="boost-sd__product-label-text"> <span>{{ productItemSaleTranslated }}</span> </span> </div> {% endif -%} {% else -%} {% if product.available == false -%} {% else -%} {% assign compareAtPriceMin = product.compare_at_price_min | default: 0 -%} {% if compareAtPriceMin > product.price_min -%} {% assign percent = compareAtPriceMin | minus: product.price_min | times: 100 | divided_by: compareAtPriceMin| round -%} {% assign salePercent = percent | append: '%' -%} {% assign saleAmount = compareAtPriceMin | minus: product.price_min | format_currency: money_format, showCentAsSuperscript, removePriceDecimal, decimalDelimiter, withoutTrailingZeros -%} {% assign translatedText = "productItem.productItemSale" | translate: translations, "Sale" | replace: '{{salePercent}}', salePercent | replace: '{{saleAmount}}', saleAmount %} <div class="boost-sd__product-label boost-sd__product-label--text boost-sd__product-label--capsule boost-sd__product-label--sale"> <span class="boost-sd__product-label-text"> <span>{{ translatedText }}</span> </span> </div> {% endif -%} {% endif -%}{% endif -%} </div> </div> </div> {% comment %} POPUP {% endcomment %} {% comment %} POPUP {% endcomment %} </div></div></div><!-- TEMPLATE GRID PRODUCT ITEM - PRODUCT INFO --><div class="boost-sd__product-info-wrapper"><div class="boost-sd__product-info boost-sd__product-info--left"> <a aria-label="{{ product.title | escape }}" class="boost-sd__product-link" {% if request.previewMode != true %} href="{{ product_locale }}/products/{{ product.handle }}"{% endif %}> <div class="boost-sd__product-title" id="product-title-{{ product.id }}"> {{ product.title | escape }} </div> </a> <div class="boost-sd__product-price" id="product-price-{{ product.id }}"> {% comment %} This Template contains a few variables built from the client js side {% endcomment %}{% assign removePriceDecimal = false -%}{% assign decimalDelimiter = '' -%}{% assign withoutTrailingZeros = true -%}{% assign showCentAsSuperscript = false -%}{% assign money_format = request.money_format | strip_html -%}{% assign money_format = request.money_format_with_currency | strip_html -%}{% assign showSavingDisplay = false -%}{% assign minPrice = product.price_min | times: 1.0 -%}{% assign maxPrice = 0 -%}{% if product.price_max -%} {% assign maxPrice = product.price_max | times: 1.0 -%}{% endif -%}{% comment %} convert variable compareAtPriceMin to number {% endcomment %}{% assign compareAtPriceMin = 0 -%}{% if product.compare_at_price_min -%} {% assign compareAtPriceMin = product.compare_at_price_min | times: 1.0 -%}{% endif -%}{% assign isSale = false -%}{% assign salePercent = 0 -%}{% assign saleAmount = 0 -%}{% if compareAtPriceMin > minPrice -%} {% assign isSale = true -%}{% endif -%}{% assign compareAtPriceWithFormat = '' -%}{% unless compareAtPriceMin == null or compareAtPriceMin == 0 or isSale == false -%} {% comment %} calculate salePercent base on compareAtPriceMin and minPrice {% endcomment %} {% assign compare = compareAtPriceMin | minus: minPrice | times: 100 -%} {% assign salePercent = compare | divided_by: compareAtPriceMin | ceil | append: '%' -%} {% comment %} compareAtPriceWithFormat is compare price with PriceMin and format currency {% endcomment %} {% assign compareAtPriceWithFormat = compareAtPriceMin | format_currency: money_format, showCentAsSuperscript, removePriceDecimal, decimalDelimiter, withoutTrailingZeros -%} {% assign saleAmount = compareAtPriceMin | minus: minPrice -%}{% endunless -%}{% comment %} Format price min {% endcomment %}{% assign priceMinWithFormat = minPrice | format_currency: money_format, showCentAsSuperscript, removePriceDecimal , decimalDelimiter, withoutTrailingZeros -%}{% comment %} Format price max {% endcomment %}{% assign priceMaxWithFormat = '' -%}{% if product.price_max and maxPrice > minPrice -%} {% assign priceMaxWithFormat = maxPrice | format_currency: money_format, showCentAsSuperscript, removePriceDecimal , decimalDelimiter, withoutTrailingZeros -%}{% endif -%}{% comment %} priceMax used for multi variant price display where it can have min-max price with format and translation {% endcomment %}{% assign hasMultiVariantPrice = false -%}{% if translations.productItem.amount contains "minPrice" -%} {% assign hasMultiVariantPrice = true -%}{% endif -%}{% assign isSamePrice = true -%}{% if minPrice != maxPrice or product.compare_at_price_min != product.compare_at_price_max -%} {% assign isSamePrice = false -%}{% endif -%}{% assign priceValueWithFormat = priceMinWithFormat -%}{% if isSamePrice == false and maxPrice > minPrice and hasMultiVariantPrice -%} {% assign priceValueWithFormat = "productItem.amount" | translate: translations, "" | replace: '{{minPrice}}', priceMinWithFormat | replace: '{{maxPrice}}', priceMaxWithFormat -%}{% endif -%}{% assign savingPriceWithFormat = '' -%}{% unless showSavingDisplay == false or saleAmount == 0 -%} {% assign saleAmountWithFormat = saleAmount | format_currency: money_format, showCentAsSuperscript, removePriceDecimal, decimalDelimiter, withoutTrailingZeros -%} {% assign savingPriceWithFormat = "productItem.savingAmount" | translate: translations, "Save {{saleAmount}}" | replace: '{{saleAmount}}', saleAmountWithFormat | replace: '{{salePercent}}', salePercent -%}{% endunless -%}{% comment %} Price compare display top or bottom {% endcomment %}{% comment %} Price compare display left or right {% endcomment %} <div aria-label="Sale price {{ priceValueWithFormat }}{% if compareAtPriceWithFormat != '' -%}, Regular price {{ compareAtPriceWithFormat }}{% endif -%}{% if savingPriceWithFormat != '' -%}, Saving {{ savingPriceWithFormat }}{% endif -%}" tabindex="0" class="boost-sd__product-price-wrapper" > <span aria-hidden="true" class="boost-sd__product-price-content boost-sd__product-price-content--row-reverse boost-sd__product-price-content--text-align-left" > <span class="{% if isSale == true %}boost-sd__product-price--sale{% else %}boost-sd__product-price--default{% endif %}" > <span class="boost-sd__format-currency">{{ priceValueWithFormat }}</span> </span> {% if compareAtPriceWithFormat != '' -%} <span class="boost-sd__format-currency boost-sd__format-currency--price-compare boost-sd__product-price--compare" > <span class="boost-sd__format-currency">{{ compareAtPriceWithFormat }}</span> </span> {% endif -%} </span> {% if savingPriceWithFormat != '' -%} <span aria-hidden="true" class="boost-sd__product-price--saving" > <span class="boost-sd__format-currency">{{ savingPriceWithFormat }}</span> </span> {% endif -%} </div> </div> <!-- PRODUCT INVENTORY --> <!-- TEMPLATE PRODUCT SWATCH -->{% assign swatches = '' %} {% capture metaData %} { "action": { {% if product.variants.size == 1 %} "addToCart": { "productId": "{{ product.variants[0].id }}", {% assign sellingPlanId = '' %} {% if product.variants[0].preorder and product.variants[0].preorder.sellingPlan %} {% assign sellingPlanId = product.variants[0].preorder.sellingPlan.id %} {% else %} {% assign sellingPlanId = '' %} {% endif %} "selling_plan": {{ sellingPlanId | json | escape }} } {% else %} "goToProductDetail": {} {% endif %} } } {% endcapture %} {% assign variantPreorder = product.variants[0].preorder %} {% assign buttonPreorder = '' %} {% if variantPreorder %} {% assign buttonPreorder = buttonPreorder | append : ' boost-sd__button--preorder' %} {% endif %} {% assign buttonTextPreorder = '' %} {% if variantPreorder %} {% assign buttonTextPreorder = buttonTextPreorder | append : ' boost-sd__button-text--preorder' %} {% endif %} {% assign preOrderLabel = 'Pre-Order' %} {% assign preOrderButtonText = product.variants[0].preorder.settings.buttonText %} {% if preOrderButtonText and preOrderButtonText != '' %} {% assign preOrderLabel = preOrderButtonText %} {% endif %} {% assign selectOptionBtnLabel = '' %} {% if product.available == false %} {% assign selectOptionBtnLabel = "productItem.soldoutLabel" | translate: translations, 'Sold out' %} {% elsif product.variants.size == 1 %} {% assign selectOptionBtnLabel = "productItem.atcAvailableLabel" | translate: translations, 'Add to cart' %} {% comment %} TODO check preorder {% endcomment %} {% if variantPreorder %} {% assign selectOptionBtnLabel = preOrderLabel %} {% endif %} {% else %} {% assign selectOptionBtnLabel = "productItem.atcSelectOptionsLabel" | translate: translations, 'Choose options' %} {% endif %} <button class='boost-sd__button boost-sd__button--select-option boost-sd__button--border boost-sd__button--capsule boost-sd__button--left boost-sd__button--full-width{{ buttonPreorder }}' type='button' aria-label='{{ selectOptionBtnLabel }}' {% if product.available == false %} disabled {% endif %} data-metadata='{{ metaData | json_encode }}' > <span class='boost-sd__button-text boost-sd__cta-button-text {{ buttonTextPreorder }}'>{{ selectOptionBtnLabel }}</span> </button> </div></div></div> </div> {% endfor %} {% assign numberOfProductPerRow = widgetDesignSettings.numberOfProductPerRow %} {% assign numberOfRecommendProduct = widgetDesignSettings.numberOfRecommendProduct %} {% if numberOfRecommendProduct < numberOfProductPerRow %} {% assign sliderPages = 1 %} {% assign disable = "disabled" %} {% else %} {% assign sliderPages = numberOfRecommendProduct | divided_by: numberOfProductPerRow | ceil %} {% assign disable = "" %} {% endif %} </div><div class="boost-sd__prev-button boost-sd__prev-button--inside"> <button type="button" aria-label="Previous" class="boost-sd__button boost-sd__button--circle boost-sd__slider-button" {{ disable }}> <span class="boost-sd__icon"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 10 7" height="7" width="10" class="boost-sd__prev-button-icon"> <path stroke-linejoin="round" stroke-linecap="round" stroke="#212121" d="M0.764024 5.51189L5.00002 1.28789L9.23602 5.51189"></path> </svg> </span> </button></div><div class="boost-sd__next-button boost-sd__next-button--inside"> <button type="button" aria-label="Next" class="boost-sd__button boost-sd__button--circle boost-sd__slider-button" {{ disable }}> <span class="boost-sd__icon" style="margin: 0px;"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 10 7" height="7" width="10" class="boost-sd__next-button-icon"> <path stroke-linejoin="round" stroke-linecap="round" stroke="#212121" d="M0.764024 5.51189L5.00002 1.28789L9.23602 5.51189"></path> </svg> </span> </button></div></div> {% else %} <!-- TEMPLATE RECOMMENDATION TYPE BUNDLE -->{% assign bundleStyle = widgetDesignSettings.bundleStyle %}<div class="boost-sd__recommendation-bundle boost-sd__recommendation-bundle--{{ bundleStyle }}"><div class="boost-sd__recommendation-bundle-left"> <div class="boost-sd__recommendation-bundle-images boost-sd__recommendation-bundle-images--{{ bundleStyle }}"> {% for product in products %} <div class="boost-sd__recommendation-bundle-image-item"> {% if product.checked %} <a aria-label="View product details for {{ product.title | escape }}" class="boost-sd__product-link boost-sd__product-link-image" href="/products/{{ product.handle }}"> {% endif %} <div class="boost-sd__product-image-wrapper boost-sd__product-image-wrapper--full-box"> <div class="boost-sd__product-image {% unless product.checked %} boost-sd__product-image--blur {% endunless %}"> {% if product.images_info[0] %} <img id="product-image-{{ product.id }}" class="boost-sd__product-image-img boost-sd__product-image-img--main" src="{{ product.images_info[0].src }}" alt="{{ product.title | escape }}" width="auto" height="auto" /> {% else %} <img id="product-image-{{ product.id }}" class="boost-sd__product-image-img boost-sd__product-image-img--main" src="https://cdn.shopify.com/extensions/201f4d7b-8d39-43a4-82de-e6f412341695/0.0.0/assets/boost-pfs-no-image.jpg?v=1677838268" alt="{{ product.title | escape }}" width="auto" height="auto" /> {% endif %} </div> </div> {% if product.checked %} </a> {% endif %} {% if bundleStyle == 'style2' %} <div class="boost-sd__recommendation-bundle-item-info boost-sd__recommendation-bundle-item-info--{{ bundleStyle }}"> <div class="boost-sd__recommendation-bundle-item-info-content {% unless product.checked %} boost-sd__recommendation-bundle-item-info-content--blur {% endunless %}"> <div class="boost-sd__recommendation-bundle-item-title"> {% if forloop.index0 == 0 %} <span role="text" tabindex="0"> <b>This item:</b> {{ product.title | escape }} </span> {% elsif product.checked %} <a class="boost-sd__product-link" href="/products/{{ product.handle }}"> {{ product.title | escape }} </a> {% else %} <span role="text" tabindex="0">{{ product.title | escape }}</span> {% endif %} </div> {%- if product.selectedOption.title != 'Default Title' -%} <div class="boost-sd__recommendation-bundle-dropdown-wrapper boost-sd__recommendation-bundle-dropdown-wrapper--{{ bundleStyle }}"> <div {% if product.checked %} tabindex="0" {% endif %} role="combobox" aria-label="Select an option" aria-expanded="false" aria-haspopup="true" data-id="boost-sd__dropdown-{{ widgetId }}" id="boost-sd__dropdown-{{ widgetId }}" class="boost-sd__dropdown {% unless product.checked %} boost-sd__dropdown--disabled {% endunless %}"> <div class="boost-sd__dropdown-selected-option"> <span aria-label="Current option: {{ product.selectedOption.title | escape }}" class="boost-sd__dropdown-option-text">{{ product.selectedOption.title | escape }}</span> <svg width="8" height="12" viewBox="0 0 8 5" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M7.09832 3.98009e-07L0.901685 -1.43717e-07C0.15069 -2.09371e-07 -0.269991 0.75351 0.193991 1.2676L3.29231 4.70055C3.65265 5.09982 4.34735 5.09982 4.70769 4.70055L7.80601 1.2676C8.26999 0.753511 7.84931 4.63664e-07 7.09832 3.98009e-07Z" fill="#5C5F62"></path> </svg> </div> <ul role="listbox" data-id="boost-sd__dropdown-list-{{ widgetId }}" id="boost-sd__dropdown-list-{{ widgetId }}" class="boost-sd__dropdown-option-list"> {% for variant in product.variants %} <li role="option" aria-selected="{{ variant.title == product.selectedOption.title }}" data-id="boost-sd__dropdown-option-{{ widgetId }}" id="boost-sd__dropdown-option-{{ widgetId }}" class="boost-sd__dropdown-option {% if variant.title == product.selectedOption.title %}boost-sd__dropdown-option--selected{% endif %}"> {{ variant.title | escape }} </li> {% endfor %} </ul> </div> </div> {% endif %} <div class="boost-sd__recommendation-bundle-checkbox"> <button type="button" aria-checked="{% if product.checked %} true {% else %} false {% endif %}" aria-label="{% if product.checked %} Click to remove from bundle {% else %} Click to add to bundle {% endif %}" class="boost-sd__recommendation-bundle-checkbox-box {% if product.checked %} boost-sd__recommendation-bundle-checkbox-box--checked {% endif %}" data-id="boost-sd__checkbox-{{ widgetId }}" id="boost-sd__checkbox-{{ widgetId }}-{{ product.id }}" ></button> </div> <span role="text" tabindex="0" aria-label="Price: {{ product.selectedOption.price }}" class="boost-sd__format-currency"> <span>{{ product.selectedOption.price }}</span> </span> </div> </div> {% endif %} </div> {% unless forloop.last %} <div class="boost-sd__recommendation-bundle-plus-icon-wrapper boost-sd__recommendation-bundle-plus-icon-wrapper--{{ bundleStyle }}"> <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M15 7H9V1C9 0.448 8.553 0 8 0C7.447 0 7 0.448 7 1V7H1C0.447 7 0 7.448 0 8C0 8.552 0.447 9 1 9H7V15C7 15.552 7.447 16 8 16C8.553 16 9 15.552 9 15V9H15C15.553 9 16 8.552 16 8C16 7.448 15.553 7 15 7Z" fill="#5C5F62"></path> </svg> </div> {% endunless %} {% endfor %} </div> {% if bundleStyle == 'style1' %} {% for product in products %} <div class="boost-sd__recommendation-bundle-item-info boost-sd__recommendation-bundle-item-info--{{ bundleStyle }}"> <div class="boost-sd__recommendation-bundle-item-info-content {% unless product.checked %} boost-sd__recommendation-bundle-item-info-content--blur {% endunless %}"> <div class="boost-sd__recommendation-bundle-item-title"> <div class="boost-sd__recommendation-bundle-checkbox"> <button type="button" aria-checked="{% if product.checked %} true {% else %} false {% endif %}" aria-label="{% if product.checked %} Click to remove from bundle {% else %} Click to add to bundle {% endif %}" class="boost-sd__recommendation-bundle-checkbox-box {% if product.checked %} boost-sd__recommendation-bundle-checkbox-box--checked {% endif %}" data-id="boost-sd__checkbox-{{ widgetId }}" id="boost-sd__checkbox-{{ widgetId }}-{{ product.id }}" ></button> </div> {% if forloop.index0 == 0 %} <span role="text" tabindex="0"> <b>This item:</b> {{ product.title | escape }} </span> {% elsif product.checked %} <a class="boost-sd__product-link" href="/products/{{ product.handle }}"> {{ product.title | escape }} </a> {% else %} <span role="text" tabindex="0">{{ product.title | escape }}</span> {% endif %} </div> {%- if product.selectedOption.title != 'Default Title' -%} <div class="boost-sd__recommendation-bundle-dropdown-wrapper boost-sd__recommendation-bundle-dropdown-wrapper--{{ bundleStyle }}"> <div {% if product.checked %} tabindex="0" {% endif %} role="combobox" aria-label="Select an option" aria-expanded="false" aria-haspopup="true" data-id="boost-sd__dropdown-{{ widgetId }}" id="boost-sd__dropdown-{{ widgetId }}" class="boost-sd__dropdown {% unless product.checked %} boost-sd__dropdown--disabled {% endunless %}"> <div class="boost-sd__dropdown-selected-option"> <span aria-label="Current option: {{ product.selectedOption.title | escape }}" class="boost-sd__dropdown-option-text">{{ product.selectedOption.title | escape }}</span> <svg width="8" height="12" viewBox="0 0 8 5" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M7.09832 3.98009e-07L0.901685 -1.43717e-07C0.15069 -2.09371e-07 -0.269991 0.75351 0.193991 1.2676L3.29231 4.70055C3.65265 5.09982 4.34735 5.09982 4.70769 4.70055L7.80601 1.2676C8.26999 0.753511 7.84931 4.63664e-07 7.09832 3.98009e-07Z" fill="#5C5F62"></path> </svg> </div> <ul role="listbox" data-id="boost-sd__dropdown-list-{{ widgetId }}" id="boost-sd__dropdown-list-{{ widgetId }}" class="boost-sd__dropdown-option-list"> {% for variant in product.variants %} <li role="option" aria-selected="{{ variant.title == product.selectedOption.title }}" data-id="boost-sd__dropdown-option-{{ widgetId }}" id="boost-sd__dropdown-option-{{ widgetId }}" class="boost-sd__dropdown-option {% if variant.title == product.selectedOption.title %}boost-sd__dropdown-option--selected{% endif %}"> {{ variant.title | escape }} </li> {% endfor %} </ul> </div> </div> {% endif %} <span role="text" tabindex="0" aria-label="Price: {{ product.selectedOption.price }}" class="boost-sd__format-currency"> <span>{{ product.selectedOption.price }}</span> </span> </div> </div> {% endfor %} {% endif %} </div><div class="boost-sd__recommendation-bundle-right"> {% if hasSelectedProduct == true %} <div role="text" tabindex="0" class="boost-sd__recommendation-bundle-total-price"> Total price: <b class="boost-sd__recommendation-bundle-price-text"> <span class="boost-sd__format-currency">{{ totalPrice }}</span> </b> </div> {% endif %} <button type="button" {% if hasSelectedProduct==false %}disabled{% endif %} class="boost-sd__button boost-sd__button--primary boost-sd__button--large boost-sd__button--round boost-sd__button--full-width boost-sd__btn-add-to-cart"> <span>Add to Cart</span> </button></div></div> {% endif %}</div><style> #{{widgetId}} .boost-sd__recommendation-title { color: {{ widgetDesignSettings.titleTextColor }}; font-family: {{ widgetDesignSettings.titleFont }}; font-size: {{ widgetDesignSettings.titleFontSize }}px; text-transform: {{ widgetDesignSettings.titleTextTransform }}; font-weight: {{ widgetDesignSettings.titleFontWeight }}; font-style: {{ widgetDesignSettings.titleFontStyle }}; }</style>`;
;template["searchTabCollectionsContent"]=`<div role="tabpanel" class="boost-sd__search-result-panel-content"> {% for collection in collections %} <a href="/collections/{{ collection.handle }}" class="boost-sd__search-result-panel-content-item" tabindex="0"> {% capture collectionsDisplayImage %} false {% endcapture %} {% if collectionsDisplayImage and collection.image != null %} <div class="boost-sd__search-result-panel-content-item-image"> <img src="{{ collection.image.src }}"> </div> {% endif %} <div class="boost-sd__search-result-panel-content-item-text"> <p class="boost-sd__search-result-panel-content-item-title">{{ collection.title | escape }}</p> {% capture collectionsDisplayDescription %} false {% endcapture %} {% if collectionsDisplayDescription and collection.body_html != "" %} <p class="boost-sd__search-result-panel-content-item-description">{{ collection.body_html | strip_html | escape }}</p> {% endif %} </div></a> {% endfor %} {% capture pageSize %} 25 {% endcapture %} {% assign pageSize = pageSize | plus: 0 %} {% if pageSize < totalCollection %} {% assign totalPage = totalCollection | divided_by: pageSize | ceil %} {% assign pagination = currentPage | pagination_list: totalPage | split: "," %} {% assign to_product = currentPage | times: pageSize %} <div class="boost-sd__pagination boost-sd__pagination--"> {% if currentPage != 1 %} <button type="button" aria-label="previous page" class="boost-sd__pagination-button boost-sd__pagination-button--rectangle boost-sd__pagination-button--previous" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit; text-transform: none; border-color: transparent; border-width: 1px; border-style: solid;"> <span class="boost-sd__pagination-button-icon boost-sd__pagination-button-icon--left"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 7 12" height="12" width="7"> <path d="M6.80474 0.528514C6.54439 0.268165 6.12228 0.268165 5.86193 0.528514L0.861929 5.52851C0.601579 5.78886 0.601579 6.21097 0.861929 6.47132L5.86193 11.4713C6.12228 11.7317 6.54439 11.7317 6.80474 11.4713C7.06509 11.211 7.06509 10.7889 6.80474 10.5285L2.27614 5.99992L6.80474 1.47132C7.06509 1.21097 7.06509 0.788864 6.80474 0.528514Z" clip-rule="evenodd" fill-rule="evenodd"></path> </svg> </span> </button> {% endif %} {% for page_string in pagination %} {% assign page = page_string | plus: 0 %} {% if page == 0 %} <button class="boost-sd__pagination-number boost-sd__pagination-number--disabled boost-sd__pagination-number--">...</button> {% elsif page == request.page %} <button class="boost-sd__pagination-number boost-sd__pagination-number-- boost-sd__pagination-number--active" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit;" data-page="{{ page }}">{{ page }}</button> {% else %} <button class="boost-sd__pagination-number boost-sd__pagination-number--" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit;" data-page="{{ page }}">{{ page }}</button> {% endif %} {% endfor %} {% if currentPage != totalPage %} <button type="button" aria-label="next page" class="boost-sd__pagination-button boost-sd__pagination-button--rectangle boost-sd__pagination-button--next" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit; text-transform: none; border-color: transparent; border-width: 1px; border-style: solid;"> <span class="boost-sd__pagination-button-icon boost-sd__pagination-button-icon--right"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 7 12" height="12" width="7"> <path d="M0.195262 0.528514C0.455612 0.268165 0.877722 0.268165 1.13807 0.528514L6.13807 5.52851C6.39842 5.78886 6.39842 6.21097 6.13807 6.47132L1.13807 11.4713C0.877722 11.7317 0.455612 11.7317 0.195262 11.4713C-0.0650874 11.211 -0.0650874 10.7889 0.195262 10.5285L4.72386 5.99992L0.195262 1.47132C-0.0650874 1.21097 -0.0650874 0.788864 0.195262 0.528514Z" clip-rule="evenodd" fill-rule="evenodd"></path> </svg> </span> </button> {% endif %} </div> {% endif %}</div>`;
;template["searchTabPagesContent"]=`<div role="tabpanel" class="boost-sd__search-result-panel-content"> {% for page in pages %} <a href="{{ page.url }}" class="boost-sd__search-result-panel-content-item" tabindex="0"> {% capture pagesDisplayImage %} true {% endcapture %} {% if pagesDisplayImage and page.image != null %} <div class="boost-sd__search-result-panel-content-item-image"> <img src="{{ page.image.src }}"> </div> {% endif %} <div class="boost-sd__search-result-panel-content-item-text"> <p class="boost-sd__search-result-panel-content-item-title">{{ page.title | escape }}</p> {% capture pagesDisplayDescription %} {% endcapture %} {% if pagesDisplayDescription and page.body_html != "" %} <div class="boost-sd__search-result-panel-content-item-description">{{ page.body_html | escape}}</div> {% endif %} </div></a> {% endfor %} {% capture pageSize %} 25 {% endcapture %} {% assign pageSize = pageSize | plus: 0 %} {% if pageSize < totalPageTab %} {% assign totalPage = totalPageTab | divided_by: pageSize | ceil %} {% assign pagination = currentPage | pagination_list: totalPage | split: "," %} {% assign to_product = currentPage | times: pageSize %} <div class="boost-sd__pagination boost-sd__pagination--"> {% if currentPage != 1 %} <button type="button" aria-label="previous page" class="boost-sd__pagination-button boost-sd__pagination-button--rectangle boost-sd__pagination-button--previous" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit; text-transform: none; border-color: transparent; border-width: 1px; border-style: solid;"> <span class="boost-sd__pagination-button-icon boost-sd__pagination-button-icon--left"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 7 12" height="12" width="7"> <path d="M6.80474 0.528514C6.54439 0.268165 6.12228 0.268165 5.86193 0.528514L0.861929 5.52851C0.601579 5.78886 0.601579 6.21097 0.861929 6.47132L5.86193 11.4713C6.12228 11.7317 6.54439 11.7317 6.80474 11.4713C7.06509 11.211 7.06509 10.7889 6.80474 10.5285L2.27614 5.99992L6.80474 1.47132C7.06509 1.21097 7.06509 0.788864 6.80474 0.528514Z" clip-rule="evenodd" fill-rule="evenodd"></path> </svg> </span> </button> {% endif %} {% for page_string in pagination %} {% assign page = page_string | plus: 0 %} {% if page == 0 %} <button class="boost-sd__pagination-number boost-sd__pagination-number--disabled boost-sd__pagination-number--">...</button> {% elsif page == request.page %} <button class="boost-sd__pagination-number boost-sd__pagination-number-- boost-sd__pagination-number--active" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit;" data-page="{{ page }}">{{ page }}</button> {% else %} <button class="boost-sd__pagination-number boost-sd__pagination-number--" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit;" data-page="{{ page }}">{{ page }}</button> {% endif %} {% endfor %} {% if currentPage != totalPage %} <button type="button" aria-label="next page" class="boost-sd__pagination-button boost-sd__pagination-button--rectangle boost-sd__pagination-button--next" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit; text-transform: none; border-color: transparent; border-width: 1px; border-style: solid;"> <span class="boost-sd__pagination-button-icon boost-sd__pagination-button-icon--right"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 7 12" height="12" width="7"> <path d="M0.195262 0.528514C0.455612 0.268165 0.877722 0.268165 1.13807 0.528514L6.13807 5.52851C6.39842 5.78886 6.39842 6.21097 6.13807 6.47132L1.13807 11.4713C0.877722 11.7317 0.455612 11.7317 0.195262 11.4713C-0.0650874 11.211 -0.0650874 10.7889 0.195262 10.5285L4.72386 5.99992L0.195262 1.47132C-0.0650874 1.21097 -0.0650874 0.788864 0.195262 0.528514Z" clip-rule="evenodd" fill-rule="evenodd"></path> </svg> </span> </button> {% endif %} </div> {% endif %}</div>`;
;template["searchTabCollectionsContentPagination"]=`{% assign pagination = currentPage | pagination_list: totalPage | split: "," %}{% assign to_product = currentPage | times: pageSize %}<div class="boost-sd__pagination boost-sd__pagination--"> {% if currentPage != 1 %} <button type="button" aria-label="previous page" class="boost-sd__pagination-button boost-sd__pagination-button--rectangle boost-sd__pagination-button--previous" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit; text-transform: none; border-color: transparent; border-width: 1px; border-style: solid;"> <span class="boost-sd__pagination-button-icon boost-sd__pagination-button-icon--left"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 7 12" height="12" width="7"> <path d="M6.80474 0.528514C6.54439 0.268165 6.12228 0.268165 5.86193 0.528514L0.861929 5.52851C0.601579 5.78886 0.601579 6.21097 0.861929 6.47132L5.86193 11.4713C6.12228 11.7317 6.54439 11.7317 6.80474 11.4713C7.06509 11.211 7.06509 10.7889 6.80474 10.5285L2.27614 5.99992L6.80474 1.47132C7.06509 1.21097 7.06509 0.788864 6.80474 0.528514Z" clip-rule="evenodd" fill-rule="evenodd"></path> </svg> </span></button> {% endif %} {% for page_string in pagination %} {% assign page = page_string | plus: 0 %} {% if page == 0 %} <button class="boost-sd__pagination-number boost-sd__pagination-number--disabled boost-sd__pagination-number--">...</button> {% elsif page == request.page %} <button class="boost-sd__pagination-number boost-sd__pagination-number-- boost-sd__pagination-number--active" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit;" data-page="{{ page }}">{{ page }}</button> {% else %} <button class="boost-sd__pagination-number boost-sd__pagination-number--" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit;" data-page="{{ page }}">{{ page }}</button> {% endif %} {% endfor %} {% if currentPage != totalPage %} <button type="button" aria-label="next page" class="boost-sd__pagination-button boost-sd__pagination-button--rectangle boost-sd__pagination-button--next" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit; text-transform: none; border-color: transparent; border-width: 1px; border-style: solid;"> <span class="boost-sd__pagination-button-icon boost-sd__pagination-button-icon--right"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 7 12" height="12" width="7"> <path d="M0.195262 0.528514C0.455612 0.268165 0.877722 0.268165 1.13807 0.528514L6.13807 5.52851C6.39842 5.78886 6.39842 6.21097 6.13807 6.47132L1.13807 11.4713C0.877722 11.7317 0.455612 11.7317 0.195262 11.4713C-0.0650874 11.211 -0.0650874 10.7889 0.195262 10.5285L4.72386 5.99992L0.195262 1.47132C-0.0650874 1.21097 -0.0650874 0.788864 0.195262 0.528514Z" clip-rule="evenodd" fill-rule="evenodd"></path> </svg> </span></button> {% endif %}</div>`;
;template["placeholderFilterTree"]=`<!-- TEMPLATE PLACEHOLDER --><div class='boost-sd-container'><div class='boost-sd-layout boost-sd-layout--has-filter-vertical'> <div class='boost-sd-left boost-filter-tree-column'> <!-- TEMPLATE FILTER TREE PLACEHOLDER --> <div id="boost-sd__filter-tree-wrapper" class="boost-sd__filter-tree-wrapper"> <div class="boost-sd__filter-tree-vertical "> <div class="boost-sd__filter-tree-vertical-placeholder"> <div class="boost-sd__filter-tree-vertical-placeholder-item"> <span class="boost-sd__placeholder-item" style="width:80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width:65%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width:40%; border-radius: 0;"></span> </div> <div class="boost-sd__filter-tree-vertical-placeholder-item"> <span class="boost-sd__placeholder-item" style="width:80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width:65%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width:40%; border-radius: 0;"></span> </div> <div class="boost-sd__filter-tree-vertical-placeholder-item"> <span class="boost-sd__placeholder-item" style="width:80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width:65%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width:40%; border-radius: 0;"></span> </div> <div class="boost-sd__filter-tree-vertical-placeholder-item"> <span class="boost-sd__placeholder-item" style="width:80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width:65%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width:40%; border-radius: 0;"></span> </div> <div class="boost-sd__filter-tree-vertical-placeholder-item"> <span class="boost-sd__placeholder-item" style="width:80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width:65%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width:40%; border-radius: 0;"></span> </div> </div> </div> </div> </div> <div class='boost-sd-right boost-product-listing-column'> <!-- TEMPLATE IN-COLLECTION SEARCH PLACEHOLDER--> <div class='boost-sd__in-collection-search boost-sd__in-collection-search--vertical'> <span class="boost-sd__placeholder-item" style="height: 38px; border-radius: 0; width: 100%;"></span> </div> <!-- TEMPLATE TOOLBAR PLACEHOLDER--> <div class="boost-sd__toolbar-container"> <div class="boost-sd__toolbar-inner"> <div class="boost-sd__toolbar-content"> <div class="boost-sd__toolbar boost-sd__toolbar--3_1"> <span class="boost-sd__toolbar-item boost-sd__placeholder-item" style="height: 28px; border-radius: 0;"></span> <span class="boost-sd__toolbar-item boost-sd__placeholder-item" style="height: 28px; border-radius: 0; margin-bottom: 0"></span> <span class="boost-sd__toolbar-item boost-sd__placeholder-item" style="height: 28px; border-radius: 0; margin-bottom: 0"></span> </div> </div> </div> </div> <!-- TEMPLATE PRODUCT LIST PLACEHOLDER--> <div class="boost-sd__product-list-placeholder boost-sd__product-list-placeholder--4-col"> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> <div class="boost-sd__product-list-placeholder-item"> <span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span> <span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span> </div> </div> <div class="boost-sd__pagination boost-sd__pagination--"> <span class="boost-sd__placeholder-item" style="height: 40px; border-radius: 0;"></span> </div> </div></div></div><style> .boost-sd__collection-header { width: 100%; height: 130px; display: block; background: -webkit-gradient(linear, left top, right top, color-stop(8%, #eee), color-stop(18%, #e6e6e6), color-stop(33%, #eee)); background-color: #eee; animation: banner-place-holder-shimmer 2s linear infinite forwards; } .boost-sd__collection-header:empty { display: block; } .boost-sd__collection-header .boost-sd__placeholder-item { height: 130px; } @media only screen and (min-width: 992px) { .boost-sd__collection-header, .boost-sd__collection-header .boost-sd__placeholder-item { height: 150px; } } @keyframes banner-place-holder-shimmer { 0% { background-position: -1500px 0; } 100% { background-position: 1500px 0; } } .boost-sd__in-collection-search { margin-bottom: 20px; margin-top: 20px; width: 100%; max-width: 100%; display: flex; position: relative; } .boost-sd__in-collection-search--horizontal { margin: 20px auto 0; max-width: 592px; } @media only screen and (min-width: 992px) { .boost-sd__in-collection-search { margin-bottom: 16px; margin-top: 16px; } } .boost-sd__filter-tree-vertical { margin-top: 0; margin-right: 0; } .boost-sd__filter-tree-vertical-placeholder { background: transparent; width: 100%; max-width: 100%; display: none; } .boost-sd__filter-tree-vertical-placeholder-list { margin: 30px 10px 0; padding: 0; list-style: none; } .boost-sd__filter-tree-vertical-placeholder-item { max-width: 100%; padding: 20px 0; display: block; } .boost-sd__filter-tree-vertical-placeholder-item:first-child { padding-top: 0; } .boost-sd__filter-tree-vertical-placeholder-item:not(:last-child) { border-bottom: 1px solid #ebebeb; } .boost-sd__filter-tree-vertical-placeholder-item::before, .boost-sd__filter-tree-vertical-placeholder-item::after, { display: none; } .boost-sd__filter-tree-horizontal-placeholder { display: none; } @media only screen and (min-width: 992px) { .boost-sd__filter-tree-vertical { width: 272px; } .boost-sd-layout .boost-sd-left .boost-sd__filter-tree-wrapper .boost-sd__filter-tree-vertical { margin-right: 16px; margin-left: 0; } .boost-sd__filter-tree-vertical-placeholder, .boost-sd__filter-tree-horizontal-placeholder { display: inline-block; } .boost-sd-layout--has-filter-horizontal { flex-wrap: wrap; margin-top: 0; } .boost-sd-layout--has-filter-horizontal .boost-sd-left, .boost-sd-layout--has-filter-horizontal .boost-sd-right { flex: 0 0 100%; } .boost-sd__filter-tree-horizontal { width: 100%; } .boost-sd__filter-tree-horizontal-placeholder { padding: 16px 0; border-top: 1px solid #ebebeb; width: 100%; max-width: 100%; background: transparent; } .boost-sd__filter-tree-horizontal-placeholder-list { margin: 0; padding: 0; list-style: none; border-bottom: 1px solid #e8e9eb; } .boost-sd__filter-tree-horizontal-placeholder-item { border: none; display: inline-block; margin-right: 35px; position: relative; } .boost-sd__filter-tree-horizontal-placeholder-button { width: auto; height: auto; display: inline-block; position: relative; padding: 5px 15px 5px 0; margin: 0; min-height: auto; min-width: 0; border-radius: 0; box-shadow: none; background: none; border: none; letter-spacing: normal; text-align: left; cursor: pointer; } .boost-sd__filter-tree-horizontal-placeholder-button .boost-sd__placeholder-item { width: 80px; height: 10px; display: inline-block; margin: 0 15px 0 0; } .boost-sd__filter-tree-horizontal-placeholder-icon { transform: rotate(-90deg); } } .boost-sd__in-collection-search { margin-bottom: 20px; margin-top: 20px; width: 100%; max-width: 100%; display: flex; position: relative; } .boost-sd__in-collection-search--horizontal { margin: 20px auto 0; max-width: 592px; } @media only screen and (min-width: 992px) { .boost-sd__in-collection-search { margin-bottom: 16px; margin-top: 16px; } } .boost-sd__toolbar-container { width: 100%; margin-bottom: 16px; } .boost-sd__toolbar-inner { max-width: 1216px; margin: 0 auto; } .boost-sd__toolbar-content { border-bottom: 1px solid #ebebeb; border-top: 1px solid #ebebeb; padding: 16px 0; } .boost-sd__toolbar { align-items: center; width: 100%; display: flex; flex-wrap: wrap; column-gap: 16px; justify-content: space-between; } .boost-sd__toolbar .boost-sd__placeholder-item { flex-basis: 45%; } .boost-sd__toolbar .boost-sd__placeholder-item:first-child { flex-basis: 100%; margin-bottom: 16px; } @media only screen and (min-width: 992px) { .boost-sd__toolbar-content { display: flex; align-items: center; border-bottom: none; padding: 16px 0 16px; border-top: 1px solid #ebebeb; border-bottom: 0; } .boost-sd__toolbar { flex-wrap: inherit; } .boost-sd__toolbar .boost-sd__placeholder-item { flex-basis: auto; } .boost-sd__toolbar .boost-sd__placeholder-item:first-child { flex-basis: auto; margin-bottom: 0; } .boost-sd__toolbar--3_1 .boost-sd__toolbar-item { flex: 1; } .boost-sd__toolbar--3_1 .boost-sd__toolbar-item:nth-child(2) { justify-content: center; } .boost-sd__toolbar--3_1 .boost-sd__toolbar-item:nth-child(3) { justify-content: end; } } .boost-sd__product-list-placeholder { gap: 16px; margin-bottom: 32px; flex-wrap: wrap; width: 100%; display: flex; } .boost-sd__product-list-placeholder--1-col .boost-sd__product-list-placeholder-item { width: 100%; } .boost-sd__product-list-placeholder--2-col .boost-sd__product-list-placeholder-item, .boost-sd__product-list-placeholder--3-col .boost-sd__product-list-placeholder-item, .boost-sd__product-list-placeholder--4-col .boost-sd__product-list-placeholder-item, .boost-sd__product-list-placeholder--5-col .boost-sd__product-list-placeholder-item, .boost-sd__product-list-placeholder--6-col .boost-sd__product-list-placeholder-item { width: calc(50% - 8px); } .boost-sd__product-list-placeholder .boost-sd__product-list-placeholder-item .boost-sd__placeholder-item:first-child { height: 222px; } .boost-sd__pagination { padding-top: 10px; padding-bottom: 10px; justify-content: center; align-items: center; display: flex; } @media only screen and (min-width: 576px) { .boost-sd__product-list-placeholder { gap: 32px; margin-bottom: 64px; } .boost-sd__product-list-placeholder--3-col .boost-sd__product-list-placeholder-item, .boost-sd__product-list-placeholder--4-col .boost-sd__product-list-placeholder-item, .boost-sd__product-list-placeholder--5-col .boost-sd__product-list-placeholder-item, .boost-sd__product-list-placeholder--6-col .boost-sd__product-list-placeholder-item { width: calc(33.3333333333% - (32px - 32px / 3)); } } @media only screen and (min-width: 992px) { .boost-sd__product-list-placeholder .boost-sd__placeholder-item:not(:last-child) { margin-bottom: 8px; } .boost-sd__product-list-placeholder .boost-sd__placeholder-item:first-child { margin-bottom: 16px; } .boost-sd__product-list-placeholder--3-col .boost-sd__product-list-placeholder-item .boost-sd__placeholder-item:first-child { height: 382px; } .boost-sd__product-list-placeholder--4-col .boost-sd__product-list-placeholder-item .boost-sd__placeholder-item:first-child { height: 275px; } .boost-sd__product-list-placeholder--5-col .boost-sd__product-list-placeholder-item .boost-sd__placeholder-item:first-child { height: 215px; } .boost-sd__product-list-placeholder--6-col .boost-sd__product-list-placeholder-item .boost-sd__placeholder-item:first-child { height: 175px; } .boost-sd__product-list-placeholder--3-col .boost-sd__product-list-placeholder-item { width: calc(33.3333333333% - (32px - 32px / 3)); } .boost-sd__product-list-placeholder--4-col .boost-sd__product-list-placeholder-item { width: calc(25% - (32px - 32px / 4)); } .boost-sd__product-list-placeholder--5-col .boost-sd__product-list-placeholder-item { width: calc(20% - (32px - 32px / 5)); } .boost-sd__product-list-placeholder--6-col .boost-sd__product-list-placeholder-item { width: calc(16.6666667% - (32px - 32px / 6)); } } .boost-sd-container * { box-sizing: border-box; } .boost-sd__placeholder-item { background: rgba(0, 0, 0, 0.07); border-radius: 50rem; min-width: 50px; max-width: 100%; height: 20px; animation: 2s infinite place-holder-animation; display: inline-block; } .boost-sd__placeholder-item:empty { display: block; } .boost-sd__placeholder-item:not(:last-child) { margin-bottom: 18px; } .boost-sd-layout { margin: 20px auto 0; } .boost-sd-left { position: relative; } .boost-sd-layout .boost-sd-right { width: 100%; margin-bottom: 20px; } @keyframes place-holder-animation { 0% { opacity: 1; } 50% { opacity: 0.5; } 100% { opacity: 1; } } @media only screen and (min-width: 992px) { .boost-sd-layout { display: flex; max-width: 1216px; } .boost-sd-layout .boost-sd-right { flex: auto; max-width: 100%; } }</style>`;
;template["preOrder"]=`<!-- TEMPLATE PRE-ORDER APP BLOCK --><div class="boost-sd__product-form"><!-- Quantity Input --><div class="boost-sd__product-form-quantity"> <p id="quantity-title" class="boost-sd__product-form-quantity-title"> {{ "quickView.qvQuantity" | translate: translations, 'Quantity' }} </p> <div class="boost-sd__input-number boost-sd__input-number--md" role="group" aria-labelledby="quantity-title"> <div class="boost-sd__input-number-btn-wrapper"> <button type="button" aria-label="Decrease quantity" aria-controls="item-quantity" class="boost-sd__button boost-sd__button--full-width boost-sd__input-number-btn"> <span aria-hidden="true">-</span> </button> </div> <input id="item-quantity" type="number" aria-labelledby="quantity-title" aria-describedby="quantity-error" class="boost-sd__input-number-input" value="1" min="1" /> <div class="boost-sd__input-number-btn-wrapper"> <button type="button" aria-label="Increase quantity" aria-controls="item-quantity" class="boost-sd__button boost-sd__button--full-width boost-sd__input-number-btn"> <span aria-hidden="true">+</span> </button> </div> </div> <div id="quantity-error" class="boost-sd__product-form-quantity-error" aria-live="assertive"> {{ "quickView.qvQuantityError" | translate: translations, 'Please input quantity' }} </div></div><div class="boost-sd__preorder-options"> <!-- TEMPLATE PRE_ORDER WITH PAYMENT --> {% comment %} TODO check preorder {% endcomment %} {% if product.variants %} {% assign variants = product.variants %} {% else %} {% assign variants = variants %} {% endif %} {% for variant in variants %} {% if variant.preorder %} {% assign paymentType = variant.preorder.payment.type %} {% assign discountType = variant.preorder.payment.discountType %} {% assign discountValue = variant.preorder.payment.discountValue %} {% assign originalPrice = variant.price %} {% assign paymentLabel = '' %} {% if paymentType == 'full' %} {% assign paymentLabel = 'Full payment' %} {% endif %} {% if paymentType == 'partial' %} {% assign paymentLabel = 'Partial payment' %} {% endif %} {% if paymentType == 'none' %} {% assign paymentLabel = 'No payment' %} {% endif %} {% assign money_format = request.money_format | strip_html -%} {% assign money_rate = request.currency_rate | strip_html -%} {% if discountType == 'percentage' %} {% assign percentNum = originalPrice | times: discountValue | divided_by: 100 %} {% assign discountedPrice = originalPrice | times: 1.0 | minus: percentNum %} {% elsif discountType == 'amount' %} {% assign discountValue = discountValue | times: money_rate %} {% assign discountedPrice = originalPrice | times: 1.0 | minus: discountValue %} {% else %} {% assign discountedPrice = originalPrice %} {% endif %} {% assign removePriceDecimal = false -%} {% assign showCentAsSuperscript = false -%} {% assign decimalDelimiter = '' -%} {% assign withoutTrailingZeros = true -%} {% assign originalPriceFormat = originalPrice | format_currency: money_format, showCentAsSuperscript, removePriceDecimal, decimalDelimiter, withoutTrailingZeros -%} {% assign discountedPriceFormat = discountedPrice | format_currency: money_format, showCentAsSuperscript, removePriceDecimal, decimalDelimiter, withoutTrailingZeros -%} {% assign discountValueFormat = discountValue | format_currency: money_format, showCentAsSuperscript, removePriceDecimal, decimalDelimiter, withoutTrailingZeros %} <div class="boost-sd__preorder" tabindex="0" data-variant-id="{{ variant.id }}" role="region" aria-labelledby="preorder-title" aria-describedby="preorder-description"> <div class="boost-sd__preorder-option"> <h2 id="preorder-title" class="boost-sd__preorder-title">{{ paymentLabel }}</h2> <div id="preorder-description" class="boost-sd__preorder-discount" aria-live="polite"> {% if discountType == 'percentage' %} <span class="boost-sd__preorder-save">Save {{ discountValue }}%</span> {% elsif discountType == 'amount' %} <span class="boost-sd__preorder-save">Save {{ discountValueFormat }}</span> {% endif %} <div class="boost-sd__preorder-price"> {% if discountType != 'none' %} <span class="boost-sd__preorder-original-price" aria-label="Original Price: {{ originalPriceFormat }}">{{ originalPriceFormat }}</span> {% endif %} <span class="boost-sd__preorder-discounted-price" aria-label="Discounted Price: {{ discountedPriceFormat }}">{{ discountedPriceFormat }}</span> </div> </div> </div> </div> {% endif %} {% endfor %} {% assign button_label = 'Pre-Order' %} {% assign preOrderButtonText = variants[0].preorder.settings.buttonText %} {% assign preOrderDeliveryText = variants[0].preorder.settings.deliveryText %} {% if preOrderButtonText and preOrderButtonText != '' %} {% assign button_label = preOrderButtonText %} {% endif %} <button type="button" aria-label='{{ button_label }}' class="boost-sd__button boost-sd__button--border boost-sd__button--rectangle boost-sd__button--large boost-sd__button--preorder"> <span class="boost-sd__button-text" aria-hidden="true"> {{ button_label }} </span> </button> <p tabindex="0" class="boost-sd__preorder-note"> <strong class="boost-sd__preorder-note-title">Please note: </strong><span class="boost-sd__preorder-note-text">{{ preOrderDeliveryText }}</span> </p></div><!-- TEMPLATE ADD TO CART --><div class="boost-sd__purchase-options"> <button type="button" class="boost-sd__button boost-sd__button--border boost-sd__button--rectangle boost-sd__button--large boost-sd__button--purchase"> <span class="boost-sd__button-text"> {{ "productItem.atcAvailableLabel" | translate: translations, 'Add to cart' }} </span> </button> <button type="button" class="boost-sd__button boost-sd__button--border boost-sd__button--rectangle boost-sd__button--large boost-sd__btn-buy-now"> <span class="boost-sd__button-text">{{ "quickView.buyItNowBtnLabel" | translate: translations, 'Buy it now' }}</span> </button></div></div>`;
;template["preOrderPlaceholder"]=`<!-- Placeholder for PreOrder --><div class="boost-sd__preorder-placeholder"><div class="boost-sd__preorder-placeholder-quantity-label"> <div class="boost-sd__placeholder-item" style="width: 65px; height: 20px;"></div></div><div class="boost-sd__preorder-placeholder-product-quantity"> <div class="boost-sd__placeholder-item" style="width: 160px; height: 38px;"></div></div><div class="boost-sd__preorder-placeholder-add-to-cart"> <div class="boost-sd__placeholder-item" style="width: 100%; height: 50px;"></div></div><div class="boost-sd__preorder-placeholder-buy-it-now"> <div class="boost-sd__placeholder-item" style="width: 100%; height: 50px;"></div></div></div>`;
;template["backInStock"]=`<!-- Floating Notify Me Button --><button aria-haspopup="dialog" aria-controls="boost-sd__bis-notify-popup" id="boost-sd__bis-notify-me-button" class="boost-sd__bis-notify-button"> Notify me when available</button><!-- Popup Notify Me Form --><div role="dialog" aria-hidden="true" aria-labelledby="boost-sd__bis-popup-title" aria-describedby="boost-sd__bis-popup-description" id="boost-sd__bis-notify-popup" class="boost-sd__bis-notify-popup"><div class="boost-sd__bis-popup-backdrop"></div><div class="boost-sd__bis-popup-container"> <div class="boost-sd__bis-popup-heading"> <!-- Close Button --> <button aria-label="Close popup" id="boost-sd__bis-close-popup" class="boost-sd__bis-close-button"> <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-label='{{ "close" | translate: translations, "Close" }}'> <path d="M9.41385 8L15.7069 1.707C15.8944 1.51949 15.9997 1.26518 15.9997 1C15.9997 0.734825 15.8944 0.48051 15.7069 0.293002C15.5193 0.105494 15.265 0.000152588 14.9998 0.000152588C14.7347 0.000152588 14.4804 0.105494 14.2928 0.293002L7.99985 6.586L1.70685 0.293002C1.614 0.200157 1.50378 0.126509 1.38247 0.0762618C1.26117 0.0260146 1.13115 0.000152588 0.999849 0.000152588C0.868547 0.000152588 0.738531 0.0260146 0.617224 0.0762618C0.495916 0.126509 0.385694 0.200157 0.292849 0.293002C0.105341 0.48051 0 0.734825 0 1C0 1.26518 0.105341 1.51949 0.292849 1.707L6.58585 8L0.292849 14.293C0.105341 14.4805 0 14.7348 0 15C0 15.2652 0.105341 15.5195 0.292849 15.707C0.480357 15.8945 0.734673 15.9999 0.999849 15.9999C1.26503 15.9999 1.51934 15.8945 1.70685 15.707L7.99985 9.414L14.2928 15.707C14.3855 15.8002 14.4957 15.8741 14.617 15.9246C14.7383 15.9751 14.8684 16.001 14.9998 16.001C15.1313 16.001 15.2614 15.9751 15.3827 15.9246C15.504 15.8741 15.6142 15.8002 15.7069 15.707C15.7998 15.6142 15.8735 15.504 15.9238 15.3827C15.9742 15.2614 16 15.1313 16 15C16 14.8687 15.9742 14.7386 15.9238 14.6173C15.8735 14.496 15.7998 14.3858 15.7069 14.293L9.41385 8Z" fill="#5C5F62" /> </svg> </button> <!-- Title --> <p id="boost-sd__bis-popup-title" class="boost-sd__bis-popup-title">Notify me</p> </div> <div class="boost-sd__bis-popup-content"> <!-- Description --> <p id="boost-sd__bis-popup-description" class="boost-sd__bis-popup-description"> Get a notification as soon as this product is back in stock by signing up below! </p> <!-- Variant Selector --> {% if filteredVariants.size > 0 and filteredVariants[0].title != 'Default Title' %} <label for="boost-sd__bis-dropdown-variant" class="boost-sd__bis-dropdown-label">Select variant</label> <div aria-label="Select an option" role="combobox" aria-expanded="false" aria-haspopup="listbox" aria-controls="boost-sd__bis-dropdown-list" aria-activedescendant="" data-id="boost-sd__bis-dropdown-variant" id="boost-sd__bis-dropdown-variant" class="boost-sd__bis-dropdown-variant"> <div role="button" aria-labelledby="boost-sd__bis-dropdown-selected-option" aria-label="Press to toggle dropdown" id="boost-sd__bis-dropdown-selected-option" class="boost-sd__bis-dropdown-selected-option" tabindex="0"> <span aria-label="Current option: {{ filteredVariants[0].title | escape }}" class="boost-sd__bis-dropdown-option-text" title="{{ filteredVariants[0].title | escape }}"> {{ filteredVariants[0].title | escape }} </span> <svg width="8" height="12" viewBox="0 0 8 5" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M7.09832 3.98009e-07L0.901685 -1.43717e-07C0.15069 -2.09371e-07 -0.269991 0.75351 0.193991 1.2676L3.29231 4.70055C3.65265 5.09982 4.34735 5.09982 4.70769 4.70055L7.80601 1.2676C8.26999 0.753511 7.84931 4.63664e-07 7.09832 3.98009e-07Z" fill="#222222"></path> </svg> </div> <ul role="listbox" aria-labelledby="boost-sd__bis-dropdown-selected-option" data-id="boost-sd__bis-dropdown-list" id="boost-sd__bis-dropdown-list" class="boost-sd__bis-dropdown-option-list" tabindex="-1"> {% for variant in filteredVariants %} <li role="option" tabindex="-1" aria-selected="false" data-id="boost-sd__bis-dropdown-option-item-{{ forloop.index }}" id="boost-sd__bis-dropdown-option-item-{{ forloop.index }}" class="boost-sd__bis-dropdown-option-item" data-variant-id="{{ variant.id }}"> {{ variant.title | escape }} </li> {% endfor %} </ul> </div> {% endif %} <!-- Email Input --> <label for="boost-sd__bis-email-input" class="boost-sd__bis-email-label">Email address</label> <input type="email" aria-describedby="boost-sd__bis-email-error" id="boost-sd__bis-email-input" class="boost-sd__bis-email-input" placeholder="Enter your email" /> <span aria-live="polite" id="boost-sd__bis-email-error" class="boost-sd__bis-email-error">Please input a valid email address</span> <!-- Submit Button --> <button aria-disabled="true" id="boost-sd__bis-submit-button" class="boost-sd__bis-submit-button" disabled> Notify me when available </button> </div></div></div><!-- Success Banner --><div aria-hidden="true" aria-live="polite" id="boost-sd__bis-success-banner" class="boost-sd__bis-success-banner"><svg id="boost-sd__bis-success-banner-icon" class="boost-sd__bis-success-banner-icon" width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M0 10C0 15.514 4.486 20 10 20C15.514 20 20 15.514 20 10C20 4.486 15.514 0 10 0C4.486 0 0 4.486 0 10ZM15.2071 8.20711C15.5976 7.81658 15.5976 7.18342 15.2071 6.79289C14.8166 6.40237 14.1834 6.40237 13.7929 6.79289L9 11.5858L6.70711 9.29289C6.31658 8.90237 5.68342 8.90237 5.29289 9.29289C4.90237 9.68342 4.90237 10.3166 5.29289 10.7071L8.29289 13.7071C8.68342 14.0976 9.31658 14.0976 9.70711 13.7071L15.2071 8.20711Z" fill="white" /></svg><span id="boost-sd__bis-success-banner-text" class="boost-sd__bis-success-banner-text">We will notify you when the item is available</span></div>`;
;return{templateUrl:"https://services.mybcapps.com/bc-sf-filter/ssr-template",templateId,templateMetadata,template,templateSettings}}};TemplateManagement.moduleName="TemplateManagement";var TierDiscountBundle=class extends BoostTAEAppModule{constructor(){super(...arguments);this.initBlock=()=>{const tierDiscountBundleDom=document.querySelector(".boost-sd__widget-tier-discount-bundle");if(!tierDiscountBundleDom){return}this.block={id:tierDiscountBundleDom.id||"bc-tier-discount-bundle",document:tierDiscountBundleDom};this.backwardCompatibilityV1Module?.legacyAssignDefaultBlockAttributes(this.block,tierDiscountBundleDom,"tierDiscountBundle");this.TAEApp.registerBlock(this.block)}}get backwardCompatibilityV1Module(){return this.TAEApp.getModule(BackwardCompatibilityV1)}onModuleInit(){document.addEventListener("DOMContentLoaded",this.initBlock)}onModuleDestroy(){document.removeEventListener("DOMContentLoaded",this.initBlock)}};TierDiscountBundle.moduleName="TierDiscountBundle";var VolumeBundle=class extends BoostTAEAppModule{constructor(){super(...arguments);this.initBlock=()=>{const volumeBundleDom=document.querySelector(".boost-sd__widget-volume-bundle");if(!volumeBundleDom){return}this.block={id:volumeBundleDom.id||"bc-volume-bundle",document:volumeBundleDom};this.backwardCompatibilityV1Module?.legacyAssignDefaultBlockAttributes(this.block,volumeBundleDom,"volumeBundle");this.TAEApp.registerBlock(this.block)}}get backwardCompatibilityV1Module(){return this.TAEApp.getModule(BackwardCompatibilityV1)}onModuleInit(){document.addEventListener("DOMContentLoaded",this.initBlock)}onModuleDestroy(){document.removeEventListener("DOMContentLoaded",this.initBlock)}};VolumeBundle.moduleName="VolumeBundle";var application=new Application().loadModule(AppSettings).loadModule(ShopifyDataObject).loadModule(ShopifyMetafield).loadModule(TemplateManagement).loadModule(CollectionFilter).loadModule(AdditionalElement).loadModule(Search).loadModule(Recommendation).loadModule(Cart).loadModule(Analytics).loadModule(B2B).loadModule(BackInStock).loadModule(VolumeBundle).loadModule(TierDiscountBundle).loadModule(PredictiveBundle).loadModule(PreOrder).loadModule(CountdownTimer).loadModule(SimplifiedIntegration).loadModule(SEOEnhancement).loadModule(Fallback).loadModule(AssetFilesLoader).loadModule(BackwardCompatibilityV1);application.start();function getBoostTAE(){return application}})();</script><style>.boost-sd__filter-product-list img[loading=lazy]{display:none}</style><!-- END app block --><script src="https://cdn.shopify.com/extensions/01a02478-8c65-7af3-848f-b2b80f2e8343/gdpr-backpack-848/assets/consentmo_cookie_consent.js" type="text/javascript" defer="defer"></script>
<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 55059120300,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "page"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
<script>
window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
</script>
<script>(function(){var wpmLoader=function(){"use strict";var e=/Googlebot|Storebot-Google|bingbot|Baiduspider|YandexBot|DuckDuckBot|Slurp|facebookexternalhit|Twitterbot|LinkedInBot|Applebot|AdsBot-Google|Mediapartners-Google|APIs-Google|PetalBot|SemrushBot|AhrefsBot|MJ12bot|DotBot|Acunetix|PerplexityBot|Perplexity-User/i,r=/bytedance/i;function o(){try{var e=document.cookie;if(!e||"string"!=typeof e)return;for(var r=0,o=e.split(";");r<o.length;r++){var d=o[r],t=d.indexOf("=");if(-1!==t){var n=d.slice(0,t).trim();if(n){var i=void 0;try{i=decodeURIComponent(n)}catch(e){i=n}if("_shopify_s"===i){var a=d.slice(t+1).trim();try{return decodeURIComponent(a)}catch(e){return a}}}}}return}catch(e){return}}function d(e){try{"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(e)}catch(e){}}return function(t,n,i,a){var s,c,u,l,f=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},p=(c=(s={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,u=s.legacy,(l=navigator.userAgent).match(e)?"bot":l.match(c)?"modern":l.match(u)?"legacy":l.match(r)?"bot":"unknown"),h=function(e){var r=e.version,t=e.browserTarget,n=e.surface,i=e.shopId,a=e.monorailEndpoint,s=window.location.href;return{emit:function(e){var c,u=e.status,l=e.errorMsg;if(!a)return d("[Web Pixels Manager] No Monorail endpoint provided, skipping logging."),!1;try{var f=(new Date).getTime();c=JSON.stringify({metadata:{event_sent_at_ms:f},events:[{schema_id:"web_pixels_manager_load/3.2",payload:{version:r,bundle_target:t,page_url:s,status:u,surface:n,error_msg:l,shop_id:i,visit_token:o()},metadata:{event_created_at_ms:f}}]})}catch(e){return!1}var p,h=!1;try{"function"==typeof window.navigator.sendBeacon&&-1===(p=window.navigator.userAgent).indexOf("iPhone; CPU iPhone OS 12_")&&-1===p.indexOf("iPad; CPU OS 12_")&&-1===p.indexOf("iPod touch; CPU iPhone OS 12_")&&(h=window.navigator.sendBeacon.bind(window.navigator)(a,c))}catch(e){h=!1}if(h)return!0;try{var m=new XMLHttpRequest;return m.open("POST",a,!0),m.setRequestHeader("Content-Type","text/plain"),m.send(c),!0}catch(e){return d("[Web Pixels Manager] Got an unhandled error while logging to Monorail."),!1}}}}({version:i,browserTarget:p,surface:t.surface,shopId:t.shopId,monorailEndpoint:t.monorailEndpoint});if(Boolean(null==(y=null==(m=window.Shopify)?void 0:m.analytics)?void 0:y.replayQueue))h.emit({status:"setup-skipped",errorMsg:"replay queue already initialized."});else{var m,y;h.emit({status:"setup-started"}),window.Shopify=window.Shopify||{};var g=window.Shopify;g.analytics=g.analytics||{};var v=g.analytics;v.replayQueue=[],v.publish=function(e,r,o){return v.replayQueue.push([e,r,o]),!0};try{self.performance.mark("wpm:start")}catch(e){}var w,b="modern"===p?"modern":"legacy",P=(null!=a?a:{modern:"",legacy:""})[b],S=[(w={baseUrl:n,hashVersion:i,buildTarget:b}).baseUrl,"/wpm","/b",w.hashVersion,"modern"===w.buildTarget?"m":"l",".js"].join("");try{f.browserTarget=p,O(function(){try{O(_)}catch(e){h.emit({status:"failed",errorMsg:U(e)})}}),h.emit({status:"loading"})}catch(e){h.emit({status:"failed",errorMsg:U(e)})}}function C(){if(!function(){var e,r;return Boolean(null==(r=null==(e=window.Shopify)?void 0:e.analytics)?void 0:r.initialized)}()){var e=window.webPixelsManager.init(t)||void 0;if(e){var r=window.Shopify.analytics;r.replayQueue.forEach(function(r){var o=r[0],d=r[1],t=r[2];e.publishCustomEvent(o,d,t)}),r.replayQueue=[],r.publish=e.publishCustomEvent,r.visitor=e.visitor,r.initialized=!0}}}function _(){return h.emit({status:"failed",errorMsg:"".concat(S," has failed to load")})}function O(e){var r;!function(e){var r=e.src,o=e.async,d=void 0===o||o,t=e.onload,n=e.onerror,i=e.sri,a=e.scriptDataAttributes,s=void 0===a?{}:a,c=document.createElement("script"),u=document.querySelector("head"),l=document.querySelector("body");if(c.async=d,c.src=r,i&&(c.integrity=i,c.crossOrigin="anonymous"),s)for(var f in s)if(Object.prototype.hasOwnProperty.call(s,f))try{c.dataset[f]=s[f]}catch(e){}if(t&&c.addEventListener("load",t),n&&c.addEventListener("error",n),u)u.appendChild(c);else{if(!l)throw new Error("Did not find a head or body element to append the script");l.appendChild(c)}}({src:S,async:!0,onload:C,onerror:e,sri:(r=P,"string"==typeof r&&/^sha384-[A-Za-z0-9+/=]+$/.test(r)?P:""),scriptDataAttributes:f})}function U(e){return e instanceof Error?e.message:"Unknown error"}}}();wpmLoader({shopId: 55059120300,storefrontBaseUrl: "https://www.tupperware.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://www.tupperware.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["d5bdd5d0","656605ce"],webPixelsConfigList: [{"id":"2416312492","configuration":"{\"accountID\":\"quantity-analytics\",\"appUrl\":\"https:\/\/quantity-app-9bd812c37ee5.herokuapp.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"9f6f38339dcd9613b9632b97c1762365","type":"APP","apiClientId":250493566977,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2318303404","configuration":"{\"dummy\": \"shopify-requires-a-setting\", \"mparticleKey\": \"us2-62bf999639179b4987591e53d0d48184\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"00483b24138d67a073f1731751addbf7","type":"APP","apiClientId":5517037,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2215477420","configuration":"{\"shopId\":\"55059120300\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"83adcaf06c5deacff41ffdf8f92d9129","type":"APP","apiClientId":246667608065,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_phone","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2208170156","configuration":"{\"swymApiEndpoint\":\"https:\/\/swymstore-v3pro-01.swymrelay.com\",\"swymTier\":\"v3pro-01\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"5b6f6917e306bc7f24523662663331c0","type":"APP","apiClientId":1350849,"privacyPurposes":["ANALYTICS","MARKETING","PREFERENCES"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1337229484","configuration":"{\"accountID\":\"RYZJ4x\",\"webPixelConfig\":\"eyJlbmFibGVBZGRlZFRvQ2FydEV2ZW50cyI6IHRydWV9\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c63c5b72c8d77be5f2d27d14c081da38","type":"APP","apiClientId":123074,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"1201307820","configuration":"{\"accountID\":\"123\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"848c306667aa9461e745ee85952411fb","type":"APP","apiClientId":4415147,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1104609452","configuration":"{\"pixel_id\":\"1888863871891494\",\"pixel_type\":\"facebook_pixel\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"abff2a8add143ccb04deb20f0ebd74a9","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"950206636","configuration":"{\"enabled\":\"true\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"68e665a9ebdc158544b2a306ec6e9d36","type":"APP","apiClientId":260025548801,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_phone","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"640614572","configuration":"{\"pixelCode\":\"CUDSGARC77UAJCGAD4OG\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"22e92c2ad45662f435e4801458fb78cc","type":"APP","apiClientId":4383523,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"428933292","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-S9N6QHVZWH\\\",\\\"AW-327997821\\\",\\\"GT-PLHFV285\\\"],\\\"target_country\\\":\\\"US\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-S9N6QHVZWH\\\",\\\"AW-327997821\\\/t7zPCPaqp_QCEP2ys5wB\\\"]},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-S9N6QHVZWH\\\",\\\"AW-327997821\\\/Z7aKCPmqp_QCEP2ys5wB\\\"]},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-S9N6QHVZWH\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-S9N6QHVZWH\\\",\\\"AW-327997821\\\/YeDMCPCqp_QCEP2ys5wB\\\",\\\"MC-9D40FE3TF5\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-S9N6QHVZWH\\\"},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-S9N6QHVZWH\\\",\\\"AW-327997821\\\/BKKBCO2qp_QCEP2ys5wB\\\",\\\"MC-9D40FE3TF5\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-S9N6QHVZWH\\\",\\\"AW-327997821\\\/bdTZCOqqp_QCEP2ys5wB\\\",\\\"MC-9D40FE3TF5\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-S9N6QHVZWH\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-S9N6QHVZWH\\\",\\\"AW-327997821\\\/PDtyCPyqp_QCEP2ys5wB\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-S9N6QHVZWH\\\",\\\"AW-327997821\\\/-cS_CPOqp_QCEP2ys5wB\\\"]},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-S9N6QHVZWH\\\"}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"9120410995b7c9c6f4f039573265c0ea","type":"APP","apiClientId":1780363,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"126746796","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"cj-network-integration-pixel"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0510","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0510","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Tupperware Brand","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"tupperware-usa.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/www.tupperware.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://www.tupperware.com/cdn","2d9dfbe8w1156b718pbb247b16m64115e31",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"147577143468","themeStoreId":"887","themePublished":"true","eventMetadataId":"4f503ae3-d954-49bb-9254-cb25cc624926","pageType":"page","resourceId":"118863495340","shopId":"55059120300","storefrontBaseUrl":"https:\/\/www.tupperware.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"d5bdd5d0\", \"656605ce\"]","isMerchantRequest":"false","hashVersion":"2d9dfbe8w1156b718pbb247b16m64115e31","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script><script>
window.ShopifyAnalytics = window.ShopifyAnalytics || {};
window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
window.ShopifyAnalytics.meta.currency = 'USD';
var meta = {"page":{"pageType":"page","resourceType":"page","resourceId":118863495340,"requestId":"1f0bbf01-650d-4a0a-968b-81b561668546-1787379220"}};
for (var attr in meta) {
window.ShopifyAnalytics.meta[attr] = meta[attr];
}
</script>
<script class="analytics">
(function () {
var customDocumentWrite = function(content) {
var jquery = null;
if (window.jQuery) {
jquery = window.jQuery;
} else if (window.Checkout && window.Checkout.$) {
jquery = window.Checkout.$;
}
if (jquery) {
jquery('body').append(content);
}
};
var hasLoggedConversion = function(token) {
if (token) {
return document.cookie.indexOf('loggedConversion=' + token) !== -1;
}
return false;
}
var setCookieIfConversion = function(token) {
if (token) {
var twoMonthsFromNow = new Date(Date.now());
twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
}
}
var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
window.ShopifyAnalytics.lib.trekkie = window.trekkie;
if (trekkie.integrations) {
return;
}
trekkie.methods = [
'identify',
'page',
'ready',
'track',
'trackForm',
'trackLink'
];
trekkie.factory = function(method) {
return function() {
var args = Array.prototype.slice.call(arguments);
args.unshift(method);
trekkie.push(args);
if (window.__TREKKIE_SHIM_QUEUE && (method == 'track' || method == 'page')) {
try {
window.__TREKKIE_SHIM_QUEUE.push({
from: 'trekkie-stub',
method: method,
args: args.slice(1)
});
} catch (e) {
// no-op
}
}
return trekkie;
};
};
for (var i = 0; i < trekkie.methods.length; i++) {
var key = trekkie.methods[i];
trekkie[key] = trekkie.factory(key);
}
trekkie.load = function(config) {
trekkie.config = config || {};
trekkie.config.initialDocumentCookie = document.cookie;
var first = document.getElementsByTagName('script')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.onerror = function(e) {
var scriptFallback = document.createElement('script');
scriptFallback.type = 'text/javascript';
scriptFallback.onerror = function(error) {
var Monorail = {
produce: function produce(monorailDomain, schemaId, payload) {
var currentMs = new Date().getTime();
var event = {
schema_id: schemaId,
payload: payload,
metadata: {
event_created_at_ms: currentMs,
event_sent_at_ms: currentMs
}
};
return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
},
sendRequest: function sendRequest(endpointUrl, payload) {
// Try the sendBeacon API
if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
var blobData = new window.Blob([payload], {
type: 'text/plain'
});
if (window.navigator.sendBeacon(endpointUrl, blobData)) {
return true;
} // sendBeacon was not successful
} // XHR beacon
var xhr = new XMLHttpRequest();
try {
xhr.open('POST', endpointUrl);
xhr.setRequestHeader('Content-Type', 'text/plain');
xhr.send(payload);
} catch (e) {
console.log(e);
}
return false;
},
isIos12: function isIos12() {
return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
}
};
Monorail.produce('monorail-edge.shopifysvc.com',
'trekkie_storefront_load_errors/1.1',
{shop_id: 55059120300,
theme_id: 147577143468,
app_name: "storefront",
context_url: window.location.href,
source_url: "//www.tupperware.com/cdn/s/trekkie.storefront.7bcd7bb8195e24c65a61d69d69eb32392ed0d53f.min.js"});
};
scriptFallback.async = true;
scriptFallback.src = '//www.tupperware.com/cdn/s/trekkie.storefront.7bcd7bb8195e24c65a61d69d69eb32392ed0d53f.min.js';
first.parentNode.insertBefore(scriptFallback, first);
};
script.async = true;
script.src = '//www.tupperware.com/cdn/s/trekkie.storefront.7bcd7bb8195e24c65a61d69d69eb32392ed0d53f.min.js';
first.parentNode.insertBefore(script, first);
};
trekkie.load(
{"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":55059120300,"isMerchantRequest":null,"themeId":147577143468,"themeCityHash":"17698023993482620997","contentLanguage":"en","currency":"USD","eventMetadataId":"4f503ae3-d954-49bb-9254-cb25cc624926"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["f43e7f5e","b5387b81","d5bdd5d0"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}}
);
var loaded = false;
trekkie.ready(function() {
if (loaded) return;
loaded = true;
window.ShopifyAnalytics.lib = window.trekkie;
var originalDocumentWrite = document.write;
document.write = customDocumentWrite;
try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
document.write = originalDocumentWrite;
var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
var token = match? match[1]: undefined;
if (!hasLoggedConversion(token)) {
setCookieIfConversion(token);
}
});
window.ShopifyAnalytics.lib.page(null,{"pageType":"page","resourceType":"page","resourceId":118863495340,"requestId":"1f0bbf01-650d-4a0a-968b-81b561668546-1787379220","shopifyEmitted":true});
var eventsListenerScript = document.createElement('script');
eventsListenerScript.async = true;
eventsListenerScript.src = "//www.tupperware.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
})();</script>
<script>
if (!window.ga || (window.ga && typeof window.ga !== 'function')) {
window.ga = function ga() {
(window.ga.q = window.ga.q || []).push(arguments);
if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') {
window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"});
}
console.error("Shopify's Google Analytics stub called with:", Array.from(arguments), "\nSee https://help.shopify.com/manual/promoting-marketing/pixels/pixel-migration#google for more information.");
};
if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') {
window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"});
}
}
</script>
<script
defer
src="https://www.tupperware.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.8.4.min.js"
data-application="storefront-renderer"
data-shop-id="55059120300"
data-render-region="gcp-europe-west1"
data-page-type="page"
data-theme-instance-id="147577143468"
data-theme-name="Dawn"
data-theme-version="15.2.0"
data-monorail-region="shop_domain"
data-resource-timing-sampling-rate="10"
data-shs="true"
data-shs-beacon="true"
data-shs-export-with-fetch="true"
data-shs-logs-sample-rate="1"
data-shs-beacon-endpoint="https://www.tupperware.com/api/collect"
></script>
<meta name="shopify-y" content="81cc572d-2eea-4d0f-8603-43fbdcf3fde7"><meta name="shopify-s" content="0fcc5ef3-9e0e-474e-9a38-ec24ef3c7808"><meta name="new-cookie-storage-activated" content="f">
</head>
<body class="gradient">
<div data-pws-banner-container></div>
<a class="skip-to-content-link button visually-hidden" href="#MainContent">
Skip to content
</a>
<link href="//www.tupperware.com/cdn/shop/t/213/assets/quantity-popover.css?v=130338046883527827341763477336" rel="stylesheet" type="text/css" media="all" />
<link href="//www.tupperware.com/cdn/shop/t/213/assets/component-card.css?v=29610169991606259511763477248" rel="stylesheet" type="text/css" media="all" />
<script src="//www.tupperware.com/cdn/shop/t/213/assets/cart.js?v=53973376719736494311763477243" defer="defer"></script>
<script src="//www.tupperware.com/cdn/shop/t/213/assets/quantity-popover.js?v=987015268078116491763477337" defer="defer"></script>
<style>
/* Keep the native drawer completely hidden & non-interactive */
cart-drawer,
#CartDrawer {
display: none !important;
}
/* Preserve your original intent, but harden visibility just in case */
.drawer {
visibility: hidden;
}
/* If something toggles it anyway, keep it offscreen and inert */
.drawer .drawer__inner {
transform: translateX(100%) !important;
}
</style><cart-drawer class="drawer is-empty"
hidden
inert
aria-hidden="true"
data-native-cart-disabled="true">
<div id="CartDrawer" class="cart-drawer" aria-hidden="true">
<div id="CartDrawer-Overlay" class="cart-drawer__overlay"></div>
<div
class="drawer__inner gradient color-scheme-1"
role="dialog"
aria-modal="true"
aria-label="Your cart"
tabindex="-1"
><div class="drawer__inner-empty">
<div class="cart-drawer__warnings center">
<div class="cart-drawer__empty-content">
<h2 class="cart__empty-text">Your cart is empty</h2>
<button
class="drawer__close"
type="button"
onclick="this.closest('cart-drawer').close()"
aria-label="Close"
>
<span class="svg-wrapper"><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>
</span>
</button>
<a href="/collections/all" class="button">
Continue shopping
</a><p class="cart__login-title h3">Have an account?</p>
<p class="cart__login-paragraph">
<a href="https://www.tupperware.com/customer_authentication/redirect?locale=en®ion_country=US" class="link underlined-link">Log in</a> to check out faster.
</p></div>
</div></div><div class="drawer__header">
<h2 class="drawer__heading">Your cart</h2>
<button
class="drawer__close"
type="button"
onclick="this.closest('cart-drawer').close()"
aria-label="Close"
>
<span class="svg-wrapper"><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>
</span>
</button>
</div>
<cart-drawer-items
class=" is-empty"
>
<form
action="/cart"
id="CartDrawer-Form"
class="cart__contents cart-drawer__form"
method="post"
>
<div id="CartDrawer-CartItems" class="drawer__contents js-contents"><p id="CartDrawer-LiveRegionText" class="visually-hidden" role="status"></p>
<p id="CartDrawer-LineItemStatus" class="visually-hidden" aria-hidden="true" role="status">
Loading...
</p>
</div>
<div id="CartDrawer-CartErrors" role="alert"></div>
</form>
</cart-drawer-items>
<div class="drawer__footer"><!-- Start blocks -->
<!-- Subtotals -->
<div class="cart-drawer__footer" >
<div></div>
<div class="totals" role="status">
<h2 class="totals__total">Estimated total</h2>
<p class="totals__total-value">$0.00 USD</p>
</div>
<small class="tax-note caption-large rte">Taxes, discounts and <a href="/policies/shipping-policy">shipping</a> calculated at checkout.
</small>
</div>
<!-- CTAs -->
<div class="cart__ctas" >
<button
type="submit"
id="CartDrawer-Checkout"
class="cart__checkout-button button"
name="checkout"
form="CartDrawer-Form"
disabled
>
Check out
</button>
</div>
</div>
</div>
</div>
</cart-drawer><script>
(function () {
function showRebuy() {
try {
if (window.Rebuy && Rebuy.SmartCart && typeof Rebuy.SmartCart.show === 'function') {
Rebuy.SmartCart.show();
return true;
}
} catch (e) {}
return false;
}
document.addEventListener('click', function (e) {
const trigger = e.target.closest(
'[data-cart-drawer-toggle], [data-cart-toggle], [data-open-cart], .header__icon--cart, a[href="/cart"]'
);
if (trigger) {
e.preventDefault();
e.stopPropagation();
showRebuy();
}
}, true);
document.addEventListener('cart:open', function (e) {
e.stopImmediatePropagation();
e.preventDefault?.();
showRebuy();
}, true);
function patchCartDrawer() {
try {
if (window.CartDrawer && typeof window.CartDrawer.prototype?.open === 'function') {
const original = window.CartDrawer.prototype.open;
window.CartDrawer.prototype.open = function () {
if (!showRebuy()) original.apply(this, arguments);
};
} else if (window.CartDrawer && typeof window.CartDrawer.open === 'function') {
const original = window.CartDrawer.open;
window.CartDrawer.open = function () {
if (!showRebuy()) original.apply(this, arguments);
};
}
} catch (err) {}
}
patchCartDrawer();
document.addEventListener('rebuy:load', patchCartDrawer);
})();
</script>
<!-- BEGIN sections: header-group -->
<div id="shopify-section-sections--19235549380780__header" class="shopify-section shopify-section-group-header-group section-header"><link rel="stylesheet" href="//www.tupperware.com/cdn/shop/t/213/assets/component-list-menu.css?v=98316901528393819981763477257" media="print" onload="this.media='all'">
<link rel="stylesheet" href="//www.tupperware.com/cdn/shop/t/213/assets/component-search.css?v=178895000145030714851763477271" media="print" onload="this.media='all'">
<link rel="stylesheet" href="//www.tupperware.com/cdn/shop/t/213/assets/component-menu-drawer.css?v=76627934235487603621763477261" media="print" onload="this.media='all'">
<link rel="stylesheet" href="//www.tupperware.com/cdn/shop/t/213/assets/component-cart-notification.css?v=156666139344457550191763477251" media="print" onload="this.media='all'"><link rel="stylesheet" href="//www.tupperware.com/cdn/shop/t/213/assets/component-price.css?v=71933753376578022191763477267" media="print" onload="this.media='all'"><link rel="stylesheet" href="//www.tupperware.com/cdn/shop/t/213/assets/component-mega-menu.css?v=103746980272716636421763477260" media="print" onload="this.media='all'"><style>
header-drawer {
justify-self: start;
margin-left: -1.2rem;
}@media screen and (min-width: 990px) {
header-drawer {
display: none;
}
}.menu-drawer-container {
display: flex;
}
.list-menu {
list-style: none;
padding: 0;
margin: 0;
}
.list-menu--inline {
display: inline-flex;
flex-wrap: wrap;
}
summary.list-menu__item {
padding-right: 2.7rem;
}
.list-menu__item {
display: flex;
align-items: center;
line-height: calc(1 + 0.3 / var(--font-body-scale));
}
.list-menu__item--link {
text-decoration: none;
padding-bottom: 1rem;
padding-top: 1rem;
line-height: calc(1 + 0.8 / var(--font-body-scale));
}
@media screen and (min-width: 750px) {
.list-menu__item--link {
padding-bottom: 0.5rem;
padding-top: 0.5rem;
}
}
</style><style data-shopify>.header {
padding: 6px 3rem 4px 3rem;
}
.section-header {
position: sticky; /* This is for fixing a Safari z-index issue. PR #2147 */
margin-bottom: 3px;
}
@media screen and (min-width: 750px) {
.section-header {
margin-bottom: 4px;
}
}
@media screen and (min-width: 990px) {
.header {
padding-top: 12px;
padding-bottom: 8px;
}
}</style><script src="//www.tupperware.com/cdn/shop/t/213/assets/cart-notification.js?v=133508293167896966491763477242" defer="defer"></script>
<div class="unattached-banner">
<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M24.6008 4.74749C24.4802 4.60297 24.3293 4.48671 24.1588 4.40691C23.9882 4.32712 23.8023 4.28574 23.614 4.28571H6.68558L6.22808 1.75928C6.13825 1.26554 5.87798 0.818995 5.49265 0.497491C5.10731 0.175987 4.62136 -7.5716e-05 4.11952 2.44269e-08H2.18561C1.84462 2.44269e-08 1.51759 0.135459 1.27648 0.376577C1.03536 0.617694 0.899902 0.94472 0.899902 1.28571C0.899902 1.6267 1.03536 1.95373 1.27648 2.19485C1.51759 2.43597 1.84462 2.57143 2.18561 2.57143H3.76167L6.43058 17.25C6.50223 17.6398 6.65045 18.0117 6.86665 18.3439C6.48388 18.7918 6.22298 19.3307 6.10911 19.9088C5.99524 20.4868 6.03224 21.0844 6.21655 21.644C6.40086 22.2036 6.72626 22.7063 7.16135 23.1035C7.59645 23.5007 8.12656 23.7791 8.70057 23.9118C9.27457 24.0446 9.87309 24.0272 10.4384 23.8613C11.0037 23.6954 11.5167 23.3866 11.928 22.9648C12.3393 22.5429 12.6349 22.0222 12.7863 21.4528C12.9378 20.8835 12.94 20.2847 12.7927 19.7143H16.4355C16.2568 20.4065 16.2989 21.1374 16.556 21.8045C16.8132 22.4716 17.2724 23.0417 17.8696 23.4349C18.4667 23.8281 19.1718 24.0248 19.8862 23.9975C20.6007 23.9701 21.2887 23.7201 21.8541 23.2825C22.4194 22.8448 22.8338 22.2413 23.0392 21.5565C23.2446 20.8716 23.2308 20.1397 22.9997 19.4632C22.7686 18.7866 22.3317 18.1992 21.7503 17.7831C21.1688 17.3671 20.4719 17.1432 19.7569 17.1428H9.38234C9.28215 17.1427 9.18516 17.1075 9.10823 17.0433C9.03131 16.9791 8.97931 16.89 8.96128 16.7914L8.71271 15.4286H20.6248C21.3275 15.4286 22.0079 15.1819 22.5474 14.7315C23.0868 14.2811 23.451 13.6557 23.5765 12.9643L24.8794 5.80071C24.9129 5.61546 24.9053 5.42513 24.8572 5.24314C24.809 5.06115 24.7215 4.89195 24.6008 4.74749ZM10.3284 20.5714C10.3284 20.7409 10.2781 20.9066 10.184 21.0476C10.0898 21.1886 9.9559 21.2984 9.79928 21.3633C9.64266 21.4282 9.47032 21.4451 9.30405 21.4121C9.13778 21.379 8.98506 21.2974 8.86518 21.1775C8.74531 21.0576 8.66368 20.9049 8.6306 20.7386C8.59753 20.5724 8.61451 20.4 8.67938 20.2434C8.74425 20.0868 8.85412 19.9529 8.99507 19.8587C9.13603 19.7645 9.30175 19.7143 9.47127 19.7143C9.6986 19.7143 9.91661 19.8046 10.0774 19.9653C10.2381 20.1261 10.3284 20.3441 10.3284 20.5714ZM19.7569 21.4285C19.5874 21.4285 19.4217 21.3783 19.2807 21.2841C19.1398 21.1899 19.0299 21.056 18.965 20.8994C18.9001 20.7428 18.8832 20.5704 18.9162 20.4042C18.9493 20.2379 19.031 20.0852 19.1508 19.9653C19.2707 19.8454 19.4234 19.7638 19.5897 19.7307C19.756 19.6977 19.9283 19.7146 20.0849 19.7795C20.2415 19.8444 20.3754 19.9542 20.4696 20.0952C20.5638 20.2362 20.6141 20.4019 20.6141 20.5714C20.6141 20.7987 20.5237 21.0167 20.363 21.1775C20.2023 21.3382 19.9842 21.4285 19.7569 21.4285ZM21.0426 12.5057C21.0247 12.6037 20.9732 12.6924 20.8969 12.7566C20.8206 12.8207 20.7244 12.8563 20.6248 12.8571H8.24557L7.15486 6.85713H22.0733L21.0426 12.5057Z" fill="white"/>
</svg>
<a href="https://www.tupperware.com/pages/join-us"> Want to shop with one of our independent consultants for expert advice ? </a>
</div><sticky-header data-sticky-type="on-scroll-up" class="header-wrapper color-scheme-1 gradient"><header class="header header--top-left header--mobile-center page-width header--has-menu header--has-account header--has-localizations">
<header-drawer data-breakpoint="tablet">
<details id="Details-menu-drawer-container" class="menu-drawer-container">
<summary
class="header__icon header__icon--menu header__icon--summary link focus-inset"
aria-label="Menu"
>
<span><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>
<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>
</span>
</summary>
<div id="menu-drawer" class="gradient menu-drawer motion-reduce color-scheme-1">
<div class="menu-drawer__inner-container">
<div class="menu-drawer__navigation-container">
<nav class="menu-drawer__navigation">
<ul class="menu-drawer__menu has-submenu list-menu" role="list"><li><a
id="HeaderDrawer-tupperware-voila™-glass"
href="/collections/tupperware-voila-glass"
class="menu-drawer__menu-item list-menu__item link link--text focus-inset"
>
Tupperware Voila™ Glass
</a></li><li><details id="Details-menu-drawer-menu-item-2">
<summary
id="HeaderDrawer-shop"
class="menu-drawer__menu-item list-menu__item link link--text focus-inset"
>
Shop
<span class="svg-wrapper"><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>
</span>
<span class="svg-wrapper"><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>
</span>
</summary>
<div
id="link-shop"
class="menu-drawer__submenu has-submenu gradient motion-reduce"
tabindex="-1"
>
<div class="menu-drawer__inner-submenu">
<button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true">
<span class="svg-wrapper"><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>
</span>
Shop
</button>
<ul class="menu-drawer__menu list-menu" role="list" tabindex="-1"><li><details id="Details-menu-drawer-shop-food-storage">
<summary
id="HeaderDrawer-shop-food-storage"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Food Storage
<span class="svg-wrapper"><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>
</span>
<span class="svg-wrapper"><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>
</span>
</summary>
<div
id="childlink-food-storage"
class="menu-drawer__submenu has-submenu gradient motion-reduce"
>
<button
class="menu-drawer__close-button link link--text focus-inset"
aria-expanded="true"
>
<span class="svg-wrapper"><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>
</span>
Food Storage
</button>
<ul
class="menu-drawer__menu list-menu"
role="list"
tabindex="-1"
><li>
<a
id="HeaderDrawer-shop-food-storage-glassware"
href="/collections/tupperware-voila-glass"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Glassware
</a>
</li><li>
<a
id="HeaderDrawer-shop-food-storage-fridge-storage"
href="/collections/fridge-storage"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Fridge Storage
</a>
</li><li>
<a
id="HeaderDrawer-shop-food-storage-freezer-storage"
href="/collections/freezer-storage"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Freezer Storage
</a>
</li><li>
<a
id="HeaderDrawer-shop-food-storage-pantry-organization"
href="/collections/pantry-organization"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Pantry Organization
</a>
</li><li>
<a
id="HeaderDrawer-shop-food-storage-microwave-reheating"
href="/collections/microwave-reheating"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Microwave Reheating
</a>
</li><li>
<a
id="HeaderDrawer-shop-food-storage-vintage"
href="/collections/vintage-food-storage"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Vintage
</a>
</li></ul>
</div>
</details></li><li><details id="Details-menu-drawer-shop-kitchen-tools-gadgets">
<summary
id="HeaderDrawer-shop-kitchen-tools-gadgets"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Kitchen Tools & Gadgets
<span class="svg-wrapper"><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>
</span>
<span class="svg-wrapper"><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>
</span>
</summary>
<div
id="childlink-kitchen-tools-gadgets"
class="menu-drawer__submenu has-submenu gradient motion-reduce"
>
<button
class="menu-drawer__close-button link link--text focus-inset"
aria-expanded="true"
>
<span class="svg-wrapper"><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>
</span>
Kitchen Tools & Gadgets
</button>
<ul
class="menu-drawer__menu list-menu"
role="list"
tabindex="-1"
><li>
<a
id="HeaderDrawer-shop-kitchen-tools-gadgets-utensils"
href="/collections/utensils"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Utensils
</a>
</li><li>
<a
id="HeaderDrawer-shop-kitchen-tools-gadgets-gadgets"
href="/collections/gadgets"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Gadgets
</a>
</li><li>
<a
id="HeaderDrawer-shop-kitchen-tools-gadgets-cutlery"
href="/collections/cutlery"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Cutlery
</a>
</li><li>
<a
id="HeaderDrawer-shop-kitchen-tools-gadgets-spoons-spatulas"
href="/collections/spoons-spatulas"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Spoons & Spatulas
</a>
</li><li>
<a
id="HeaderDrawer-shop-kitchen-tools-gadgets-mixing-bowls-measuring-tools"
href="/collections/mixing-bowls-measuring-tools"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Mixing Bowls & Measuring Tools
</a>
</li><li>
<a
id="HeaderDrawer-shop-kitchen-tools-gadgets-mandolines-graters"
href="/collections/mandolines-graters"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Mandolines & Graters
</a>
</li><li>
<a
id="HeaderDrawer-shop-kitchen-tools-gadgets-specialty-prep-tools"
href="/collections/specialty-prep-tools"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Specialty Prep Tools
</a>
</li></ul>
</div>
</details></li><li><details id="Details-menu-drawer-shop-cooking-baking">
<summary
id="HeaderDrawer-shop-cooking-baking"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Cooking & Baking
<span class="svg-wrapper"><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>
</span>
<span class="svg-wrapper"><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>
</span>
</summary>
<div
id="childlink-cooking-baking"
class="menu-drawer__submenu has-submenu gradient motion-reduce"
>
<button
class="menu-drawer__close-button link link--text focus-inset"
aria-expanded="true"
>
<span class="svg-wrapper"><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>
</span>
Cooking & Baking
</button>
<ul
class="menu-drawer__menu list-menu"
role="list"
tabindex="-1"
><li>
<a
id="HeaderDrawer-shop-cooking-baking-baking-dishes"
href="/collections/baking-dishes"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Baking Dishes
</a>
</li><li>
<a
id="HeaderDrawer-shop-cooking-baking-microwave-cooking"
href="/collections/microwave-cooking"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Microwave Cooking
</a>
</li><li>
<a
id="HeaderDrawer-shop-cooking-baking-silicone-baking"
href="/collections/silicone-baking"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Silicone Baking
</a>
</li><li>
<a
id="HeaderDrawer-shop-cooking-baking-stovetop-oven"
href="/collections/stovetop-oven"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Stovetop & Oven
</a>
</li></ul>
</div>
</details></li><li><details id="Details-menu-drawer-shop-serveware-entertaining">
<summary
id="HeaderDrawer-shop-serveware-entertaining"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Serveware & Entertaining
<span class="svg-wrapper"><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>
</span>
<span class="svg-wrapper"><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>
</span>
</summary>
<div
id="childlink-serveware-entertaining"
class="menu-drawer__submenu has-submenu gradient motion-reduce"
>
<button
class="menu-drawer__close-button link link--text focus-inset"
aria-expanded="true"
>
<span class="svg-wrapper"><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>
</span>
Serveware & Entertaining
</button>
<ul
class="menu-drawer__menu list-menu"
role="list"
tabindex="-1"
><li>
<a
id="HeaderDrawer-shop-serveware-entertaining-beverage-dispensers"
href="/collections/beverage-dispensers"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Beverage Dispensers
</a>
</li><li>
<a
id="HeaderDrawer-shop-serveware-entertaining-plates-and-bowls"
href="/collections/bowls-plates"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Plates and Bowls
</a>
</li><li>
<a
id="HeaderDrawer-shop-serveware-entertaining-serving-bowls"
href="/collections/serving-bowls"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Serving Bowls
</a>
</li><li>
<a
id="HeaderDrawer-shop-serveware-entertaining-serving-solutions"
href="/collections/serving-solutions"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Serving Solutions
</a>
</li><li>
<a
id="HeaderDrawer-shop-serveware-entertaining-tumblers-mugs"
href="/collections/tumblers-mugs"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Tumblers & Mugs
</a>
</li><li>
<a
id="HeaderDrawer-shop-serveware-entertaining-vintage"
href="/collections/vintage-serveware"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Vintage
</a>
</li></ul>
</div>
</details></li><li><details id="Details-menu-drawer-shop-on-the-go-essentials">
<summary
id="HeaderDrawer-shop-on-the-go-essentials"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
On-the-Go Essentials
<span class="svg-wrapper"><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>
</span>
<span class="svg-wrapper"><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>
</span>
</summary>
<div
id="childlink-on-the-go-essentials"
class="menu-drawer__submenu has-submenu gradient motion-reduce"
>
<button
class="menu-drawer__close-button link link--text focus-inset"
aria-expanded="true"
>
<span class="svg-wrapper"><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>
</span>
On-the-Go Essentials
</button>
<ul
class="menu-drawer__menu list-menu"
role="list"
tabindex="-1"
><li>
<a
id="HeaderDrawer-shop-on-the-go-essentials-lunch-snacks"
href="/collections/lunch-snacks"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Lunch & Snacks
</a>
</li><li>
<a
id="HeaderDrawer-shop-on-the-go-essentials-drinks"
href="/collections/drinks"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Drinks
</a>
</li><li>
<a
id="HeaderDrawer-shop-on-the-go-essentials-entertaining"
href="/collections/entertaining"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Entertaining
</a>
</li><li>
<a
id="HeaderDrawer-shop-on-the-go-essentials-thermal-tumblers-mugs"
href="/collections/thermal-tumblers-mugs"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Thermal Tumblers & Mugs
</a>
</li><li>
<a
id="HeaderDrawer-shop-on-the-go-essentials-water-bottles"
href="/collections/water-bottles"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Water Bottles
</a>
</li></ul>
</div>
</details></li><li><details id="Details-menu-drawer-shop-other">
<summary
id="HeaderDrawer-shop-other"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Other
<span class="svg-wrapper"><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>
</span>
<span class="svg-wrapper"><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>
</span>
</summary>
<div
id="childlink-other"
class="menu-drawer__submenu has-submenu gradient motion-reduce"
>
<button
class="menu-drawer__close-button link link--text focus-inset"
aria-expanded="true"
>
<span class="svg-wrapper"><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>
</span>
Other
</button>
<ul
class="menu-drawer__menu list-menu"
role="list"
tabindex="-1"
><li>
<a
id="HeaderDrawer-shop-other-shop-all-tupperware"
href="/collections/all-tupperware"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Shop All Tupperware
</a>
</li><li>
<a
id="HeaderDrawer-shop-other-tupperware-cookbook"
href="/products/tupperware-brand-cookbook"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Tupperware Cookbook
</a>
</li><li>
<a
id="HeaderDrawer-shop-other-kids-feeding-mealtime"
href="/collections/feeding-mealtime"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Kids Feeding & Mealtime
</a>
</li><li>
<a
id="HeaderDrawer-shop-other-toys-playtime"
href="/collections/toys-playtime"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Toys & Playtime
</a>
</li><li>
<a
id="HeaderDrawer-shop-other-vintage-shop"
href="/collections/vintage"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Vintage Shop
</a>
</li><li>
<a
id="HeaderDrawer-shop-other-sale-shop"
href="/collections/sale-shop"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Sale Shop
</a>
</li><li>
<a
id="HeaderDrawer-shop-other-last-chance"
href="/collections/last-chance"
class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
>
Last Chance
</a>
</li></ul>
</div>
</details></li></ul>
</div>
</div>
</details></li><li><a
id="HeaderDrawer-monthly-offers"
href="/collections/monthly-offers"
class="menu-drawer__menu-item list-menu__item link link--text focus-inset"
>
Monthly Offers
</a></li><li><a
id="HeaderDrawer-sale-shop"
href="/collections/sale-shop"
class="menu-drawer__menu-item list-menu__item link link--text focus-inset"
>
Sale Shop
</a></li><li><a
id="HeaderDrawer-recipes"
href="/blogs/recipes"
class="menu-drawer__menu-item list-menu__item link link--text focus-inset"
>
Recipes
</a></li><li><a
id="HeaderDrawer-join-us"
href="/pages/join-us"
class="menu-drawer__menu-item list-menu__item link link--text focus-inset"
>
Join Us
</a></li><li><a
id="HeaderDrawer-tupperware-live"
href="/pages/live"
class="menu-drawer__menu-item list-menu__item link link--text focus-inset"
>
Tupperware Live
</a></li></ul>
</nav>
<div class="menu-drawer__utility-links"><a
href="https://www.tupperware.com/customer_authentication/redirect?locale=en®ion_country=US"
class="menu-drawer__account link focus-inset h5 medium-hide large-up-hide"
rel="nofollow"
><account-icon><span class="svg-wrapper"><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>
</span></account-icon>Log in</a><div class="menu-drawer__localization header-localization"><localization-form><form method="post" action="/localization" id="HeaderCountryMobileForm" accept-charset="UTF-8" class="localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/pages/countries" /><div>
<h2 class="visually-hidden" id="HeaderCountryMobileLabel">
Country/region
</h2>
<div class="disclosure">
<button
type="button"
class="disclosure__button localization-form__select localization-selector link link--text caption-large"
aria-expanded="false"
aria-controls="HeaderCountryMobile-country-results"
aria-describedby="HeaderCountryMobileLabel"
>
<span>United States |
USD
$</span>
<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>
</button>
<div class="disclosure__list-wrapper country-selector" hidden>
<div class="country-filter country-filter--no-padding">
<button
class="country-selector__close-button button--small link"
type="button"
aria-label="Close"
><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>
</button>
</div>
<div id="sr-country-search-results" class="visually-hidden" aria-live="polite"></div>
<div
class="disclosure__list country-selector__list country-selector__list--with-multiple-currencies"
id="HeaderCountryMobile-country-results"
>
<ul role="list" class="list-unstyled countries"><li class="disclosure__item" tabindex="-1">
<a
class="link link--text disclosure__link caption-large focus-inset"
href="#"
data-value="CA"
id="Canada"
>
<span
class="visibility-hidden"
><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>
</span>
<span class="country">Canada</span>
<span class="localization-form__currency motion-reduce">
CAD
$</span>
</a>
</li><li class="disclosure__item" tabindex="-1">
<a
class="link link--text disclosure__link caption-large focus-inset"
href="#"
aria-current="true"
data-value="US"
id="United States"
>
<span
><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>
</span>
<span class="country">United States</span>
<span class="localization-form__currency motion-reduce">
USD
$</span>
</a>
</li></ul>
</div>
</div>
<div class="country-selector__overlay"></div>
</div>
<input type="hidden" name="country_code" value="US">
</div></form></localization-form>
<localization-form><form method="post" action="/localization" id="HeaderLanguageMobileForm" accept-charset="UTF-8" class="localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/pages/countries" /><div>
<h2 class="visually-hidden" id="HeaderLanguageMobileLabel">
Language
</h2><div class="disclosure">
<button
type="button"
class="disclosure__button localization-form__select localization-selector link link--text caption-large"
aria-expanded="false"
aria-controls="HeaderLanguageMobileList"
aria-describedby="HeaderLanguageMobileLabel"
>
<span>English</span>
<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>
</button>
<div class="disclosure__list-wrapper language-selector" hidden>
<ul id="HeaderLanguageMobileList" role="list" class="disclosure__list list-unstyled"><li class="disclosure__item" tabindex="-1">
<a
class="link link--text disclosure__link caption-large focus-inset"
href="#"
hreflang="en"
lang="en"
aria-current="true"
data-value="en"
>
<span
><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>
</span>
<span>
English
</span>
</a>
</li><li class="disclosure__item" tabindex="-1">
<a
class="link link--text disclosure__link caption-large focus-inset"
href="#"
hreflang="es"
lang="es"
data-value="es"
>
<span
class="visibility-hidden"
><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>
</span>
<span>
Español
</span>
</a>
</li><li class="disclosure__item" tabindex="-1">
<a
class="link link--text disclosure__link caption-large focus-inset"
href="#"
hreflang="fr"
lang="fr"
data-value="fr"
>
<span
class="visibility-hidden"
><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>
</span>
<span>
Français
</span>
</a>
</li></ul>
</div>
</div>
<input type="hidden" name="locale_code" value="en">
</div></form></localization-form></div><ul class="list list-social list-unstyled" role="list"></ul>
</div>
</div>
</div>
</div>
</details>
</header-drawer>
<a href="/" class="header__heading-link link link--text focus-inset"><div class="header__heading-logo-wrapper">
<img src="//www.tupperware.com/cdn/shop/files/Tupp_80th_Logo_GIF.gif?v=1768342820&width=600" alt="Tupperware Brand" srcset="//www.tupperware.com/cdn/shop/files/Tupp_80th_Logo_GIF.gif?v=1768342820&width=240 240w, //www.tupperware.com/cdn/shop/files/Tupp_80th_Logo_GIF.gif?v=1768342820&width=360 360w, //www.tupperware.com/cdn/shop/files/Tupp_80th_Logo_GIF.gif?v=1768342820&width=480 480w" width="240" height="45.92991913746631" loading="eager" class="header__heading-logo motion-reduce" sizes="(max-width: 480px) 50vw, 240px">
</div></a>
<nav class="header__inline-menu">
<ul class="list-menu list-menu--inline" role="list"><li><a
id="HeaderMenu-tupperware-voila™-glass"
href="/collections/tupperware-voila-glass"
class="header__menu-item list-menu__item link link--text focus-inset"
>
<span
>Tupperware Voila™ Glass</span>
</a></li><li><header-menu>
<details id="Details-HeaderMenu-2" class="mega-menu">
<summary
id="HeaderMenu-shop"
class="header__menu-item list-menu__item link focus-inset"
>
<span
>Shop</span><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>
</summary>
<div
id="MegaMenu-Content-2"
class="mega-menu__content color-scheme-1 gradient motion-reduce global-settings-popup"
tabindex="-1"
>
<ul
class="mega-menu__list page-width"
role="list"
><li>
<a
id="HeaderMenu-shop-food-storage"
href="/collections/food-storage"
class="mega-menu__link mega-menu__link--level-2 link"
>
Food Storage
</a><ul class="list-unstyled" role="list"><li>
<a
id="HeaderMenu-shop-food-storage-glassware"
href="/collections/tupperware-voila-glass"
class="mega-menu__link link"
>
Glassware
</a>
</li><li>
<a
id="HeaderMenu-shop-food-storage-fridge-storage"
href="/collections/fridge-storage"
class="mega-menu__link link"
>
Fridge Storage
</a>
</li><li>
<a
id="HeaderMenu-shop-food-storage-freezer-storage"
href="/collections/freezer-storage"
class="mega-menu__link link"
>
Freezer Storage
</a>
</li><li>
<a
id="HeaderMenu-shop-food-storage-pantry-organization"
href="/collections/pantry-organization"
class="mega-menu__link link"
>
Pantry Organization
</a>
</li><li>
<a
id="HeaderMenu-shop-food-storage-microwave-reheating"
href="/collections/microwave-reheating"
class="mega-menu__link link"
>
Microwave Reheating
</a>
</li><li>
<a
id="HeaderMenu-shop-food-storage-vintage"
href="/collections/vintage-food-storage"
class="mega-menu__link link"
>
Vintage
</a>
</li></ul></li><li>
<a
id="HeaderMenu-shop-kitchen-tools-gadgets"
href="/collections/kitchen-tools-gadgets"
class="mega-menu__link mega-menu__link--level-2 link"
>
Kitchen Tools & Gadgets
</a><ul class="list-unstyled" role="list"><li>
<a
id="HeaderMenu-shop-kitchen-tools-gadgets-utensils"
href="/collections/utensils"
class="mega-menu__link link"
>
Utensils
</a>
</li><li>
<a
id="HeaderMenu-shop-kitchen-tools-gadgets-gadgets"
href="/collections/gadgets"
class="mega-menu__link link"
>
Gadgets
</a>
</li><li>
<a
id="HeaderMenu-shop-kitchen-tools-gadgets-cutlery"
href="/collections/cutlery"
class="mega-menu__link link"
>
Cutlery
</a>
</li><li>
<a
id="HeaderMenu-shop-kitchen-tools-gadgets-spoons-spatulas"
href="/collections/spoons-spatulas"
class="mega-menu__link link"
>
Spoons & Spatulas
</a>
</li><li>
<a
id="HeaderMenu-shop-kitchen-tools-gadgets-mixing-bowls-measuring-tools"
href="/collections/mixing-bowls-measuring-tools"
class="mega-menu__link link"
>
Mixing Bowls & Measuring Tools
</a>
</li><li>
<a
id="HeaderMenu-shop-kitchen-tools-gadgets-mandolines-graters"
href="/collections/mandolines-graters"
class="mega-menu__link link"
>
Mandolines & Graters
</a>
</li><li>
<a
id="HeaderMenu-shop-kitchen-tools-gadgets-specialty-prep-tools"
href="/collections/specialty-prep-tools"
class="mega-menu__link link"
>
Specialty Prep Tools
</a>
</li></ul></li><li>
<a
id="HeaderMenu-shop-cooking-baking"
href="/collections/cooking-baking"
class="mega-menu__link mega-menu__link--level-2 link"
>
Cooking & Baking
</a><ul class="list-unstyled" role="list"><li>
<a
id="HeaderMenu-shop-cooking-baking-baking-dishes"
href="/collections/baking-dishes"
class="mega-menu__link link"
>
Baking Dishes
</a>
</li><li>
<a
id="HeaderMenu-shop-cooking-baking-microwave-cooking"
href="/collections/microwave-cooking"
class="mega-menu__link link"
>
Microwave Cooking
</a>
</li><li>
<a
id="HeaderMenu-shop-cooking-baking-silicone-baking"
href="/collections/silicone-baking"
class="mega-menu__link link"
>
Silicone Baking
</a>
</li><li>
<a
id="HeaderMenu-shop-cooking-baking-stovetop-oven"
href="/collections/stovetop-oven"
class="mega-menu__link link"
>
Stovetop & Oven
</a>
</li></ul></li><li>
<a
id="HeaderMenu-shop-serveware-entertaining"
href="/collections/serveware-entertaining"
class="mega-menu__link mega-menu__link--level-2 link"
>
Serveware & Entertaining
</a><ul class="list-unstyled" role="list"><li>
<a
id="HeaderMenu-shop-serveware-entertaining-beverage-dispensers"
href="/collections/beverage-dispensers"
class="mega-menu__link link"
>
Beverage Dispensers
</a>
</li><li>
<a
id="HeaderMenu-shop-serveware-entertaining-plates-and-bowls"
href="/collections/bowls-plates"
class="mega-menu__link link"
>
Plates and Bowls
</a>
</li><li>
<a
id="HeaderMenu-shop-serveware-entertaining-serving-bowls"
href="/collections/serving-bowls"
class="mega-menu__link link"
>
Serving Bowls
</a>
</li><li>
<a
id="HeaderMenu-shop-serveware-entertaining-serving-solutions"
href="/collections/serving-solutions"
class="mega-menu__link link"
>
Serving Solutions
</a>
</li><li>
<a
id="HeaderMenu-shop-serveware-entertaining-tumblers-mugs"
href="/collections/tumblers-mugs"
class="mega-menu__link link"
>
Tumblers & Mugs
</a>
</li><li>
<a
id="HeaderMenu-shop-serveware-entertaining-vintage"
href="/collections/vintage-serveware"
class="mega-menu__link link"
>
Vintage
</a>
</li></ul></li><li>
<a
id="HeaderMenu-shop-on-the-go-essentials"
href="/collections/on-the-go-essentials"
class="mega-menu__link mega-menu__link--level-2 link"
>
On-the-Go Essentials
</a><ul class="list-unstyled" role="list"><li>
<a
id="HeaderMenu-shop-on-the-go-essentials-lunch-snacks"
href="/collections/lunch-snacks"
class="mega-menu__link link"
>
Lunch & Snacks
</a>
</li><li>
<a
id="HeaderMenu-shop-on-the-go-essentials-drinks"
href="/collections/drinks"
class="mega-menu__link link"
>
Drinks
</a>
</li><li>
<a
id="HeaderMenu-shop-on-the-go-essentials-entertaining"
href="/collections/entertaining"
class="mega-menu__link link"
>
Entertaining
</a>
</li><li>
<a
id="HeaderMenu-shop-on-the-go-essentials-thermal-tumblers-mugs"
href="/collections/thermal-tumblers-mugs"
class="mega-menu__link link"
>
Thermal Tumblers & Mugs
</a>
</li><li>
<a
id="HeaderMenu-shop-on-the-go-essentials-water-bottles"
href="/collections/water-bottles"
class="mega-menu__link link"
>
Water Bottles
</a>
</li></ul></li><li>
<a
id="HeaderMenu-shop-other"
href="#"
class="mega-menu__link mega-menu__link--level-2 link"
>
Other
</a><ul class="list-unstyled" role="list"><li>
<a
id="HeaderMenu-shop-other-shop-all-tupperware"
href="/collections/all-tupperware"
class="mega-menu__link link"
>
Shop All Tupperware
</a>
</li><li>
<a
id="HeaderMenu-shop-other-tupperware-cookbook"
href="/products/tupperware-brand-cookbook"
class="mega-menu__link link"
>
Tupperware Cookbook
</a>
</li><li>
<a
id="HeaderMenu-shop-other-kids-feeding-mealtime"
href="/collections/feeding-mealtime"
class="mega-menu__link link"
>
Kids Feeding & Mealtime
</a>
</li><li>
<a
id="HeaderMenu-shop-other-toys-playtime"
href="/collections/toys-playtime"
class="mega-menu__link link"
>
Toys & Playtime
</a>
</li><li>
<a
id="HeaderMenu-shop-other-vintage-shop"
href="/collections/vintage"
class="mega-menu__link link"
>
Vintage Shop
</a>
</li><li>
<a
id="HeaderMenu-shop-other-sale-shop"
href="/collections/sale-shop"
class="mega-menu__link link"
>
Sale Shop
</a>
</li><li>
<a
id="HeaderMenu-shop-other-last-chance"
href="/collections/last-chance"
class="mega-menu__link link"
>
Last Chance
</a>
</li></ul></li></ul>
</div>
</details>
</header-menu></li><li><a
id="HeaderMenu-monthly-offers"
href="/collections/monthly-offers"
class="header__menu-item list-menu__item link link--text focus-inset"
>
<span
>Monthly Offers</span>
</a></li><li><a
id="HeaderMenu-sale-shop"
href="/collections/sale-shop"
class="header__menu-item list-menu__item link link--text focus-inset"
>
<span
>Sale Shop</span>
</a></li><li><a
id="HeaderMenu-recipes"
href="/blogs/recipes"
class="header__menu-item list-menu__item link link--text focus-inset"
>
<span
>Recipes</span>
</a></li><li><a
id="HeaderMenu-join-us"
href="/pages/join-us"
class="header__menu-item list-menu__item link link--text focus-inset"
>
<span
>Join Us</span>
</a></li><li><a
id="HeaderMenu-tupperware-live"
href="/pages/live"
class="header__menu-item list-menu__item link link--text focus-inset"
>
<span
>Tupperware Live</span>
</a></li></ul>
</nav>
<div class="EzfyHeaderSearch EzfyHeaderSearch--desktop"><predictive-search class="search-modal__form" data-loading-text="Loading..."><form action="/search" method="get" role="search" class="search search-modal__form">
<div class="field">
<input
class="search__input field__input"
id="Search-In-Modal"
type="search"
name="q"
value=""
placeholder="Search"role="combobox"
aria-expanded="false"
aria-owns="predictive-search-results"
aria-controls="predictive-search-results"
aria-haspopup="listbox"
aria-autocomplete="list"
autocorrect="off"
autocomplete="off"
autocapitalize="off"
spellcheck="false">
<label class="field__label" for="Search-In-Modal">Search</label>
<input type="hidden" name="options[prefix]" value="last">
<button
type="reset"
class="reset__button field__button hidden"
aria-label="Clear search term"
>
<svg class="icon icon-close" aria-hidden="true" focusable="false">
<use xlink:href="#icon-reset">
</svg>
</button>
<button class="search__button field__button" aria-label="Search"><svg fill="none" class="icon icon-search" viewBox="0 0 18 19"><path fill="currentColor" fill-rule="evenodd" d="M11.03 11.68A5.784 5.784 0 1 1 2.85 3.5a5.784 5.784 0 0 1 8.18 8.18m.26 1.12a6.78 6.78 0 1 1 .72-.7l5.4 5.4a.5.5 0 1 1-.71.7z" clip-rule="evenodd"/></svg>
</button>
</div><div class="predictive-search predictive-search--header" tabindex="-1" data-predictive-search>
<div class="predictive-search__loading-state">
<svg
aria-hidden="true"
focusable="false"
class="spinner"
viewBox="0 0 66 66"
xmlns="http://www.w3.org/2000/svg"
>
<circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle>
</svg>
</div>
</div>
<span class="predictive-search-status visually-hidden" role="status" aria-hidden="true"></span></form></predictive-search></div>
<style>
/* mobile */
@media (max-width: 990px){
.EzfyHeaderSearch--mobile{
display: block;
}
.EzfyHeaderSearch--desktop{
display: none;
}
.EzfyHeaderSearch--mobile {
padding-left: 1.5rem;
padding-right: 1.5rem;
padding-bottom: 10px;
margin-top: 20px;
}
body{
overflow-x: hidden;
}
[id] .header{
display:flex !important;
justify-content:space-between;
}
}
/* desktop */
@media (min-width: 991px){
.EzfyHeaderSearch--mobile{
display: none !important;
}
.EzfyHeaderSearch--desktop{
display: block;
grid-area: search;
}
.predictive-search__results-groups-wrapper{
flex-direction: column !important;
}
.search-modal__form,
.search-modal__form > *{
width: 600px !important;
max-width: 100% !important;
}
.predictive-search{
max-height: 500px !important;
}
}
</style>
<script>
(() => {var e=["background: linear-gradient(-47deg,#8731e8,#4528dc)","border: 1px solid #3E0E02","color: white","display: block","text-shadow: 0 1px 0 rgba(0, 0, 0, 0.3)","box-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) inset, 0 5px 3px -5px rgba(0, 0, 0, 0.5), 0 -13px 5px -10px rgba(255, 255, 255, 0.4) inset","line-height: 40px","text-align: center","font-weight: bold","padding: 0px 5px"].join(";");function r(e){return(e+"").replace(/&#\d+;/gm,function(e){return String.fromCharCode(e.match(/\d+/gm)[0])})}var n=r(`Website powered by https://ezfycode.com`);console.log(`%c ${n}`,e);})()
</script>
<div class="header__icons header__icons--localization header-localization">
<div class="desktop-localization-wrapper"><localization-form class="small-hide medium-hide" data-prevent-hide><form method="post" action="/localization" id="HeaderCountryForm" accept-charset="UTF-8" class="localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/pages/countries" /><div>
<h2 class="visually-hidden" id="HeaderCountryLabel">Country/region</h2>
<div class="disclosure">
<button
type="button"
class="disclosure__button localization-form__select localization-selector link link--text caption-large"
aria-expanded="false"
aria-controls="HeaderCountry-country-results"
aria-describedby="HeaderCountryLabel"
>
<span>United States |
USD
$</span>
<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>
</button>
<div class="disclosure__list-wrapper country-selector" hidden>
<div class="country-filter country-filter--no-padding">
<button
class="country-selector__close-button button--small link"
type="button"
aria-label="Close"
><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>
</button>
</div>
<div id="sr-country-search-results" class="visually-hidden" aria-live="polite"></div>
<div
class="disclosure__list country-selector__list country-selector__list--with-multiple-currencies"
id="HeaderCountry-country-results"
>
<ul role="list" class="list-unstyled countries"><li class="disclosure__item" tabindex="-1">
<a
class="link link--text disclosure__link caption-large focus-inset"
href="#"
data-value="CA"
id="Canada"
>
<span
class="visibility-hidden"
><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>
</span>
<span class="country">Canada</span>
<span class="localization-form__currency motion-reduce">
CAD
$</span>
</a>
</li><li class="disclosure__item" tabindex="-1">
<a
class="link link--text disclosure__link caption-large focus-inset"
href="#"
aria-current="true"
data-value="US"
id="United States"
>
<span
><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>
</span>
<span class="country">United States</span>
<span class="localization-form__currency motion-reduce">
USD
$</span>
</a>
</li></ul>
</div>
</div>
<div class="country-selector__overlay"></div>
</div>
<input type="hidden" name="country_code" value="US">
</div></form></localization-form>
<localization-form class="small-hide medium-hide" data-prevent-hide><form method="post" action="/localization" id="HeaderLanguageForm" accept-charset="UTF-8" class="localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/pages/countries" /><div>
<h2 class="visually-hidden" id="HeaderLanguageLabel">Language</h2><div class="disclosure">
<button
type="button"
class="disclosure__button localization-form__select localization-selector link link--text caption-large"
aria-expanded="false"
aria-controls="HeaderLanguageList"
aria-describedby="HeaderLanguageLabel"
>
<span>English</span>
<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>
</button>
<div class="disclosure__list-wrapper language-selector" hidden>
<ul id="HeaderLanguageList" role="list" class="disclosure__list list-unstyled"><li class="disclosure__item" tabindex="-1">
<a
class="link link--text disclosure__link caption-large focus-inset"
href="#"
hreflang="en"
lang="en"
aria-current="true"
data-value="en"
>
<span
><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>
</span>
<span>
English
</span>
</a>
</li><li class="disclosure__item" tabindex="-1">
<a
class="link link--text disclosure__link caption-large focus-inset"
href="#"
hreflang="es"
lang="es"
data-value="es"
>
<span
class="visibility-hidden"
><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>
</span>
<span>
Español
</span>
</a>
</li><li class="disclosure__item" tabindex="-1">
<a
class="link link--text disclosure__link caption-large focus-inset"
href="#"
hreflang="fr"
lang="fr"
data-value="fr"
>
<span
class="visibility-hidden"
><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>
</span>
<span>
Français
</span>
</a>
</li></ul>
</div>
</div>
<input type="hidden" name="locale_code" value="en">
</div></form></localization-form></div><a
href="https://www.tupperware.com/customer_authentication/redirect?locale=en®ion_country=US"
class="header__icon header__icon--account link focus-inset small-hide"
rel="nofollow"
><account-icon><span class="svg-wrapper"><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>
</span></account-icon><span class="visually-hidden">Log in</span>
</a><a href="/cart" class="header__icon header__icon--cart link focus-inset" id="cart-icon-bubble">
<span class="svg-wrapper"><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>
</span>
<span class="visually-hidden">Cart</span></a>
</div>
<details-modal class="header__search">
<details>
<summary
class="header__icon header__icon--search header__icon--summary link focus-inset modal__toggle"
aria-haspopup="dialog"
aria-label="Search"
>
<span>
<span class="svg-wrapper"><svg fill="none" class="icon icon-search" viewBox="0 0 18 19"><path fill="currentColor" fill-rule="evenodd" d="M11.03 11.68A5.784 5.784 0 1 1 2.85 3.5a5.784 5.784 0 0 1 8.18 8.18m.26 1.12a6.78 6.78 0 1 1 .72-.7l5.4 5.4a.5.5 0 1 1-.71.7z" clip-rule="evenodd"/></svg>
</span>
<span class="svg-wrapper header__icon-close"><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>
</span>
</span>
</summary>
<div
class="search-modal modal__content gradient"
role="dialog"
aria-modal="true"
aria-label="Search"
>
<div class="modal-overlay"></div>
<div
class="search-modal__content search-modal__content-bottom"
tabindex="-1"
><predictive-search class="search-modal__form" data-loading-text="Loading..."><form action="/search" method="get" role="search" class="search search-modal__form">
<div class="field">
<input
class="search__input field__input"
id="Search-In-Modal"
type="search"
name="q"
value=""
placeholder="Search"role="combobox"
aria-expanded="false"
aria-owns="predictive-search-results"
aria-controls="predictive-search-results"
aria-haspopup="listbox"
aria-autocomplete="list"
autocorrect="off"
autocomplete="off"
autocapitalize="off"
spellcheck="false">
<label class="field__label" for="Search-In-Modal">Search</label>
<input type="hidden" name="options[prefix]" value="last">
<button
type="reset"
class="reset__button field__button hidden"
aria-label="Clear search term"
>
<span class="svg-wrapper"><svg fill="none" stroke="currentColor" class="icon icon-close" viewBox="0 0 18 18"><circle cx="9" cy="9" r="8.5" stroke-opacity=".2"/><path stroke-linecap="round" stroke-linejoin="round" d="M11.83 11.83 6.172 6.17M6.229 11.885l5.544-5.77"/></svg>
</span>
</button>
<button class="search__button field__button" aria-label="Search">
<span class="svg-wrapper"><svg fill="none" class="icon icon-search" viewBox="0 0 18 19"><path fill="currentColor" fill-rule="evenodd" d="M11.03 11.68A5.784 5.784 0 1 1 2.85 3.5a5.784 5.784 0 0 1 8.18 8.18m.26 1.12a6.78 6.78 0 1 1 .72-.7l5.4 5.4a.5.5 0 1 1-.71.7z" clip-rule="evenodd"/></svg>
</span>
</button>
</div><div class="predictive-search predictive-search--header" tabindex="-1" data-predictive-search>
<div class="predictive-search__loading-state">
<svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg>
</div>
</div>
<span class="predictive-search-status visually-hidden" role="status" aria-hidden="true"></span></form></predictive-search><button
type="button"
class="search-modal__close-button modal__close-button link link--text focus-inset"
aria-label="Close"
>
<span class="svg-wrapper"><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>
</span>
</button>
</div>
</div>
</details>
</details-modal>
</header>
</sticky-header>
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Organization",
"name": "Tupperware Brand",
"logo": "https:\/\/www.tupperware.com\/cdn\/shop\/files\/Tupp_80th_Logo_GIF.gif?v=1768342820\u0026width=500",
"sameAs": [
"",
"",
"",
"",
"",
"",
"",
"",
""
],
"url": "https:\/\/www.tupperware.com\/pages\/countries"
}
</script>
</div>
<!-- END sections: header-group -->
<main id="MainContent" class="content-for-layout focus-none" role="main" tabindex="-1">
<section id="shopify-section-template--19235549020332__main" class="shopify-section section"><link href="//www.tupperware.com/cdn/shop/t/213/assets/section-main-page.css?v=25142436280826495911763477349" rel="stylesheet" type="text/css" media="all" />
<style data-shopify>.section-template--19235549020332__main-padding {
padding-top: 0px;
padding-bottom: 21px;
}
@media screen and (min-width: 750px) {
.section-template--19235549020332__main-padding {
padding-top: 0px;
padding-bottom: 28px;
}
}</style><div class="page-width page-width--narrow section-template--19235549020332__main-padding">
<h1 class="main-page-title page-title h0">
Countries
</h1>
<div class="rte">
<p>Tupperware Brand operates in these countries. Visit the one nearest you.</p>
<style>
.tupperware-countries-table {
width: 100%;
border-collapse: collapse;
margin: 20px 0;
font-family: Arial, sans-serif;
background-color: #fff;
}
.tupperware-countries-table th,
.tupperware-countries-table td {
padding: 12px 14px;
text-align: left;
border: 1px solid #ddd;
}
.tupperware-countries-table th {
background-color: #f2f2f2;
font-weight: bold;
width: 32%;
}
.tupperware-countries-table td:first-child {
font-weight: 500;
width: 32%;
}
.tupperware-countries-table tr:nth-child(even) {
background-color: #f9f9f9;
}
.tupperware-countries-table tr:hover {
background-color: #f0f7ff;
}
.tupperware-countries-table a {
color: #0066cc;
text-decoration: none;
}
.tupperware-countries-table a:hover {
text-decoration: underline;
}
/* Responsive */
@media (max-width: 768px) {
.tupperware-countries-table {
display: block;
overflow-x: auto;
white-space: nowrap;
}
}
</style>
<table class="tupperware-countries-table">
<thead>
<tr>
<th>Country</th>
<th>Website</th>
</tr>
</thead>
<tbody>
<tr>
<td>Austria</td>
<td><a href="https://tupperware-eu.com/de" target="_blank">https://tupperware-eu.com/de</a></td>
</tr>
<tr>
<td>Belgium</td>
<td><a href="https://tupperware-eu.com" target="_blank">https://tupperware-eu.com</a></td>
</tr>
<tr>
<td>China</td>
<td><a href="https://www.tupperware.com.cn" target="_blank">https://www.tupperware.com.cn</a></td>
</tr>
<tr>
<td>Denmark</td>
<td><a href="https://www.tupperware-nordic.com" target="_blank">https://www.tupperware-nordic.com</a></td>
</tr>
<tr>
<td>Finland</td>
<td><a href="https://www.tupperware-nordic.com" target="_blank">https://www.tupperware-nordic.com</a></td>
</tr>
<tr>
<td>France</td>
<td><a href="https://tupperware-eu.com" target="_blank">https://tupperware-eu.com</a></td>
</tr>
<tr>
<td>Germany</td>
<td><a href="https://tupperware-eu.com/de" target="_blank">https://tupperware-eu.com/de</a></td>
</tr>
<tr>
<td>Greece</td>
<td><a href="https://tuppermg.gr" target="_blank">https://tuppermg.gr</a></td>
</tr>
<tr>
<td>Iceland</td>
<td><a href="https://www.tupperware-nordic.com" target="_blank">https://www.tupperware-nordic.com</a></td>
</tr>
<tr>
<td>India</td>
<td><a href="https://www.shoptupperware.in" target="_blank">https://www.shoptupperware.in</a></td>
</tr>
<tr>
<td>Italy</td>
<td><a href="https://tupperware-eu.com/it" target="_blank">https://tupperware-eu.com/it</a></td>
</tr>
<tr>
<td>Korea</td>
<td>TBD</td>
</tr>
<tr>
<td>Malaysia</td>
<td><a href="https://shop.tupperwarebrands.com.my" target="_blank">https://shop.tupperwarebrands.com.my</a></td>
</tr>
<tr>
<td>Netherlands</td>
<td><a href="https://tupperware-eu.com/nl" target="_blank">https://tupperware-eu.com/nl</a></td>
</tr>
<tr>
<td>Norway</td>
<td><a href="https://www.tupperware-nordic.com" target="_blank">https://www.tupperware-nordic.com</a></td>
</tr>
<tr>
<td>Poland</td>
<td><a href="https://tupperware-eu.com/pl" target="_blank">https://tupperware-eu.com/pl</a></td>
</tr>
<tr>
<td>Portugal</td>
<td><a href="https://tupperware-portugal.pt" target="_blank">https://tupperware-portugal.pt</a></td>
</tr>
<tr>
<td>Spain</td>
<td><a href="https://tupperware-espana.es" target="_blank">https://tupperware-espana.es</a></td>
</tr>
<tr>
<td>Sweden</td>
<td><a href="https://www.tupperware-nordic.com" target="_blank">https://www.tupperware-nordic.com</a></td>
</tr>
<tr>
<td>Switzerland</td>
<td><a href="https://tupperware-eu.com" target="_blank">https://tupperware-eu.com</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</main>
<!-- BEGIN sections: footer-group -->
<div id="shopify-section-sections--19235549348012__footer" class="shopify-section shopify-section-group-footer-group">
<link href="//www.tupperware.com/cdn/shop/t/213/assets/section-footer.css?v=148104447017884208091763477346" rel="stylesheet" type="text/css" media="all" />
<link href="//www.tupperware.com/cdn/shop/t/213/assets/component-newsletter.css?v=45882923870581146381763477264" rel="stylesheet" type="text/css" media="all" />
<link href="//www.tupperware.com/cdn/shop/t/213/assets/component-list-menu.css?v=98316901528393819981763477257" rel="stylesheet" type="text/css" media="all" />
<link href="//www.tupperware.com/cdn/shop/t/213/assets/component-list-payment.css?v=129328959025884189331763477258" rel="stylesheet" type="text/css" media="all" />
<link href="//www.tupperware.com/cdn/shop/t/213/assets/component-list-social.css?v=158539147378100575711763477259" rel="stylesheet" type="text/css" media="all" />
<style data-shopify>.footer {
margin-top: 0px;
}
.section-sections--19235549348012__footer-padding {
padding-top: 9px;
padding-bottom: 9px;
}
@media screen and (min-width: 750px) {
.footer {
margin-top: 0px;
}
.section-sections--19235549348012__footer-padding {
padding-top: 12px;
padding-bottom: 12px;
}
}</style><footer class="footer color-scheme-4 gradient section-sections--19235549348012__footer-padding"><div class="footer__content-top page-width"><div
class="footer__blocks-wrapper grid grid--1-col grid--2-col grid--4-col-tablet "
><div
class="footer-block grid__item"
><div class="footer-block__details-content footer-block-image "><div
class="footer-block__image-wrapper"
style="max-width: min(100%, 285px);"
>
<img
srcset="//www.tupperware.com/cdn/shop/files/logo_ab6ad5de-de22-4925-9b30-eca0767d9317.png?v=1730211290&width=285, //www.tupperware.com/cdn/shop/files/logo_ab6ad5de-de22-4925-9b30-eca0767d9317.png?v=1730211290&width=570 2x"
src="//www.tupperware.com/cdn/shop/files/logo_ab6ad5de-de22-4925-9b30-eca0767d9317.png?v=1730211290&width=760"
alt=""
loading="lazy"
width="1027"
height="501"
>
</div></div></div><div
class="footer-block grid__item footer-block--menu"
><h2 class="footer-block__heading inline-richtext">FIND</h2><ul class="footer-block__details-content list-unstyled"><li>
<a
href="/pages/join-us"
class="link link--text list-menu__item list-menu__item--link"
>
Find a Consultant
</a>
</li><li>
<a
href="/pages/catalog-and-brochures"
class="link link--text list-menu__item list-menu__item--link"
>
Online Catalog
</a>
</li><li>
<a
href="/pages/host-a-party"
class="link link--text list-menu__item list-menu__item--link"
>
Host a Party
</a>
</li></ul></div><div
class="footer-block grid__item footer-block--menu"
><h2 class="footer-block__heading inline-richtext">SUPPORT</h2><ul class="footer-block__details-content list-unstyled"><li>
<a
href="/pages/tupperware-brand-help-center"
class="link link--text list-menu__item list-menu__item--link"
>
Customer Service
</a>
</li><li>
<a
href="/pages/estimated-delivery-timelines"
class="link link--text list-menu__item list-menu__item--link"
>
Estimated Delivery Times
</a>
</li><li>
<a
href="/pages/warranty-policy"
class="link link--text list-menu__item list-menu__item--link"
>
Warranty
</a>
</li><li>
<a
href="/pages/accessibility"
class="link link--text list-menu__item list-menu__item--link"
>
Accessibility
</a>
</li><li>
<a
href="https://myoffice.tupperware.com/Business/login"
class="link link--text list-menu__item list-menu__item--link"
>
Salesforce Login
</a>
</li></ul></div><div
class="footer-block grid__item footer-block--menu"
><h2 class="footer-block__heading inline-richtext">ABOUT</h2><ul class="footer-block__details-content list-unstyled"><li>
<a
href="/pages/about-us"
class="link link--text list-menu__item list-menu__item--link"
>
About Us
</a>
</li><li>
<a
href="/pages/bpa-free"
class="link link--text list-menu__item list-menu__item--link"
>
BPA Free
</a>
</li><li>
<a
href="/pages/california-ab-1200-cookware-disclosure"
class="link link--text list-menu__item list-menu__item--link"
>
California AB 1200 Cookware Disclosure
</a>
</li><li>
<a
href="/pages/california-transparency-in-supply-chains-act-of-2010"
class="link link--text list-menu__item list-menu__item--link"
>
California Transparency in Supply Chain
</a>
</li><li>
<a
href="https://www.dsa.org/consumerprotection/code-of-ethics"
class="link link--text list-menu__item list-menu__item--link"
>
Member of the DSA (Application Pending) - DSA Code of Ethics
</a>
</li></ul></div></div><div
class="footer-block--newsletter"
><div class="footer__follow-on-shop">
<script defer="defer" async type="module" src="//www.tupperware.com/cdn/shopifycloud/shop-js/modules/v2/loader.shop-follow-button.en.esm.js"></script>
<script type="module">
await import("//www.tupperware.com/cdn/shopifycloud/shop-js/modules/v2/loader.shop-follow-button.en.esm.js");
</script>
<shop-follow-button ux-mode="windoid" return-uri="https://www.tupperware.com/account/redirect" proxy="true"></shop-follow-button>
</div></div>
</div><div
class="footer__content-bottom"
>
<div class="footer__content-bottom-wrapper page-width">
<div class="footer__column footer__localization isolate"><localization-form><form method="post" action="/localization" id="FooterCountryForm" accept-charset="UTF-8" class="localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/pages/countries" /><div>
<h2 class="caption-large text-body" id="FooterCountryLabel">Country/region</h2>
<div class="disclosure">
<button
type="button"
class="disclosure__button localization-form__select localization-selector link link--text caption-large"
aria-expanded="false"
aria-controls="FooterCountry-country-results"
aria-describedby="FooterCountryLabel"
>
<span>United States |
USD
$</span>
<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>
</button>
<div class="disclosure__list-wrapper country-selector" hidden>
<div class="country-filter country-filter--no-padding">
<button
class="country-selector__close-button button--small link"
type="button"
aria-label="Close"
><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>
</button>
</div>
<div id="sr-country-search-results" class="visually-hidden" aria-live="polite"></div>
<div
class="disclosure__list country-selector__list country-selector__list--with-multiple-currencies"
id="FooterCountry-country-results"
>
<ul role="list" class="list-unstyled countries"><li class="disclosure__item" tabindex="-1">
<a
class="link link--text disclosure__link caption-large focus-inset"
href="#"
data-value="CA"
id="Canada"
>
<span
class="visibility-hidden"
><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>
</span>
<span class="country">Canada</span>
<span class="localization-form__currency motion-reduce">
CAD
$</span>
</a>
</li><li class="disclosure__item" tabindex="-1">
<a
class="link link--text disclosure__link caption-large focus-inset"
href="#"
aria-current="true"
data-value="US"
id="United States"
>
<span
><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>
</span>
<span class="country">United States</span>
<span class="localization-form__currency motion-reduce">
USD
$</span>
</a>
</li></ul>
</div>
</div>
<div class="country-selector__overlay"></div>
</div>
<input type="hidden" name="country_code" value="US">
</div></form></localization-form><localization-form><form method="post" action="/localization" id="FooterLanguageForm" accept-charset="UTF-8" class="localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/pages/countries" /><div>
<h2 class="caption-large text-body" id="FooterLanguageLabel">
Language
</h2><div class="disclosure">
<button
type="button"
class="disclosure__button localization-form__select localization-selector link link--text caption-large"
aria-expanded="false"
aria-controls="FooterLanguageList"
aria-describedby="FooterLanguageLabel"
>
<span>English</span>
<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>
</button>
<div class="disclosure__list-wrapper language-selector" hidden>
<ul id="FooterLanguageList" role="list" class="disclosure__list list-unstyled"><li class="disclosure__item" tabindex="-1">
<a
class="link link--text disclosure__link caption-large focus-inset"
href="#"
hreflang="en"
lang="en"
aria-current="true"
data-value="en"
>
<span
><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>
</span>
<span>
English
</span>
</a>
</li><li class="disclosure__item" tabindex="-1">
<a
class="link link--text disclosure__link caption-large focus-inset"
href="#"
hreflang="es"
lang="es"
data-value="es"
>
<span
class="visibility-hidden"
><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>
</span>
<span>
Español
</span>
</a>
</li><li class="disclosure__item" tabindex="-1">
<a
class="link link--text disclosure__link caption-large focus-inset"
href="#"
hreflang="fr"
lang="fr"
data-value="fr"
>
<span
class="visibility-hidden"
><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>
</span>
<span>
Français
</span>
</a>
</li></ul>
</div>
</div>
<input type="hidden" name="locale_code" value="en">
</div></form></localization-form></div>
<div class="footer__column footer__column--info"><div class="footer__payment">
<span class="visually-hidden">Translation missing: en.sections.footer.payment</span>
<ul class="list list-payment" role="list"><li class="list-payment__item">
<svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-american_express"><title id="pi-american_express">American Express</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#0071CE" style="fill:#0071CE;fill:color(display-p3 0.0000 0.4431 0.8078);fill-opacity:1;"/><path d="M3 0.5H35C36.3348 0.5 37.5 1.58692 37.5 3V21C37.5 22.4239 36.4239 23.5 35 23.5H3C1.66524 23.5 0.5 22.4131 0.5 21V3C0.5 1.57614 1.57614 0.5 3 0.5Z" stroke="black" stroke-opacity="0.07" style="stroke:black;stroke-opacity:0.07;"/><path d="M25.8662 6.33203V3H31L31.8662 5.5332L32.7334 3H37V14.2002H36.7998L34.8672 16.2656L36.7998 18.3594H37V21.2666H33.5996L31.9336 19.3994L30.2002 21.2666H19.4668V12.666H16L20.2666 3H24.4004L25.8662 6.33203ZM20.5996 20.2656H27V18.5322H22.666V17.3994H26.8662V15.666H22.666V14.5322H27V12.7988H20.5996V20.2656ZM30.5332 16.5322L27 20.2656H29.5996L31.8662 17.8662L34.0664 20.2656H36.7324L33.1992 16.4658L36.7324 12.7988H34.1328L31.8662 15.1992L29.7324 12.7988H27L30.5332 16.5322ZM17.666 11.7324H19.9326L20.5332 10.1992H23.999L24.666 11.7324H26.999L23.666 4.19922H20.999L17.666 11.7324ZM33.5996 4.19922L31.9326 8.86621L30.1992 4.19922H27V11.666H29.0664V6.39941L31 11.666H32.7998L34.7324 6.39941V11.666H36.7324V4.13281L33.5996 4.19922ZM23.2656 8.46582H21.2656L22.2656 5.99902L23.2656 8.46582Z" fill="white" style="fill:white;fill-opacity:1;"/></svg>
</li><li class="list-payment__item">
<svg class="icon icon--full-color" version="1.1" xmlns="http://www.w3.org/2000/svg" role="img" x="0" y="0" width="38" height="24" viewBox="0 0 165.521 105.965" xml:space="preserve" aria-labelledby="pi-apple_pay"><title id="pi-apple_pay">Apple Pay</title><path fill="#000" d="M150.698 0H14.823c-.566 0-1.133 0-1.698.003-.477.004-.953.009-1.43.022-1.039.028-2.087.09-3.113.274a10.51 10.51 0 0 0-2.958.975 9.932 9.932 0 0 0-4.35 4.35 10.463 10.463 0 0 0-.975 2.96C.113 9.611.052 10.658.024 11.696a70.22 70.22 0 0 0-.022 1.43C0 13.69 0 14.256 0 14.823v76.318c0 .567 0 1.132.002 1.699.003.476.009.953.022 1.43.028 1.036.09 2.084.275 3.11a10.46 10.46 0 0 0 .974 2.96 9.897 9.897 0 0 0 1.83 2.52 9.874 9.874 0 0 0 2.52 1.83c.947.483 1.917.79 2.96.977 1.025.183 2.073.245 3.112.273.477.011.953.017 1.43.02.565.004 1.132.004 1.698.004h135.875c.565 0 1.132 0 1.697-.004.476-.002.952-.009 1.431-.02 1.037-.028 2.085-.09 3.113-.273a10.478 10.478 0 0 0 2.958-.977 9.955 9.955 0 0 0 4.35-4.35c.483-.947.789-1.917.974-2.96.186-1.026.246-2.074.274-3.11.013-.477.02-.954.022-1.43.004-.567.004-1.132.004-1.699V14.824c0-.567 0-1.133-.004-1.699a63.067 63.067 0 0 0-.022-1.429c-.028-1.038-.088-2.085-.274-3.112a10.4 10.4 0 0 0-.974-2.96 9.94 9.94 0 0 0-4.35-4.35A10.52 10.52 0 0 0 156.939.3c-1.028-.185-2.076-.246-3.113-.274a71.417 71.417 0 0 0-1.431-.022C151.83 0 151.263 0 150.698 0z" /><path fill="#FFF" d="M150.698 3.532l1.672.003c.452.003.905.008 1.36.02.793.022 1.719.065 2.583.22.75.135 1.38.34 1.984.648a6.392 6.392 0 0 1 2.804 2.807c.306.6.51 1.226.645 1.983.154.854.197 1.783.218 2.58.013.45.019.9.02 1.36.005.557.005 1.113.005 1.671v76.318c0 .558 0 1.114-.004 1.682-.002.45-.008.9-.02 1.35-.022.796-.065 1.725-.221 2.589a6.855 6.855 0 0 1-.645 1.975 6.397 6.397 0 0 1-2.808 2.807c-.6.306-1.228.511-1.971.645-.881.157-1.847.2-2.574.22-.457.01-.912.017-1.379.019-.555.004-1.113.004-1.669.004H14.801c-.55 0-1.1 0-1.66-.004a74.993 74.993 0 0 1-1.35-.018c-.744-.02-1.71-.064-2.584-.22a6.938 6.938 0 0 1-1.986-.65 6.337 6.337 0 0 1-1.622-1.18 6.355 6.355 0 0 1-1.178-1.623 6.935 6.935 0 0 1-.646-1.985c-.156-.863-.2-1.788-.22-2.578a66.088 66.088 0 0 1-.02-1.355l-.003-1.327V14.474l.002-1.325a66.7 66.7 0 0 1 .02-1.357c.022-.792.065-1.717.222-2.587a6.924 6.924 0 0 1 .646-1.981c.304-.598.7-1.144 1.18-1.623a6.386 6.386 0 0 1 1.624-1.18 6.96 6.96 0 0 1 1.98-.646c.865-.155 1.792-.198 2.586-.22.452-.012.905-.017 1.354-.02l1.677-.003h135.875" /><g><g><path fill="#000" d="M43.508 35.77c1.404-1.755 2.356-4.112 2.105-6.52-2.054.102-4.56 1.355-6.012 3.112-1.303 1.504-2.456 3.959-2.156 6.266 2.306.2 4.61-1.152 6.063-2.858" /><path fill="#000" d="M45.587 39.079c-3.35-.2-6.196 1.9-7.795 1.9-1.6 0-4.049-1.8-6.698-1.751-3.447.05-6.645 2-8.395 5.1-3.598 6.2-.95 15.4 2.55 20.45 1.699 2.5 3.747 5.25 6.445 5.151 2.55-.1 3.549-1.65 6.647-1.65 3.097 0 3.997 1.65 6.696 1.6 2.798-.05 4.548-2.5 6.247-5 1.95-2.85 2.747-5.6 2.797-5.75-.05-.05-5.396-2.101-5.446-8.251-.05-5.15 4.198-7.6 4.398-7.751-2.399-3.548-6.147-3.948-7.447-4.048" /></g><g><path fill="#000" d="M78.973 32.11c7.278 0 12.347 5.017 12.347 12.321 0 7.33-5.173 12.373-12.529 12.373h-8.058V69.62h-5.822V32.11h14.062zm-8.24 19.807h6.68c5.07 0 7.954-2.729 7.954-7.46 0-4.73-2.885-7.434-7.928-7.434h-6.706v14.894z" /><path fill="#000" d="M92.764 61.847c0-4.809 3.665-7.564 10.423-7.98l7.252-.442v-2.08c0-3.04-2.001-4.704-5.562-4.704-2.938 0-5.07 1.507-5.51 3.82h-5.252c.157-4.86 4.731-8.395 10.918-8.395 6.654 0 10.995 3.483 10.995 8.89v18.663h-5.38v-4.497h-.13c-1.534 2.937-4.914 4.782-8.579 4.782-5.406 0-9.175-3.222-9.175-8.057zm17.675-2.417v-2.106l-6.472.416c-3.64.234-5.536 1.585-5.536 3.95 0 2.288 1.975 3.77 5.068 3.77 3.95 0 6.94-2.522 6.94-6.03z" /><path fill="#000" d="M120.975 79.652v-4.496c.364.051 1.247.103 1.715.103 2.573 0 4.029-1.09 4.913-3.899l.52-1.663-9.852-27.293h6.082l6.863 22.146h.13l6.862-22.146h5.927l-10.216 28.67c-2.34 6.577-5.017 8.735-10.683 8.735-.442 0-1.872-.052-2.261-.157z" /></g></g></svg>
</li><li class="list-payment__item">
<svg class="icon icon--full-color" viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" role="img" width="38" height="24" aria-labelledby="pi-diners_club"><title id="pi-diners_club">Diners Club</title><path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"/><path d="M12 12v3.7c0 .3-.2.3-.5.2-1.9-.8-3-3.3-2.3-5.4.4-1.1 1.2-2 2.3-2.4.4-.2.5-.1.5.2V12zm2 0V8.3c0-.3 0-.3.3-.2 2.1.8 3.2 3.3 2.4 5.4-.4 1.1-1.2 2-2.3 2.4-.4.2-.4.1-.4-.2V12zm7.2-7H13c3.8 0 6.8 3.1 6.8 7s-3 7-6.8 7h8.2c3.8 0 6.8-3.1 6.8-7s-3-7-6.8-7z" fill="#3086C8"/></svg>
</li><li class="list-payment__item">
<svg class="icon icon--full-color" viewBox="0 0 38 24" width="38" height="24" role="img" aria-labelledby="pi-discover" fill="none" xmlns="http://www.w3.org/2000/svg"><title id="pi-discover">Discover</title><path fill="#000" opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32z" fill="#fff"/><path d="M3.57 7.16H2v5.5h1.57c.83 0 1.43-.2 1.96-.63.63-.52 1-1.3 1-2.11-.01-1.63-1.22-2.76-2.96-2.76zm1.26 4.14c-.34.3-.77.44-1.47.44h-.29V8.1h.29c.69 0 1.11.12 1.47.44.37.33.59.84.59 1.37 0 .53-.22 1.06-.59 1.39zm2.19-4.14h1.07v5.5H7.02v-5.5zm3.69 2.11c-.64-.24-.83-.4-.83-.69 0-.35.34-.61.8-.61.32 0 .59.13.86.45l.56-.73c-.46-.4-1.01-.61-1.62-.61-.97 0-1.72.68-1.72 1.58 0 .76.35 1.15 1.35 1.51.42.15.63.25.74.31.21.14.32.34.32.57 0 .45-.35.78-.83.78-.51 0-.92-.26-1.17-.73l-.69.67c.49.73 1.09 1.05 1.9 1.05 1.11 0 1.9-.74 1.9-1.81.02-.89-.35-1.29-1.57-1.74zm1.92.65c0 1.62 1.27 2.87 2.9 2.87.46 0 .86-.09 1.34-.32v-1.26c-.43.43-.81.6-1.29.6-1.08 0-1.85-.78-1.85-1.9 0-1.06.79-1.89 1.8-1.89.51 0 .9.18 1.34.62V7.38c-.47-.24-.86-.34-1.32-.34-1.61 0-2.92 1.28-2.92 2.88zm12.76.94l-1.47-3.7h-1.17l2.33 5.64h.58l2.37-5.64h-1.16l-1.48 3.7zm3.13 1.8h3.04v-.93h-1.97v-1.48h1.9v-.93h-1.9V8.1h1.97v-.94h-3.04v5.5zm7.29-3.87c0-1.03-.71-1.62-1.95-1.62h-1.59v5.5h1.07v-2.21h.14l1.48 2.21h1.32l-1.73-2.32c.81-.17 1.26-.72 1.26-1.56zm-2.16.91h-.31V8.03h.33c.67 0 1.03.28 1.03.82 0 .55-.36.85-1.05.85z" fill="#231F20"/><path d="M20.16 12.86a2.931 2.931 0 100-5.862 2.931 2.931 0 000 5.862z" fill="url(#pi-paint0_linear)"/><path opacity=".65" d="M20.16 12.86a2.931 2.931 0 100-5.862 2.931 2.931 0 000 5.862z" fill="url(#pi-paint1_linear)"/><path d="M36.57 7.506c0-.1-.07-.15-.18-.15h-.16v.48h.12v-.19l.14.19h.14l-.16-.2c.06-.01.1-.06.1-.13zm-.2.07h-.02v-.13h.02c.06 0 .09.02.09.06 0 .05-.03.07-.09.07z" fill="#231F20"/><path d="M36.41 7.176c-.23 0-.42.19-.42.42 0 .23.19.42.42.42.23 0 .42-.19.42-.42 0-.23-.19-.42-.42-.42zm0 .77c-.18 0-.34-.15-.34-.35 0-.19.15-.35.34-.35.18 0 .33.16.33.35 0 .19-.15.35-.33.35z" fill="#231F20"/><path d="M37 12.984S27.09 19.873 8.976 23h26.023a2 2 0 002-1.984l.024-3.02L37 12.985z" fill="#F48120"/><defs><linearGradient id="pi-paint0_linear" x1="21.657" y1="12.275" x2="19.632" y2="9.104" gradientUnits="userSpaceOnUse"><stop stop-color="#F89F20"/><stop offset=".25" stop-color="#F79A20"/><stop offset=".533" stop-color="#F68D20"/><stop offset=".62" stop-color="#F58720"/><stop offset=".723" stop-color="#F48120"/><stop offset="1" stop-color="#F37521"/></linearGradient><linearGradient id="pi-paint1_linear" x1="21.338" y1="12.232" x2="18.378" y2="6.446" gradientUnits="userSpaceOnUse"><stop stop-color="#F58720"/><stop offset=".359" stop-color="#E16F27"/><stop offset=".703" stop-color="#D4602C"/><stop offset=".982" stop-color="#D05B2E"/></linearGradient></defs></svg>
</li><li class="list-payment__item">
<svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" aria-labelledby="pi-google_pay"><title id="pi-google_pay">Google Pay</title><path d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z" fill="#000" opacity=".07"/><path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32" fill="#FFF"/><path d="M18.093 11.976v3.2h-1.018v-7.9h2.691a2.447 2.447 0 0 1 1.747.692 2.28 2.28 0 0 1 .11 3.224l-.11.116c-.47.447-1.098.69-1.747.674l-1.673-.006zm0-3.732v2.788h1.698c.377.012.741-.135 1.005-.404a1.391 1.391 0 0 0-1.005-2.354l-1.698-.03zm6.484 1.348c.65-.03 1.286.188 1.778.613.445.43.682 1.03.65 1.649v3.334h-.969v-.766h-.049a1.93 1.93 0 0 1-1.673.931 2.17 2.17 0 0 1-1.496-.533 1.667 1.667 0 0 1-.613-1.324 1.606 1.606 0 0 1 .613-1.336 2.746 2.746 0 0 1 1.698-.515c.517-.02 1.03.093 1.49.331v-.208a1.134 1.134 0 0 0-.417-.901 1.416 1.416 0 0 0-.98-.368 1.545 1.545 0 0 0-1.319.717l-.895-.564a2.488 2.488 0 0 1 2.182-1.06zM23.29 13.52a.79.79 0 0 0 .337.662c.223.176.5.269.785.263.429-.001.84-.17 1.146-.472.305-.286.478-.685.478-1.103a2.047 2.047 0 0 0-1.324-.374 1.716 1.716 0 0 0-1.03.294.883.883 0 0 0-.392.73zm9.286-3.75l-3.39 7.79h-1.048l1.281-2.728-2.224-5.062h1.103l1.612 3.885 1.569-3.885h1.097z" fill="#5F6368"/><path d="M13.986 11.284c0-.308-.024-.616-.073-.92h-4.29v1.747h2.451a2.096 2.096 0 0 1-.9 1.373v1.134h1.464a4.433 4.433 0 0 0 1.348-3.334z" fill="#4285F4"/><path d="M9.629 15.721a4.352 4.352 0 0 0 3.01-1.097l-1.466-1.14a2.752 2.752 0 0 1-4.094-1.44H5.577v1.17a4.53 4.53 0 0 0 4.052 2.507z" fill="#34A853"/><path d="M7.079 12.05a2.709 2.709 0 0 1 0-1.735v-1.17H5.577a4.505 4.505 0 0 0 0 4.075l1.502-1.17z" fill="#FBBC04"/><path d="M9.629 8.44a2.452 2.452 0 0 1 1.74.68l1.3-1.293a4.37 4.37 0 0 0-3.065-1.183 4.53 4.53 0 0 0-4.027 2.5l1.502 1.171a2.715 2.715 0 0 1 2.55-1.875z" fill="#EA4335"/></svg>
</li><li class="list-payment__item">
<svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-master"><title id="pi-master">Mastercard</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#1C1C1C" style="fill:#1C1C1C;fill:color(display-p3 0.1098 0.1098 0.1098);fill-opacity:1;"/><path d="M35 1C36.1 1 37 1.9 37 3V21C37 22.1 36.1 23 35 23H3C1.9 23 1 22.1 1 21V3C1 1.9 1.9 1 3 1H35Z" fill="#232323" style="fill:#232323;fill:color(display-p3 0.1373 0.1373 0.1373);fill-opacity:1;"/><path d="M14.6364 19.2727C18.8538 19.2727 22.2727 15.8538 22.2727 11.6364C22.2727 7.41892 18.8538 4 14.6364 4C10.4189 4 7 7.41892 7 11.6364C7 15.8538 10.4189 19.2727 14.6364 19.2727Z" fill="#EB001B" style="fill:#EB001B;fill:color(display-p3 0.9216 0.0000 0.1059);fill-opacity:1;"/><path d="M23.3637 19.2727C27.5811 19.2727 31 15.8538 31 11.6364C31 7.41892 27.5811 4 23.3637 4C19.1462 4 15.7273 7.41892 15.7273 11.6364C15.7273 15.8538 19.1462 19.2727 23.3637 19.2727Z" fill="#F79E1B" style="fill:#F79E1B;fill:color(display-p3 0.9686 0.6196 0.1059);fill-opacity:1;"/><path d="M22.2727 11.6362C22.2727 9.01797 20.9637 6.72706 19 5.41797C17.0364 6.83615 15.7273 9.12706 15.7273 11.6362C15.7273 14.1452 17.0364 16.5452 19 17.8543C20.9637 16.5452 22.2727 14.2543 22.2727 11.6362Z" fill="#FF5F00" style="fill:#FF5F00;fill:color(display-p3 1.0000 0.3725 0.0000);fill-opacity:1;"/></svg>
</li><li class="list-payment__item">
<svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" aria-labelledby="pi-shopify_pay"><title id="pi-shopify_pay">Shop Pay</title><path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z" fill="#000"/><path d="M35.889 0C37.05 0 38 .982 38 2.182v19.636c0 1.2-.95 2.182-2.111 2.182H2.11C.95 24 0 23.018 0 21.818V2.182C0 .982.95 0 2.111 0H35.89z" fill="#5A31F4"/><path d="M9.35 11.368c-1.017-.223-1.47-.31-1.47-.705 0-.372.306-.558.92-.558.54 0 .934.238 1.225.704a.079.079 0 00.104.03l1.146-.584a.082.082 0 00.032-.114c-.475-.831-1.353-1.286-2.51-1.286-1.52 0-2.464.755-2.464 1.956 0 1.275 1.15 1.597 2.17 1.82 1.02.222 1.474.31 1.474.705 0 .396-.332.582-.993.582-.612 0-1.065-.282-1.34-.83a.08.08 0 00-.107-.035l-1.143.57a.083.083 0 00-.036.111c.454.92 1.384 1.437 2.627 1.437 1.583 0 2.539-.742 2.539-1.98s-1.155-1.598-2.173-1.82v-.003zM15.49 8.855c-.65 0-1.224.232-1.636.646a.04.04 0 01-.069-.03v-2.64a.08.08 0 00-.08-.081H12.27a.08.08 0 00-.08.082v8.194a.08.08 0 00.08.082h1.433a.08.08 0 00.081-.082v-3.594c0-.695.528-1.227 1.239-1.227.71 0 1.226.521 1.226 1.227v3.594a.08.08 0 00.081.082h1.433a.08.08 0 00.081-.082v-3.594c0-1.51-.981-2.577-2.355-2.577zM20.753 8.62c-.778 0-1.507.24-2.03.588a.082.082 0 00-.027.109l.632 1.088a.08.08 0 00.11.03 2.5 2.5 0 011.318-.366c1.25 0 2.17.891 2.17 2.068 0 1.003-.736 1.745-1.669 1.745-.76 0-1.288-.446-1.288-1.077 0-.361.152-.657.548-.866a.08.08 0 00.032-.113l-.596-1.018a.08.08 0 00-.098-.035c-.799.299-1.359 1.018-1.359 1.984 0 1.46 1.152 2.55 2.76 2.55 1.877 0 3.227-1.313 3.227-3.195 0-2.018-1.57-3.492-3.73-3.492zM28.675 8.843c-.724 0-1.373.27-1.845.746-.026.027-.069.007-.069-.029v-.572a.08.08 0 00-.08-.082h-1.397a.08.08 0 00-.08.082v8.182a.08.08 0 00.08.081h1.433a.08.08 0 00.081-.081v-2.683c0-.036.043-.054.069-.03a2.6 2.6 0 001.808.7c1.682 0 2.993-1.373 2.993-3.157s-1.313-3.157-2.993-3.157zm-.271 4.929c-.956 0-1.681-.768-1.681-1.783s.723-1.783 1.681-1.783c.958 0 1.68.755 1.68 1.783 0 1.027-.713 1.783-1.681 1.783h.001z" fill="#fff"/></svg>
</li><li class="list-payment__item">
<svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-visa"><title id="pi-visa">Visa</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#142FBD" style="fill:#142FBD;fill:color(display-p3 0.0784 0.1843 0.7412);fill-opacity:1;"/><path d="M35 1C36.1 1 37 1.9 37 3V21C37 22.1 36.1 23 35 23H3C1.9 23 1 22.1 1 21V3C1 1.9 1.9 1 3 1H35Z" fill="#1532CB" style="fill:#1532CB;fill:color(display-p3 0.0824 0.1961 0.7961);fill-opacity:1;"/><path d="M29.5944 10.2167H29.2778C28.8556 11.2722 28.5389 11.8 28.2222 13.3833H30.2278C29.9111 11.8 29.9111 11.0611 29.5944 10.2167V10.2167ZM32.6556 16.4444H30.8611C30.7556 16.4444 30.7556 16.4444 30.65 16.3389L30.4389 15.3889L30.3333 15.1778H27.8C27.6944 15.1778 27.5889 15.1778 27.5889 15.3889L27.2722 16.3389C27.2722 16.4444 27.1667 16.4444 27.1667 16.4444H24.95L25.1611 15.9167L28.2222 8.73889C28.2222 8.21111 28.5389 8 29.0667 8H30.65C30.7556 8 30.8611 8 30.8611 8.21111L32.3389 15.0722C32.4444 15.4944 32.55 15.8111 32.55 16.2333C32.6556 16.3389 32.6556 16.3389 32.6556 16.4444V16.4444ZM18.5111 16.1278L18.9333 14.2278C19.0389 14.2278 19.1444 14.3333 19.1444 14.3333C19.8833 14.65 20.6222 14.8611 21.3611 14.7556C21.5722 14.7556 21.8889 14.65 22.1 14.5444C22.6278 14.3333 22.6278 13.8056 22.2056 13.3833C21.9944 13.1722 21.6778 13.0667 21.3611 12.8556C20.9389 12.6444 20.5167 12.4333 20.2 12.1167C18.9333 11.0611 19.3556 9.58333 20.0944 8.84444C20.7278 8.42222 21.0444 8 21.8889 8C23.1556 8 24.5278 8 25.1611 8.21111H25.2667C25.1611 8.84444 25.0556 9.37222 24.8444 10.0056C24.3167 9.79444 23.7889 9.58333 23.2611 9.58333C22.9444 9.58333 22.6278 9.58333 22.3111 9.68889C22.1 9.68889 21.9944 9.79444 21.8889 9.9C21.6778 10.1111 21.6778 10.4278 21.8889 10.6389L22.4167 11.0611C22.8389 11.2722 23.2611 11.4833 23.5778 11.6944C24.1056 12.0111 24.6333 12.5389 24.7389 13.1722C24.95 14.1222 24.6333 14.9667 23.7889 15.6C23.2611 16.0222 23.05 16.2333 22.3111 16.2333C20.8333 16.2333 19.6722 16.3389 18.7222 16.0222C18.6167 16.2333 18.6167 16.2333 18.5111 16.1278V16.1278ZM14.8167 16.4444C14.9222 15.7056 14.9222 15.7056 15.0278 15.3889C15.5556 13.0667 16.0833 10.6389 16.5056 8.31667C16.6111 8.10556 16.6111 8 16.8222 8H18.7222C18.5111 9.26667 18.3 10.2167 17.9833 11.3778C17.6667 12.9611 17.35 14.5444 16.9278 16.1278C16.9278 16.3389 16.8222 16.3389 16.6111 16.3389L14.8167 16.4444ZM5 8.21111C5 8.10556 5.21111 8 5.31667 8H8.90556C9.43333 8 9.85556 8.31667 9.96111 8.84444L10.9111 13.4889C10.9111 13.5944 10.9111 13.5944 11.0167 13.7C11.0167 13.5944 11.1222 13.5944 11.1222 13.5944L13.3389 8.21111C13.2333 8.10556 13.3389 8 13.4444 8H15.6611C15.6611 8.10556 15.6611 8.10556 15.5556 8.21111L12.2833 15.9167C12.1778 16.1278 12.1778 16.2333 12.0722 16.3389C11.9667 16.4444 11.7556 16.3389 11.5444 16.3389H9.96111C9.85556 16.3389 9.75 16.3389 9.75 16.1278L8.06111 9.58333C7.85 9.37222 7.53333 9.05556 7.11111 8.95C6.47778 8.63333 5.31667 8.42222 5.10556 8.42222L5 8.21111Z" fill="white" style="fill:white;fill-opacity:1;"/></svg>
</li></ul>
</div></div>
</div>
<div class="footer__content-bottom-wrapper page-width">
<div class="footer__copyright caption">
<small class="copyright__content"
>© 2026, <a href="/" title="">Tupperware Brand</a></small>
<small class="copyright__content"><a target="_blank" rel="nofollow" href="https://www.shopify.com?utm_campaign=poweredby&utm_medium=shopify&utm_source=onlinestore">Powered by Shopify</a></small></div>
</div>
</div>
</footer>
<style> #shopify-section-sections--19235549348012__footer .footer__copyright {display: none;} </style></div><section id="shopify-section-sections--19235549348012__custom_liquid_Uh3t9X" class="shopify-section shopify-section-group-footer-group section"><style data-shopify>.section-sections--19235549348012__custom_liquid_Uh3t9X-padding {
padding-top: calc(12px * 0.75);
padding-bottom: calc(12px * 0.75);
}
@media screen and (min-width: 750px) {
.section-sections--19235549348012__custom_liquid_Uh3t9X-padding {
padding-top: 12px;
padding-bottom: 12px;
}
}</style><div class="color-scheme-4 gradient">
<div class="section-sections--19235549348012__custom_liquid_Uh3t9X-padding">
<div class="footer__content-bottom-wrapper page-width">
<small class="copyright__content" >© 2026 Party IP Holdings LLC. All rights reserved. Tupperware® is a registered trademark of Party IP Holdings, LLC. <ul class="policies list-unstyled"><li>
<small class="copyright__content"><a href="/policies/refund-policy">Refund policy</a></small>
</li><li>
<small class="copyright__content"><a href="/policies/privacy-policy">Privacy policy</a></small>
</li><li>
<small class="copyright__content"><a href="/policies/terms-of-service">Terms of service</a></small>
</li><li>
<small class="copyright__content"><a href="/policies/shipping-policy">Shipping policy</a></small>
</li></ul></small>
</div>
</div>
</div>
</section>
<!-- END sections: footer-group -->
<ul hidden>
<li id="a11y-refresh-page-message">Choosing a selection results in a full page refresh.</li>
<li id="a11y-new-window-message">Opens in a new window.</li>
</ul>
<script>
window.shopUrl = 'https://www.tupperware.com';
window.routes = {
cart_add_url: '/cart/add',
cart_change_url: '/cart/change',
cart_update_url: '/cart/update',
cart_url: '/cart',
predictive_search_url: '/search/suggest',
};
window.cartStrings = {
error: `There was an error while updating your cart. Please try again.`,
quantityError: `You can only add [quantity] of this item to your cart.`,
};
window.variantStrings = {
addToCart: `Add to cart`,
soldOut: `Sold Out`,
unavailable: `Unavailable`,
unavailable_with_option: `[value] - Unavailable`,
};
window.quickOrderListStrings = {
itemsAdded: `[quantity] items added`,
itemAdded: `[quantity] item added`,
itemsRemoved: `[quantity] items removed`,
itemRemoved: `[quantity] item removed`,
viewCart: `View cart`,
each: `[money]/ea`,
min_error: `This item has a minimum of [min]`,
max_error: `This item has a maximum of [max]`,
step_error: `You can only add this item in increments of [step]`,
};
window.accessibilityStrings = {
imageAvailable: `Image [index] is now available in gallery view`,
shareSuccess: `Link copied to clipboard`,
pauseSlideshow: `Pause slideshow`,
playSlideshow: `Play slideshow`,
recipientFormExpanded: `Gift card recipient form expanded`,
recipientFormCollapsed: `Gift card recipient form collapsed`,
countrySelectorSearchCount: `[count] countries/regions found`,
};
function getParameterValueInsensitive(paramName) {
let params = new URLSearchParams(window.location.search);
for (let [key, value] of params.entries()) {
if (key.toLowerCase() === paramName.toLowerCase()) {
return value;
}
}
return null;
}
let twcIdValue = getParameterValueInsensitive('twcid');
let twpIdValue = getParameterValueInsensitive('twpid'); // changed twcip to twpid
if (twcIdValue && twpIdValue) {
localStorage.setItem('twcid', twcIdValue);
localStorage.setItem('twpid', twpIdValue); // changed twcip to twpid
} else if (twcIdValue) {
localStorage.setItem('twcid', twcIdValue);
}
</script>
<script>
document.addEventListener('DOMContentLoaded', function() {
function getConsultantId() {
const consultant = localStorage.getItem("consultant");
if(!consultant) return null
const {id} = JSON.parse(consultant);
return id
}
function addConsultantToUrl() {
const form = document.querySelector("#CartDrawer-Form");
if(form){
form.action += `?twcId=${getConsultantId()}`
} else {
let shadowElement = document.querySelector("#lcu_drawer").shadowRoot
if (!shadowElement) return
let shadowCheckout = shadowElement.querySelector("a[href='/checkout']")
if(!shadowCheckout) return
shadowCheckout.setAttribute("href",`/checkout?twcId=${getConsultantId()}`)
clearInterval(checkCartDrawerButtonInterval)
}
}
checkCartDrawerButtonInterval = setInterval(()=>{
if(getConsultantId()){
addConsultantToUrl()
} else {
clearInterval(checkCartDrawerButtonInterval)
}
},1000)
})
</script><script src="//www.tupperware.com/cdn/shop/t/213/assets/predictive-search.js?v=57209189334897115771763477331" defer="defer"></script><script src="//www.tupperware.com/cdn/shop/t/213/assets/cart-drawer.js?v=169981311261118214701763477242" defer="defer"></script><style> #boost-sd__modal-cart {display: none !important;} body[class*="modal-open"] {overflow: unset;} .boost-sd__instant-search-results--product-type-grid .boost-sd__suggestion-queries-item--product {flex: 0 0 47%;} </style>
<div id="shopify-block-AakR5VUcwTVI2clRCZ__15516442047899035060" class="shopify-block shopify-app-block">
</div><div id="shopify-block-AQTlTWDBDUEVwNWNoZ__10641372206048101839" class="shopify-block shopify-app-block">
<script>
window.Rebuy = window.Rebuy || {};
window.Rebuy.customer = window.Rebuy.customer || {};
</script>
</div><div id="shopify-block-ASXJCWWEvMUE5L1VWd__5946647744298494267" class="shopify-block shopify-app-block">
<!-- BEGIN app snippet: swymVersion --><script>var __SWYM__VERSION__ = '6.0.7';</script><!-- END app snippet -->
<!-- BEGIN app snippet: swymCustomCss -->
<style id="swym-custom-css">
</style>
<!-- END app snippet -->
<script>
(function () {
// Get CompanyLocation Metadata for B2B customer scenerios (SFS)
// Put metafields in window variable
const commonCustomizationSettings = '{"global-settings":{"icon":"heart","primaryColor":"#000","secondaryColor":"#fff","storefrontLayoutType":"as-drawer","buttonType":{"displayIcon":true,"displayText":true,"style":"solid"},"collectionsButtonPosition":{"position":"top-right","verticalOffset":0,"horizontalOffset":0},"pdpButtonPosition":{"position":"default","verticalOffset":0,"horizontalOffset":0},"enableStorefrontLayoutNotification":true,"storefrontLayoutDrawerWidth":400,"launchType":"header","showItemsCount":true}}';
try {
const parsedSettings = JSON.parse(commonCustomizationSettings);
if (parsedSettings) {
window.SwymWishlistCommonCustomizationSettings = parsedSettings[window.Shopify.theme.schema_name] || parsedSettings['global-settings'];
} else {
window.SwymWishlistCommonCustomizationSettings = {};
}
} catch (e) {
window.SwymWishlistCommonCustomizationSettings = {};
}
let enabledCommonFeatures = '{"add-to-wishlist-collections-button":false,"add-to-wishlist-pdp-button":true,"auto-add-to-wishlist-from-pdp":{"pdpViewCount":"3","notificationTimeoutDuration":"5","selectedPosition":"TopLeft","enabled":true},"sfl-popup-v2":true,"control-centre":true,"multiple-wishlist":false,"social-count":{"enabledOnCollections":false}}';
try {
enabledCommonFeatures = JSON.parse(enabledCommonFeatures) || {};
} catch (e) {
enabledCommonFeatures = {};
}
// Storing COMMON FEATURES data in the window object for potential use in the storefront JS code.
window.SwymEnabledCommonFeatures = enabledCommonFeatures;
// Ghost-Intent Configuration
// Defaults to disabled (false). Only enabled when metafields explicitly set to "true".
try {
let ghostIntentConfig = {
isExplicitConsentNeeded: false,
isExplicitConsentNeededEvenForLocalStorage: false,
askForPermissionOnFirstClick: true
};
window.SwymGhostIntentConfig = ghostIntentConfig;
} catch(e) {
window.SwymGhostIntentConfig = {
isExplicitConsentNeeded: false,
isExplicitConsentNeededEvenForLocalStorage: false,
askForPermissionOnFirstClick: true
};
}
// Education Layer Configuration
// Reads from common enabled-features metafield first. Falls back to old standalone metafield for backward compatibility.
window.SwymEducationLayerEnabled = enabledCommonFeatures?.["education-layer"] ?? true;
// Login Nudge Configuration
// Reads from common enabled-features metafield first. Falls back to old standalone metafield for backward compatibility.
window.SwymLoginNudgeEnabled = enabledCommonFeatures?.["login-nudge"] ?? true;
// Initialize or ensure SwymViewProducts exists
if (!window.SwymViewProducts) {
window.SwymViewProducts = {};
}
})();
</script>
<script src="https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/swym-consent-manager.js" defer></script>
<script
id="wishlist-embed-init"
defer
async
>
(function () {
window.swymWishlistEmbedLoaded = true;
var fullAssetUrl = "https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/apps.bundle.js";
var assetBaseUrl = fullAssetUrl?.substring(0, fullAssetUrl.lastIndexOf('/') + 1);
var swymJsPath = '//procdn.swymrelay.com/code/swym-shopify.js';
var baseJsPath = swymJsPath?.substring(0, swymJsPath.lastIndexOf('/') + 1);
window.SwymCurrentJSPath = baseJsPath;
window.SwymAssetBaseUrl = assetBaseUrl;
window.SwymCurrentStorePath = "//swymstore-v3pro-01.swymrelay.com";
function loadSwymShopifyScript() {
var element = "";
var scriptSrc = "";
element = "swym-ext-shopify-script";
window.SwymShopifyCdnInUse = true;
scriptSrc = "https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/swym-ext-shopify.js";
if (document.getElementById(element)) {
return;
}
var s = document.createElement("script");
s.id = element;
s.type = "text/javascript";
s.async = true;
s.defer = true;
s.src = scriptSrc;
s.onerror = function() {
console.warn("Failed to load Swym Shopify script: ", scriptSrc, " Continuing with default");
// Fallback logic here
element = `swym-ext-shopify-script-${__SWYM__VERSION__}`;
var fallbackJsPathVal = "\/\/procdn.swymrelay.com\/code\/swym-shopify.js";
var fallbackJsPathWithExt = fallbackJsPathVal.replace("swym-shopify", "swym-ext-shopify");
scriptSrc = fallbackJsPathWithExt + '?shop=' + encodeURIComponent(window.Shopify.shop) + '&v=' + __SWYM__VERSION__;
var fallbackScript = document.createElement("script");
fallbackScript.id = element;
fallbackScript.type = "text/javascript";
fallbackScript.async = true;
fallbackScript.defer = true;
fallbackScript.src = scriptSrc;
var y = document.getElementsByTagName("script")[0];
y.parentNode.insertBefore(fallbackScript, y);
};
var x = document.getElementsByTagName("script")[0];
x.parentNode.insertBefore(s, x);
}
var consentAPICallbackInvoked = false;
function checkConsentAndLoad() {
// Allow app to load in design mode (theme editor) regardless of consent
if (window.Shopify?.designMode) {
loadSwymShopifyScript();
return;
}
// Ghost-Intent: If merchant enabled explicit consent, block SDK until
// consent is given through our Ghost-Intent flow (sync nudge accept).
// This works on any store regardless of region (EU or non-EU).
var ghostConfig = window.SwymGhostIntentConfig || {};
if (ghostConfig.isExplicitConsentNeeded || ghostConfig.isExplicitConsentNeededEvenForLocalStorage) {
try {
var consentKey = 'swym-ghost-consent-' + (window.Shopify && window.Shopify.shop || '');
if (localStorage.getItem(consentKey) === 'true') {
// Consent was given through our flow — load SDK
loadSwymShopifyScript();
return;
}
} catch(e) {}
// Check if Shopify native cookie consent was given via the cookie banner.
// If user accepted cookies through Shopify's banner, load SDK normally
// (Ghost-Intent is only needed when NO consent mechanism has been used).
var shopifyConsentGiven = window.Shopify?.customerPrivacy?.preferencesProcessingAllowed?.();
if (shopifyConsentGiven) {
loadSwymShopifyScript();
return;
}
console.warn("[Swym Ghost-Intent] SDK blocked until explicit consent is given");
return;
}
var isCookieBannerVisible = window.Shopify?.customerPrivacy?.shouldShowBanner?.();
if(!isCookieBannerVisible) {
loadSwymShopifyScript();
return;
}
var shouldLoadSwymScript = window.Shopify?.customerPrivacy?.preferencesProcessingAllowed?.();
if (shouldLoadSwymScript) {
loadSwymShopifyScript();
} else {
console.warn("No customer consent to load Swym Wishlist Plus");
}
}
function initialiseConsentCheck() {
document.addEventListener("visitorConsentCollected", (event) => { checkConsentAndLoad(); });
window.Shopify?.loadFeatures?.(
[{name: 'consent-tracking-api', version: '0.1'}],
error => {
consentAPICallbackInvoked = true;
if (error) {
if(!window.Shopify?.customerPrivacy) {
loadSwymShopifyScript();
return;
}
}
checkConsentAndLoad();
}
);
}
function consentCheckFallback(retryCount) {
if(!consentAPICallbackInvoked) {
if (window.Shopify?.customerPrivacy) {
checkConsentAndLoad();
} else if (retryCount >= 1) {
console.warn("Shopify.loadFeatures unsuccessful on site, refer - https://shopify.dev/docs/api/customer-privacy#loading-the-customer-privacy-api. Proceeding with normal Swym Wishlist Plus load");
// Ghost-Intent: route through checkConsentAndLoad so SDK block is respected
checkConsentAndLoad();
} else {
setTimeout(() => consentCheckFallback(retryCount + 1), 1000);
}
}
}
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", initialiseConsentCheck);
window.addEventListener("load", () => consentCheckFallback(0));
} else {
initialiseConsentCheck();
}
})();
</script>
<!-- BEGIN app snippet: swymSnippet --><script defer>
(function () {
const currentSwymJSPath = '//procdn.swymrelay.com/code/swym-shopify.js';
const currentSwymStorePath = 'https://swymstore-v3pro-01.swymrelay.com';
const dnsPrefetchLink = `<link rel="dns-prefetch" href="${currentSwymStorePath}" crossorigin>`;
const dnsPrefetchLink2 = `<link rel="dns-prefetch" href="${currentSwymJSPath}">`;
const preConnectLink = `<link rel="preconnect" href="${currentSwymJSPath}">`;
const swymSnippet = document.getElementById('wishlist-embed-init');
if(dnsPrefetchLink) {swymSnippet.insertAdjacentHTML('afterend', dnsPrefetchLink);}
if(dnsPrefetchLink2) {swymSnippet.insertAdjacentHTML('afterend', dnsPrefetchLink2);}
if(preConnectLink) {swymSnippet.insertAdjacentHTML('afterend', preConnectLink);}
})()
</script>
<script id="swym-snippet" type="text">
window.swymLandingURL = document.URL;
window.swymCart = {"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"USD","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0};
window.swymPageLoad = function() {
window.SwymProductVariants = window.SwymProductVariants || {};
window.SwymHasCartItems = 0 > 0;
window.SwymPageData = {}, window.SwymProductInfo = {};
var unknown = {et: 0};
window.SwymPageData = unknown;
window.SwymPageData.uri = window.swymLandingURL;
};
if(window.selectCallback){
(function(){
var originalSelectCallback = window.selectCallback;
window.selectCallback = function(variant){
originalSelectCallback.apply(this, arguments);
try{
if(window.triggerSwymVariantEvent){
window.triggerSwymVariantEvent(variant.id);
}
}catch(err){
console.warn("Swym selectCallback", err);
}
};})();}
window.swymCustomerId =null;
window.swymCustomerExtraCheck =
null;
var swappName = ("Wishlist" || "Wishlist");
var swymJSObject = {
pid: "TbFm6k3ROmESKhfj7KQrRpSS9V35MqGZgQ2o70gPAOE=",
interface: "/apps/swym" + swappName + "/interfaces/interfaceStore.php?appname=" + swappName
};
window.swymJSShopifyLoad = function(){
if(window.swymPageLoad) swymPageLoad();
if(!window._swat) {
(function (s, w, r, e, l, a, y) {
r['SwymRetailerConfig'] = s;
r[s] = r[s] || function (k, v) {
r[s][k] = v;
};
})('_swrc', '', window);
_swrc('RetailerId', swymJSObject.pid);
_swrc('Callback', function(){initSwymShopify();});
}else if(window._swat.postLoader){
_swrc = window._swat.postLoader;
_swrc('RetailerId', swymJSObject.pid);
_swrc('Callback', function(){initSwymShopify();});
}else{
initSwymShopify();}
}
if(!window._SwymPreventAutoLoad) {
swymJSShopifyLoad();
}
</script>
<style id="safari-flasher-pre"></style>
<script>
if (navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1) {
document.getElementById("safari-flasher-pre").innerHTML = '' + '#swym-plugin,#swym-hosted-plugin{display: none;}' + '.swym-button.swym-add-to-wishlist{display: none;}' + '.swym-button.swym-add-to-watchlist{display: none;}' + '#swym-plugin #swym-notepad, #swym-hosted-plugin #swym-notepad{opacity: 0; visibility: hidden;}' + '#swym-plugin #swym-notepad, #swym-plugin #swym-overlay, #swym-plugin #swym-notification,' + '#swym-hosted-plugin #swym-notepad, #swym-hosted-plugin #swym-overlay, #swym-hosted-plugin #swym-notification' + '{-webkit-transition: none; transition: none;}' + '';
window.SwymCallbacks = window.SwymCallbacks || [];
window.SwymCallbacks.push(function(tracker) {
tracker.evtLayer.addEventListener(tracker.JSEvents.configLoaded, function() {
var x = function() {
SwymUtils.onDOMReady(function() {
var d = document.createElement("div");
d.innerHTML = "<style id='safari-flasher-post'>" + "#swym-plugin:not(.swym-ready),#swym-hosted-plugin:not(.swym-ready){display: none;}" + ".swym-button.swym-add-to-wishlist:not(.swym-loaded){display: none;}" + ".swym-button.swym-add-to-watchlist:not(.swym-loaded){display: none;}" + "#swym-plugin.swym-ready #swym-notepad, #swym-plugin.swym-ready #swym-overlay, #swym-plugin.swym-ready #swym-notification," + "#swym-hosted-plugin.swym-ready #swym-notepad, #swym-hosted-plugin.swym-ready #swym-overlay, #swym-hosted-plugin.swym-ready #swym-notification" + "{-webkit-transition: opacity 0.3s, visibility 0.3ms, -webkit-transform 0.3ms !important;-moz-transition: opacity 0.3s, visibility 0.3ms, -moz-transform 0.3ms !important;-ms-transition: opacity 0.3s, visibility 0.3ms, -ms-transform 0.3ms !important;-o-transition: opacity 0.3s, visibility 0.3ms, -o-transform 0.3ms !important;transition: opacity 0.3s, visibility 0.3ms, transform 0.3ms !important;}" + "</style>";
document.head.appendChild(d);
});};
setTimeout(x, 10);
});});}
window.SwymOverrideMoneyFormat = "${{amount}}";
</script>
<style id="swym-product-view-defaults"> .swym-button.swym-add-to-wishlist-view-product:not(.swym-loaded) { display: none; } </style><!-- END app snippet -->
<script
id="swymSnippetCheckAndActivate"
>
(function () {
var duplicateProneIds = ['safari-flasher-pre', 'swym-product-view-defaults', 'swym-wrap-login-handler'];
function removeDuplicateIdNodes(id) {
var nodes = document.querySelectorAll('#' + id);
nodes.forEach(function (node, index) {
if (index > 0) {
node.remove();
}
});
}
function cleanupDuplicateSnippetNodes(activeScript) {
if (!activeScript) {
return;
}
var allSwymSnippets = document.querySelectorAll('script#swym-snippet');
allSwymSnippets.forEach(function (scriptNode) {
if (scriptNode !== activeScript) {
scriptNode.remove();
}
});
}
function cleanupDuplicateActivationGuards() {
var guardScripts = document.querySelectorAll('script#swymSnippetCheckAndActivate');
guardScripts.forEach(function (scriptNode, index) {
if (index > 0) {
scriptNode.removeAttribute('id');
}
});
}
function postDomLoad() {
var activeScript = document.querySelector('script#swym-snippet:not([type="text"])');
if (!activeScript) {
var inactiveScript = document.querySelector('script#swym-snippet[type="text"]');
if (inactiveScript) {
inactiveScript.type = 'text/javascript';
new Function(inactiveScript.textContent)();
activeScript = inactiveScript;
}
}
cleanupDuplicateSnippetNodes(activeScript);
cleanupDuplicateActivationGuards();
duplicateProneIds.forEach(removeDuplicateIdNodes);
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', postDomLoad);
} else {
postDomLoad();
}
})();
</script>
<script>
(function () {
const themeSchemaName = window.Shopify.theme.schema_name;
if (!window.SwymCallbacks) {
window.SwymCallbacks = [];
}
window.SwymCallbacks.push(swat => {
if (!swat) {
return;
}
// Ghost-Intent: Sync local wishlist items to cloud when SDK loads after consent
if (window.SwymLocalWishlist && window.SwymLocalWishlist.getSyncableItems().length > 0) {
window.SwymLocalWishlist.syncToCloud(swat);
}
if (window._SwymSDKOnlyMode) {
return;
}
// ENABLE COMMON FEATURES
let swymEnabledCommonFeatures = window.SwymEnabledCommonFeatures;
Object.keys(swymEnabledCommonFeatures).forEach(key => {
if (!swymEnabledCommonFeatures[key]) return;
switch (key) {
case 'add-to-wishlist-collections-button':
// Check if app block is already handling the collections button
if (window.SwymCollectionsConfig) {
return;
}
// Check if v2 default collections is handling it
if (window.SwymAdvancedCollectionsWishlistConfig) {
return;
}
// Fallback to old v1 behavior if v2 config is not present
swat?.collectionsApi?.setDefaultCustomizationOptions();
swat?.collectionsApi?.initializeCollections(swat, false, themeSchemaName);
break;
case 'add-to-wishlist-pdp-button':
// Check if app block is already handling the PDP button
if (window.swymATWButtonConfig?.shopifyExtensionType === 'appblock') {
return;
}
if (!(window.SwymPageData && window.SwymPageData.et === 1)) {
// Not initiating pdp button as it is not a product page
return;
}
// Inject addtowishlist.css into the document's <head>
var head = document.head;
var pdpButtonStylesheet = "https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/addtowishlistbutton.css";
var pdpButtonStylesheetTag = document.createElement('link');
pdpButtonStylesheetTag.id = `swym-pdp-button-stylesheet`;
pdpButtonStylesheetTag.rel = 'stylesheet';
pdpButtonStylesheetTag.href = pdpButtonStylesheet;
if (!document.getElementById('swym-pdp-button-stylesheet')) {
head.appendChild(pdpButtonStylesheetTag);
}
var x = document.getElementsByTagName('script')[0];
function createAndInsertScript(id, src, onLoadCallback) {
var scriptTag = document.createElement('script');
scriptTag.id = id;
scriptTag.type = 'text/javascript';
scriptTag.src = src;
scriptTag.onload = onLoadCallback;
x.parentNode.insertBefore(scriptTag, x);
}
var pdpButtonScript = "https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/addtowishlistbutton.js";
createAndInsertScript(`swym-pdp-button-script`, pdpButtonScript, function () {
const pdpBtnApi = window.WishlistPlusPDPButtonAPI;
if (pdpBtnApi) {
pdpBtnApi.setDefaultCustomizationOptions(swat);
pdpBtnApi.initializePDPButton(swat, true);
}
});
break;
default:
return;
}
});
});
})(); // IIFE to prevent polluting global scope
</script>
<script>
(function () {
// Get the settings from Shopify's Liquid variables and create the styles
const isControlCentreEnabledFromMetafield = window?.SwymEnabledCommonFeatures?.["control-centre"];
const isCommonCustomizationEnabledFromMetafield = window?.SwymWishlistCommonCustomizationSettings &&
Object.keys(window.SwymWishlistCommonCustomizationSettings).length > 0;
const isControlCentreEnabledFromBlockSettings = true;
if (!(isControlCentreEnabledFromMetafield && isCommonCustomizationEnabledFromMetafield) && !isControlCentreEnabledFromBlockSettings) {
// Don't enable control centre if this is disabled and block settings are not enabled
return;
}
let borderRadius = 6;
let drawerWidth = window?.SwymWishlistCommonCustomizationSettings?.storefrontLayoutDrawerWidth || 400;
// Check if block settings exist, use them, otherwise fall back to common settings
let primaryBgColor = isControlCentreEnabledFromBlockSettings ?
"#000000" :
window.SwymWishlistCommonCustomizationSettings.primaryColor;
let primaryTextColor = isControlCentreEnabledFromBlockSettings ?
"#ffffff" :
window.SwymWishlistCommonCustomizationSettings.secondaryColor;
let secondaryBgColor = isControlCentreEnabledFromBlockSettings ?
"#f4f8fe" : null;
let secondaryTextColor = isControlCentreEnabledFromBlockSettings ?
"#333333" : null;
// Only use color adjustment functions if we're using common settings
if (!secondaryBgColor || !secondaryTextColor) {
function adjustOpacity(color, opacity) {
if (color[0] === '#') {
color = color.slice(1);
}
if (color.length === 3) {
color = color.split('').map(char => char + char).join('');
}
const r = parseInt(color.slice(0, 2), 16);
const g = parseInt(color.slice(2, 4), 16);
const b = parseInt(color.slice(4, 6), 16);
return `rgba(${r}, ${g}, ${b}, ${opacity})`;
}
function hexToRgb(color) {
if (color[0] === '#') {
color = color.slice(1);
}
if (color.length === 3) {
color = color.split('').map(c => c + c).join('');
}
return {
r: parseInt(color.slice(0, 2), 16),
g: parseInt(color.slice(2, 4), 16),
b: parseInt(color.slice(4, 6), 16)
};
}
function getLuminance({ r, g, b }) {
return 0.299 * r + 0.587 * g + 0.114 * b;
}
function generateSecondaryColors(primaryBgColor, primaryTextColor) {
const secondaryBgOpacity = 0.2;
const secondaryTextOpacity = 0.8;
const secondaryBgColor = adjustOpacity(primaryBgColor, secondaryBgOpacity);
const bgRgb = hexToRgb(primaryBgColor);
const bgLuminance = getLuminance(bgRgb);
// Determine whether to use dark or light text for contrast
const lightText = adjustOpacity(primaryTextColor, secondaryTextOpacity);
const darkText = adjustOpacity(primaryBgColor, secondaryTextOpacity);
const secondaryTextColor = bgLuminance > 186 ? darkText : lightText;
return {
secondaryBgColor,
secondaryTextColor
};
}
const generatedColors = generateSecondaryColors(primaryBgColor, primaryTextColor);
secondaryBgColor = secondaryBgColor || generatedColors.secondaryBgColor;
secondaryTextColor = secondaryTextColor || generatedColors.secondaryTextColor;
}
// Create the CSS rule
let styles = `
.swym-storefront-layout-root-component {
--swym-storefront-layout-ui-border-radius: ${borderRadius}px;
--swym-storefront-layout-button-border-radius: ${borderRadius}px;
--swym-storefront-layout-side-drawer-width: ${drawerWidth}px;
--swym-storefront-layout-button-color-bg-primary: ${primaryBgColor};
--swym-storefront-layout-button-color-text-primary: ${primaryTextColor};
--swym-storefront-layout-button-color-bg-secondary: ${secondaryBgColor};
--swym-storefront-layout-button-color-text-secondary: ${secondaryTextColor};
}
`;
// Create a <style> element and append the styles
let styleSheet = document.createElement("style");
styleSheet.type = "text/css";
styleSheet.innerText = styles;
document.head.appendChild(styleSheet);
if (typeof window.SwymStorefrontLayoutContext === 'undefined') {
window.SwymStorefrontLayoutContext = {};
}
if (typeof window.SwymStorefrontLayoutExtensions === 'undefined'){
window.SwymStorefrontLayoutExtensions = {};
}
// Expose block settings toggle state so ThemeCSSMapping can respect it.
// When true, theme editor color pickers take priority over inherited theme CSS variables.
SwymStorefrontLayoutContext.BlockSettingsEnabled = isControlCentreEnabledFromBlockSettings;
if (isControlCentreEnabledFromBlockSettings) {
// If block settings are enabled, use them
SwymStorefrontLayoutContext.Settings = {
EnableStorefrontLayoutOnLauncher: true,
EnableStorefrontLayoutNotification: window?.SwymWishlistCommonCustomizationSettings?.enableStorefrontLayoutNotification ?? true,
StorefrontLayoutType: window?.SwymWishlistCommonCustomizationSettings?.storefrontLayoutType || "as-drawer",
StorefrontLayoutDrawerPosition: "left",
StorefrontLayoutAsSectionContainerId: "swym-wishlist-render-container",
StorefrontLayoutAsSectionPageURL: "/pages/swym-wishlist",
EnableStorefrontLayoutVariantSelector: true,
StorefrontLayoutNotificationPosition: "left",
StorefrontLayoutActionPopupPosition: "left",
StorefrontLayoutNotificationDuration: 5000
};
} else {
// If only metafield is enabled but no block settings, use common settings
SwymStorefrontLayoutContext.Settings = {
EnableStorefrontLayoutOnLauncher: true,
EnableStorefrontLayoutNotification: window?.SwymWishlistCommonCustomizationSettings?.enableStorefrontLayoutNotification ?? true,
StorefrontLayoutType: window?.SwymWishlistCommonCustomizationSettings?.storefrontLayoutType || "as-drawer",
StorefrontLayoutDrawerPosition: "left",
StorefrontLayoutAsSectionContainerId: "swym-wishlist-render-container",
StorefrontLayoutAsSectionPageURL: "/pages/swym-wishlist",
EnableStorefrontLayoutVariantSelector: true,
StorefrontLayoutNotificationPosition: "left",
StorefrontLayoutActionPopupPosition: "left",
StorefrontLayoutNotificationDuration: 5000
};
}
const storefrontLayoutCallback = (swat) =>{
SwymStorefrontLayoutContext.swat = swat;
let isStoreOnPaidPlan = swat.getApp('Wishlist')?.['is-paid'];
let isWishlistEnabled = swat.getApp('Wishlist')?.['enabled'];
SwymStorefrontLayoutContext.Settings = {
...SwymStorefrontLayoutContext?.Settings,
EnableStorefrontLayoutCollection: window?.SwymEnabledCommonFeatures?.["multiple-wishlist"] ?? false,
EnableStorefrontLayout: isWishlistEnabled && (isControlCentreEnabledFromBlockSettings || isControlCentreEnabledFromMetafield),
}
if(SwymStorefrontLayoutContext?.Settings?.EnableStorefrontLayout){
if(SwymStorefrontLayoutContext?.CustomEvents?.LayoutInitialized){
var event = new CustomEvent(SwymStorefrontLayoutContext.CustomEvents.LayoutInitialized, {
detail: { settings: SwymStorefrontLayoutContext?.Settings }
});
document.dispatchEvent(event);
}else{
swat.utils.warn(`LayoutInitialized event is not defined.`);
}
}else{
swat.utils.warn(`Storefront Layout is disabled.`);
document.getElementById("swym-storefront-layout-container")?.remove();
document.getElementById("swym-storefront-extention-render-container")?.remove();
}
}
if (!window.SwymCallbacks) {
window.SwymCallbacks = [];
}
window.SwymCallbacks.push(storefrontLayoutCallback);
SwymStorefrontLayoutContext.SwymCustomerData = {
name: null,
email: null
};
SwymStorefrontLayoutContext.isShopperLoggedIn = !!SwymStorefrontLayoutContext?.SwymCustomerData?.email;
})();
</script>
<div id="swym-storefront-extention-render-container">
<!-- BEGIN app snippet: swymStorefrontLayout --><script>
(function () {
const isControlCentreEnabledFromMetafield = window?.SwymEnabledCommonFeatures?.["control-centre"];
const isControlCentreEnabledFromBlockSettings = true;
const isCommonCustomizationEnabledFromMetafield = window?.SwymWishlistCommonCustomizationSettings &&
Object.keys(window.SwymWishlistCommonCustomizationSettings).length > 0;
if (!(isControlCentreEnabledFromMetafield && isCommonCustomizationEnabledFromMetafield) && !isControlCentreEnabledFromBlockSettings) {
return;
}
if (typeof window.SwymStorefrontLayoutContext === 'undefined') {
window.SwymStorefrontLayoutContext = {};
}
// Initialize strings with empty values first to prevent string changes after loadStrings()
SwymStorefrontLayoutContext.Strings = {
title: "",
addToCart: "",
addedToCart: "",
soldOut: "",
addingToCart: "",
viewCartCta: "",
moveToCartCta: "",
movingToCartCta: "",
removeSflItemCta: "",
loginHeading: "",
loginText: "",
loginButtonText: "",
loggedUserWelcomeMessage: "",
VariantSelectorBtnText: "",
wishlistTitle: "",
wishlistInfo: "",
emptyWishlistTitle: "",
emptyWishlistDescription: "",
collectionTitle: "",
emptyCarouselCollectionText: "",
emptyCollectionText: "",
emptyCollectionDescription: "",
addToCollectionTitle: "",
removeItemCta: "",
addToCollectionCta: "",
createCollectionCta: "",
saveNewCollectionCta: "",
renameCollectionCta: "",
deleteCollectionCta: "",
shareCollectionCta: "",
saveCollectionCta: "",
editCollectionCta: "",
shareCollectionTitle: "",
shareCollectionMessage: "",
sharedCollectionMessage: "",
updateCollectionTitle: "",
errorMessageListNameRequired: "",
errorMessageListNameRequire3Char: "",
errorMessageListNameAlreadyExist: "",
notificationMessageItemSaved: "",
notificationMessageItemRemoved: "",
notificationMessageAddedToCart: "",
notificationMessageAddedToCollection: "",
notificationMessageCollectionSaved: "",
notificationMessageCollectionDeleted: "",
notificationMessageCollectionUpdated: "",
notificationMessageCollectionUnavailable: "",
notificationMessageSFLItemSaved: "",
notificationMessageSFLItemRemoved: "",
notificationMessageMovedToCart: "",
notificationActionAddToCollection: "",
notificationActionView: "",
notificationActionViewCollection: "",
notificationActionGoToCart: "",
item: "",
items: "",
tabWishlist: "",
tabSavedForLater: "",
tabSavedForYou: "",
savedForLaterTitle: "",
emptySavedForLaterTitle: "",
emptySavedForLaterDescription: "",
awNudgeMessage: "",
awNudgeMessageSub: "",
awNudgeLoginCTA: "",
awNudgeDismiss: "",
emptySingleLoggedInTitle: "",
emptySingleLoggedInDescription: "",
emptySingleLoggedInBullet1: "",
emptySingleLoggedInBullet2: "",
emptySingleLoggedInBullet3: "",
emptySingleLoggedInCTA: "",
emptyMultiLoggedInTitle: "",
emptyMultiLoggedInDescription: "",
emptyMultiLoggedInCreateTitle: "",
emptyMultiLoggedInCreateDescription: "",
emptyMultiLoggedInBrowseLabel: "",
emptyMultiLoggedInCTA: "",
emptyMultiLoggedInTag1: "",
emptyMultiLoggedInTag2: "",
emptyMultiLoggedInTag3: "",
emptyMultiLoggedInTag4: "",
emptyMultiLoggedInTag5: "",
emptyGuestTitle: "",
emptyGuestDescription: "",
emptyGuestSingleNotice: "",
emptyGuestMultiNotice: "",
emptyGuestLoginCTA: "",
emptyGuestBrowseCTA: "",
emptyGuestSignupText: "",
emptyGuestSignupCTA: "",
emptySflTitle: "",
emptySflDescription: "",
emptySflStep1Title: "",
emptySflStep1Description: "",
emptySflStep2Title: "",
emptySflStep2Description: "",
emptySflLoggedInNotice: "",
emptySflGuestNotice: "",
emptySflGoToCartCTA: "",
emptySflLoginCTA: "",
emptySflSignupText: "",
emptySflSignupCTA: ""
};
SwymStorefrontLayoutContext.stringsLoaded = false;
SwymStorefrontLayoutContext.StorefrontLayoutUrls = SwymStorefrontLayoutContext.StorefrontLayoutUrls || {};
SwymStorefrontLayoutContext.StorefrontLayoutUrls.Login = "\/customer_authentication\/login?return_to=%2Fpages%2Fcountries\u0026locale=en\u0026ui_hint=full";
/**
* Function to override Swym's default UI behavior.
**/
const overrideSwymDefaultUI = (swat) => {
try{
swat.ui.open = function(){
window.location.hash = SwymStorefrontLayoutContext?.StorefrontLayoutUrls?.List;
}
if (swat.ui?.uiRef?.settings?.UI) {
swat.ui.uiRef.settings.UI.NotificationDisabled = true;
}
}catch(e){
swat.utils?.warn('Error overriding Swym default UI:', e);
}
}
/**
* Callback function to override Swym's default UI behavior based on Storefront Layout settings.
*
* - Overrides `swat.ui.open` to redirect to a custom Storefront Layout URL if enabled.
* - Overrides Swym's default notifications to log notifications instead of displaying them.
* - Ensures the callback is pushed to `window.SwymCallbacks` for execution when Swym is initialized.
*
* @param {Object} swat - Swym's UI object used for overriding UI behaviors.
*/
const swymStorefrontLayoutCallback = (swat) =>{
SwymStorefrontLayoutContext.swat = swat;
overrideSwymDefaultUI(swat);
let triggerHeartbeat = swat?.ExtensionHealth?.triggerExtensionHeartbeat;
if (typeof triggerHeartbeat !== "function") return;
let wishlistNewUiHeartbeatData = '';
try {
wishlistNewUiHeartbeatData = JSON.parse(wishlistNewUiHeartbeatData) || {};
} catch (e) {
wishlistNewUiHeartbeatData = {};
}
let themeId = window.Shopify.theme.id;
let isDesignMode = !!window.swymDesignMode;
let lastHeartbeat = isDesignMode ? wishlistNewUiHeartbeatData?.editor : wishlistNewUiHeartbeatData?.[themeId];
let themeContext = isDesignMode ? 'editor' : themeId;
let extensionData = {
extensionName: "wishlist-new-ui",
extensionType: "app-embed",
metadata: {},
themeId: themeContext,
extensionSource: "default"
};
/** Stop heartbeat
triggerHeartbeat(extensionData, lastHeartbeat);
*/
}
if (!window.SwymCallbacks) {
window.SwymCallbacks = [];
}
window.SwymCallbacks.push(swymStorefrontLayoutCallback);
})();
</script>
<link rel="stylesheet" href="https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/storefront-layout.css">
<script src="https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/async-wishlist-apis.js" defer="defer"></script>
<script src="https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/storefront-layout.js" defer="defer"></script>
<script src="https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/storefront-layout-components.js" defer="defer"></script>
<swym-storefront-layout class="swym-storefront-layout-root-component"></swym-storefront-layout>
<!-- END app snippet -->
</div>
<!-- BEGIN app snippet: swymEducationTooltip -->
<div id="swym-education-tooltip" aria-hidden="true"
data-toast-desktop-message="Interesting? Click '{{wishlistIcon}}' to save it to your {{wishlistName}}."
data-toast-mobile-message="Interesting? Tap '{{wishlistIcon}}' to add to your {{wishlistName}}."
data-toast-cta="Wishlist Now"
data-tooltip-desktop-message="Interesting? Click '{{wishlistIcon}}' to save it to your {{wishlistName}}."
data-tooltip-mobile-message="Interesting? Tap '{{wishlistIcon}}' to add to your {{wishlistName}}."
data-button-transition-text-1="Price drops? Know first."
data-button-transition-text-2="Almost gone. Just saying."
data-button-transition-text-3="Yours when ready.">
</div>
<div id="swym-education-tooltip-bubble" class="swym-education-tooltip swym-education-tooltip-above" aria-hidden="true" role="tooltip">
<div class="swym-education-tooltip-content">
<span class="swym-education-tooltip-message"></span>
<button class="swym-education-tooltip-close" data-swym-education-tooltip-close aria-label="Close consent dialog">
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M18 6L6 18M6 6l12 12"></path>
</svg>
</button>
</div>
<div class="swym-education-tooltip-arrow"></div>
</div>
<style>
/* Education tooltip — positioned fixed, managed by JS */
.swym-education-tooltip {
position: fixed;
z-index: 500;
visibility: hidden;
opacity: 0;
transition: opacity 0.2s ease, visibility 0.2s ease;
pointer-events: none;
}
.swym-education-tooltip.swym-education-tooltip-visible {
visibility: visible;
opacity: 1;
pointer-events: auto;
}
.swym-education-tooltip-content {
background: var(--swym-storefront-layout-notification-neutral-bg-color, #FFFFFF);
color: var(--swym-storefront-layout-notification-neutral-text-color, #383d41);
border: 1px solid var(--swym-storefront-layout-notification-neutral-border-color, #d6d8db);
padding: 10px 14px;
border-radius: var(--swym-storefront-layout-ui-border-radius, 10px);
font-size: 13px;
line-height: 1.4;
display: flex;
align-items: center;
gap: 8px;
max-width: 320px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}
.swym-education-tooltip-message {
flex: 1;
}
.swym-education-tooltip-close {
background: none;
border: none;
color: inherit;
cursor: pointer;
padding: 2px;
line-height: 1;
flex-shrink: 0;
opacity: 0.7;
}
.swym-education-tooltip-close:hover {
opacity: 1;
}
/* Button text fade transition for education nudge */
.swym-btn-text-fade-out {
opacity: 0;
transition: opacity 0.2s ease;
}
.swym-btn-text-fade-in {
opacity: 1;
transition: opacity 0.3s ease;
}
/* Arrow — points down when tooltip is above, up when below */
.swym-education-tooltip-arrow {
width: 0;
height: 0;
position: absolute;
left: 50%;
transform: translateX(-50%);
}
.swym-education-tooltip-above .swym-education-tooltip-arrow {
bottom: -6px;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-top: 6px solid var(--swym-storefront-layout-notification-neutral-bg-color, #FFFFFF);
}
.swym-education-tooltip-below .swym-education-tooltip-arrow {
top: -6px;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid var(--swym-storefront-layout-notification-neutral-bg-color, #FFFFFF);
}
/* Hidden data element */
#swym-education-tooltip {
display: none;
}
@media (max-width: 480px) {
.swym-education-tooltip-content {
max-width: 90vw;
font-size: 12px;
}
}
</style>
<script src="https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/swym-education-tooltip.js" defer="defer"></script>
<script src="https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/swym-education.js" defer="defer"></script>
<!-- END app snippet -->
</div><div id="shopify-block-AeWtjZE1LT2Irb3pva__7079518687644006178" class="shopify-block shopify-app-block"><script>
(function () {
const cartAttributes = {};
// Helper function to retrieve the UTM from Url
function getUTMFromUrl() {
const url_string = window.location.href;
const url = new URL(url_string);
const utm_id = url.searchParams.get("utm_id");
const utm_source = url.searchParams.get("utm_source");
const utm_medium = url.searchParams.get("utm_medium");
const utm_campaign = url.searchParams.get("utm_campaign");
const utm_term = url.searchParams.get("utm_term");
const ref = url.searchParams.get("ref");
if (!utm_id && !utm_source && !utm_medium && !utm_campaign && !ref) {
return null;
}
let utmParameters = {};
if (utm_id) {
utmParameters.utm_id = utm_id;
}
if (utm_source) {
utmParameters.utm_source = utm_source;
}
if (utm_medium) {
utmParameters.utm_medium = utm_medium;
}
if (utm_campaign) {
utmParameters.utm_campaign = utm_campaign;
}
if (utm_term) {
utmParameters.utm_term = utm_term;
}
if (ref) {
utmParameters.ref = ref;
}
return Object.keys(utmParameters).length === 0
? null
: utmParameters;
}
// Helper function to retrieve the UTM from Cookie
function getUTMAttributes() {
const urlUtmParams = getUTMFromUrl();
if (urlUtmParams) {
return urlUtmParams;
}
// No longer reading from deprecated Shopify cookies
return undefined;
}
function saveUtmParameters() {
const utmParams = getUTMAttributes();
if (utmParams) {
const cartHasUtmAttributes = Object.keys(cartAttributes).find(attributeKey => attributeKey.startsWith("utm_") || attributeKey === "ref");
if (cartHasUtmAttributes) {
// Don't call API if it already contains our UTM parameters
return;
}
// Handle both Shopify.routes.root and routes.root_url for better compatibility
var rootUrl = (window.Shopify && window.Shopify.routes && window.Shopify.routes.root)
|| (window.routes && window.routes.root_url)
|| '/';
var updateCart = fetch(rootUrl + 'cart/update.js',
{
headers: {
'Content-Type': 'application/json',
},
method: "POST",
body: JSON.stringify({
attributes: {
...utmParams
},
})
})
.then(response => response.json())
.then(data => {
return data
});
}
}
saveUtmParameters();
})();
</script>
</div><div id="shopify-block-AaUxsTEZzVitRM3BKN__18327869312511511381" class="shopify-block shopify-app-block">
<script>
window.TupperwareAttributionConfig = {
apiUrl: "https:\/\/soa.tupperware.com",
debugMode: "INFO",
currentCartAttributes: {},
sentryDsn: "https:\/\/f9f8f0734b23ee00712aa43b26f0b775@o4509475937124352.ingest.us.sentry.io\/4509480446918656"
};
</script><!-- BEGIN app snippet: vite-tag -->
<script src="https://cdn.shopify.com/extensions/e40caddd-7e77-4cf6-94ea-3380e27a0144/tupperware-production-14/assets/attribution-BiQyg9th.js" type="module" crossorigin="anonymous"></script>
<!-- END app snippet -->
</div><div id="shopify-block-Ac2NVdDVsOTRNYTF6R__6940120634296238515" class="shopify-block shopify-app-block">
<!-- Store quantity rules in app metafields.
quantity_rules is CHUNKED across two metafields (see app metaFieldQuery.js):
chunk 0 (quantity_rules) carries r/g/pg + a slice of the product map, and
quantity_rules_2 carries the overflow product slice for large stores. Both
must be injected or storefront widgets miss rules for chunk-2 products. -->
<!-- `| json` alone does not escape `</` — a merchant's own error-message
template, a product description, or a customer's cart line-item property
containing a literal "</script>" would close this tag early and corrupt
the page for every shopper. Escaping it to "<\/script>" stays valid JSON
(`\/` is a legal JSON escape for `/`) while no longer matching the HTML
parser's closing-tag sequence. -->
<script id="quantity_rules_app_metafield" type="application/json">
{"r":[{"mn":1,"mx":2,"p":0,"id":2154,"s":"per_order"}],"g":{"ap":null},"pg":[],"p":{"8701955342508":0,"8701958095020":0}}
</script>
<script id="quantity_rules_app_metafield_2" type="application/json">
{"p":{}}
</script>
<!-- Merchant-configured error message templates + widget styling -->
<script id="quantity_app_settings" type="application/json">
{"bg_color":"#dc354511","font_color":"#dc3545","language":"en","error_messages":{"en":{"maxError":"You can only add up to {max} items of {product}","minError":"You must add at least {min} items of {product}","lifetimeError":"You can only purchase {remaining} more of {product} (lifetime limit: {max}).","orderMaxError":"Maximum order value is {max}. Current total: {total}","orderMinError":"Minimum order value is {min}. Current total: {total}","multiplierError":"Quantity must be a multiple of {multiplier} for {product}","requireAllError":"You must add all of these products to your cart: {products}. Missing: {missing_products}.","timeWindowError":"You can only purchase {remaining} more of {product} within the current time window","combinedMaxError":"You can only buy up to {max} items total from {group}","combinedMinError":"You need to buy at least {min} items total from {group}","lifetimeReachedError":"You have reached the lifetime purchase limit for {product}."},"es":{"minError":"Debe agregar al menos {min} unidades de {product}","maxError":"Solo puede agregar hasta {max} unidades de {product}","multiplierError":"La cantidad debe ser un múltiplo de {multiplier} para {product}","orderMinError":"El valor mínimo del pedido es {min}. Total actual: {total}","orderMaxError":"El valor máximo del pedido es {max}. Total actual: {total}","lifetimeError":"Solo puede comprar {remaining} más de {product} (límite de por vida: {max}).","lifetimeReachedError":"Ha alcanzado el límite de compra de por vida para {product}.","timeWindowError":"Solo puede comprar {remaining} más de {product} dentro de la ventana de tiempo actual","combinedMinError":"Necesita comprar al menos {min} artículos en total de {group}","combinedMaxError":"Solo puede comprar hasta {max} artículos en total de {group}","requireAllError":"Debe agregar todos estos productos a su carrito: {products}. Faltan: {missing_products}."},"fr":{"minError":"Vous devez ajouter au moins {min} articles de {product}","maxError":"Vous ne pouvez ajouter que {max} articles de {product}","multiplierError":"La quantité doit être un multiple de {multiplier} pour {product}","orderMinError":"La valeur minimale de commande est {min}. Total actuel : {total}","orderMaxError":"La valeur maximale de commande est {max}. Total actuel : {total}","lifetimeError":"Vous ne pouvez acheter que {remaining} de plus de {product} (limite à vie : {max}).","lifetimeReachedError":"Vous avez atteint la limite d'achat à vie pour {product}.","timeWindowError":"Vous ne pouvez acheter que {remaining} de plus de {product} dans la fenêtre temporelle actuelle","combinedMinError":"Vous devez acheter au moins {min} articles au total de {group}","combinedMaxError":"Vous ne pouvez acheter que {max} articles au total de {group}","requireAllError":"Vous devez ajouter tous ces produits à votre panier : {products}. Manquants : {missing_products}."}},"error_message_position":"below","error_message_style":"standard","minQuantity":"1","maxQuantity":"10","fontSize":"14px","fontFamily":"Arial, sans-serif","borderRadius":"4px","showShadow":false,"showErrorIcon":true,"layoutStyle":"card","padding":"10px 12px","margin":"8px 0","borderWidth":"1px","borderStyle":"solid","borderColor":"#e1e3e5","combined_min_error_message_template":"You need to buy at least {min} items total from {group}","combined_max_error_message_template":"You can only buy up to {max} items total from {group}","require_all_error_message_template":"You must add all of these products to your cart: {products}. Missing: {missing_products}.","lifetime_error_message_template":"You can only purchase {remaining} more of {product} (lifetime limit: {max}).","lifetime_reached_error_message_template":"You have reached the lifetime purchase limit for {product}.","time_window_error_message_template":"You can only purchase {remaining} more of {product} within the current time window","config":{"margin":"8px 0","padding":"10px 12px","fontSize":"14px","messages":{"en":{"maxError":"You can only add up to {max} items of {product}","minError":"You must add at least {min} items of {product}","lifetimeError":"You can only purchase {remaining} more of {product} (lifetime limit: {max}).","orderMaxError":"Maximum order value is {max}. Current total: {total}","orderMinError":"Minimum order value is {min}. Current total: {total}","multiplierError":"Quantity must be a multiple of {multiplier} for {product}","requireAllError":"You must add all of these products to your cart: {products}. Missing: {missing_products}.","timeWindowError":"You can only purchase {remaining} more of {product} within the current time window","combinedMaxError":"You can only buy up to {max} items total from {group}","combinedMinError":"You need to buy at least {min} items total from {group}","lifetimeReachedError":"You have reached the lifetime purchase limit for {product}."},"es":{"minError":"Debe agregar al menos {min} unidades de {product}","maxError":"Solo puede agregar hasta {max} unidades de {product}","multiplierError":"La cantidad debe ser un múltiplo de {multiplier} para {product}","orderMinError":"El valor mínimo del pedido es {min}. Total actual: {total}","orderMaxError":"El valor máximo del pedido es {max}. Total actual: {total}","lifetimeError":"Solo puede comprar {remaining} más de {product} (límite de por vida: {max}).","lifetimeReachedError":"Ha alcanzado el límite de compra de por vida para {product}.","timeWindowError":"Solo puede comprar {remaining} más de {product} dentro de la ventana de tiempo actual","combinedMinError":"Necesita comprar al menos {min} artículos en total de {group}","combinedMaxError":"Solo puede comprar hasta {max} artículos en total de {group}","requireAllError":"Debe agregar todos estos productos a su carrito: {products}. Faltan: {missing_products}."},"fr":{"minError":"Vous devez ajouter au moins {min} articles de {product}","maxError":"Vous ne pouvez ajouter que {max} articles de {product}","multiplierError":"La quantité doit être un multiple de {multiplier} pour {product}","orderMinError":"La valeur minimale de commande est {min}. Total actuel : {total}","orderMaxError":"La valeur maximale de commande est {max}. Total actuel : {total}","lifetimeError":"Vous ne pouvez acheter que {remaining} de plus de {product} (limite à vie : {max}).","lifetimeReachedError":"Vous avez atteint la limite d'achat à vie pour {product}.","timeWindowError":"Vous ne pouvez acheter que {remaining} de plus de {product} dans la fenêtre temporelle actuelle","combinedMinError":"Vous devez acheter au moins {min} articles au total de {group}","combinedMaxError":"Vous ne pouvez acheter que {max} articles au total de {group}","requireAllError":"Vous devez ajouter tous ces produits à votre panier : {products}. Manquants : {missing_products}."}},"fontFamily":"Arial, sans-serif","showShadow":false,"borderColor":"#e1e3e5","borderStyle":"solid","borderWidth":"1px","lastUpdated":"2026-08-21T14:21:24.630Z","layoutStyle":"card","maxQuantity":"10","minQuantity":"1","borderRadius":"4px","hideBuyItNow":true,"showErrorIcon":true,"error_message_style":"standard","hideDynamicCheckout":true,"guestCheckoutBehavior":"allow","error_message_position":"below","guestMaxQuantityOverride":"","max_error_message_template":"You can only add up to {max} items of {product}","min_error_message_template":"You must add at least {min} items of {product}","requireLoginForLimitedProducts":false,"lifetime_error_message_template":"You can only purchase {remaining} more of {product} (lifetime limit: {max}).","order_max_error_message_template":"Maximum order value is {max}. Current total: {total}","order_min_error_message_template":"Minimum order value is {min}. Current total: {total}","multiplier_error_message_template":"Quantity must be a multiple of {multiplier} for {product}","require_all_error_message_template":"You must add all of these products to your cart: {products}. Missing: {missing_products}.","time_window_error_message_template":"You can only purchase {remaining} more of {product} within the current time window","combined_max_error_message_template":"You can only buy up to {max} items total from {group}","combined_min_error_message_template":"You need to buy at least {min} items total from {group}","login_required_error_message_template":"Please log in to purchase this product.","lifetime_reached_error_message_template":"You have reached the lifetime purchase limit for {product}."}}
</script>
<!-- Product page specific data -->
<script id="order_rules" type="application/json">
{"minValue":null,"maxValue":null,"isActive":false,"orderMinErrorMessage":"Minimum order value is {min}. Current total: {total}","orderMaxErrorMessage":"Maximum order value is {max}. Current total: {total}","minItems":null,"maxItems":null,"minWeight":null,"maxWeight":null,"weightUnit":"kg","discountBehavior":"pre_discount","cartItemsMinErrorMessage":"Your cart must have at least {min} items","cartItemsMaxErrorMessage":"Your cart cannot exceed {max} items","weightMinErrorMessage":"Your cart must weigh at least {min} {unit}","weightMaxErrorMessage":"Your cart cannot exceed {max} {unit}"}
</script>
<!-- Cart data (available on cart pages) — cart.items[].properties can contain
arbitrary customer-entered text (e.g. a gift-note field), so this is the
most realistic trigger for the </script> issue described above. -->
<div id="Kart_quantity_page_type" style="display:none;">
other
</div>
<!-- Load unified quantity limit scripts -->
<!-- BEGIN app snippet: quantity-limit-scripts -->
<script src="https://cdn.shopify.com/extensions/019ffa4e-a96d-79c0-ac47-de4debe86247/product-cart-limit-91/assets/quantity-limit-widget.js" defer="defer"></script>
<!-- END app snippet -->
</div><div id="shopify-block-Abm0rUlNXcDY5T3ZuN__2734250573734242505" class="shopify-block shopify-app-block">
<script src="https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/swym-local-wishlist.js" defer></script>
<!-- BEGIN app snippet: swymConsentPopup -->
<style id="swym-consent-popup-styles">
/* Consent popup styles */
.swym-consent-popup {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 999999;
display: flex;
align-items: center;
justify-content: center;
opacity: 0;
visibility: hidden;
transition: opacity 0.2s ease, visibility 0.2s ease;
}
.swym-consent-popup[aria-hidden="false"] {
opacity: 1;
visibility: visible;
}
.swym-consent-popup-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
cursor: pointer;
}
.swym-consent-popup-content {
position: relative;
background: #fff;
padding: 32px;
border-radius: 12px;
max-width: 440px;
width: 90%;
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
z-index: 1;
text-align: left;
}
.swym-consent-popup[aria-hidden="false"] .swym-consent-popup-content {
animation: swymPopupSlideIn 0.25s ease;
}
@keyframes swymPopupSlideIn {
from {
opacity: 0;
transform: translateY(-20px) scale(0.95);
}
to {
opacity: 1;
transform: translateY(0) scale(1);
}
}
.swym-consent-popup-close {
position: absolute;
top: 12px;
right: 12px;
background: none;
border: none;
cursor: pointer;
padding: 4px;
color: #666;
transition: color 0.15s ease;
}
.swym-consent-popup-close:hover {
color: #000;
}
.swym-consent-popup-title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #111;
text-align: center;
}
.swym-consent-popup-message {
margin: 0 0 24px 0;
font-size: 14px;
line-height: 1.6;
color: #555;
text-align: left;
}
.swym-consent-popup-actions {
display: flex;
gap: 12px;
justify-content: center;
}
/* Secondary buttons — all CTAs have equal weight, outlined style */
.swym-consent-btn {
flex: 1;
padding: 12px 24px;
font-size: 14px;
font-weight: 500;
border-radius: 6px;
cursor: pointer;
transition: all 0.15s ease;
min-width: 100px;
min-height: 44px;
background: #fff;
color: #111;
border: 1px solid #ccc;
position: relative;
text-align: center;
}
.swym-consent-btn:hover {
background: #f5f5f5;
border-color: #999;
}
/* Disclaimer text under popup actions */
.swym-consent-popup-disclaimer {
margin: 16px 0 0 0;
font-size: 12px;
line-height: 1.5;
color: #888;
font-style: italic;
text-align: left;
}
/* First CTA (accept button) has bolder font weight */
.swym-consent-btn[data-swym-consent-accept] {
font-weight: 600;
}
/* Spinner for accept button */
.swym-consent-btn .swym-consent-spinner {
display: none;
width: 16px;
height: 16px;
border: 2px solid #111;
border-top-color: transparent;
border-radius: 50%;
animation: swymConsentSpin 0.7s linear infinite;
}
.swym-consent-btn.swym-loading {
pointer-events: none;
}
.swym-consent-btn.swym-loading .swym-consent-btn-text {
visibility: hidden;
}
.swym-consent-btn.swym-loading .swym-consent-spinner {
display: block;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
@keyframes swymConsentSpin {
to { transform: translate(-50%, -50%) rotate(360deg); }
}
.swym-consent-popup-note {
display: none;
}
@media (max-width: 480px) {
.swym-consent-popup-content {
padding: 24px 20px;
margin: 16px;
}
.swym-consent-popup-actions {
flex-direction: column;
}
.swym-consent-btn {
width: 100%;
}
}
/* Ghost-Intent login toast */
.swym-ghost-toast {
position: fixed;
bottom: 20px;
left: 50%;
transform: translateX(-50%) translateY(100px);
background: #111;
color: #fff;
padding: 14px 20px;
border-radius: 8px;
display: flex;
align-items: center;
gap: 12px;
z-index: 999999;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
opacity: 0;
transition: opacity 0.3s ease, transform 0.3s ease;
max-width: 90%;
}
.swym-ghost-toast-visible {
opacity: 1;
transform: translateX(-50%) translateY(0);
}
.swym-ghost-toast-message {
font-size: 14px;
}
.swym-ghost-toast-cta {
color: #fff;
text-decoration: underline;
font-weight: 600;
font-size: 14px;
white-space: nowrap;
}
.swym-ghost-toast-close {
background: none;
border: none;
color: #999;
font-size: 18px;
cursor: pointer;
padding: 0 0 0 4px;
line-height: 1;
}
.swym-ghost-toast-close:hover {
color: #fff;
}
/* Confirmation alert (shown after second consent decline) */
.swym-consent-confirm-alert {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 9999999;
display: flex;
align-items: center;
justify-content: center;
opacity: 0;
visibility: hidden;
transition: opacity 0.2s ease, visibility 0.2s ease;
}
.swym-consent-confirm-alert[aria-hidden="false"] {
opacity: 1;
visibility: visible;
}
.swym-consent-confirm-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.6);
cursor: pointer;
}
.swym-consent-confirm-content {
position: relative;
background: #fff;
padding: 32px;
border-radius: 12px;
max-width: 480px;
width: 90%;
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2);
z-index: 1;
text-align: left;
}
.swym-consent-confirm-alert[aria-hidden="false"] .swym-consent-confirm-content {
animation: swymPopupSlideIn 0.25s ease;
}
.swym-consent-confirm-icon {
margin-right: 8px;
}
.swym-consent-confirm-title {
margin: 0 0 12px 0;
font-size: 18px;
font-weight: 600;
color: #111;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
}
.swym-consent-confirm-message {
margin: 0 0 24px 0;
font-size: 14px;
line-height: 1.6;
color: #555;
text-align: left;
}
.swym-consent-confirm-actions {
display: flex;
gap: 12px;
justify-content: center;
}
/* Secondary buttons for confirmation alert — equal weight, outlined */
.swym-consent-confirm-btn {
flex: 1;
padding: 12px 24px;
font-size: 14px;
font-weight: 500;
border-radius: 6px;
cursor: pointer;
transition: all 0.15s ease;
min-width: 120px;
background: #fff;
color: #111;
border: 1px solid #ccc;
}
.swym-consent-confirm-btn:hover {
background: #f5f5f5;
border-color: #999;
}
.swym-consent-confirm-disclaimer {
margin: 16px 0 0 0;
font-size: 12px;
line-height: 1.5;
color: #888;
font-style: italic;
text-align: left;
}
/* First CTA (accept button) in confirmation alert has bolder font weight */
.swym-consent-confirm-btn[data-swym-confirm-accept] {
font-weight: 600;
}
@media (max-width: 480px) {
.swym-consent-confirm-content {
padding: 24px 20px;
margin: 16px;
}
.swym-consent-confirm-actions {
flex-direction: column;
}
.swym-consent-confirm-btn {
width: 100%;
}
}
</style>
<div id="swym-consent-popup" class="swym-consent-popup" aria-hidden="true" role="dialog" aria-modal="true" aria-labelledby="swym-consent-title"
data-login-url="/customer_authentication/login?return_to=%2Fpages%2Fcountries&locale=en&ui_hint=full"
data-local-only-title="Save your wishlist to this device?"
data-local-only-message="To start your favorites list, we need to save your items to this device."
data-local-only-accept="OK, Save to Device"
data-local-only-decline="No, do not save"
data-local-only-note="If you decline, you won't be able to add items to your wishlist."
data-ghost-title="Saving more? sync your list"
data-ghost-message="You have already saved {{itemCount}} of 5 items you can store on this device. For unlimited saves and accessing across devices please Log in."
data-ghost-message-full="You have already saved {{itemCount}} of 5 items on this device, to save more and sync it across devices please Log in."
data-ghost-disclaimer="Disclaimer: By logging in you are providing your consent to save the wishlist data."
data-ghost-accept="Log in to sync"
data-ghost-decline="Keep on this device"
data-toast-message="Item saved! Log in to sync across all your devices."
data-toast-cta="Log in to sync">
<div class="swym-consent-popup-overlay" data-swym-consent-close></div>
<div class="swym-consent-popup-content">
<button type="button" class="swym-consent-popup-close" data-swym-consent-close aria-label="Close consent dialog">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false">
<path d="M18 6L6 18M6 6l12 12"></path>
</svg>
</button>
<h3 id="swym-consent-title" class="swym-consent-popup-title">Your Consent Matters</h3>
<p class="swym-consent-popup-message">To save items to your wishlist and provide a personalized experience, we need your consent to store your preferences.</p>
<div class="swym-consent-popup-actions">
<button type="button" class="swym-consent-btn" data-swym-consent-accept>
<span class="swym-consent-btn-text">Accept</span>
<span class="swym-consent-spinner" aria-hidden="true"></span>
</button>
<button type="button" class="swym-consent-btn" data-swym-consent-decline>Decline</button>
</div>
<p class="swym-consent-popup-note swym-consent-popup-disclaimer"></p>
</div>
</div>
<div id="swym-consent-confirm-alert" class="swym-consent-confirm-alert" aria-hidden="true" role="alertdialog" aria-modal="true" aria-labelledby="swym-confirm-title">
<div class="swym-consent-confirm-overlay" data-swym-confirm-close></div>
<div class="swym-consent-confirm-content">
<h3 id="swym-confirm-title" class="swym-consent-confirm-title">
<svg class="swym-consent-confirm-icon" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#d97706" stroke-width="2" aria-hidden="true" focusable="false">
<path d="M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z"></path>
<line x1="12" y1="9" x2="12" y2="13"></line>
<line x1="12" y1="17" x2="12.01" y2="17"></line>
</svg>
Are you sure? keep only on this device
</h3>
<p class="swym-consent-confirm-message" data-confirm-message-template="You have already saved {{itemCount}} of 5 items so you won't be able to save more on this device">You have already saved {{itemCount}} of 5 items so you won't be able to save more on this device</p>
<div class="swym-consent-confirm-actions">
<button type="button" class="swym-consent-confirm-btn" data-swym-confirm-accept>Login and sync</button>
<button type="button" class="swym-consent-confirm-btn" data-swym-confirm-decline>Yes, only on this device</button>
</div>
<p class="swym-consent-confirm-disclaimer">Disclaimer: By logging in you are providing your consent to save the wishlist data.</p>
</div>
</div>
<script src="//cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/swym-consent-manager.js" type="text/javascript"></script>
<!-- END app snippet -->
<!-- BEGIN app snippet: swymGhostWishlistDrawer -->
<div id="swym-ghost-wishlist-data" style="display:none"
data-title="My Wishlist"
data-empty-title="Your wishlist is empty"
data-empty-description="Add items to your wishlist and see them here"
data-add-to-cart="Add to Cart"
data-added-to-cart="Added to Cart"
data-remove="Remove"
data-view-product="View Product"
data-consent-cta="Sync across devices"
data-items-count="{{count}} items"
data-close="Close"
></div>
<style id="swym-ghost-wishlist-drawer-styles">
/* Ghost Wishlist Drawer — overlay */
.swym-ghost-wl-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.4);
z-index: 999998;
opacity: 0;
visibility: hidden;
transition: opacity 0.3s ease, visibility 0.3s ease;
}
.swym-ghost-wl-overlay-visible {
opacity: 1;
visibility: visible;
}
/* Ghost Wishlist Drawer — drawer panel */
.swym-ghost-wl-drawer {
position: fixed;
top: 0;
right: 0;
width: 400px;
max-width: 90vw;
height: 100%;
background: #fff;
z-index: 999999;
display: flex;
flex-direction: column;
box-shadow: -4px 0 20px rgba(0, 0, 0, 0.1);
transform: translateX(100%);
transition: transform 0.3s ease;
}
.swym-ghost-wl-drawer-open {
transform: translateX(0);
}
/* Drawer header */
.swym-ghost-wl-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 20px 24px;
border-bottom: 1px solid #eee;
flex-shrink: 0;
}
.swym-ghost-wl-header-left {
display: flex;
align-items: baseline;
gap: 8px;
}
.swym-ghost-wl-title {
margin: 0;
font-size: 18px;
font-weight: 600;
color: #111;
line-height: 1.2;
}
.swym-ghost-wl-count {
font-size: 13px;
color: #888;
font-weight: 400;
}
.swym-ghost-wl-close {
background: none;
border: none;
cursor: pointer;
padding: 4px;
color: #666;
transition: color 0.15s ease;
display: flex;
align-items: center;
justify-content: center;
}
.swym-ghost-wl-close:hover {
color: #000;
}
/* Items list (scrollable) */
.swym-ghost-wl-items {
flex: 1;
overflow-y: auto;
padding: 16px 24px;
}
/* Empty state */
.swym-ghost-wl-empty {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
padding: 60px 20px;
color: #999;
}
.swym-ghost-wl-empty svg {
margin-bottom: 16px;
opacity: 0.5;
}
.swym-ghost-wl-empty-title {
margin: 0 0 8px;
font-size: 16px;
font-weight: 600;
color: #555;
}
.swym-ghost-wl-empty-desc {
margin: 0;
font-size: 14px;
color: #888;
line-height: 1.5;
}
/* Product tile */
.swym-ghost-wl-item {
display: flex;
gap: 16px;
padding: 16px 0;
border-bottom: 1px solid #f0f0f0;
}
.swym-ghost-wl-item:last-child {
border-bottom: none;
}
/* Product image */
.swym-ghost-wl-item-image-link {
flex-shrink: 0;
width: 90px;
height: 90px;
display: block;
text-decoration: none;
}
.swym-ghost-wl-item-image {
width: 90px;
height: 90px;
object-fit: cover;
border-radius: 8px;
background: #f5f5f5;
display: block;
}
.swym-ghost-wl-item-image-placeholder {
width: 90px;
height: 90px;
border-radius: 8px;
background: #f5f5f5;
display: flex;
align-items: center;
justify-content: center;
}
/* Product info */
.swym-ghost-wl-item-info {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
min-width: 0;
}
.swym-ghost-wl-item-title {
font-size: 14px;
font-weight: 500;
color: #111;
text-decoration: none;
line-height: 1.4;
margin-bottom: 4px;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
.swym-ghost-wl-item-title:hover {
text-decoration: underline;
}
.swym-ghost-wl-item-price {
font-size: 14px;
font-weight: 600;
color: #111;
margin-bottom: 10px;
}
/* Action buttons row */
.swym-ghost-wl-item-actions {
display: flex;
align-items: center;
gap: 10px;
}
.swym-ghost-wl-item-atc {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 6px 14px;
font-size: 12px;
font-weight: 500;
color: #fff;
background: #111;
border: 1px solid #111;
border-radius: 4px;
cursor: pointer;
text-decoration: none;
transition: background 0.15s ease;
white-space: nowrap;
}
.swym-ghost-wl-item-atc:hover {
background: #333;
color: #fff;
text-decoration: none;
}
/* Add to Cart — loading spinner */
.swym-ghost-wl-atc-spinner {
display: none;
width: 12px;
height: 12px;
border: 2px solid rgba(255,255,255,0.3);
border-top-color: #fff;
border-radius: 50%;
animation: swym-ghost-wl-spin 0.6s linear infinite;
margin-left: 6px;
}
.swym-ghost-wl-atc-loading .swym-ghost-wl-atc-spinner {
display: inline-block;
}
.swym-ghost-wl-atc-loading {
opacity: 0.7;
pointer-events: none;
}
/* Add to Cart — added state (keeps same style, just disabled) */
.swym-ghost-wl-atc-added {
pointer-events: none;
opacity: 0.8;
}
@keyframes swym-ghost-wl-spin {
to { transform: rotate(360deg); }
}
.swym-ghost-wl-item-soldout {
font-size: 12px;
color: #999;
font-weight: 500;
}
.swym-ghost-wl-item-remove {
background: none;
border: none;
cursor: pointer;
padding: 4px;
color: #999;
transition: color 0.15s ease;
display: flex;
align-items: center;
justify-content: center;
}
.swym-ghost-wl-item-remove:hover {
color: #e53e3e;
}
/* Footer with consent CTA */
.swym-ghost-wl-footer {
padding: 16px 24px;
border-top: 1px solid #eee;
flex-shrink: 0;
}
.swym-ghost-wl-consent-btn {
width: 100%;
padding: 12px 20px;
font-size: 14px;
font-weight: 500;
color: #111;
background: #fff;
border: 1px solid #ddd;
border-radius: 6px;
cursor: pointer;
transition: all 0.15s ease;
text-align: center;
}
.swym-ghost-wl-consent-btn:hover {
background: #f5f5f5;
border-color: #ccc;
}
/* Responsive */
@media (max-width: 480px) {
.swym-ghost-wl-drawer {
width: 100%;
max-width: 100vw;
}
.swym-ghost-wl-header {
padding: 16px 16px;
}
.swym-ghost-wl-items {
padding: 12px 16px;
}
.swym-ghost-wl-item-image-link,
.swym-ghost-wl-item-image,
.swym-ghost-wl-item-image-placeholder {
width: 72px;
height: 72px;
}
.swym-ghost-wl-footer {
padding: 12px 16px;
}
}
</style>
<script src="https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/swym-ghost-wishlist-drawer.js" defer></script>
<!-- END app snippet -->
<!-- BEGIN app snippet: swymHeaderIcon -->
<a id="swym-advanced-header-icon"
class="swym-advanced-header-icon swym-header-icon-wrapper"
href="#"
aria-label="Wishlist"
aria-haspopup="dialog"
aria-expanded="false"
>
<span class="swym-header-icon-html">
<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24" fill="none" aria-hidden="true" focusable="false"><path d="M19.6706 5.4736C17.6806 3.8336 14.7206 4.1236 12.8906 5.9536L12.0006 6.8436L11.1106 5.9536C9.29063 4.1336 6.32064 3.8336 4.33064 5.4736C2.05064 7.3536 1.93063 10.7436 3.97063 12.7836L11.6406 20.4536C11.8406 20.6536 12.1506 20.6536 12.3506 20.4536L20.0206 12.7836C22.0706 10.7436 21.9506 7.3636 19.6706 5.4736Z" stroke="currentColor" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"></path></svg>
<span class="swym-header-icon-count-bubble" aria-live="polite" aria-atomic="true" style="display: none;">
<span class="swym-header-icon-count" data-swym-count>0</span>
</span>
</span>
</a>
<script>
// Initialize configuration object immediately
window.swymAdvancedHeaderIconConfig = window.swymAdvancedHeaderIconConfig || {};
window.swymAdvancedHeaderIconConfig.iconHtml = "\u003csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"24px\" height=\"24px\" viewbox=\"0 0 24 24\" fill=\"none\"\u003e\u003cpath d=\"M19.6706 5.4736C17.6806 3.8336 14.7206 4.1236 12.8906 5.9536L12.0006 6.8436L11.1106 5.9536C9.29063 4.1336 6.32064 3.8336 4.33064 5.4736C2.05064 7.3536 1.93063 10.7436 3.97063 12.7836L11.6406 20.4536C11.8406 20.6536 12.1506 20.6536 12.3506 20.4536L20.0206 12.7836C22.0706 10.7436 21.9506 7.3636 19.6706 5.4736Z\" stroke=\"currentColor\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003c\/path\u003e\u003c\/svg\u003e";
window.swymAdvancedHeaderIconConfig.countBubbleHtml = "\u003cspan class=\"swym-header-icon-count\" data-swym-count\u003e{{WISHLIST_COUNT}}\u003c\/span\u003e";
window.swymAdvancedHeaderIconConfig.attachSelectorDesktop = "a[href='\/cart'].header__icon--cart";
window.swymAdvancedHeaderIconConfig.attachSelectorMobile = "a[href='\/cart'].header__icon--cart";
window.swymAdvancedHeaderIconConfig.hasCustomIconHtml = 524;
window.swymAdvancedHeaderIconConfig.hasCustomCountBubbleHtml = 78;
window.swymAdvancedHeaderIconConfig.ariaLabel = "Wishlist";
window.swymAdvancedHeaderIconConfig.showWishlistCount = true;
</script>
<style id="swym-advanced-header-icon-styles">
.swym-advanced-header-icon { position: relative; display: inline-flex; align-items: center; justify-content: center; text-decoration: none; color: inherit; cursor: pointer; transition: opacity 0.2s ease; } .swym-header-icon-html { position: relative; display: inline-flex; align-items: center; justify-content: center; } .swym-header-icon-svg { width: 24px; height: 24px; display: block; } .swym-header-icon-count-bubble { position: absolute; top: -7px; right: -7px; display: flex; align-items: center; justify-content: center; } .swym-header-icon-count { padding: 0 5px; font-size: 11px; font-weight: 600; line-height: 18px; text-align: center; color: #fff; background-color: #000; border-radius: 50%; } .swym-header-icon-count:empty, .swym-header-icon-count[data-count='0'] { display: none; } @media (prefers-reduced-motion: reduce) { .swym-advanced-header-icon { transition: none; } }
/* Ensure icon is always visible regardless of consent state */
.swym-advanced-header-icon,
#swym-advanced-header-icon,
#swym-advanced-header-icon-mobile {
display: inline-flex !important;
visibility: visible !important;
opacity: 1 !important;
}
/* Loading state overrides the above */
.swym-advanced-header-icon.swym-loading {
opacity: 0.5 !important;
}
/* Hide old SDK header launcher if advanced header icon is enabled */
.swym-header-launcher,
#swym-header-launcher {
display: none !important;
}
</style>
<script src="https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/advanced-header-icon.js" defer></script>
<!-- END app snippet -->
<!-- BEGIN app snippet: advancedCollectionsWishlist -->
<script
id="swym-advanced-wishlist-collections-config"
>
window.SwymAdvancedCollectionsWishlistConfig = {
beforeHtml: "\u003cbutton type=\"button\" class=\"swym-advanced-wishlist-collections\" aria-label=\"{{ADD_TO_WISHLIST}}\" aria-pressed=\"false\" style=\"color:{{ICON_COLOR}}; transform:{{ICON_POSITION}};\"\u003e\n \u003cdiv class=\"swym-advanced-wishlist-collections-social-count\"\u003e\n {{SOCIAL_COUNT}}\n \u003c\/div\u003e\n \u003csvg width=\"24\" height=\"24\" viewbox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\u003e\n \u003cpath d=\"M19.6706 5.4736C17.6806 3.8336 14.7206 4.1236 12.8906 5.9536L12.0006 6.8436L11.1106 5.9536C9.29063 4.1336 6.32064 3.8336 4.33064 5.4736C2.05064 7.3536 1.93063 10.7436 3.97063 12.7836L11.6406 20.4536C11.8406 20.6536 12.1506 20.6536 12.3506 20.4536L20.0206 12.7836C22.0706 10.7436 21.9506 7.3636 19.6706 5.4736Z\" stroke=\"{{ICON_COLOR}}\" stroke-width=\"{{ICON_WIDTH}}\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003c\/path\u003e\n \u003c\/svg\u003e\n\u003c\/button\u003e",
afterHtml: "\u003cbutton type=\"button\" class=\"swym-advanced-wishlist-collections\" aria-label=\"{{ADDED_TO_WISHLIST}}\" aria-pressed=\"true\" style=\"color:{{ICON_COLOR}}; transform:{{ICON_POSITION}};\"\u003e\n \u003cdiv class=\"swym-advanced-wishlist-collections-social-count\"\u003e\n {{SOCIAL_COUNT}}\n \u003c\/div\u003e\n \u003csvg width=\"24\" height=\"24\" viewbox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\u003e\n \u003cpath d=\"M19.6706 5.4736C17.6806 3.8336 14.7206 4.1236 12.8906 5.9536L12.0006 6.8436L11.1106 5.9536C9.29063 4.1336 6.32064 3.8336 4.33064 5.4736C2.05064 7.3536 1.93063 10.7436 3.97063 12.7836L11.6406 20.4536C11.8406 20.6536 12.1506 20.6536 12.3506 20.4536L20.0206 12.7836C22.0706 10.7436 21.9506 7.3636 19.6706 5.4736Z\" stroke=\"{{ICON_COLOR}}\" stroke-width=\"{{ICON_WIDTH}}\" fill=\"{{ICON_COLOR}}\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003c\/path\u003e\n \u003c\/svg\u003e\n\u003c\/button\u003e",
ariaLabels: {
viewWishlist: "Item Added. View Wishlist",
addToWishlist: "Add to Wishlist",
removeFromWishlist: "Remove from Wishlist",
wishlistAddedAnnouncement: " people wishlisted this"
},
socialCountEnabled: false,
iconColor: "#000000",
iconWidth: "1.7",
iconPosition: "top-left",
buttonWidth: 60,
buttonHeight: 40,
shouldCalculatePosition: false,
socialCountCharWidth: 8,
socialCountPadding: 5,
variantSelectorEnabled: false,
variantSelectorChooseCreateText: "Choose or Create new wishlist",
variantSelectorCreateListPlaceholder: "Enter wish list name",
variantSelectorCreateListTitle: "Name Your Wishlist",
ProductUrlSelector: ".card.card--standard a.full-unstyled-link, .card.card--standard a.full-unstyled-link,a.full-unstyled-link",
AttachButtonSelector: "div#ProductGridContainer .card.card--standard, .product-grid .grid__item .card-wrapper.product-card-wrapper,li.grid__item",
isCollectionPage: false,
disabledProductPaths: []
};
// Theme selectors for automated button injection
// Overwrite variant selector text strings with retailer settings once _swat is ready
window.SwymCallbacks = window.SwymCallbacks || [];
window.SwymCallbacks.push(function() {
var s = (window._swat && window._swat.retailerSettings && window._swat.retailerSettings.Strings) || {};
var c = window.SwymAdvancedCollectionsWishlistConfig;
if (s.CollectionsVariantSelectorChooseActionText) c.variantSelectorChooseCreateText = s.CollectionsVariantSelectorChooseActionText;
if (s.CollectionsCreateListPlaceholder) c.variantSelectorCreateListPlaceholder = s.CollectionsCreateListPlaceholder;
if (s.CollectionsCreateListTitle) c.variantSelectorCreateListTitle = s.CollectionsCreateListTitle;
});
</script>
<script src="https://cdn.shopify.com/extensions/01a02366-b2aa-7c33-9dd8-c8ae2e8d6c31/swym-relay-811/assets/advanced-collections-wishlist.js" defer></script>
<style id="swym-advanced-wishlist-collections-styles">
.swym-advanced-wishlist-collections-container {
position: absolute;
top: 0;
left: 0;
padding: 10px;
z-index: 5;
cursor: pointer;
width: 60px;
height: 40px;
}
.swym-advanced-wishlist-collections,
.swym-advanced-wishlist-collections svg {
cursor: pointer;
background: unset;
border: unset;
display: flex;
align-items: center;
flex-direction: row-reverse;
gap: 5px;
color: currentColor;
min-width: 24px;
min-height: 24px;
}
.swym-advanced-wishlist-collections svg path {
stroke: currentColor;
}
.swym-advanced-wishlist-collections
.swym-advanced-wishlist-collections-social-count {
font-size: 14px;
font-weight: 500;
color: currentColor;
}
.swym-sr-only {
clip: rect(0 0 0 0);
clip-path: inset(50%);
height: 1px;
width: 1px;
overflow: hidden;
white-space: nowrap;
position: absolute;
}
</style>
<!-- END app snippet -->
</div><script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
</body>
</html>
Sitemap
Кол-во: 0
XML-карта сайта для поисковиков
?
Sitemap.xml помогает поисковику быстрее находить и индексировать страницы. Особенно важен для крупных сайтов и новых страниц, на которые ещё нет входящих ссылок.
Robots.txt не содержит ссылку на карту сайта. Рекомендуется добавить карту сайта и указать ссылку на нее в robots.txt.
Внутренние ссылки
Кол-во: 106
Ссылки на другие страницы своего сайта
?
Внутренние ссылки распределяют ссылочный вес между страницами и помогают поисковику обходить сайт. Пустые анкоры и ссылки на запрещённые robots.txt страницы — типичные ошибки.
Внутренних ссылок на странице 106 оптимально.
Внутренние ссылки не запрещены к индексации в robots.txt.
На странице присутствуют изображения 1.
Показать первые 100 внутренних ссылок
| Url | Анкор | Состояние | Анализировать |
|---|---|---|---|
| /collections/all |
Continue shopping
|
|
Анализировать url |
| /policies/shipping-policy |
shipping
|
|
Анализировать url |
| /collections/tupperware-voila-glass |
Tupperware Voila™ Glass
|
|
Анализировать url |
| /collections/tupperware-voila-glass |
Glassware
|
|
Анализировать url |
| /collections/fridge-storage |
Fridge Storage
|
|
Анализировать url |
| /collections/freezer-storage |
Freezer Storage
|
|
Анализировать url |
| /collections/pantry-organization |
Pantry Organization
|
|
Анализировать url |
| /collections/microwave-reheating |
Microwave Reheating
|
|
Анализировать url |
| /collections/vintage-food-storage |
Vintage
|
|
Анализировать url |
| /collections/utensils |
Utensils
|
|
Анализировать url |
| /collections/gadgets |
Gadgets
|
|
Анализировать url |
| /collections/cutlery |
Cutlery
|
|
Анализировать url |
| /collections/spoons-spatulas |
Spoons & Spatulas
|
|
Анализировать url |
| /collections/mixing-bowls-measuring-tools |
Mixing Bowls & Measuring Tools
|
|
Анализировать url |
| /collections/mandolines-graters |
Mandolines & Graters
|
|
Анализировать url |
| /collections/specialty-prep-tools |
Specialty Prep Tools
|
|
Анализировать url |
| /collections/baking-dishes |
Baking Dishes
|
|
Анализировать url |
| /collections/microwave-cooking |
Microwave Cooking
|
|
Анализировать url |
| /collections/silicone-baking |
Silicone Baking
|
|
Анализировать url |
| /collections/stovetop-oven |
Stovetop & Oven
|
|
Анализировать url |
| /collections/beverage-dispensers |
Beverage Dispensers
|
|
Анализировать url |
| /collections/bowls-plates |
Plates and Bowls
|
|
Анализировать url |
| /collections/serving-bowls |
Serving Bowls
|
|
Анализировать url |
| /collections/serving-solutions |
Serving Solutions
|
|
Анализировать url |
| /collections/tumblers-mugs |
Tumblers & Mugs
|
|
Анализировать url |
| /collections/vintage-serveware |
Vintage
|
|
Анализировать url |
| /collections/lunch-snacks |
Lunch & Snacks
|
|
Анализировать url |
| /collections/drinks |
Drinks
|
|
Анализировать url |
| /collections/entertaining |
Entertaining
|
|
Анализировать url |
| /collections/thermal-tumblers-mugs |
Thermal Tumblers & Mugs
|
|
Анализировать url |
| /collections/water-bottles |
Water Bottles
|
|
Анализировать url |
| /collections/all-tupperware |
Shop All Tupperware
|
|
Анализировать url |
| /products/tupperware-brand-cookbook |
Tupperware Cookbook
|
|
Анализировать url |
| /collections/feeding-mealtime |
Kids Feeding & Mealtime
|
|
Анализировать url |
| /collections/toys-playtime |
Toys & Playtime
|
|
Анализировать url |
| /collections/vintage |
Vintage Shop
|
|
Анализировать url |
| /collections/sale-shop |
Sale Shop
|
|
Анализировать url |
| /collections/last-chance |
Last Chance
|
|
Анализировать url |
| /collections/monthly-offers |
Monthly Offers
|
|
Анализировать url |
| /collections/sale-shop |
Sale Shop
|
|
Анализировать url |
| /blogs/recipes |
Recipes
|
|
Анализировать url |
| /pages/join-us |
Join Us
|
|
Анализировать url |
| /pages/live |
Tupperware Live
|
|
Анализировать url |
| /collections/tupperware-voila-glass |
<span>Tupperware Voila™ Glass</span>
|
|
Анализировать url |
| /collections/food-storage |
Food Storage
|
|
Анализировать url |
| /collections/tupperware-voila-glass |
Glassware
|
|
Анализировать url |
| /collections/fridge-storage |
Fridge Storage
|
|
Анализировать url |
| /collections/freezer-storage |
Freezer Storage
|
|
Анализировать url |
| /collections/pantry-organization |
Pantry Organization
|
|
Анализировать url |
| /collections/microwave-reheating |
Microwave Reheating
|
|
Анализировать url |
| /collections/vintage-food-storage |
Vintage
|
|
Анализировать url |
| /collections/kitchen-tools-gadgets |
Kitchen Tools & Gadgets
|
|
Анализировать url |
| /collections/utensils |
Utensils
|
|
Анализировать url |
| /collections/gadgets |
Gadgets
|
|
Анализировать url |
| /collections/cutlery |
Cutlery
|
|
Анализировать url |
| /collections/spoons-spatulas |
Spoons & Spatulas
|
|
Анализировать url |
| /collections/mixing-bowls-measuring-tools |
Mixing Bowls & Measuring Tools
|
|
Анализировать url |
| /collections/mandolines-graters |
Mandolines & Graters
|
|
Анализировать url |
| /collections/specialty-prep-tools |
Specialty Prep Tools
|
|
Анализировать url |
| /collections/cooking-baking |
Cooking & Baking
|
|
Анализировать url |
| /collections/baking-dishes |
Baking Dishes
|
|
Анализировать url |
| /collections/microwave-cooking |
Microwave Cooking
|
|
Анализировать url |
| /collections/silicone-baking |
Silicone Baking
|
|
Анализировать url |
| /collections/stovetop-oven |
Stovetop & Oven
|
|
Анализировать url |
| /collections/serveware-entertaining |
Serveware & Entertaining
|
|
Анализировать url |
| /collections/beverage-dispensers |
Beverage Dispensers
|
|
Анализировать url |
| /collections/bowls-plates |
Plates and Bowls
|
|
Анализировать url |
| /collections/serving-bowls |
Serving Bowls
|
|
Анализировать url |
| /collections/serving-solutions |
Serving Solutions
|
|
Анализировать url |
| /collections/tumblers-mugs |
Tumblers & Mugs
|
|
Анализировать url |
| /collections/vintage-serveware |
Vintage
|
|
Анализировать url |
| /collections/on-the-go-essentials |
On-the-Go Essentials
|
|
Анализировать url |
| /collections/lunch-snacks |
Lunch & Snacks
|
|
Анализировать url |
| /collections/drinks |
Drinks
|
|
Анализировать url |
| /collections/entertaining |
Entertaining
|
|
Анализировать url |
| /collections/thermal-tumblers-mugs |
Thermal Tumblers & Mugs
|
|
Анализировать url |
| /collections/water-bottles |
Water Bottles
|
|
Анализировать url |
| /collections/all-tupperware |
Shop All Tupperware
|
|
Анализировать url |
| /products/tupperware-brand-cookbook |
Tupperware Cookbook
|
|
Анализировать url |
| /collections/feeding-mealtime |
Kids Feeding & Mealtime
|
|
Анализировать url |
| /collections/toys-playtime |
Toys & Playtime
|
|
Анализировать url |
| /collections/vintage |
Vintage Shop
|
|
Анализировать url |
| /collections/sale-shop |
Sale Shop
|
|
Анализировать url |
| /collections/last-chance |
Last Chance
|
|
Анализировать url |
| /collections/monthly-offers |
<span>Monthly Offers</span>
|
|
Анализировать url |
| /collections/sale-shop |
<span>Sale Shop</span>
|
|
Анализировать url |
| /blogs/recipes |
<span>Recipes</span>
|
|
Анализировать url |
| /pages/join-us |
<span>Join Us</span>
|
|
Анализировать url |
| /pages/live |
<span>Tupperware Live</span>
|
|
Анализировать url |
| /cart |
<span class="svg-wrapper"><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"></path></svg>
</span>
<span class="visually-hidden">Cart</span>
|
|
Анализировать url |
| /pages/join-us |
Find a Consultant
|
|
Анализировать url |
| /pages/catalog-and-brochures |
Online Catalog
|
|
Анализировать url |
| /pages/host-a-party |
Host a Party
|
|
Анализировать url |
| /pages/tupperware-brand-help-center |
Customer Service
|
|
Анализировать url |
| /pages/estimated-delivery-timelines |
Estimated Delivery Times
|
|
Анализировать url |
| /pages/warranty-policy |
Warranty
|
|
Анализировать url |
| /pages/accessibility |
Accessibility
|
|
Анализировать url |
| /pages/about-us |
About Us
|
|
Анализировать url |
| /pages/bpa-free |
BPA Free
|
|
Анализировать url |
| /pages/california-ab-1200-cookware-disclosure |
California AB 1200 Cookware Disclosure
|
|
Анализировать url |
Внешние ссылки
Кол-во: 25
Ссылки на сторонние сайты
?
Исходящие внешние ссылки передают часть ссылочного веса на чужие сайты. Ссылки на авторитетные ресурсы безопасны; ссылки на мусорные сайты могут навредить репутации страницы.
Внешних ссылок на странице 25 слишком много. Спрячьте лишние ссылки в тег noindex или атрибут rel='nofollow'!
На странице ссылки с атрибутом rel='nofollow' 2.
На странице присутствуют ссылки на субдомены 1.
Показать внешние ссылки
| Url | Анкор | Анализировать |
|---|---|---|
| tupperware.com |
Log in
|
Анализировать url |
| tupperware.com |
Want to shop with one of our independent consultants for expert advice ?
|
Анализировать url |
| tupperware.com |
<account-icon><span class="svg-wrapper"><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"></path></svg>
</span></account-icon>Log in
|
Анализировать url |
| tupperware.com |
<account-icon><span class="svg-wrapper"><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"></path></svg>
</span></account-icon><span class="visually-hidden">Log in</span>
|
Анализировать url |
| tupperware-eu.com |
https://tupperware-eu.com/de
|
Анализировать url |
| tupperware-eu.com |
https://tupperware-eu.com
|
Анализировать url |
| tupperware.com.cn |
https://www.tupperware.com.cn
|
Анализировать url |
| tupperware-nordic.com |
https://www.tupperware-nordic.com
|
Анализировать url |
| tupperware-nordic.com |
https://www.tupperware-nordic.com
|
Анализировать url |
| tupperware-eu.com |
https://tupperware-eu.com
|
Анализировать url |
| tupperware-eu.com |
https://tupperware-eu.com/de
|
Анализировать url |
| tuppermg.gr |
https://tuppermg.gr
|
Анализировать url |
| tupperware-nordic.com |
https://www.tupperware-nordic.com
|
Анализировать url |
| shoptupperware.in |
https://www.shoptupperware.in
|
Анализировать url |
| tupperware-eu.com |
https://tupperware-eu.com/it
|
Анализировать url |
| tupperware-eu.com |
https://tupperware-eu.com/nl
|
Анализировать url |
| tupperware-nordic.com |
https://www.tupperware-nordic.com
|
Анализировать url |
| tupperware-eu.com |
https://tupperware-eu.com/pl
|
Анализировать url |
| tupperware-portugal.pt |
https://tupperware-portugal.pt
|
Анализировать url |
| tupperware-espana.es |
https://tupperware-espana.es
|
Анализировать url |
| tupperware-nordic.com |
https://www.tupperware-nordic.com
|
Анализировать url |
| tupperware-eu.com |
https://tupperware-eu.com
|
Анализировать url |
| myoffice.tupperware.com |
Salesforce Login
|
Анализировать url |
| dsa.org |
Member of the DSA (Application Pending) - DSA Code of Ethics
|
Анализировать url |
| shopify.com |
Powered by Shopify
|
Анализировать url |
Конкуренты Готовность: 0%
Конкуренты в Яндексе
Кол-во: 0
Топ сайтов-конкурентов в Яндексе
?
Сайты, чаще всего появляющиеся в ТОПе Яндекса по запросам из семантического ядра этой страницы.
Мы не нашли у вас конкурентов в Яндексе. Сайт или очень молодой или плохо продвигается.
Конкурентов в ТОП-10 Яндекса не нашлось.
Конкуренты в Google
Кол-во: 0
Топ сайтов-конкурентов в Google
?
Сайты, чаще всего появляющиеся в ТОПе Google по запросам из семантического ядра этой страницы.
Конкуренты в Google тоже не найдены. Займитесь продвижением сайта!
Конкурентов в ТОП-10 Google не нашлось.
ЗоЗПП: права потребителей Готовность: 100%
Нарушения
Не выявлены
Признаков дистанционной продажи товаров (интернет-магазина) не обнаружено — требования ЗоЗПП о раскрытии информации продавца к сайту не применяются. Нарушений нет.
ФЗ-149: рекомендательные технологии Готовность: 100%
Нарушения
Не выявлены
Рекомендательные блоки («с этим покупают», «похожие товары» и т.п.) на сайте не обнаружены — требования ст. 10.7 ФЗ-149 к сайту не применяются. Нарушений нет.
ФЗ-38: реклама Готовность: 100%
Нарушения
Не выявлены
Рекламных тематик с обязательными оговорками (медицина, БАД, кредиты и займы, новостройки) на сайте не обнаружено. Нарушений нет.
ФЗ-436: защита детей Готовность: 100%
Нарушения
Не выявлены
Признаков информационной продукции (новости, видео, книги, игры, курсы) не обнаружено — обязательная возрастная маркировка по ФЗ-436 сайту не требуется. Нарушений нет.
Вердикт
Выполнен подробный анализ сайта tupperwarebrands.com: готовность на 43%. Чтобы выполнить все условия и попасть на первую страницу выдачи поисковых систем требуется:
Постарайтесь исправить общие ошибки.
Исправьте ошибки в мета-тегах.
Исправьте ошибки оптимизации.
Исправьте ошибки индексации.
Поделитесь с друзьями: