diff --git a/asset-manifest.json b/asset-manifest.json
index d464f99..f2b8ce5 100644
--- a/asset-manifest.json
+++ b/asset-manifest.json
@@ -5,17 +5,17 @@
"main.css": "/adobeassignment/static/css/main.cec7fcc2.chunk.css",
"main.js": "/adobeassignment/static/js/main.26107601.chunk.js",
"main.js.map": "/adobeassignment/static/js/main.26107601.chunk.js.map",
- "runtime-main.js": "/adobeassignment/static/js/runtime-main.a927541f.js",
- "runtime-main.js.map": "/adobeassignment/static/js/runtime-main.a927541f.js.map",
+ "runtime-main.js": "/adobeassignment/static/js/runtime-main.7b9c1257.js",
+ "runtime-main.js.map": "/adobeassignment/static/js/runtime-main.7b9c1257.js.map",
"static/css/3.de424728.chunk.css": "/adobeassignment/static/css/3.de424728.chunk.css",
"static/js/3.1ef0ea03.chunk.js": "/adobeassignment/static/js/3.1ef0ea03.chunk.js",
"static/js/3.1ef0ea03.chunk.js.map": "/adobeassignment/static/js/3.1ef0ea03.chunk.js.map",
"static/css/4.7f8068f4.chunk.css": "/adobeassignment/static/css/4.7f8068f4.chunk.css",
"static/js/4.be6c346a.chunk.js": "/adobeassignment/static/js/4.be6c346a.chunk.js",
"static/js/4.be6c346a.chunk.js.map": "/adobeassignment/static/js/4.be6c346a.chunk.js.map",
- "static/css/5.18ad8017.chunk.css": "/adobeassignment/static/css/5.18ad8017.chunk.css",
- "static/js/5.e2f76234.chunk.js": "/adobeassignment/static/js/5.e2f76234.chunk.js",
- "static/js/5.e2f76234.chunk.js.map": "/adobeassignment/static/js/5.e2f76234.chunk.js.map",
+ "static/css/5.e94c9ad9.chunk.css": "/adobeassignment/static/css/5.e94c9ad9.chunk.css",
+ "static/js/5.cb2272bf.chunk.js": "/adobeassignment/static/js/5.cb2272bf.chunk.js",
+ "static/js/5.cb2272bf.chunk.js.map": "/adobeassignment/static/js/5.cb2272bf.chunk.js.map",
"static/css/6.60eec0d8.chunk.css": "/adobeassignment/static/css/6.60eec0d8.chunk.css",
"static/js/6.312c4c86.chunk.js": "/adobeassignment/static/js/6.312c4c86.chunk.js",
"static/js/6.312c4c86.chunk.js.map": "/adobeassignment/static/js/6.312c4c86.chunk.js.map",
@@ -25,18 +25,18 @@
"static/js/8.e70f24d1.chunk.js": "/adobeassignment/static/js/8.e70f24d1.chunk.js",
"static/js/8.e70f24d1.chunk.js.map": "/adobeassignment/static/js/8.e70f24d1.chunk.js.map",
"index.html": "/adobeassignment/index.html",
- "precache-manifest.cbc034f22e3bc048e9a90b19ac470e28.js": "/adobeassignment/precache-manifest.cbc034f22e3bc048e9a90b19ac470e28.js",
+ "precache-manifest.5bb700404888e44b65b0c5d6727a634f.js": "/adobeassignment/precache-manifest.5bb700404888e44b65b0c5d6727a634f.js",
"service-worker.js": "/adobeassignment/service-worker.js",
"static/css/3.de424728.chunk.css.map": "/adobeassignment/static/css/3.de424728.chunk.css.map",
"static/css/4.7f8068f4.chunk.css.map": "/adobeassignment/static/css/4.7f8068f4.chunk.css.map",
- "static/css/5.18ad8017.chunk.css.map": "/adobeassignment/static/css/5.18ad8017.chunk.css.map",
+ "static/css/5.e94c9ad9.chunk.css.map": "/adobeassignment/static/css/5.e94c9ad9.chunk.css.map",
"static/css/6.60eec0d8.chunk.css.map": "/adobeassignment/static/css/6.60eec0d8.chunk.css.map",
"static/css/8.cf1d0990.chunk.css.map": "/adobeassignment/static/css/8.cf1d0990.chunk.css.map",
"static/css/main.cec7fcc2.chunk.css.map": "/adobeassignment/static/css/main.cec7fcc2.chunk.css.map",
"static/js/3.1ef0ea03.chunk.js.LICENSE.txt": "/adobeassignment/static/js/3.1ef0ea03.chunk.js.LICENSE.txt"
},
"entrypoints": [
- "static/js/runtime-main.a927541f.js",
+ "static/js/runtime-main.7b9c1257.js",
"static/css/3.de424728.chunk.css",
"static/js/3.1ef0ea03.chunk.js",
"static/css/main.cec7fcc2.chunk.css",
diff --git a/index.html b/index.html
index 94c9da8..ec7afc4 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-
Adobe assignment
\ No newline at end of file
+Adobe assignment
\ No newline at end of file
diff --git a/precache-manifest.cbc034f22e3bc048e9a90b19ac470e28.js b/precache-manifest.5bb700404888e44b65b0c5d6727a634f.js
similarity index 81%
rename from precache-manifest.cbc034f22e3bc048e9a90b19ac470e28.js
rename to precache-manifest.5bb700404888e44b65b0c5d6727a634f.js
index e428052..75fe115 100644
--- a/precache-manifest.cbc034f22e3bc048e9a90b19ac470e28.js
+++ b/precache-manifest.5bb700404888e44b65b0c5d6727a634f.js
@@ -1,6 +1,6 @@
self.__precacheManifest = (self.__precacheManifest || []).concat([
{
- "revision": "067477f3a40a78c5be9681af4a31ca48",
+ "revision": "d2923ad565a0a5c829d7e4209e5f73aa",
"url": "/adobeassignment/index.html"
},
{
@@ -12,8 +12,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
"url": "/adobeassignment/static/css/4.7f8068f4.chunk.css"
},
{
- "revision": "024bf57a77ab77b0c3e3",
- "url": "/adobeassignment/static/css/5.18ad8017.chunk.css"
+ "revision": "9fb3c2535c7ae8cd728d",
+ "url": "/adobeassignment/static/css/5.e94c9ad9.chunk.css"
},
{
"revision": "324eb02a4523e7729d27",
@@ -44,8 +44,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
"url": "/adobeassignment/static/js/4.be6c346a.chunk.js"
},
{
- "revision": "024bf57a77ab77b0c3e3",
- "url": "/adobeassignment/static/js/5.e2f76234.chunk.js"
+ "revision": "9fb3c2535c7ae8cd728d",
+ "url": "/adobeassignment/static/js/5.cb2272bf.chunk.js"
},
{
"revision": "324eb02a4523e7729d27",
@@ -64,7 +64,7 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
"url": "/adobeassignment/static/js/main.26107601.chunk.js"
},
{
- "revision": "a28d3bfe405dc35093ff",
- "url": "/adobeassignment/static/js/runtime-main.a927541f.js"
+ "revision": "2bf0eaf26659b069aa7c",
+ "url": "/adobeassignment/static/js/runtime-main.7b9c1257.js"
}
]);
\ No newline at end of file
diff --git a/service-worker.js b/service-worker.js
index fdb386f..d8bd683 100644
--- a/service-worker.js
+++ b/service-worker.js
@@ -14,7 +14,7 @@
importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
importScripts(
- "/adobeassignment/precache-manifest.cbc034f22e3bc048e9a90b19ac470e28.js"
+ "/adobeassignment/precache-manifest.5bb700404888e44b65b0c5d6727a634f.js"
);
self.addEventListener('message', (event) => {
diff --git a/static/css/5.18ad8017.chunk.css.map b/static/css/5.18ad8017.chunk.css.map
deleted file mode 100644
index 7b8f6d0..0000000
--- a/static/css/5.18ad8017.chunk.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["Search.component.scss","../../../styles/_variables.scss","CartIcon.component.scss","SortAndFilterPanel.component.scss","SortModal.component.scss","FilterModal.component.scss","ItemPrice.component.scss","ProductTile.component.scss","ProductContainer.component.scss","Footer.component.scss"],"names":[],"mappings":"AAEA,uCACE,gBAAiB,CADnB,qFAII,sBAAuB,CAEvB,WC4Ga,CD5Gb,4BC4Ga,CD3Gb,UC2Ga,CD1Gb,oBAAsB,CAR1B,gHAUM,UCwGW,CDvGX,SAAU,CAXhB,2GAWM,SAAU,CAXhB,4GAWM,SAAU,CAXhB,kGAUM,UCwGW,CDvGX,SAAU,CAXhB,2GAeM,UCmGW,CDlHjB,4GAmBM,UC+FW,CClHjB,yCACE,gBAAiB,CACjB,iBAAkB,CAFpB,yFAKI,iBAAkB,CAClB,QAAS,CACT,UAAW,CACX,aAAgB,CAChB,iBAAkB,CAClB,wBDoJiB,CCnJjB,UDuGa,CCtGb,cDqFoB,CEjGxB,6BACI,iBAAkB,CADtB,gEAGQ,aAAe,CACf,cF2FQ,CE1FR,eFuGc,CEtGd,wBFgHY,CEtHpB,0GAQY,eAAgB,CCR5B,wBAMY,aAAc,CACd,+BAAiC,CAP7C,iCAaY,mBAAoB,CAbhC,6CAegB,UH0GC,CGzHjB,oDAiBoB,aH6IC,CG5ID,cH8EE,CGhGtB,iCAyBQ,SAAU,CACV,8BAAgC,CA1BxC,6CA8BQ,SAAU,CA9BlB,+CAkCQ,SAAU,CClClB,0BAGY,aAAc,CACd,+BAAiC,CAJ7C,mCAUY,mBAAoB,CAVhC,+CAYgB,UJ6GC,CIzHjB,sDAcoB,aJgJC,CI/ID,cJiFE,CIhGtB,mCAsBQ,SAAU,CACV,8BAAgC,CAvBxC,+CA2BQ,SAAU,CA3BlB,iDA+BQ,SAAU,CC/BlB,aACI,gBLgGoB,CK/FpB,mBAAqB,CACrB,YAAa,CACb,oBAAqB,CAJzB,iCAMQ,cL0Fc,CKzFd,eLqGc,CKpGd,mBAAqB,CAR7B,gDAYQ,UL6GS,CK5GT,eL+Fc,CK9Fd,cLmFgB,CKlFhB,4BAA6B,CAfrC,oCAoBQ,aAAc,CACd,eLuFc,CKtFd,cL2EgB,CK1EhB,gBAAiB,CCvBzB,0CAEI,eAAgB,CAEhB,iBAAkB,CAClB,wBNiHgB,CMtHpB,2FAQQ,mBAAqB,CAR7B,0FAYQ,cNoFc,CMhGtB,0DAgBQ,aAAc,CACd,aAAc,CACd,kBAAmB,CACnB,WAAY,CACZ,wBNiLqC,CMhLrC,cAAe,CACf,cN2EgB,CM1EhB,eNqFc,CM5GtB,gEA2BQ,UAAY,CC7BpB,2BACI,kBAAmB,CADvB,gCAIQ,4BAA6B,CCFrC,UACI,YAAa,CACb,kBAAmB,CACnB,sBAAuB,CACvB,cAAe,CACf,MAAO,CACP,QAAS,CACT,UAAW,CACX,wBRwHiB,CQvHjB,aR2GgB,CQ1GhB,YAAc,CAVlB,YAaQ,eAAgB,CAChB,eAAiB","file":"5.18ad8017.chunk.css","sourcesContent":["@import './../../../styles//variables';\n\n.c-Plp__c-SortAndFilterPanel__c-Search {\n margin-left: auto;\n\n .c-Plp__c-SortAndFilterPanel__c-Search__input {\n background: transparent;\n border: none;\n border-bottom: 1px solid $neutral-00;\n color: $neutral-00;\n padding-bottom: 0.3rem;\n &::placeholder {\n color: $neutral-00;\n opacity: 1;\n }\n \n &:-ms-input-placeholder {\n color: $neutral-00;\n }\n \n &::-ms-input-placeholder {\n color: $neutral-00;\n }\n }\n}\n","// Project-Wide Variables\n// ===\n//\n// Edit these as needed. Some guidelines:\n//\n// - Names should be lowercase and dash-separated;\n// - Qualifiers should be added to the beginning of related variables: use\n// `$small-font-size`, not `$font-size-small`;\n// - Numeric scales should use increments of 10; these numbers are arbitrary and\n// should not map to actual values. If really necessary, additional values can\n// be added in between, e.g. $neutral-15 between 10 and 20.\n//\n//\n// Table of Contents\n// ---\n//\n// [AAA] Basic Layout\n// [BBB] Responsive Layout\n// [CCC] Typography\n// [DDD] Color Palette\n// [EEE] Appearance\n// [FFF] Z-Index\n// [GGG] Shorthands\n\n\n// [AAA] Basic Layout\n// ---\n\n// Basic unit for spacing and alignment; 6 to 12px recommended. Apply in whole\n// or half multiples.\n$sub-unit: 4px;\n$unit: 8px;\n\n// Standard tap-target size\n$tap-size: 44px;\n\n// Container max-width.\n$max-width: 1280px;\n\n// Content Height Calculations\n$header-height: 64px;\n$footer-height: 173px;\n$content-height: calc(100vh - #{$header-height} - #{$footer-height});\n\n// [BBB] Responsive Layout\n// ---\n//\n// Media query breakpoints and grid setup. Please see Mobify's Responsive Best\n// Practices doc here: https://bit.ly/2tmRnEi, and our Responsive Grid\n// documentation here: http://docs.mobify.com/latest/guides/responsive-grid/\n//\n// Note: $small-breakpoint isn't needed, since it is 0px\n\n$medium-breakpoint: 600px;\n$large-breakpoint: 960px;\n$xlarge-breakpoint: $max-width;\n\n$susy: (\n // Add color to show the columns and gutters\n 'svg-grid-colors': hsl(0, 0%, 95%),\n 'columns': susy-repeat(4),\n 'gutters': 12px\n);\n\n$medium-layout: (\n 'svg-grid-colors': hsl(0, 0%, 95%),\n 'columns': susy-repeat(12),\n 'gutters': 12px\n);\n\n$large-layout: (\n 'svg-grid-colors': hsl(0, 0%, 95%),\n 'columns': susy-repeat(12),\n 'gutters': 24px\n);\n\n\n// [CCC] Typography\n// ---\n// $font-family: 'San Francisco', 'Roboto', 'Fira Sans', 'Segoe UI', sans-serif;\n$font-family: Verdana, Geneva, sans-serif; \n$header-font-family: 'Avenir Next Condensed', 'Roboto Condensed', 'Helvetica Neue', 'Roboto', sans-serif;\n$loaded-header-font-family: 'Roboto', $header-font-family;\n\n// Line height\n$huge-line-height: 32px;\n$bigger-line-height: 28px;\n$big-line-height: 24px;\n$line-height: 20px;\n$small-line-height: 16px;\n$smaller-line-height: 12px;\n$tiny-line-height: 8px;\n\n// Font sizes\n$huge-font-size: 28px;\n$bigger-font-size: 24px;\n$big-font-size: 20px;\n$font-size: 16px;\n$small-font-size: 14px;\n$smaller-font-size: 12px;\n$tiny-font-size: 10px;\n$smallest-font-size: 8px;\n\n// Font weight\n$thin-font-weight: 100;\n$extra-light-font-weight: 200;\n$light-font-weight: 300;\n$regular-font-weight: 400;\n$medium-font-weight: 500;\n$semi-bold-font-weight: 600;\n$bold-font-weight: 700;\n\n// [DDD] Color Palette\n// ---\n\n// Neutrals\n$neutral-00: #fff;\n$neutral-10: #f7f7f7;\n$neutral-12: #f1f3f6;\n$neutral-15: #eee;\n$neutral-17: #e1e1e1;\n$neutral-20: #d5d5d5;\n$neutral-30: #bfbfbf;\n$neutral-40: #999;\n$neutral-50: #696969;\n$neutral-60: #333;\n$neutral-70: #000;\n\n// Brand colors\n// $brand-color: #017e9b; // blue\n$brand-color: #4471ea; // blue\n// $secondary-brand-color: #005569;\n$secondary-brand-color: #fafafa;\n$tertiary-brand-color: #83bdcb;\n$quaternary-brand-color: #bfdfe6;\n\n// UI Kit colors\n$ui-brand-color: #005c83; // dark blue\n\n// Accent colors\n$accent-color: #ff852c; // orange\n$light-accent-color: lighten($accent-color, 15%);\n$dark-accent-color: darken($accent-color, 15%);\n\n// Primary Action\n$primary-action-color: #dc0a3c;\n$light-primary-action-color: lighten($primary-action-color, 15%);\n$dark-primary-action-color: darken($primary-action-color, 15%);\n\n// Secondary Action\n$secondary-action-color: #ff852c;\n$light-secondary-action-color: lighten($secondary-action-color, 15%);\n$dark-secondary-action-color: darken($secondary-action-color, 15%);\n\n// Success colors\n$success-color: #037b30;\n$light-success-color: lighten($success-color, 15%);\n$dark-success-color: darken($success-color, 15%);\n\n// Error colors\n$error-color: #c70936;\n$light-error-color: lighten($error-color, 15%);\n$feedback-error-color: #f8e7eb;\n$dark-error-color: darken($error-color, 15%);\n\n// Sale color\n$sale-color: $error-color;\n$prominent-color: $error-color;\n\n// Social colors\n$facebook-color: #3a5a93;\n$twitter-color: #55aace;\n$instagram-color: #405de6;\n$pinterest-color: #bd081c;\n$youtube-color: #e52d27;\n$google-plus-color: #dd4b39;\n$yelp-color: #af0606;\n\n\n// [EEE] Appearance\n// ---\n\n$font-color: $neutral-60;\n$font-color-light: $neutral-12;\n\n$link-color: $ui-brand-color;\n$active-link-color: $dark-accent-color;\n\n$focus-color: $brand-color;\n\n$border-color: $neutral-20;\n$border-radius: 4px;\n\n$input-background-color: $neutral-00;\n$input-border-color: $border-color;\n$focused-input-border-color: $secondary-brand-color;\n$disabled-input-color: $neutral-40;\n$disabled-input-background-color: $neutral-15;\n$disabled-button-background-color: $neutral-15;\n$add-to-cart-button-background-color: #f7ae3a;\n$horizontal-input-padding: $unit;\n$vertical-input-padding: $unit;\n\n$background-color: $neutral-12;\n$overlay-color: rgba($neutral-00, 0.85);\n\n\n// [FFF] Z-Index\n// ---\n\n// Organizes z-index usage by name. Values can be incremented/decremented\n// slightly as necessary. eg. $z1-layer + 1;\n\n$z1-depth: 1; // background\n$z2-depth: 10; // icon or other ui element\n$z3-depth: 100; // modal shade or similar\n$z4-depth: 1000; // modal dialog or similar\n\n\n// [GGG] Shorthands\n// ---\n\n$border: 1px solid $border-color;\n$light-border: 1px solid $neutral-15;\n$input-padding: $vertical-input-padding $horizontal-input-padding;\n\n$box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.3);\n$large-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.3);\n$inset-box-shadow: inset 0 2px 2px -2px rgba(0, 0, 0, 0.3), inset 0 -2px 2px -2px rgba(0, 0, 0, 0.3);\n$input-box-shadow: inset 0 0 5px 0 rgba(0, 0, 0, 0.3);\n$themeColor-Light: #f3e2c7;\n$themeColor-Dark:#252525;\n$theme-font: verdana, sans-serif;\n$theme-supplementer: #f39c12;\n$font-size-desktop-h5: 1.25em;\n$font-size-mobile-h5: 0.8em;\n$font-size-desktop-p: 1.1em;\n$font-size-mobile-p: 0.7em;\n","@import './../../../styles/variables';\n\n.c-Plp__c-SortAndFilterPanel__c-CartIcon {\n margin-left: 1rem;\n position: relative;\n\n .c-Plp__c-SortAndFilterPanel__c-CartIcon__badge {\n position: absolute;\n top: -3px;\n right: -9px;\n padding: 0px 5px;\n border-radius: 50%;\n background-color: $prominent-color;\n color: $neutral-00;\n font-size: $smaller-font-size;\n }\n}\n","@import './../../../styles/variables';\n\n.c-Plp__c-SortAndFilterPanel {\n text-align: center;\n .c-Plp__c-SortAndFilterPanel__tool {\n padding: 0.8rem;\n font-size: $font-size;\n font-weight: $bold-font-weight;\n border: 1px solid $neutral-17;\n .c-Plp__c-SortAndFilterPanel__toolContent {\n margin-bottom: 0;\n }\n }\n\n // .ripple {\n // background-color: $shocking-pink;\n // width: 1rem;\n // height: 1rem;\n // position: absolute;\n // border-radius: 50%;\n // transform: translateX(-100%) translateY(-100%);\n // mix-blend-mode: screen;\n // animation: ripple 1000ms ease-out forwards;\n // }\n \n // @keyframes ripple {\n // 0% { transform: translate(-100%, -100%); }\n // 80% { transform: translate(-100%, -100%) scale(50); }\n // 100% { transform: translate(-100%, -100%) scale(50); opacity: 0; }\n // }\n}\n","@import './../../../styles/variables';\n\n.c-SortModal {\n // transform: translate(0,0);\n // transition: transform .3s ease-out,-webkit-transform .3s ease-out;\n\n &.modal {\n &.show {\n display: block;\n background-color: rgba(0,0,0,0.5);\n }\n // &.fade .modal-dialog {\n // transition: transform .3s ease-out;\n // }\n .modal-dialog {\n pointer-events: auto;\n .modal-body {\n color: $neutral-40;\n .error {\n color: $error-color;\n font-size: $small-font-size;\n }\n }\n }\n }\n\n &.ReactModal__Overlay {\n opacity: 0;\n transition: all 0.3s ease-in-out;\n }\n \n &.ReactModal__Overlay--after-open {\n opacity: 1;\n }\n \n &.ReactModal__Overlay--before-close {\n opacity: 0;\n }\n}\n","@import './../../../styles/variables';\n\n.c-FilterModal {\n &.modal {\n &.show {\n display: block;\n background-color: rgba(0,0,0,0.5);\n }\n // &.fade .modal-dialog {\n // transition: transform .3s ease-out;\n // }\n .modal-dialog {\n pointer-events: auto;\n .modal-body {\n color: $neutral-40;\n .error {\n color: $error-color;\n font-size: $small-font-size;\n }\n }\n }\n }\n\n &.ReactModal__Overlay {\n opacity: 0;\n transition: all 0.3s ease-in-out;\n }\n \n &.ReactModal__Overlay--after-open {\n opacity: 1;\n }\n \n &.ReactModal__Overlay--before-close {\n opacity: 0;\n }\n}\n","@import './../../../styles/variables';\n\n.c-ItemPrice {\n line-height: $smaller-font-size;\n margin-bottom: 0.9rem;\n display: flex;\n align-items: baseline;\n .c-ItemPrice__price {\n font-size: $small-font-size;\n font-weight: $bold-font-weight;\n padding-right: 0.5rem;\n }\n \n .c-ItemPrice__price--strikethrough {\n color: $neutral-40;\n font-weight: $bold-font-weight;\n font-size: $smaller-font-size;\n text-decoration: line-through;\n // margin-left: $unit * 0.8; \n }\n \n .c-ItemPrice__discount {\n color: #4aa219;\n font-weight: $bold-font-weight;\n font-size: $smaller-font-size;\n margin-left: auto;\n }\n}\n","@import './../../../styles/variables';\n\n.c-Plp__c-ProductContainer__c-ProductTile {\n // box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);\n max-width: 300px;\n // margin-bottom: 2rem;\n padding: 10px 15px;\n border: 1px solid $neutral-17;\n\n .c-Plp__c-ProductContainer__c-ProductTile__image {\n margin-bottom: 0.7rem;\n }\n\n .c-Plp__c-ProductContainer__c-ProductTile__name {\n font-size: $small-font-size;\n }\n\n .btn__addToCart {\n display: block;\n margin: 0 auto;\n border-radius: 20px;\n padding: 7px;\n background-color: $add-to-cart-button-background-color;\n cursor: pointer;\n font-size: $smaller-font-size;\n font-weight: $bold-font-weight;\n }\n \n .btn__addToCart:hover {\n opacity: 0.7;\n }\n\n @media only screen and (min-width: 768px) {\n \n }\n}\n",".c-Plp__c-ProductContainer {\n margin-bottom: 46px;\n\n .row {\n justify-content: space-around;\n }\n}\n","@import './../../../styles/variables';\n\n.c-Footer {\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n left: 0;\n bottom: 0;\n width: 100%;\n background-color: $brand-color;\n color: $font-color-light;\n padding: 0.7em;\n\n p {\n margin-bottom: 0;\n font-weight: bold;\n }\n}\n"]}
\ No newline at end of file
diff --git a/static/css/5.18ad8017.chunk.css b/static/css/5.e94c9ad9.chunk.css
similarity index 54%
rename from static/css/5.18ad8017.chunk.css
rename to static/css/5.e94c9ad9.chunk.css
index d5d2e4b..dbd1bfe 100644
--- a/static/css/5.18ad8017.chunk.css
+++ b/static/css/5.e94c9ad9.chunk.css
@@ -1,2 +1,2 @@
-.c-Plp__c-SortAndFilterPanel__c-Search{margin-left:auto}.c-Plp__c-SortAndFilterPanel__c-Search .c-Plp__c-SortAndFilterPanel__c-Search__input{background:transparent;border:none;border-bottom:1px solid #fff;color:#fff;padding-bottom:.3rem}.c-Plp__c-SortAndFilterPanel__c-Search .c-Plp__c-SortAndFilterPanel__c-Search__input::-webkit-input-placeholder{color:#fff;opacity:1}.c-Plp__c-SortAndFilterPanel__c-Search .c-Plp__c-SortAndFilterPanel__c-Search__input:-ms-input-placeholder{opacity:1}.c-Plp__c-SortAndFilterPanel__c-Search .c-Plp__c-SortAndFilterPanel__c-Search__input::-ms-input-placeholder{opacity:1}.c-Plp__c-SortAndFilterPanel__c-Search .c-Plp__c-SortAndFilterPanel__c-Search__input::placeholder{color:#fff;opacity:1}.c-Plp__c-SortAndFilterPanel__c-Search .c-Plp__c-SortAndFilterPanel__c-Search__input:-ms-input-placeholder{color:#fff}.c-Plp__c-SortAndFilterPanel__c-Search .c-Plp__c-SortAndFilterPanel__c-Search__input::-ms-input-placeholder{color:#fff}.c-Plp__c-SortAndFilterPanel__c-CartIcon{margin-left:1rem;position:relative}.c-Plp__c-SortAndFilterPanel__c-CartIcon .c-Plp__c-SortAndFilterPanel__c-CartIcon__badge{position:absolute;top:-3px;right:-9px;padding:0 5px;border-radius:50%;background-color:#c70936;color:#fff;font-size:12px}.c-Plp__c-SortAndFilterPanel{text-align:center}.c-Plp__c-SortAndFilterPanel .c-Plp__c-SortAndFilterPanel__tool{padding:.8rem;font-size:16px;font-weight:700;border:1px solid #e1e1e1}.c-Plp__c-SortAndFilterPanel .c-Plp__c-SortAndFilterPanel__tool .c-Plp__c-SortAndFilterPanel__toolContent{margin-bottom:0}.c-SortModal.modal.show{display:block;background-color:rgba(0,0,0,.5)}.c-SortModal.modal .modal-dialog{pointer-events:auto}.c-SortModal.modal .modal-dialog .modal-body{color:#999}.c-SortModal.modal .modal-dialog .modal-body .error{color:#c70936;font-size:14px}.c-SortModal.ReactModal__Overlay{opacity:0;transition:all .3s ease-in-out}.c-SortModal.ReactModal__Overlay--after-open{opacity:1}.c-SortModal.ReactModal__Overlay--before-close{opacity:0}.c-FilterModal.modal.show{display:block;background-color:rgba(0,0,0,.5)}.c-FilterModal.modal .modal-dialog{pointer-events:auto}.c-FilterModal.modal .modal-dialog .modal-body{color:#999}.c-FilterModal.modal .modal-dialog .modal-body .error{color:#c70936;font-size:14px}.c-FilterModal.ReactModal__Overlay{opacity:0;transition:all .3s ease-in-out}.c-FilterModal.ReactModal__Overlay--after-open{opacity:1}.c-FilterModal.ReactModal__Overlay--before-close{opacity:0}.c-ItemPrice{line-height:12px;margin-bottom:.9rem;display:flex;align-items:baseline}.c-ItemPrice .c-ItemPrice__price{font-size:14px;font-weight:700;padding-right:.5rem}.c-ItemPrice .c-ItemPrice__price--strikethrough{color:#999;font-weight:700;font-size:12px;text-decoration:line-through}.c-ItemPrice .c-ItemPrice__discount{color:#4aa219;font-weight:700;font-size:12px;margin-left:auto}.c-Plp__c-ProductContainer__c-ProductTile{max-width:300px;padding:10px 15px;border:1px solid #e1e1e1}.c-Plp__c-ProductContainer__c-ProductTile .c-Plp__c-ProductContainer__c-ProductTile__image{margin-bottom:.7rem}.c-Plp__c-ProductContainer__c-ProductTile .c-Plp__c-ProductContainer__c-ProductTile__name{font-size:14px}.c-Plp__c-ProductContainer__c-ProductTile .btn__addToCart{display:block;margin:0 auto;border-radius:20px;padding:7px;background-color:#f7ae3a;cursor:pointer;font-size:12px;font-weight:700}.c-Plp__c-ProductContainer__c-ProductTile .btn__addToCart:hover{opacity:.7}.c-Plp__c-ProductContainer{margin-bottom:46px}.c-Plp__c-ProductContainer .row{justify-content:space-around}.c-Footer{display:flex;align-items:center;justify-content:center;position:fixed;left:0;bottom:0;width:100%;background-color:#4471ea;color:#f1f3f6;padding:.7em}.c-Footer p{margin-bottom:0;font-weight:700}
-/*# sourceMappingURL=5.18ad8017.chunk.css.map */
\ No newline at end of file
+.c-Plp__c-SortAndFilterPanel__c-Search{margin-left:auto}.c-Plp__c-SortAndFilterPanel__c-Search .c-Plp__c-SortAndFilterPanel__c-Search__input{background:transparent;border:none;border-bottom:1px solid #fff;color:#fff;padding-bottom:.3rem}.c-Plp__c-SortAndFilterPanel__c-Search .c-Plp__c-SortAndFilterPanel__c-Search__input::-webkit-input-placeholder{color:#fff;opacity:1}.c-Plp__c-SortAndFilterPanel__c-Search .c-Plp__c-SortAndFilterPanel__c-Search__input:-ms-input-placeholder{opacity:1}.c-Plp__c-SortAndFilterPanel__c-Search .c-Plp__c-SortAndFilterPanel__c-Search__input::-ms-input-placeholder{opacity:1}.c-Plp__c-SortAndFilterPanel__c-Search .c-Plp__c-SortAndFilterPanel__c-Search__input::placeholder{color:#fff;opacity:1}.c-Plp__c-SortAndFilterPanel__c-Search .c-Plp__c-SortAndFilterPanel__c-Search__input:-ms-input-placeholder{color:#fff}.c-Plp__c-SortAndFilterPanel__c-Search .c-Plp__c-SortAndFilterPanel__c-Search__input::-ms-input-placeholder{color:#fff}.c-Plp__c-SortAndFilterPanel__c-CartIcon{margin-left:1rem;position:relative}.c-Plp__c-SortAndFilterPanel__c-CartIcon .c-Plp__c-SortAndFilterPanel__c-CartIcon__badge{position:absolute;top:-3px;right:-9px;padding:0 5px;border-radius:50%;background-color:#c70936;color:#fff;font-size:12px}.c-Plp__c-SortAndFilterPanel{text-align:center}.c-Plp__c-SortAndFilterPanel .c-Plp__c-SortAndFilterPanel__tool{padding:.8rem;font-size:16px;font-weight:700;border:1px solid #e1e1e1}.c-Plp__c-SortAndFilterPanel .c-Plp__c-SortAndFilterPanel__tool .c-Plp__c-SortAndFilterPanel__toolContent{margin-bottom:0}.c-SortModal.modal.show{display:block;background-color:rgba(0,0,0,.5)}.c-SortModal.modal .modal-dialog{pointer-events:auto}.c-SortModal.modal .modal-dialog .modal-body{color:#999}.c-SortModal.modal .modal-dialog .modal-body .error{color:#c70936;font-size:14px}.c-SortModal.ReactModal__Overlay{opacity:0;transition:all .3s ease-in-out}.c-SortModal.ReactModal__Overlay--after-open{opacity:1}.c-SortModal.ReactModal__Overlay--before-close{opacity:0}.c-FilterModal.modal.show{display:block;background-color:rgba(0,0,0,.5)}.c-FilterModal.modal .modal-dialog{pointer-events:auto}.c-FilterModal.modal .modal-dialog .modal-body{color:#999;padding:1.5rem}.c-FilterModal.modal .modal-dialog .modal-body .error{color:#c70936;font-size:14px}.c-FilterModal.ReactModal__Overlay{opacity:0;transition:all .3s ease-in-out}.c-FilterModal.ReactModal__Overlay--after-open{opacity:1}.c-FilterModal.ReactModal__Overlay--before-close{opacity:0}.c-ItemPrice{line-height:12px;margin-bottom:.9rem;display:flex;align-items:baseline}.c-ItemPrice .c-ItemPrice__price{font-size:14px;font-weight:700;padding-right:.5rem}.c-ItemPrice .c-ItemPrice__price--strikethrough{color:#999;font-weight:700;font-size:12px;text-decoration:line-through}.c-ItemPrice .c-ItemPrice__discount{color:#4aa219;font-weight:700;font-size:12px;margin-left:auto}.c-Plp__c-ProductContainer__c-ProductTile{max-width:300px;padding:10px 15px;border:1px solid #e1e1e1}.c-Plp__c-ProductContainer__c-ProductTile .c-Plp__c-ProductContainer__c-ProductTile__image{margin-bottom:.7rem}.c-Plp__c-ProductContainer__c-ProductTile .c-Plp__c-ProductContainer__c-ProductTile__name{font-size:14px}.c-Plp__c-ProductContainer__c-ProductTile .btn__addToCart{display:block;margin:0 auto;border-radius:20px;padding:7px;background-color:#f7ae3a;cursor:pointer;font-size:12px;font-weight:700}.c-Plp__c-ProductContainer__c-ProductTile .btn__addToCart:hover{opacity:.7}.c-Plp__c-ProductContainer{margin-bottom:46px}.c-Plp__c-ProductContainer .c-Cart__emptyPlp{background:#fff;margin-top:25%;border:1px solid #000;text-align:center;padding:1em}.c-Plp__c-ProductContainer .c-Cart__emptyPlp .c-Cart__emptyPlp__information{color:#999}.c-Plp__c-ProductContainer .row{justify-content:space-between}.c-Footer{display:flex;align-items:center;justify-content:center;position:fixed;left:0;bottom:0;width:100%;background-color:#4471ea;color:#f1f3f6;padding:.7em}.c-Footer p{margin-bottom:0;font-weight:700}
+/*# sourceMappingURL=5.e94c9ad9.chunk.css.map */
\ No newline at end of file
diff --git a/static/css/5.e94c9ad9.chunk.css.map b/static/css/5.e94c9ad9.chunk.css.map
new file mode 100644
index 0000000..7cdad40
--- /dev/null
+++ b/static/css/5.e94c9ad9.chunk.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["Search.component.scss","../../../styles/_variables.scss","CartIcon.component.scss","SortAndFilterPanel.component.scss","SortModal.component.scss","FilterModal.component.scss","ItemPrice.component.scss","ProductTile.component.scss","ProductContainer.component.scss","Footer.component.scss"],"names":[],"mappings":"AAEA,uCACE,gBAAiB,CADnB,qFAII,sBAAuB,CAEvB,WC4Ga,CD5Gb,4BC4Ga,CD3Gb,UC2Ga,CD1Gb,oBAAsB,CAR1B,gHAUM,UCwGW,CDvGX,SAAU,CAXhB,2GAWM,SAAU,CAXhB,4GAWM,SAAU,CAXhB,kGAUM,UCwGW,CDvGX,SAAU,CAXhB,2GAeM,UCmGW,CDlHjB,4GAmBM,UC+FW,CClHjB,yCACE,gBAAiB,CACjB,iBAAkB,CAFpB,yFAKI,iBAAkB,CAClB,QAAS,CACT,UAAW,CACX,aAAgB,CAChB,iBAAkB,CAClB,wBDoJiB,CCnJjB,UDuGa,CCtGb,cDqFoB,CEjGxB,6BACI,iBAAkB,CADtB,gEAGQ,aAAe,CACf,cF2FQ,CE1FR,eFuGc,CEtGd,wBFgHY,CEtHpB,0GAQY,eAAgB,CCR5B,wBAMY,aAAc,CACd,+BAAiC,CAP7C,iCAaY,mBAAoB,CAbhC,6CAegB,UH0GC,CGzHjB,oDAiBoB,aH6IC,CG5ID,cH8EE,CGhGtB,iCAyBQ,SAAU,CACV,8BAAgC,CA1BxC,6CA8BQ,SAAU,CA9BlB,+CAkCQ,SAAU,CClClB,0BAGY,aAAc,CACd,+BAAiC,CAJ7C,mCAUY,mBAAoB,CAVhC,+CAYgB,UJ6GC,CI5GD,cAAe,CAb/B,sDAeoB,aJ+IC,CI9ID,cJgFE,CIhGtB,mCAuBQ,SAAU,CACV,8BAAgC,CAxBxC,+CA4BQ,SAAU,CA5BlB,iDAgCQ,SAAU,CChClB,aACI,gBLgGoB,CK/FpB,mBAAqB,CACrB,YAAa,CACb,oBAAqB,CAJzB,iCAMQ,cL0Fc,CKzFd,eLqGc,CKpGd,mBAAqB,CAR7B,gDAYQ,UL6GS,CK5GT,eL+Fc,CK9Fd,cLmFgB,CKlFhB,4BAA6B,CAfrC,oCAoBQ,aAAc,CACd,eLuFc,CKtFd,cL2EgB,CK1EhB,gBAAiB,CCvBzB,0CAEI,eAAgB,CAEhB,iBAAkB,CAClB,wBNiHgB,CMtHpB,2FAQQ,mBAAqB,CAR7B,0FAYQ,cNoFc,CMhGtB,0DAgBQ,aAAc,CACd,aAAc,CACd,kBAAmB,CACnB,WAAY,CACZ,wBNiLqC,CMhLrC,cAAe,CACf,cN2EgB,CM1EhB,eNqFc,CM5GtB,gEA2BQ,UAAY,CC3BpB,2BACI,kBAAmB,CADvB,6CAIQ,eP8GS,CO7GT,cAAe,CACf,qBAAuB,CACvB,iBAAkB,CAClB,WAAY,CARpB,4EAWY,UP8GK,COzHjB,gCAgBQ,6BAA8B,CChBtC,UACI,YAAa,CACb,kBAAmB,CACnB,sBAAuB,CACvB,cAAe,CACf,MAAO,CACP,QAAS,CACT,UAAW,CACX,wBRwHiB,CQvHjB,aR2GgB,CQ1GhB,YAAc,CAVlB,YAaQ,eAAgB,CAChB,eAAiB","file":"5.e94c9ad9.chunk.css","sourcesContent":["@import './../../../styles//variables';\n\n.c-Plp__c-SortAndFilterPanel__c-Search {\n margin-left: auto;\n\n .c-Plp__c-SortAndFilterPanel__c-Search__input {\n background: transparent;\n border: none;\n border-bottom: 1px solid $neutral-00;\n color: $neutral-00;\n padding-bottom: 0.3rem;\n &::placeholder {\n color: $neutral-00;\n opacity: 1;\n }\n \n &:-ms-input-placeholder {\n color: $neutral-00;\n }\n \n &::-ms-input-placeholder {\n color: $neutral-00;\n }\n }\n}\n","// Project-Wide Variables\n// ===\n//\n// Edit these as needed. Some guidelines:\n//\n// - Names should be lowercase and dash-separated;\n// - Qualifiers should be added to the beginning of related variables: use\n// `$small-font-size`, not `$font-size-small`;\n// - Numeric scales should use increments of 10; these numbers are arbitrary and\n// should not map to actual values. If really necessary, additional values can\n// be added in between, e.g. $neutral-15 between 10 and 20.\n//\n//\n// Table of Contents\n// ---\n//\n// [AAA] Basic Layout\n// [BBB] Responsive Layout\n// [CCC] Typography\n// [DDD] Color Palette\n// [EEE] Appearance\n// [FFF] Z-Index\n// [GGG] Shorthands\n\n\n// [AAA] Basic Layout\n// ---\n\n// Basic unit for spacing and alignment; 6 to 12px recommended. Apply in whole\n// or half multiples.\n$sub-unit: 4px;\n$unit: 8px;\n\n// Standard tap-target size\n$tap-size: 44px;\n\n// Container max-width.\n$max-width: 1280px;\n\n// Content Height Calculations\n$header-height: 64px;\n$footer-height: 173px;\n$content-height: calc(100vh - #{$header-height} - #{$footer-height});\n\n// [BBB] Responsive Layout\n// ---\n//\n// Media query breakpoints and grid setup. Please see Mobify's Responsive Best\n// Practices doc here: https://bit.ly/2tmRnEi, and our Responsive Grid\n// documentation here: http://docs.mobify.com/latest/guides/responsive-grid/\n//\n// Note: $small-breakpoint isn't needed, since it is 0px\n\n$medium-breakpoint: 600px;\n$large-breakpoint: 960px;\n$xlarge-breakpoint: $max-width;\n\n$susy: (\n // Add color to show the columns and gutters\n 'svg-grid-colors': hsl(0, 0%, 95%),\n 'columns': susy-repeat(4),\n 'gutters': 12px\n);\n\n$medium-layout: (\n 'svg-grid-colors': hsl(0, 0%, 95%),\n 'columns': susy-repeat(12),\n 'gutters': 12px\n);\n\n$large-layout: (\n 'svg-grid-colors': hsl(0, 0%, 95%),\n 'columns': susy-repeat(12),\n 'gutters': 24px\n);\n\n\n// [CCC] Typography\n// ---\n// $font-family: 'San Francisco', 'Roboto', 'Fira Sans', 'Segoe UI', sans-serif;\n$font-family: Verdana, Geneva, sans-serif; \n$header-font-family: 'Avenir Next Condensed', 'Roboto Condensed', 'Helvetica Neue', 'Roboto', sans-serif;\n$loaded-header-font-family: 'Roboto', $header-font-family;\n\n// Line height\n$huge-line-height: 32px;\n$bigger-line-height: 28px;\n$big-line-height: 24px;\n$line-height: 20px;\n$small-line-height: 16px;\n$smaller-line-height: 12px;\n$tiny-line-height: 8px;\n\n// Font sizes\n$huge-font-size: 28px;\n$bigger-font-size: 24px;\n$big-font-size: 20px;\n$font-size: 16px;\n$small-font-size: 14px;\n$smaller-font-size: 12px;\n$tiny-font-size: 10px;\n$smallest-font-size: 8px;\n\n// Font weight\n$thin-font-weight: 100;\n$extra-light-font-weight: 200;\n$light-font-weight: 300;\n$regular-font-weight: 400;\n$medium-font-weight: 500;\n$semi-bold-font-weight: 600;\n$bold-font-weight: 700;\n\n// [DDD] Color Palette\n// ---\n\n// Neutrals\n$neutral-00: #fff;\n$neutral-10: #f7f7f7;\n$neutral-12: #f1f3f6;\n$neutral-15: #eee;\n$neutral-17: #e1e1e1;\n$neutral-20: #d5d5d5;\n$neutral-30: #bfbfbf;\n$neutral-40: #999;\n$neutral-50: #696969;\n$neutral-60: #333;\n$neutral-70: #000;\n\n// Brand colors\n// $brand-color: #017e9b; // blue\n$brand-color: #4471ea; // blue\n// $secondary-brand-color: #005569;\n$secondary-brand-color: #fafafa;\n$tertiary-brand-color: #83bdcb;\n$quaternary-brand-color: #bfdfe6;\n\n// UI Kit colors\n$ui-brand-color: #005c83; // dark blue\n\n// Accent colors\n$accent-color: #ff852c; // orange\n$light-accent-color: lighten($accent-color, 15%);\n$dark-accent-color: darken($accent-color, 15%);\n\n// Primary Action\n$primary-action-color: #dc0a3c;\n$light-primary-action-color: lighten($primary-action-color, 15%);\n$dark-primary-action-color: darken($primary-action-color, 15%);\n\n// Secondary Action\n$secondary-action-color: #ff852c;\n$light-secondary-action-color: lighten($secondary-action-color, 15%);\n$dark-secondary-action-color: darken($secondary-action-color, 15%);\n\n// Success colors\n$success-color: #037b30;\n$light-success-color: lighten($success-color, 15%);\n$dark-success-color: darken($success-color, 15%);\n\n// Error colors\n$error-color: #c70936;\n$light-error-color: lighten($error-color, 15%);\n$feedback-error-color: #f8e7eb;\n$dark-error-color: darken($error-color, 15%);\n\n// Sale color\n$sale-color: $error-color;\n$prominent-color: $error-color;\n\n// Social colors\n$facebook-color: #3a5a93;\n$twitter-color: #55aace;\n$instagram-color: #405de6;\n$pinterest-color: #bd081c;\n$youtube-color: #e52d27;\n$google-plus-color: #dd4b39;\n$yelp-color: #af0606;\n\n\n// [EEE] Appearance\n// ---\n\n$font-color: $neutral-60;\n$font-color-light: $neutral-12;\n\n$link-color: $ui-brand-color;\n$active-link-color: $dark-accent-color;\n\n$focus-color: $brand-color;\n\n$border-color: $neutral-20;\n$border-radius: 4px;\n\n$input-background-color: $neutral-00;\n$input-border-color: $border-color;\n$focused-input-border-color: $secondary-brand-color;\n$disabled-input-color: $neutral-40;\n$disabled-input-background-color: $neutral-15;\n$disabled-button-background-color: $neutral-15;\n$add-to-cart-button-background-color: #f7ae3a;\n$horizontal-input-padding: $unit;\n$vertical-input-padding: $unit;\n\n$background-color: $neutral-12;\n$overlay-color: rgba($neutral-00, 0.85);\n\n\n// [FFF] Z-Index\n// ---\n\n// Organizes z-index usage by name. Values can be incremented/decremented\n// slightly as necessary. eg. $z1-layer + 1;\n\n$z1-depth: 1; // background\n$z2-depth: 10; // icon or other ui element\n$z3-depth: 100; // modal shade or similar\n$z4-depth: 1000; // modal dialog or similar\n\n\n// [GGG] Shorthands\n// ---\n\n$border: 1px solid $border-color;\n$light-border: 1px solid $neutral-15;\n$input-padding: $vertical-input-padding $horizontal-input-padding;\n\n$box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.3);\n$large-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.3);\n$inset-box-shadow: inset 0 2px 2px -2px rgba(0, 0, 0, 0.3), inset 0 -2px 2px -2px rgba(0, 0, 0, 0.3);\n$input-box-shadow: inset 0 0 5px 0 rgba(0, 0, 0, 0.3);\n$themeColor-Light: #f3e2c7;\n$themeColor-Dark:#252525;\n$theme-font: verdana, sans-serif;\n$theme-supplementer: #f39c12;\n$font-size-desktop-h5: 1.25em;\n$font-size-mobile-h5: 0.8em;\n$font-size-desktop-p: 1.1em;\n$font-size-mobile-p: 0.7em;\n","@import './../../../styles/variables';\n\n.c-Plp__c-SortAndFilterPanel__c-CartIcon {\n margin-left: 1rem;\n position: relative;\n\n .c-Plp__c-SortAndFilterPanel__c-CartIcon__badge {\n position: absolute;\n top: -3px;\n right: -9px;\n padding: 0px 5px;\n border-radius: 50%;\n background-color: $prominent-color;\n color: $neutral-00;\n font-size: $smaller-font-size;\n }\n}\n","@import './../../../styles/variables';\n\n.c-Plp__c-SortAndFilterPanel {\n text-align: center;\n .c-Plp__c-SortAndFilterPanel__tool {\n padding: 0.8rem;\n font-size: $font-size;\n font-weight: $bold-font-weight;\n border: 1px solid $neutral-17;\n .c-Plp__c-SortAndFilterPanel__toolContent {\n margin-bottom: 0;\n }\n }\n\n // .ripple {\n // background-color: $shocking-pink;\n // width: 1rem;\n // height: 1rem;\n // position: absolute;\n // border-radius: 50%;\n // transform: translateX(-100%) translateY(-100%);\n // mix-blend-mode: screen;\n // animation: ripple 1000ms ease-out forwards;\n // }\n \n // @keyframes ripple {\n // 0% { transform: translate(-100%, -100%); }\n // 80% { transform: translate(-100%, -100%) scale(50); }\n // 100% { transform: translate(-100%, -100%) scale(50); opacity: 0; }\n // }\n}\n","@import './../../../styles/variables';\n\n.c-SortModal {\n // transform: translate(0,0);\n // transition: transform .3s ease-out,-webkit-transform .3s ease-out;\n\n &.modal {\n &.show {\n display: block;\n background-color: rgba(0,0,0,0.5);\n }\n // &.fade .modal-dialog {\n // transition: transform .3s ease-out;\n // }\n .modal-dialog {\n pointer-events: auto;\n .modal-body {\n color: $neutral-40;\n .error {\n color: $error-color;\n font-size: $small-font-size;\n }\n }\n }\n }\n\n &.ReactModal__Overlay {\n opacity: 0;\n transition: all 0.3s ease-in-out;\n }\n \n &.ReactModal__Overlay--after-open {\n opacity: 1;\n }\n \n &.ReactModal__Overlay--before-close {\n opacity: 0;\n }\n}\n","@import './../../../styles/variables';\n\n.c-FilterModal {\n &.modal {\n &.show {\n display: block;\n background-color: rgba(0,0,0,0.5);\n }\n // &.fade .modal-dialog {\n // transition: transform .3s ease-out;\n // }\n .modal-dialog {\n pointer-events: auto;\n .modal-body {\n color: $neutral-40;\n padding: 1.5rem;\n .error {\n color: $error-color;\n font-size: $small-font-size;\n }\n }\n }\n }\n\n &.ReactModal__Overlay {\n opacity: 0;\n transition: all 0.3s ease-in-out;\n }\n \n &.ReactModal__Overlay--after-open {\n opacity: 1;\n }\n \n &.ReactModal__Overlay--before-close {\n opacity: 0;\n }\n}\n","@import './../../../styles/variables';\n\n.c-ItemPrice {\n line-height: $smaller-font-size;\n margin-bottom: 0.9rem;\n display: flex;\n align-items: baseline;\n .c-ItemPrice__price {\n font-size: $small-font-size;\n font-weight: $bold-font-weight;\n padding-right: 0.5rem;\n }\n \n .c-ItemPrice__price--strikethrough {\n color: $neutral-40;\n font-weight: $bold-font-weight;\n font-size: $smaller-font-size;\n text-decoration: line-through;\n // margin-left: $unit * 0.8; \n }\n \n .c-ItemPrice__discount {\n color: #4aa219;\n font-weight: $bold-font-weight;\n font-size: $smaller-font-size;\n margin-left: auto;\n }\n}\n","@import './../../../styles/variables';\n\n.c-Plp__c-ProductContainer__c-ProductTile {\n // box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);\n max-width: 300px;\n // margin-bottom: 2rem;\n padding: 10px 15px;\n border: 1px solid $neutral-17;\n\n .c-Plp__c-ProductContainer__c-ProductTile__image {\n margin-bottom: 0.7rem;\n }\n\n .c-Plp__c-ProductContainer__c-ProductTile__name {\n font-size: $small-font-size;\n }\n\n .btn__addToCart {\n display: block;\n margin: 0 auto;\n border-radius: 20px;\n padding: 7px;\n background-color: $add-to-cart-button-background-color;\n cursor: pointer;\n font-size: $smaller-font-size;\n font-weight: $bold-font-weight;\n }\n \n .btn__addToCart:hover {\n opacity: 0.7;\n }\n\n @media only screen and (min-width: 768px) {\n \n }\n}\n","@import './../../../styles/variables';\n\n.c-Plp__c-ProductContainer {\n margin-bottom: 46px;\n\n .c-Cart__emptyPlp {\n background: $neutral-00;\n margin-top: 25%;\n border: 1px solid black;\n text-align: center;\n padding: 1em;\n\n .c-Cart__emptyPlp__information {\n color: $neutral-40;\n }\n }\n\n .row {\n justify-content: space-between;\n }\n}\n","@import './../../../styles/variables';\n\n.c-Footer {\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n left: 0;\n bottom: 0;\n width: 100%;\n background-color: $brand-color;\n color: $font-color-light;\n padding: 0.7em;\n\n p {\n margin-bottom: 0;\n font-weight: bold;\n }\n}\n"]}
\ No newline at end of file
diff --git a/static/js/5.e2f76234.chunk.js b/static/js/5.cb2272bf.chunk.js
similarity index 57%
rename from static/js/5.e2f76234.chunk.js
rename to static/js/5.cb2272bf.chunk.js
index 3f00ff0..5eae82c 100644
--- a/static/js/5.e2f76234.chunk.js
+++ b/static/js/5.cb2272bf.chunk.js
@@ -1,2 +1,2 @@
-(this.webpackJsonpadobeassignment=this.webpackJsonpadobeassignment||[]).push([[5],{103:function(e,t,r){},105:function(e,t,r){},106:function(e,t,r){},115:function(e,t,r){"use strict";r.r(t);var n=r(0),a=r.n(n),o=r(5),c=r.n(o),l=r(22),i=r(10),u=r(72),s=(r(85),r(58)),d=r(57),m=r(25),f=r.n(m);r(86);function p(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"===typeof Symbol||!(Symbol.iterator in Object(e)))return;var r=[],n=!0,a=!1,o=void 0;try{for(var c,l=e[Symbol.iterator]();!(n=(c=l.next()).done)&&(r.push(c.value),!t||r.length!==t);n=!0);}catch(i){a=!0,o=i}finally{try{n||null==l.return||l.return()}finally{if(a)throw o}}return r}(e,t)||function(e,t){if(!e)return;if("string"===typeof e)return b(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return b(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);rt.min&&e.discountedPrice0&&0===i.length&&(l=i,c(!0))}}var u=l&&l.map((function(e,t){return a.a.createElement(U,{product:e,key:t})}));return e.dispatchProducts(l),e.products&&0!==e.products.length?a.a.createElement("main",{className:"c-Plp__c-ProductContainer"},a.a.createElement("div",{className:"container"},a.a.createElement("div",{className:"row"},u))):a.a.createElement(V.a,null)};z.defaultProps={products:[]},z.propTypes={products:c.a.array,sortBy:c.a.string};var D=Object(L.createPropsSelector)({filterRange:k.a,sortBy:k.c}),J={dispatchProducts:i.g},W=Object(l.b)(D,J)(z),K=r(74);function Y(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"===typeof Symbol||!(Symbol.iterator in Object(e)))return;var r=[],n=!0,a=!1,o=void 0;try{for(var c,l=e[Symbol.iterator]();!(n=(c=l.next()).done)&&(r.push(c.value),!t||r.length!==t);n=!0);}catch(i){a=!0,o=i}finally{try{n||null==l.return||l.return()}finally{if(a)throw o}}return r}(e,t)||function(e,t){if(!e)return;if("string"===typeof e)return Q(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Q(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Q(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);rt&&!e.classList.contains("scroll-down")?(e.classList.remove("scroll-up"),e.classList.add("scroll-down")):re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);rt.min&&e.discountedPrice0&&0===u.length?!c&&l(!0):c&&l(!1),i=u}}var s=i&&i.map((function(e,t){return a.a.createElement(U,{product:e,key:t})}));return e.dispatchProducts(i),c?a.a.createElement("div",{className:"c-Cart__emptyPlp"},a.a.createElement("h3",null,"No Products match the search criteria!"),a.a.createElement("p",{className:"c-Cart__emptyPlp__information"},"Please modify Search or filter criteria, and try again.")):e.products&&0!==e.products.length?a.a.createElement("main",{className:"c-Plp__c-ProductContainer"},a.a.createElement("div",{className:"container"},a.a.createElement("div",{className:"row"},s))):a.a.createElement(V.a,null)};z.defaultProps={products:[]},z.propTypes={products:c.a.array,sortBy:c.a.string};var D=Object(L.createPropsSelector)({filterRange:k.a,sortBy:k.c}),J={dispatchProducts:i.g},W=Object(l.b)(D,J)(z),Y=r(74);function K(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"===typeof Symbol||!(Symbol.iterator in Object(e)))return;var r=[],n=!0,a=!1,o=void 0;try{for(var c,l=e[Symbol.iterator]();!(n=(c=l.next()).done)&&(r.push(c.value),!t||r.length!==t);n=!0);}catch(i){a=!0,o=i}finally{try{n||null==l.return||l.return()}finally{if(a)throw o}}return r}(e,t)||function(e,t){if(!e)return;if("string"===typeof e)return Q(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Q(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Q(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);rt&&!e.classList.contains("scroll-down")?(e.classList.remove("scroll-up"),e.classList.add("scroll-down")):r {\n\n const [sortType, setSortType] = useState('')\n const [selectionError, setSelectionError] = useState('')\n var subtitle;\n\n function afterOpenModal() {\n subtitle.style.color = '#000';\n subtitle.style.fontWeight = '700';\n }\n\n const submitSelection = (e) => {\n if (!sortType) {\n setSelectionError(true)\n return\n }\n dispatchSortSelection(sortType)\n closeModal(e)\n setSelectionError(false)\n }\n\n return (\n \n \n
\n
(subtitle = _subtitle)}>Sort Options
\n \n \n
\n {selectionError &&
Please Select One of the options below.}\n
\n
\n
\n \n \n
\n
\n \n );\n};\n\nSortModal.defaultProps = {\n\n};\n\nSortModal.propTypes = {\n closeModal: PropTypes.func,\n dispatchSortSelection: PropTypes.func,\n modalIsOpen: PropTypes.bool\n};\n\nconst mapDispatchToProps = ({\n dispatchSortSelection\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(SortModal);","import SortModal from './SortModal.jsx';\n\nexport default SortModal;","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {dispatchFilterRange} from './../../../pages/PLP/actions';\nimport Modal from 'react-modal';\nimport InputRange from 'react-input-range';\nimport './FilterModal.component.scss';\nimport 'react-input-range/lib/css/index.css';\n\nconst customStyles = {\n content: {\n top: '20%',\n width: '93%',\n marginLeft: 'auto',\n marginRight: 'auto',\n background: 'rgb(255, 255, 255)',\n overflow: 'auto',\n borderRadius: '4px'\n }\n};\n\nconst FilterModal = ({closeModal, dispatchFilterRange, modalIsOpen}) => {\n\n const [filterRange, setFilterRange] = useState({min: 200, max: 5000})\n var subtitle;\n\n function afterOpenModal() {\n subtitle.style.color = '#000';\n subtitle.style.fontWeight = '700';\n }\n\n const submitSelection = (e) => {\n dispatchFilterRange(filterRange)\n closeModal(e)\n }\n\n return (\n \n \n
\n
(subtitle = _subtitle)}>Filter Options
\n \n \n
\n `₹${value}`}\n value={filterRange}\n onChange={value => setFilterRange(value)} />\n {/* onChangeComplete={(e) =>submitSelection(e)} /> */}\n
\n
\n \n \n
\n
\n \n );\n};\n\nFilterModal.defaultProps = {\n\n};\n\nFilterModal.propTypes = {\n closeModal: PropTypes.func,\n dispatchFilterSelection: PropTypes.func,\n modalIsOpen: PropTypes.bool\n};\n\nconst mapDispatchToProps = ({\n dispatchFilterRange\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(FilterModal);\n","import FilterModal from './FilterModal.jsx';\n\nexport default FilterModal;","import React, {useState} from 'react';\nimport './SortAndFilterPanel.component.scss'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faSort } from '@fortawesome/free-solid-svg-icons'\nimport { faFilter } from '@fortawesome/free-solid-svg-icons'\nimport SortModal from '../SortModal';\nimport FilterModal from '../FilterModal';\n\nconst SortAndFilterPanel = props => {\n\n const [sortModalIsOpen,setSortIsOpen] = useState(false);\n const [filterModalIsOpen,setFilterIsOpen] = useState(false);\n \n function closeModal(type, e){\n e.stopPropagation();\n type === \"sort\" ? setSortIsOpen(false) : setFilterIsOpen(false);\n }\n\n return (\n \n
\n
\n
setSortIsOpen(true)}>\n
Sort
\n
closeModal(\"sort\", e)} modalIsOpen={sortModalIsOpen} />\n \n
setFilterIsOpen(true)}>\n
Filter
\n
closeModal(\"filter\", e)} modalIsOpen={filterModalIsOpen}/>\n \n
\n
\n
\n );\n};\n\nSortAndFilterPanel.defaultProps = {\n\n};\n\nSortAndFilterPanel.propTypes = {\n\n};\n\nexport default SortAndFilterPanel;","import SortAndFilterPanel from './SortAndFilterPanel.jsx';\n\nexport default SortAndFilterPanel;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {createPropsSelector} from 'reselect-immutable-helpers';\nimport {updateCart} from './../../../pages/Cart/actions'\nimport {getCartTotalCount, getCartItems} from './../../../pages/Cart/selectors'\n\nimport Button from './../../atoms/Button'\nimport ItemPrice from '../ItemPrice/ItemPrice';\n\nimport './ProductTile.component.scss';\n\nconst ProductTile = props => {\n\n const product = props.product\n const addToCartButtonClass = \"btn btn__addToCart\"\n\n const updateCart = (productId) => {\n let cartTotalCount = props.cartTotalCount\n const cartItems = props.cartItems\n let count = cartItems && cartItems[productId] ? cartItems[productId] : 0\n cartItems[productId] = ++count\n props.updateCart(++cartTotalCount, cartItems)\n }\n\n return (\n \n \n
\n {product.name && {product.name}}\n \n {/* \n {product.discountedPrice && ₹{product.discountedPrice}}\n {\n hasDiscount &&\n (\n \n {product.price}\n {product.discount}% off\n \n )\n }\n
*/}\n \n \n );\n};\n\nProductTile.propTypes = {\n updateCart: PropTypes.func,\n cartTotalCount: PropTypes.number,\n cartItems: PropTypes.object\n};\n\nconst mapStateToProps = createPropsSelector({\n cartTotalCount: getCartTotalCount,\n cartItems: getCartItems\n})\n\nconst mapDispatchToProps = ({\n updateCart\n})\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductTile);","import ProductTile from './ProductTile.jsx';\n\nexport default ProductTile;","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {createPropsSelector} from 'reselect-immutable-helpers';\nimport {dispatchProducts} from './../../../pages/PLP/actions'\nimport {getFilterRange, getSortSelection} from './../../../pages/PLP/selectors'\nimport ProductTile from './../ProductTile'\nimport PageLoader from '../PageLoader/PageLoader';\nimport './ProductContainer.component.scss'\n\nconst ProductContainer = props => {\n\n const fr = props.filterRange\n const sb = props.sortBy\n\n const [filterNoMatch, setFilterNoMatch] = useState(false)\n\n const getEmptyPlpBlock = () => {\n return (\n \n
No Products match the search criteria!
\n
Please modify Search or filter criteria, and try again.
\n
\n )\n }\n \n let productsWithDiscountedPrice = props.products \n && props.products.length !== 0\n && props.products.map(product => {\n const discount = product.discount && product.price * (product.discount/100)\n product.discountAmount = Math.ceil(discount)\n product.discountedPrice = Math.ceil(product.price - product.discountAmount)\n return product\n })\n if (productsWithDiscountedPrice) {\n if (sb) {\n switch(sb) {\n case \"priceHtoL\":\n productsWithDiscountedPrice.sort((prod1, prod2) => prod2.discountedPrice - prod1.discountedPrice);\n break;\n case \"priceLtoH\":\n productsWithDiscountedPrice.sort((prod1, prod2) => prod1.discountedPrice - prod2.discountedPrice);\n break;\n case \"discount\":\n productsWithDiscountedPrice.sort((prod1, prod2) => prod2.discount - prod1.discount);\n break;\n default:\n break;\n }\n }\n \n if (fr) {\n const productsWithDiscountedPriceFiltered = productsWithDiscountedPrice.filter(prod => prod.discountedPrice > fr.min && prod.discountedPrice < fr.max);\n if (productsWithDiscountedPrice.length > 0 && productsWithDiscountedPriceFiltered.length === 0) {\n !filterNoMatch && setFilterNoMatch(true)\n } else {\n filterNoMatch && setFilterNoMatch(false)\n }\n productsWithDiscountedPrice = productsWithDiscountedPriceFiltered\n }\n }\n\n const productTiles = productsWithDiscountedPrice && productsWithDiscountedPrice.map((product, key) =>{\n return \n })\n props.dispatchProducts(productsWithDiscountedPrice)\n\n return filterNoMatch ? getEmptyPlpBlock() : props.products && props.products.length !== 0 ?\n \n \n
\n {productTiles}\n
\n
\n : \n};\n\nProductContainer.defaultProps = {\n products: []\n};\n\nProductContainer.propTypes = {\n products: PropTypes.array,\n sortBy: PropTypes.string\n};\n\nconst mapStateToProps = createPropsSelector({\n filterRange: getFilterRange,\n sortBy: getSortSelection\n})\n\nconst mapDispatchToProps = ({\n dispatchProducts\n})\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductContainer);","import ProductContainer from './ProductContainer.jsx';\n\nexport default ProductContainer;","import React, {useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {dispatchProducts} from './actions';\n\nimport Header from './../../components/molecules/Header'\nimport SortAndFilterPanel from './../../components/molecules/SortAndFilterPanel'\nimport ProductContainer from './../../components/molecules/ProductContainer'\nimport Footer from './../../components/molecules/Footer'\n\nconst Plp = ({dispatchProducts}) => {\n \n const [products, setProducts] = useState([])\n\n useEffect(() => {\n fetch('https://api.myjson.com/bins/qzuzi')\n .then(res => res.json())\n .then(products => {\n // console.log(products)\n setProducts(products)\n dispatchProducts(products)\n })\n }, [])\n\n return (\n \n )\n};\n\nPlp.propTypes = {\n dispatchProducts: PropTypes.func\n};\n\nconst mapDispatchToProps = ({\n dispatchProducts\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(Plp);","import Plp from './Plp.jsx';\n\nexport default Plp;","import {createSelector} from 'reselect'\nimport {createGetSelector} from 'reselect-immutable-helpers'\n\nconst getData = ({data}) => data\n\nexport const getCart = createSelector(\n getData,\n (dataState) => {\n return dataState.pages.cart\n }\n)\n\nexport const getFormValues = createGetSelector(getCart, 'formValues')\nexport const getFormErrors = createGetSelector(getCart, 'formErrors')\nexport const getCartTotalCount = createGetSelector(getCart, 'cartTotalCount')\nexport const getCartItems = createGetSelector(getCart, 'cartItems')","import {createSelector} from 'reselect'\nimport {createGetSelector} from 'reselect-immutable-helpers'\n\nconst getData = ({data}) => data\n\nexport const getPlp = createSelector(\n getData,\n (dataState) => {\n return dataState.pages.plp\n }\n)\n\nexport const getFormValues = createGetSelector(getPlp, 'formValues')\nexport const getFormErrors = createGetSelector(getPlp, 'formErrors')\nexport const getProducts = createGetSelector(getPlp, 'products')\nexport const getFilterRange = createGetSelector(getPlp, 'filterRange')\nexport const getSortSelection = createGetSelector(getPlp, 'sortBy')","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './ItemPrice.component.scss';\n\nconst ItemPrice = ({product}) => {\n\n const hasDiscount = !!product.discount && product.discount !== 0\n\n return (\n \n {product.discountedPrice && ₹{product.discountedPrice}}\n {\n hasDiscount &&\n (\n \n {product.price}\n {product.discount}% off\n \n )\n }\n
\n );\n};\n\nItemPrice.defaultProps = {\n product: PropTypes.object\n};\n\nItemPrice.propTypes = {\n\n};\n\nexport default ItemPrice;","import React, {useState} from 'react';\nimport './Search.component.scss';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faSearch } from '@fortawesome/free-solid-svg-icons'\n\nconst Search = props => {\n const [searchInitiated, setSearchInitiated] = useState(false)\n return (\n setSearchInitiated(true)}>\n {searchInitiated && }\n \n
\n );\n};\n\nSearch.defaultProps = {\n\n};\n\nSearch.propTypes = {\n\n};\n\nexport default Search;","import Search from './Search.jsx';\n\nexport default Search;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport './CartIcon.component.scss';\nimport {withRouter} from 'react-router-dom'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faShoppingCart } from '@fortawesome/free-solid-svg-icons'\nimport { createPropsSelector } from 'reselect-immutable-helpers';\n\nimport {getCartTotalCount} from './../../../pages/Cart/selectors'\n\nconst CartIcon = props => {\n\n const navigateToCart = () => {\n props.history.push('/view/cart')\n }\n\n return (\n \n \n {props.cartTotalCount}\n
\n );\n};\n\nCartIcon.propTypes = {\n cartTotalCount: PropTypes.number\n};\n\nconst mapStateToProps = createPropsSelector({\n cartTotalCount: getCartTotalCount\n})\n\nexport default connect(mapStateToProps)(withRouter(CartIcon));","import CartIcon from './CartIcon.jsx';\n\nexport default CartIcon;","import React, {useEffect} from 'react';\nimport { Link } from 'react-router-dom';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faStar } from '@fortawesome/free-solid-svg-icons'\n\nimport Search from './../Search'\nimport CartIcon from './../CartIcon'\n\nconst Header = props => {\n\n useEffect(() => {\n const body = document.body;\n const scrollUp = \"scroll-up\";\n const scrollDown = \"scroll-down\";\n let lastScroll = 0;\n\n window.addEventListener(\"scroll\", () => {\n const currentScroll = window.pageYOffset;\n if (currentScroll === 0) {\n body.classList.remove(scrollUp);\n return;\n }\n \n if (currentScroll > lastScroll && !body.classList.contains(scrollDown)) {\n // down\n body.classList.remove(scrollUp);\n body.classList.add(scrollDown);\n } else if (currentScroll < lastScroll && body.classList.contains(scrollDown)) {\n // up\n body.classList.remove(scrollDown);\n body.classList.add(scrollUp);\n }\n lastScroll = currentScroll;\n });\n })\n \n return (\n \n \n \n {!props.inCart && }\n \n );\n};\n\nHeader.defaultProps = {\n\n};\n\nHeader.propTypes = {\n\n};\n\nexport default Header;","import Header from './Header.jsx';\n\nexport default Header;","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport * as fwIcons from '@fortawesome/free-solid-svg-icons'\nimport './Button.component.scss'\n\nconst Button = props => {\n return (\n \n );\n};\n\nButton.defaultProps = {\n\n};\n\nButton.propTypes = {\n\n};\n\nexport default Button;","import Button from './Button.jsx';\n\nexport default Button;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './Footer.component.scss';\n\nconst Footer = props => {\n return (\n \n );\n};\n\nFooter.defaultProps = {\n\n};\n\nFooter.propTypes = {\n\n};\n\nexport default Footer;","import Footer from './Footer.jsx';\n\nexport default Footer;"],"sourceRoot":""}
\ No newline at end of file
diff --git a/static/js/5.e2f76234.chunk.js.map b/static/js/5.e2f76234.chunk.js.map
deleted file mode 100644
index c3794ba..0000000
--- a/static/js/5.e2f76234.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["components/molecules/SortModal/SortModal.jsx","components/molecules/SortModal/index.js","components/molecules/FilterModal/FilterModal.jsx","components/molecules/FilterModal/index.js","components/molecules/SortAndFilterPanel/SortAndFilterPanel.jsx","components/molecules/SortAndFilterPanel/index.js","components/molecules/ProductTile/ProductTile.jsx","components/molecules/ProductTile/index.js","components/molecules/ProductContainer/ProductContainer.jsx","components/molecules/ProductContainer/index.js","pages/PLP/Plp.jsx","pages/PLP/index.js","pages/Cart/selectors.js","pages/PLP/selectors.js","components/molecules/ItemPrice/ItemPrice.jsx","components/molecules/Search/Search.jsx","components/molecules/Search/index.js","components/molecules/CartIcon/CartIcon.jsx","components/molecules/CartIcon/index.js","components/molecules/Header/Header.jsx","components/molecules/Header/index.js","components/atoms/Button/Button.jsx","components/atoms/Button/index.js","components/molecules/Footer/Footer.jsx","components/molecules/Footer/index.js"],"names":["customStyles","content","top","width","marginLeft","marginRight","background","overflow","borderRadius","SortModal","subtitle","closeModal","dispatchSortSelection","modalIsOpen","useState","sortType","setSortType","selectionError","setSelectionError","overlayClassName","closeTimeoutMS","className","isOpen","onAfterOpen","style","color","fontWeight","onRequestClose","contentLabel","id","ref","_subtitle","type","onClick","aria-label","aria-hidden","name","checked","onChange","e","defaultProps","propTypes","PropTypes","func","bool","mapDispatchToProps","connect","FilterModal","dispatchFilterRange","min","max","filterRange","setFilterRange","maxValue","minValue","formatLabel","value","dispatchFilterSelection","SortAndFilterPanel","props","sortModalIsOpen","setSortIsOpen","filterModalIsOpen","setFilterIsOpen","stopPropagation","icon","faSort","faFilter","ProductTile","product","src","img_url","alt","ItemPrice","Button","classes","buttonValue","buttonType","buttonName","buttonText","onClickHandler","productId","cartTotalCount","cartItems","count","updateCart","number","object","mapStateToProps","createPropsSelector","getCartTotalCount","getCartItems","ProductContainer","fr","sb","sortBy","setFilterNoMatch","productsWithDiscountedPrice","products","length","map","discount","price","discountAmount","Math","ceil","discountedPrice","sort","prod1","prod2","productsWithDiscountedPriceFiltered","filter","prod","productTiles","key","dispatchProducts","PageLoader","array","string","getFilterRange","getSortSelection","Plp","setProducts","useEffect","fetch","then","res","json","Header","Footer","getCart","createSelector","data","dataState","pages","cart","createGetSelector","getPlp","plp","getProducts","hasDiscount","Fragment","Search","searchInitiated","setSearchInitiated","placeholder","faSearch","CartIcon","history","push","faShoppingCart","withRouter","body","document","lastScroll","window","addEventListener","currentScroll","pageYOffset","classList","contains","remove","add","to","faStar","inCart","disabled","buttonDisabled","autoFocus","buttonAutoFocus","buttonIcon","fwIcons"],"mappings":"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","file":"static/js/5.e2f76234.chunk.js","sourcesContent":["import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {dispatchSortSelection} from './../../../pages/PLP/actions';\nimport Modal from 'react-modal';\nimport './SortModal.component.scss';\n\nconst customStyles = {\n content: {\n top: '20%',\n width: '93%',\n marginLeft: 'auto',\n marginRight: 'auto',\n background: 'rgb(255, 255, 255)',\n overflow: 'auto',\n borderRadius: '4px'\n }\n};\n\nconst SortModal = ({closeModal, dispatchSortSelection, modalIsOpen}) => {\n\n const [sortType, setSortType] = useState('')\n const [selectionError, setSelectionError] = useState('')\n var subtitle;\n\n function afterOpenModal() {\n subtitle.style.color = '#000';\n subtitle.style.fontWeight = '700';\n }\n\n const submitSelection = (e) => {\n if (!sortType) {\n setSelectionError(true)\n return\n }\n dispatchSortSelection(sortType)\n closeModal(e)\n setSelectionError(false)\n }\n\n return (\n \n \n
\n
(subtitle = _subtitle)}>Sort Options
\n \n \n
\n {selectionError &&
Please Select One of the options below.}\n
\n
\n
\n \n \n
\n
\n \n );\n};\n\nSortModal.defaultProps = {\n\n};\n\nSortModal.propTypes = {\n closeModal: PropTypes.func,\n dispatchSortSelection: PropTypes.func,\n modalIsOpen: PropTypes.bool\n};\n\nconst mapDispatchToProps = ({\n dispatchSortSelection\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(SortModal);","import SortModal from './SortModal.jsx';\n\nexport default SortModal;","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {dispatchFilterRange} from './../../../pages/PLP/actions';\nimport Modal from 'react-modal';\nimport InputRange from 'react-input-range';\nimport './FilterModal.component.scss';\nimport 'react-input-range/lib/css/index.css';\n\nconst customStyles = {\n content: {\n top: '20%',\n width: '93%',\n marginLeft: 'auto',\n marginRight: 'auto',\n background: 'rgb(255, 255, 255)',\n overflow: 'auto',\n borderRadius: '4px'\n }\n};\n\nconst FilterModal = ({closeModal, dispatchFilterRange, modalIsOpen}) => {\n\n const [filterRange, setFilterRange] = useState({min: 200, max: 5000})\n var subtitle;\n\n function afterOpenModal() {\n subtitle.style.color = '#000';\n subtitle.style.fontWeight = '700';\n }\n\n const submitSelection = (e) => {\n dispatchFilterRange(filterRange)\n closeModal(e)\n }\n\n return (\n \n \n
\n
(subtitle = _subtitle)}>Filter Options
\n \n \n
\n `${value} Kg`}\n value={filterRange}\n onChange={value => setFilterRange(value)} />\n {/* onChangeComplete={(e) =>submitSelection(e)} /> */}\n
\n
\n \n \n
\n
\n \n );\n};\n\nFilterModal.defaultProps = {\n\n};\n\nFilterModal.propTypes = {\n closeModal: PropTypes.func,\n dispatchFilterSelection: PropTypes.func,\n modalIsOpen: PropTypes.bool\n};\n\nconst mapDispatchToProps = ({\n dispatchFilterRange\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(FilterModal);\n","import FilterModal from './FilterModal.jsx';\n\nexport default FilterModal;","import React, {useState} from 'react';\nimport './SortAndFilterPanel.component.scss'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faSort } from '@fortawesome/free-solid-svg-icons'\nimport { faFilter } from '@fortawesome/free-solid-svg-icons'\nimport SortModal from '../SortModal';\nimport FilterModal from '../FilterModal';\n\nconst SortAndFilterPanel = props => {\n\n const [sortModalIsOpen,setSortIsOpen] = useState(false);\n const [filterModalIsOpen,setFilterIsOpen] = useState(false);\n \n function closeModal(type, e){\n e.stopPropagation();\n type === \"sort\" ? setSortIsOpen(false) : setFilterIsOpen(false);\n }\n\n return (\n \n
\n
\n
setSortIsOpen(true)}>\n
Sort
\n
closeModal(\"sort\", e)} modalIsOpen={sortModalIsOpen} />\n \n
setFilterIsOpen(true)}>\n
Filter
\n
closeModal(\"filter\", e)} modalIsOpen={filterModalIsOpen}/>\n \n
\n
\n
\n );\n};\n\nSortAndFilterPanel.defaultProps = {\n\n};\n\nSortAndFilterPanel.propTypes = {\n\n};\n\nexport default SortAndFilterPanel;","import SortAndFilterPanel from './SortAndFilterPanel.jsx';\n\nexport default SortAndFilterPanel;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {createPropsSelector} from 'reselect-immutable-helpers';\nimport {updateCart} from './../../../pages/Cart/actions'\nimport {getCartTotalCount, getCartItems} from './../../../pages/Cart/selectors'\n\nimport Button from './../../atoms/Button'\nimport ItemPrice from '../ItemPrice/ItemPrice';\n\nimport './ProductTile.component.scss';\n\nconst ProductTile = props => {\n\n const product = props.product\n const addToCartButtonClass = \"btn btn__addToCart\"\n\n const updateCart = (productId) => {\n let cartTotalCount = props.cartTotalCount\n const cartItems = props.cartItems\n let count = cartItems && cartItems[productId] ? cartItems[productId] : 0\n cartItems[productId] = ++count\n props.updateCart(++cartTotalCount, cartItems)\n }\n\n return (\n \n \n
\n {product.name && {product.name}}\n \n {/* \n {product.discountedPrice && ₹{product.discountedPrice}}\n {\n hasDiscount &&\n (\n \n {product.price}\n {product.discount}% off\n \n )\n }\n
*/}\n \n \n );\n};\n\nProductTile.propTypes = {\n updateCart: PropTypes.func,\n cartTotalCount: PropTypes.number,\n cartItems: PropTypes.object\n};\n\nconst mapStateToProps = createPropsSelector({\n cartTotalCount: getCartTotalCount,\n cartItems: getCartItems\n})\n\nconst mapDispatchToProps = ({\n updateCart\n})\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductTile);","import ProductTile from './ProductTile.jsx';\n\nexport default ProductTile;","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {createPropsSelector} from 'reselect-immutable-helpers';\nimport {dispatchProducts} from './../../../pages/PLP/actions'\nimport {getFilterRange, getSortSelection} from './../../../pages/PLP/selectors'\nimport ProductTile from './../ProductTile'\nimport PageLoader from '../PageLoader/PageLoader';\nimport './ProductContainer.component.scss'\n\nconst ProductContainer = props => {\n\n const fr = props.filterRange\n const sb = props.sortBy\n\n const [filterNoMatch, setFilterNoMatch] = useState(false)\n\n let productsWithDiscountedPrice = props.products \n && props.products.length !== 0\n && props.products.map(product => {\n const discount = product.discount && product.price * (product.discount/100)\n product.discountAmount = Math.ceil(discount)\n product.discountedPrice = Math.ceil(product.price - product.discountAmount)\n return product\n })\n if (productsWithDiscountedPrice) {\n if (sb) {\n switch(sb) {\n case \"priceHtoL\":\n productsWithDiscountedPrice.sort((prod1, prod2) => prod2.discountedPrice - prod1.discountedPrice);\n break;\n case \"priceLtoH\":\n productsWithDiscountedPrice.sort((prod1, prod2) => prod1.discountedPrice - prod2.discountedPrice);\n break;\n case \"discount\":\n productsWithDiscountedPrice.sort((prod1, prod2) => prod2.discount - prod1.discount);\n break;\n default:\n break;\n }\n }\n \n if (fr) {\n const productsWithDiscountedPriceFiltered = productsWithDiscountedPrice.filter(prod => prod.discountedPrice > fr.min && prod.discountedPrice < fr.max);\n if (productsWithDiscountedPrice.length > 0 && productsWithDiscountedPriceFiltered.length === 0) {\n productsWithDiscountedPrice = productsWithDiscountedPriceFiltered\n setFilterNoMatch(true)\n }\n }\n }\n\n const productTiles = productsWithDiscountedPrice && productsWithDiscountedPrice.map((product, key) =>{\n return \n })\n props.dispatchProducts(productsWithDiscountedPrice)\n\n return props.products && props.products.length !== 0 ?\n \n \n
\n {productTiles}\n
\n
\n : \n};\n\nProductContainer.defaultProps = {\n products: []\n};\n\nProductContainer.propTypes = {\n products: PropTypes.array,\n sortBy: PropTypes.string\n};\n\nconst mapStateToProps = createPropsSelector({\n filterRange: getFilterRange,\n sortBy: getSortSelection\n})\n\nconst mapDispatchToProps = ({\n dispatchProducts\n})\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductContainer);","import ProductContainer from './ProductContainer.jsx';\n\nexport default ProductContainer;","import React, {useState, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {dispatchProducts} from './actions';\n\nimport Header from './../../components/molecules/Header'\nimport SortAndFilterPanel from './../../components/molecules/SortAndFilterPanel'\nimport ProductContainer from './../../components/molecules/ProductContainer'\nimport Footer from './../../components/molecules/Footer'\n\nconst Plp = ({dispatchProducts}) => {\n \n const [products, setProducts] = useState([])\n\n useEffect(() => {\n fetch('https://api.myjson.com/bins/qzuzi')\n .then(res => res.json())\n .then(products => {\n // console.log(products)\n setProducts(products)\n dispatchProducts(products)\n })\n }, [])\n\n return (\n \n )\n};\n\nPlp.propTypes = {\n dispatchProducts: PropTypes.func\n};\n\nconst mapDispatchToProps = ({\n dispatchProducts\n})\n\nexport default connect(\n null,\n mapDispatchToProps\n)(Plp);","import Plp from './Plp.jsx';\n\nexport default Plp;","import {createSelector} from 'reselect'\nimport {createGetSelector} from 'reselect-immutable-helpers'\n\nconst getData = ({data}) => data\n\nexport const getCart = createSelector(\n getData,\n (dataState) => {\n return dataState.pages.cart\n }\n)\n\nexport const getFormValues = createGetSelector(getCart, 'formValues')\nexport const getFormErrors = createGetSelector(getCart, 'formErrors')\nexport const getCartTotalCount = createGetSelector(getCart, 'cartTotalCount')\nexport const getCartItems = createGetSelector(getCart, 'cartItems')","import {createSelector} from 'reselect'\nimport {createGetSelector} from 'reselect-immutable-helpers'\n\nconst getData = ({data}) => data\n\nexport const getPlp = createSelector(\n getData,\n (dataState) => {\n return dataState.pages.plp\n }\n)\n\nexport const getFormValues = createGetSelector(getPlp, 'formValues')\nexport const getFormErrors = createGetSelector(getPlp, 'formErrors')\nexport const getProducts = createGetSelector(getPlp, 'products')\nexport const getFilterRange = createGetSelector(getPlp, 'filterRange')\nexport const getSortSelection = createGetSelector(getPlp, 'sortBy')","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './ItemPrice.component.scss';\n\nconst ItemPrice = ({product}) => {\n\n const hasDiscount = !!product.discount && product.discount !== 0\n\n return (\n \n {product.discountedPrice && ₹{product.discountedPrice}}\n {\n hasDiscount &&\n (\n \n {product.price}\n {product.discount}% off\n \n )\n }\n
\n );\n};\n\nItemPrice.defaultProps = {\n product: PropTypes.object\n};\n\nItemPrice.propTypes = {\n\n};\n\nexport default ItemPrice;","import React, {useState} from 'react';\nimport './Search.component.scss';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faSearch } from '@fortawesome/free-solid-svg-icons'\n\nconst Search = props => {\n const [searchInitiated, setSearchInitiated] = useState(false)\n return (\n setSearchInitiated(true)}>\n {searchInitiated && }\n \n
\n );\n};\n\nSearch.defaultProps = {\n\n};\n\nSearch.propTypes = {\n\n};\n\nexport default Search;","import Search from './Search.jsx';\n\nexport default Search;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport './CartIcon.component.scss';\nimport {withRouter} from 'react-router-dom'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faShoppingCart } from '@fortawesome/free-solid-svg-icons'\nimport { createPropsSelector } from 'reselect-immutable-helpers';\n\nimport {getCartTotalCount} from './../../../pages/Cart/selectors'\n\nconst CartIcon = props => {\n\n const navigateToCart = () => {\n props.history.push('/view/cart')\n }\n\n return (\n \n \n {props.cartTotalCount}\n
\n );\n};\n\nCartIcon.propTypes = {\n cartTotalCount: PropTypes.number\n};\n\nconst mapStateToProps = createPropsSelector({\n cartTotalCount: getCartTotalCount\n})\n\nexport default connect(mapStateToProps)(withRouter(CartIcon));","import CartIcon from './CartIcon.jsx';\n\nexport default CartIcon;","import React, {useEffect} from 'react';\nimport { Link } from 'react-router-dom';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faStar } from '@fortawesome/free-solid-svg-icons'\n\nimport Search from './../Search'\nimport CartIcon from './../CartIcon'\n\nconst Header = props => {\n\n useEffect(() => {\n const body = document.body;\n const scrollUp = \"scroll-up\";\n const scrollDown = \"scroll-down\";\n let lastScroll = 0;\n\n window.addEventListener(\"scroll\", () => {\n const currentScroll = window.pageYOffset;\n if (currentScroll === 0) {\n body.classList.remove(scrollUp);\n return;\n }\n \n if (currentScroll > lastScroll && !body.classList.contains(scrollDown)) {\n // down\n body.classList.remove(scrollUp);\n body.classList.add(scrollDown);\n } else if (currentScroll < lastScroll && body.classList.contains(scrollDown)) {\n // up\n body.classList.remove(scrollDown);\n body.classList.add(scrollUp);\n }\n lastScroll = currentScroll;\n });\n })\n \n return (\n \n \n \n {!props.inCart && }\n \n );\n};\n\nHeader.defaultProps = {\n\n};\n\nHeader.propTypes = {\n\n};\n\nexport default Header;","import Header from './Header.jsx';\n\nexport default Header;","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport * as fwIcons from '@fortawesome/free-solid-svg-icons'\nimport './Button.component.scss'\n\nconst Button = props => {\n return (\n \n );\n};\n\nButton.defaultProps = {\n\n};\n\nButton.propTypes = {\n\n};\n\nexport default Button;","import Button from './Button.jsx';\n\nexport default Button;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './Footer.component.scss';\n\nconst Footer = props => {\n return (\n \n );\n};\n\nFooter.defaultProps = {\n\n};\n\nFooter.propTypes = {\n\n};\n\nexport default Footer;","import Footer from './Footer.jsx';\n\nexport default Footer;"],"sourceRoot":""}
\ No newline at end of file
diff --git a/static/js/runtime-main.7b9c1257.js b/static/js/runtime-main.7b9c1257.js
new file mode 100644
index 0000000..3293739
--- /dev/null
+++ b/static/js/runtime-main.7b9c1257.js
@@ -0,0 +1,2 @@
+!function(e){function t(t){for(var n,o,c=t[0],i=t[1],s=t[2],f=0,d=[];f