PageSourceSearch

https://snhijabs.com/store-locator

html snhijabs.com collected 2026-10-06 19:09:25 UTC 135,634 bytes, 3,574 lines download raw bytes

1<!doctype html>
2<!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
3<!--[if IE 7]><html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
4<!--[if IE 8]><html class="no-js lt-ie9" lang="en"> <![endif]-->
5<!--[if IE 9 ]><html class="ie9 no-js"> <![endif]-->
6<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js"> <!--<![endif]-->
7<head>
8
9  <!-- Basic page needs ================================================== -->
10  <meta charset="utf-8">
11  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
12
13  
14  <link rel="icon" href="https://cdn.store-assets.com/s/385982/f/17617488.png" />
15  
16
17  <!-- Title and description ================================================== -->
18  <title>
19  Store Locator &ndash; SAUQAH 
20  </title>
21
22  
23  <meta name="description" content="Store Locator">
24  
25
26  <!-- Social meta ================================================== -->
27  
28
29  <meta property="og:type" content="website">
30  <meta property="og:title" content="Store Locator">
31  <meta property="og:url" content="https://snhijabs.com/store-locator">
32  
33    <meta property="og:image" content="https://cdn.store-assets.com/s/385982/f/17617488.png">
34    <meta property="og:image:secure_url" content="https://cdn.store-assets.com/s/385982/f/17617488.png">
35  
36
37
38<meta property="og:description" content="Store Locator">
39<meta property="og:site_name" content="SAUQAH ">
40
41
42
43  <meta name="twitter:card" content="summary">
44
45
46
47  <meta name="twitter:site" content="@">
48
49
50
51
52
53  <!-- Helpers ================================================== -->
54  <link rel="canonical" href="https://snhijabs.com/store-locator">
55  <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1">
56  <meta name="theme-color" content="#000000">
57  
58  
58<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript" ></script>
58
59  
60  <!-- Header hook for plugins ================================================== -->
61  
62<!-- ScriptTags -->
63<script>window.__st={p: "store-locator",cid: null,cem: null,cph: null,cfn: null,cln: null,cge: null,cdb: null,ccc: null};</script>
63<script src='/assets/events.js'></script>
63<script>(function(){function asyncLoad(){var urls=['/assets/traffic.js?v=1','https://apps.easystore.co/facebook-login/script.js?shop=snhijabs.easy.co&t=1760869989','https://apps.easystore.co/sales-pop/script.js?shop=snhijabs.easy.co&t=1760872678'];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);}}window.attachEvent ? window.attachEvent('onload', asyncLoad) : window.addEventListener('load', asyncLoad, false);})();</script>
63
64<!-- /ScriptTags -->
65
66  
67  
68  
68<script src="https://store-themes.easystore.co/385982/themes/295436/assets/global.js?t=1787123890" defer="defer"></script>
68
69
70  
71  
72  
72<script>
73  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
74  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
75  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
76  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
77
78  ga('create', '', 'auto','myTracker');
79  ga('myTracker.send', 'pageview');
80
81  </script>
81
82  
83  
83<script src="/assets/storefront.js?id=1d419de2011a5572c98b" type="text/javascript" ></script>
83
84  
85
86  <!-- CSS ================================================== -->
87  <style>
88      @font-face {
89        font-family: 'Playfair Display SC';
90        font-style: normal;
91        font-weight: regular;
92        src: local('Playfair Display SC regular'), local('Playfair Display SC-regular'), url(https://fonts.gstatic.com/s/playfairdisplaysc/v10/ke85OhoaMkR6-hSn7kbHVoFf7ZfgMPr_pb4GEcM2M4s.ttf) format('truetype');
93      }
94
95      @font-face {
96        font-family: 'Playfair Display SC';
97        font-style: normal;
98        font-weight: regular;
99        src: local('Playfair Display SC regular'), local('Playfair Display SC-regular'), url(https://fonts.gstatic.com/s/playfairdisplaysc/v10/ke85OhoaMkR6-hSn7kbHVoFf7ZfgMPr_pb4GEcM2M4s.ttf) format('truetype');
100      }
101
102      :root {
103        --font-body-family: 'Playfair Display SC', serif;
104        --font-body-style: normal;
105        --font-body-weight: 500;
106
107        --font-heading-family: 'Playfair Display SC', serif;
108        --font-heading-style: normal;
109        --font-heading-weight: 400;
110
111        --color-heading-text: 6,6,6;
112        --color-base-text: 6,6,6;
113        --color-base-background-1: 237,214,182;
114        --color-base-background-2: 237,214,182;
115        
116        --color-base-solid-button-labels: 255,255,255;
117        --color-base-outline-button-labels: 0,0,0;
118        
119        --color-base-accent-1: 0,0,0;
120        --color-base-accent-2: 0,0,0;
121        --payment-terms-background-color: 237,214,182;
122
123        --gradient-base-background-1: 237,214,182;
124        --gradient-base-background-2: 237,214,182;
125        --gradient-base-accent-1: 0,0,0;
126        --gradient-base-accent-2: 0,0,0;
127
128        --page-width: 145rem;
129      }
130
131      *,
132      *::before,
133      *::after {
134        box-sizing: inherit;
135      }
136
137      html {
138        box-sizing: border-box;
139        font-size: 62.5%;
140        height: 100%;
141      }
142
143      body {
144        display: grid;
145        grid-template-rows: auto auto 1fr auto;
146        grid-template-columns: 100%;
147        min-height: 100%;
148        margin: 0;
149        font-size: 1.5rem;
150        letter-spacing: 0.06rem;
151        line-height: 1.8;
152        font-family: var(--font-body-family);
153        font-style: var(--font-body-style);
154        font-weight: var(--font-body-weight);
155        
156      }
157
158      @media screen and (min-width: 750px) {
159        body {
160          font-size: 1.6rem;
161        }
162      }
163   </style>
164  
165  <link href="https://store-themes.easystore.co/385982/themes/295436/assets/base.css?t=1787123890" rel="stylesheet" type="text/css" media="screen" />
166
167  
168  
169
170  
170<script>document.documentElement.className = document.documentElement.className.replace('no-js', 'js');</script>
170
171  
171<script type="application/ld+json">
172    {"@context":"https://schema.org/","@graph":[{"@type":"WebSite","@id":"https://snhijabs.com#website","name":"SAUQAH","url":"https://snhijabs.com","potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://snhijabs.com/search?q={search_term_string}"},"query-input":"required name=search_term_string"},"publisher":{"@id":"https://snhijabs.com#organization"}},{"@type":"Organization","@id":"https://snhijabs.com#organization","name":"SAUQAH","url":"https://snhijabs.com","logo":{"@type":"ImageObject","url":"https://cdn.store-assets.com/s/385982/f/17617488.png?width=350\u0026format=webp"}}]}
173  </script>
173
174</head>
175
176<body id="store-locator" class="template-store-locator" >
177	
178  
179<!-- Snippet:global/body_start: Announcement Bar -->
180<link rel="stylesheet" href="https://apps.easystore.co/assets/css/annoucement-bar/marquee.css?v1.04">
181
182<div id="announcement-bar" name="announcement-bar" style="
183    border: unset;
184    padding: 6px 0px;
185    margin: 0px;
186    z-index:2999;
187    background:rgb(224, 9, 10);
188    color:rgb(255, 255, 255);
189    position: -webkit-sticky; position: sticky; top: 0;
190">
191
192  <input type="hidden" id="total_announcement_left" name="total_announcement_left" value="1">
193  <input type="hidden" id="locale" name="locale" value="en_US">
194
195  <div class="app_marquee-wrapper" style="
196    padding: 4px 0px;
197    border-top: 1px dashed;
198    border-bottom: 1px dashed;
199    border-color: rgb(255, 255, 255);
200  ">
201    <div class="app_marquee-container">
202              <div id="announcement_bar_0" class="announcement_bar_0 announcement_bar-content">
203          <span class="marquee-msg">POTONGAN % UNTUK PEMBELIAN PERTAMA</span>
204                              <input type="hidden" id="expired_at_0" name="expired_at_0" value="2025-09-10 00:00">
205        </div>
206          </div>
207
208          <span id="announcement-close-button" name="announcement-close-button" class="announcement-close-button" style="color: rgb(31, 15, 15); background: rgb(230, 10, 10);">
209        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" width="20" height="20" stroke-width="2">
210          <path d="M18 6l-12 12"></path>
211          <path d="M6 6l12 12"></path>
212        </svg>
213      </span>
214      </div>
215</div>
216
217
218
219<script>
220  var is_top_enabled = 1;
221  if (is_top_enabled) {
222    // Prevent announcement bar block header
223    setTimeout(() => {
224      let header = document.querySelector('#easystore-section-header');
225      let topbar = document.querySelector('.sticky-topbar');
226      let announcementBar = document.querySelector('#announcement-bar');
227
228      if (announcementBar) {
229          let height = announcementBar.offsetHeight + 'px';
230          if (header) header.style.top = height;
231          if (topbar) topbar.style.top = height;
232      }
233    }, 2000);
234  }
235
236  setInterval(function () {
237      let total_announcement = parseInt("1", 10);
238      let total_announcement_left = parseInt(document.querySelector("#total_announcement_left").value, 10);
239
240      for (let i = 0; i <= total_announcement; i++) {
241          let startDate = new Date();
242          let endDateStr = document.querySelector(`#expired_at_${i}`)?.value;
243          let endDate = endDateStr ? new Date(endDateStr.replace(/-/g, "/")) : new Date();
244          let seconds = (endDate.getTime() - startDate.getTime()) / 1000;
245
246          let days = Math.floor(seconds / 86400);
247          let hours = Math.floor((seconds % 86400) / 3600);
248          let mins = Math.floor((seconds % 3600) / 60);
249          let secs = Math.floor(seconds % 60);
250
251          function translate(key, locale, values = 1) {
252              if (locale === "zh_TW") {
253                  let translations = {
254                      day: "天",
255                      hour: "小時",
256                      min: "分鐘",
257                      sec: "秒"
258                  };
259                  return translations[key] || key;
260              } else {
261                  let singularPlural = { day: "Day", hour: "Hour", min: "Min", sec: "Sec" };
262                  let plural = { day: "Days", hour: "Hours", min: "Mins", sec: "Secs" };
263                  if (key in singularPlural) {
264                      return values > 1 ? plural[key] : singularPlural[key];
265                  }
266                  return key;
267              }
268          }
269
270
271          let countdownElement = document.querySelector(`#announcementBar_countdown_${i}`);
272          if (countdownElement && seconds > 0) {
273            let locale = document.querySelector("#locale")?.value || "en";
274            let countdownItems = document.querySelectorAll(`.announcementBar_countdown_${i}`);
275            countdownItems.forEach(item => {
276                item.style.display = '';
277                item.innerHTML = `
278                    <div>
279                        <span>${days}</span> <small>${translate('day', locale, days)}</small>
280                    </div>
281                    <div>
282                        <span>${hours}</span> <small>${translate('hour', locale, hours)}</small>
283                    </div>
284                    <div>
285                        <span>${mins}</span> <small>${translate('min', locale, mins)}</small>
286                    </div>
287                    <div>
288                        <span>${secs}</span> <small>${translate('sec', locale, secs)}</small>
289                    </div>
290                `;
291            });
292          } else if (countdownElement && seconds <= 0) {
293              let bar = document.querySelector(`#announcement_bar_${i}`);
294              if (bar) bar.remove();
295              total_announcement_left -= 1;
296              document.querySelector("#total_announcement_left").value = total_announcement_left;
297          }
298      }
299
300      showOrHide(total_announcement_left);
301  }, 1000);
302
303  function showOrHide(total_announcement_left) {
304      let prevButton = document.querySelector("#previous-announcement-bar-button");
305      let nextButton = document.querySelector("#next-announcement-bar-button");
306      let closeButton = document.querySelector("#announcement-close-button");
307      let announcementBar = document.querySelector("#announcement-bar");
308      let announcementBarTop = document.querySelector("#announcement-bar-top");
309      let header = document.querySelector("#easystore-section-header");
310      let topbar = document.querySelector(".sticky-topbar");
311
312      if (total_announcement_left <= 1) {
313          if (prevButton) prevButton.style.display = 'none';
314          if (nextButton) nextButton.style.display = 'none';
315      } else {
316          if (prevButton) prevButton.style.display = 'block';
317          if (nextButton) nextButton.style.display = 'block';
318      }
319
320      if (total_announcement_left === 0) {
321          if (closeButton) closeButton.style.display = 'none';
322          if (announcementBar) announcementBar.style.display = 'none';
323          if (announcementBarTop) announcementBarTop.style.display = 'none';
324          if (header) header.style.top = '0px';
325          if (topbar) topbar.style.top = '0px';
326      }
327  }
328
329  let closeButton = document.querySelector("#announcement-close-button");
330  if (closeButton) {
331      closeButton.addEventListener('click', () => {
332          let announcementBar = document.querySelector("#announcement-bar");
333          let announcementBarTop = document.querySelector("#announcement-bar-top");
334          let header = document.querySelector("#easystore-section-header");
335          let topbar = document.querySelector(".sticky-topbar");
336
337          if (announcementBar) announcementBar.style.display = 'none';
338          if (announcementBarTop) announcementBarTop.style.display = 'none';
339          if (header) header.style.top = '';
340          if (topbar) topbar.style.top = '';
341      });
342  }
343
344</script>
344
345
346
347<script>
348  (function initializeMarquee() {
349    const marqueeWrapper = document.querySelector(`#announcement-bar .app_marquee-wrapper`);
350    const marqueeContainer = document.querySelector(`#announcement-bar .app_marquee-container`);
351
352    if (!marqueeWrapper || !marqueeContainer) return;
353
354    const children = Array.from(marqueeContainer.children);
355
356    // Calculate the total width of children
357    let totalWidth = children.reduce((acc, child) => acc + child.offsetWidth, 0);
358    const screenWidth = window.innerWidth;
359
360    // Clone children until the total width exceeds the screen width
361    if(totalWidth > 5){
362      while (totalWidth < screenWidth * 3) {
363        children.forEach(child => {
364          const clone = child.cloneNode(true);
365          marqueeContainer.appendChild(clone);
366          totalWidth += clone.offsetWidth;
367        });
368      }
369    }
370
371    // Clone the marquee container
372    const clonedContainer = marqueeContainer.cloneNode(true);
373    marqueeWrapper.appendChild(clonedContainer);
374  })();
375</script>
375
376
377<!-- /Snippet -->
378
379<!-- Snippet:global/body_start: Console Extension -->
380<div id='es_console' style='display: none;'>385982</div>
381<!-- /Snippet -->
382
383	
384 	<style>
385  header {
386    --logo-width: 120px;
387  }
388  .header-wrapper,
389  .header-wrapper .list-menu--disclosure,
390  .header-wrapper .search-modal{
391    background-color: #EDD6B6;
392  }
393  .header-wrapper .search-modal .field__input{
394    background-color: rgb(var(--color-background));
395  }
396  .header-wrapper summary .icon-caret,
397  .header-wrapper .header__menu-item a,
398  .header-wrapper .list-menu__item,
399  .header-wrapper .link--text{
400    color: #0e0d0d;
401  }
402  
403  .search-modal__form{
404    position: relative;
405  }
406  
407  .dropdown {
408    display: none;
409    position: absolute;
410    top: 100%;
411    left: 0;
412    width: 100%;
413    padding: 5px 0;
414    background-color: #fff;
415    color:#000;
416    z-index: 1000;
417    border-bottom-left-radius: 15px;
418    border-bottom-right-radius: 15px;
419    border: 1px solid rgba(var(--color-foreground), 1);
420    border-top: none;
421    overflow-x: hidden;
422    overflow-y: auto;
423    max-height: 350px;
424  }
425  
426  .dropdown-item {
427    padding: 0.4rem 2rem;
428    cursor: pointer;
429    line-height: 1.4;
430    overflow: hidden;
431    text-overflow: ellipsis;
432    white-space: nowrap;
433  }
434  
435  .dropdown-item:hover{
436    background-color: #f3f3f3;
437  }
438  
439  .search__input.is-focus{
440    border-radius: 15px;
441    border-bottom-left-radius: 0;
442    border-bottom-right-radius: 0;
443    border: 1px solid rgba(var(--color-foreground), 1);
444    border-bottom: none;
445    box-shadow: none;
446  }
447  
448  .clear-all {
449    text-align: right;
450    padding: 0 2rem 0.2rem;
451    line-height: 1;
452    font-size: 70%;
453    margin-bottom: -2px;
454  }
455  
456  .clear-all:hover{
457    background-color: #fff;
458  }
459  
460  .search-input-focus .easystore-section-header-hidden{
461    transform: none;
462  }
463  .referral-notification {
464    position: absolute;
465    top: 100%;
466    right: 0;
467    background: white;
468    border: 1px solid #e0e0e0;
469    border-radius: 8px;
470    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
471    width: 280px;
472    z-index: 1000;
473    padding: 16px;
474    margin-top: 8px;
475    font-size: 14px;
476    line-height: 1.4;
477  }
478  
479  .referral-notification::before {
480    content: '';
481    position: absolute;
482    top: -8px;
483    right: 20px;
484    width: 0;
485    height: 0;
486    border-left: 8px solid transparent;
487    border-right: 8px solid transparent;
488    border-bottom: 8px solid white;
489  }
490  
491  .referral-notification::after {
492    content: '';
493    position: absolute;
494    top: -9px;
495    right: 20px;
496    width: 0;
497    height: 0;
498    border-left: 8px solid transparent;
499    border-right: 8px solid transparent;
500    border-bottom: 8px solid #e0e0e0;
501  }
502  
503  .referral-notification h4 {
504    margin: 0 0 8px 0;
505    color: #2196F3;
506    font-size: 16px;
507    font-weight: 600;
508  }
509  
510  .referral-notification p {
511    margin: 0 0 12px 0;
512    color: #666;
513  }
514  
515  .referral-notification .referral-code {
516    background: #f5f5f5;
517    padding: 8px;
518    border-radius: 4px;
519    font-family: monospace;
520    font-size: 13px;
521    text-align: center;
522    margin: 8px 0;
523    border: 1px solid #ddd;
524  }
525  
526  .referral-notification .close-btn {
527    position: absolute;
528    top: 8px;
529    right: 8px;
530    background: none;
531    border: none;
532    font-size: 18px;
533    color: #999;
534    cursor: pointer;
535    padding: 0;
536    width: 20px;
537    height: 20px;
538    line-height: 1;
539  }
540  
541  .referral-notification .close-btn:hover {
542    color: #333;
543  }
544  
545  .referral-notification .action-btn {
546    background: #2196F3;
547    color: white;
548    border: none;
549    padding: 8px 16px;
550    border-radius: 4px;
551    cursor: pointer;
552    font-size: 12px;
553    margin-right: 8px;
554    margin-top: 8px;
555  }
556  
557  .referral-notification .action-btn:hover {
558    background: #1976D2;
559  }
560  
561  .referral-notification .dismiss-btn {
562    background: transparent;
563    color: #666;
564    border: 1px solid #ddd;
565    padding: 8px 16px;
566    border-radius: 4px;
567    cursor: pointer;
568    font-size: 12px;
569    margin-top: 8px;
570  }
571  
572  .referral-notification .dismiss-btn:hover {
573    background: #f5f5f5;
574  }
575  .referral-modal__dialog {
576    transform: translate(-50%, 0);
577    transition: transform var(--duration-default) ease, visibility 0s;
578    z-index: 10000;
579    position: fixed;
580    top: 20vh;
581    left: 50%;
582    width: 100%;
583    max-width: 350px;
584    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
585    border-radius: 12px;
586    background-color: #fff;
587    color: #000;
588    padding: 20px;
589    text-align: center;
590  }
591
592  .modal-overlay.referral-modal-overlay {
593    position: fixed;
594    top: 0;
595    left: 0;
596    width: 100%;
597    height: 100%;
598    background-color: rgba(0, 0, 0, 0.7);
599    z-index: 2001;
600    display: block;
601    opacity: 1;
602    transition: opacity var(--duration-default) ease, visibility 0s;
603  }
604  .header__search-input .field__label,
605  .header__search-input .field__button,
606  .header__search-input .field__input{
607    color: #0e0d0d;
608  }
609  .header__search-input .field__input {
610    color: #0e0d0d;
611    box-shadow: 0 0 0 0.1rem #0e0d0d, inset 0 2px 3px rgba(0, 0, 0, 0.05);
612  }
613</style>
614
615<link href="https://store-themes.easystore.co/385982/themes/295436/assets/section-header.css?t=1787123890" rel="stylesheet" type="text/css" media="screen" />
616<link href="https://store-themes.easystore.co/385982/themes/295436/assets/component-list-menu.css?t=1787123890" rel="stylesheet" type="text/css" media="screen" />
617<link href="https://store-themes.easystore.co/385982/themes/295436/assets/component-menu-drawer.css?t=1787123890" rel="stylesheet" type="text/css" media="screen" />
618<link href="https://store-themes.easystore.co/385982/themes/295436/assets/component-cart-notification.css?v1.1?t=1787123890" rel="stylesheet" type="text/css" media="screen" />
619
620<script src="https://store-themes.easystore.co/385982/themes/295436/assets/cart-notification.js?t=1787123890" defer="defer"></script>
vendor: 1 bytes, line 620
620
621<script src="https://store-themes.easystore.co/385982/themes/295436/assets/details-modal.js?t=1787123890" defer="defer"></script>
621
622
623<svg xmlns="http://www.w3.org/2000/svg" class="hidden">
624  <symbol id="icon-search" viewbox="0 0 18 19" fill="none">
625    <path fill-rule="evenodd" clip-rule="evenodd" d="M11.03 11.68A5.784 5.784 0 112.85 3.5a5.784 5.784 0 018.18 8.18zm.26 1.12a6.78 6.78 0 11.72-.7l5.4 5.4a.5.5 0 11-.71.7l-5.41-5.4z" fill="currentColor"/>
626  </symbol>
627
628  <symbol id="icon-close" class="icon icon-close" fill="none" viewBox="0 0 18 17">
629    <path d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z" fill="currentColor">
630  </symbol>
631</svg>
632
633
634<div id="easystore-section-header">
635  <sticky-header class="header-wrapper header-wrapper--border-bottom">
636    <header class="header header--middle-left page-width header--has-menu" itemscope itemtype="http://schema.org/Organization">
637      <header-drawer data-breakpoint="tablet">
638        <details class="menu-drawer-container menu-opening">
639          <summary class="header__icon header__icon--menu header__icon--summary link link--text focus-inset" aria-label="Menu" role="button" aria-expanded="true" aria-controls="menu-drawer">
640            <span>
641              
642
643
644    <svg class="icon icon-hamburger " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M32.5,65h535a25,25,0,0,0,0-50H32.5a25,25,0,0,0,0,50Z" fill="currentColor"/><path d="M567.5,275H32.5a25,25,0,0,0,0,50h535a25,25,0,0,0,0-50Z" fill="currentColor"/><path d="M567.5,535H32.5a25,25,0,0,0,0,50h535a25,25,0,0,0,0-50Z" fill="currentColor"/></svg>
645
646  
647
648              
649
650
651    <svg class="icon icon-close " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M335.36,300,581.87,53.48a25,25,0,0,0-35.35-35.35L300,264.64,53.48,18.13A25,25,0,0,0,18.13,53.48L264.64,300,18.13,546.52a25,25,0,0,0,35.35,35.35L300,335.36,546.52,581.87a25,25,0,0,0,35.35-35.35Z" fill="currentColor"/></svg>
652
653  
654
655            </span>
656          </summary>
657          <div id="menu-drawer" class="menu-drawer motion-reduce" tabindex="-1">
658            <div class="menu-drawer__inner-container">
659              <div class="menu-drawer__navigation-container">
660                <nav class="menu-drawer__navigation">
661                  <ul class="menu-drawer__menu list-menu" role="list">
662                    
663                    
664                      
665                        <li>
666                          <a href="/"  class="menu-drawer__menu-item list-menu__item link link--text focus-inset">
667                            Home
668                          </a>
669                        </li>
670                      
671                    
672                    
673                      
674                        
675                        <li>
676                          <details>
677                                <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags">
678                                  <a href="/collections/all"  class="link--text list-menu__item menu-drawer__menu-item">
679                                    Catalog
680                                  </a>
681                                  
682
683
684    <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg>
685
686  
687
688                                  
689
690
691    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
692      <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path>
693    </svg>
694
695  
696
697                                </summary>
698                                <div class="menu-drawer__submenu motion-reduce" tabindex="-1">
699                                  <div class="menu-drawer__inner-submenu">
700                                    <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true">
701                                      
702
703
704    <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg>
705
706  
707
708                                      Catalog
709                                    </button>
710                                    <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1">
711                                      
712                                        
713                                        
714                                          <li>
715                                            <a href="/collections/tudung-sarung-plain"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
716                                              TUDUNG SARUNG PLAIN
717                                            </a>
718                                          </li>
719                                        
720                                      
721                                        
722                                        
723                                          <li>
724                                            <a href="/collections/syria-tali-size-m"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
725                                              SYRIA TALI SIZE M
726                                            </a>
727                                          </li>
728                                        
729                                      
730                                        
731                                        
732                                          <li>
733                                            <a href="/collections/cute-hijabs-ch-coming-soon"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
734                                              CUTE HIJABS ( CH ) 
735                                            </a>
736                                          </li>
737                                        
738                                      
739                                        
740                                        
741                                          <li>
742                                            <a href="/collections/inner-basic"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
743                                              INNER BASIC
744                                            </a>
745                                          </li>
746                                        
747                                      
748                                        
749                                        
750                                          
751                                          <li>
752                                            <details>
753                                                  <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags">
754                                                    <a href="/collections/snowcap-ninja"  class="link--text list-menu__item menu-drawer__menu-item">
755                                                      SNOWCAP / NINJA
756                                                    </a>
757                                                    
758
759
760    <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg>
761
762  
763
764                                                    
765
766
767    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
768      <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path>
769    </svg>
770
771  
772
773                                                  </summary>
774                                                  <div class="menu-drawer__submenu motion-reduce" tabindex="-1">
775                                                    <div class="menu-drawer__inner-submenu">
776                                                      <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true">
777                                                        
778
779
780    <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg>
781
782  
783
784                                                        SNOWCAP / NINJA
785                                                      </button>
786                                                      <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1">
787                                                        
788                                                          
789                                                          
790                                                            <li>
791                                                              <a href="/collections/inner-syria"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
792                                                                INNER 
792SYRIA
793                                                              </a>
794                                                            </li>
795                                                          
796                                                        
797                                                          
798                                                          
799                                                            <li>
800                                                              <a href="/collections/inner-budak"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
801                                                                INNER BUDAK
802                                                              </a>
803                                                            </li>
804                                                          
805                                                        
806                                                          
807                                                          
808                                                            <li>
809                                                              <a href="/collections/inner-neck"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
810                                                                INNER NECK
811                                                              </a>
812                                                            </li>
813                                                          
814                                                        
815                                                        
816                                                      </ul>
817                                                    </div>
818                                                  </div>
819                                            </details>
820                                          </li>
821                                        
822                                      
823                                        
824                                        
825                                          <li>
826                                            <a href="/collections/ts-bawal-baby"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
827                                              TS BAWAL BABY
828                                            </a>
829                                          </li>
830                                        
831                                      
832                                        
833                                        
834                                          <li>
835                                            <a href="/collections/tsp-loose-curve"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
836                                              LCP LOOSE CURVE SIZE M
837                                            </a>
838                                          </li>
839                                        
840                                      
841                                        
842                                        
843                                          <li>
844                                            <a href="/collections/tsp-loose-curve-size-xxl"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
845                                              LCP LOOSE CURVE SIZE XXL
846                                            </a>
847                                          </li>
848                                        
849                                      
850                                        
851                                        
852                                          <li>
853                                            <a href="/collections/tsp-syria-cey"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
854                                              SYRIA CEY SIZE M
855                                            </a>
856                                          </li>
857                                        
858                                      
859                                        
860                                        
861                                          <li>
862                                            <a href="/collections/tsp-bawal-basic"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
863                                              TSP BAWAL SIZE M
864                                            </a>
865                                          </li>
866                                        
867                                      
868                                        
869                                        
870                                          <li>
871                                            <a href="/collections/tsp-slim-1"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
872                                              TUDUNG SARUNG SLIM SIZE L
873                                            </a>
874                                          </li>
875                                        
876                                      
877                                        
878                                        
879                                          <li>
880                                            <a href="/collections/tsp-corak"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
881                                              TSP CORAK DEWASA (S/M)
882                                            </a>
883                                          </li>
884                                        
885                                      
886                                        
887                                        
888                                          <li>
889                                            <a href="/collections/tsp-budak-corak"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
890                                              TSP BUDAK CORAK 6 -10 TAHUN
891                                            </a>
892                                          </li>
893                                        
894                                      
895                                        
896                                        
897                                          <li>
898                                            <a href="/collections/sarung-shifa-size-m-by-sn-hijabs"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
899                                              SARUNG SHIFA SIZE M 
900                                            </a>
901                                          </li>
902                                        
903                                      
904                                        
905                                        
906                                          <li>
907                                            <a href="/collections/tsp-ayra-crepe-size-m-by-sn-hijabs"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
908                                              TSP AYRA CREPE SIZE M 
909                                            </a>
910                                          </li>
911                                        
912                                      
913                                        
914                                        
915                                          <li>
916                                            <a href="/collections/anaqah-hijabs-budak-6-10-tahun"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
917                                              ANAQAH HIJABS BUDAK 6-10 TAHUN
918                                            </a>
919                                          </li>
920                                        
921                                      
922                                        
923                                        
924                                          <li>
925                                            <a href="/collections/anaqah-hijabs-1"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
926                                              ANAQAH HIJABS SIZE L
927                                            </a>
928                                          </li>
929                                        
930                                      
931                                        
932                                        
933                                          <li>
934                                            <a href="/collections/khimar"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
935                                              KHIMAR BERTALI
936                                            </a>
937                                          </li>
938                                        
939                                      
940                                        
941                                        
942                                          <li>
943                                            <a href="/collections/tudung-reject-2"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
944                                              TUDUNG REJECT
945                                            </a>
946                                          </li>
947                                        
948                                      
949                                        
950                                        
951                                          <li>
952                                            <a href="/collections/tudung-sekolah"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
953                                              TUDUNG SEKOLAH 
954                                            </a>
955                                          </li>
956                                        
957                                      
958                                        
959                                        
960                                          <li>
961                                            <a href="/collections/bawal-corak-bidang-45"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
962                                              BAWAL CORAK BIDANG 45
963                                            </a>
964                                          </li>
965                                        
966                                      
967                                        
968                                        
969                                          <li>
970                                            <a href="/collections/tudung-nurse"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
971                                              TUDUNG NURSE
972                                            </a>
973                                          </li>
974                                        
975                                      
976                                        
977                                        
978                                          <li>
979                                            <a href="/collections/purdah-niqab"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
980                                              PURDAH / NIQAB
981                                            </a>
982                                          </li>
983                                        
984                                      
985                                        
986                                        
987                                          <li>
988                                            <a href="/collections/handsock-dewasa-ruffle"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
989                                              HANDSOCK DEWASA (RUFFLE)
990                                            </a>
991                                          </li>
992                                        
993                                      
994                                        
995                                        
996                                          <li>
997                                            <a href="/collections/handsock-cuff"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
998                                              HANDSOCK CUFF
999                                            </a>
1000                                          </li>
1001                                        
1002                                      
1003                                        
1004                                        
1005                                          <li>
1006                                            <a href="/collections/handsock-dewasa"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
1007                                              HANDSOCK DEWASA
1008                                            </a>
1009                                          </li>
1010                                        
1011                                      
1012                                        
1013                                        
1014                                          <li>
1015                                            <a href="/collections/handsock-budak"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
1016                                              HANDSOCK BUDAK
1017                                            </a>
1018                                          </li>
1019                                        
1020                                      
1021                                        
1022                                        
1023                                          <li>
1024                                            <a href="/collections/handsock-aisyah"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
1025                                              HANDSOCK AISYAH
1026                                            </a>
1027                                          </li>
1028                                        
1029                                      
1030                                        
1031                                        
1032                                          
1033                                          <li>
1034                                            <details>
1035                                                  <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags">
1036                                                    <a href="/collections/jubah-kanak2"  class="link--text list-menu__item menu-drawer__menu-item">
1037                                                      JUBAH KANAK-KANAK
1038                                                    </a>
1039                                                    
1040
1041
1042    <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg>
1043
1044  
1045
1046                                                    
1047
1048
1049    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
1050      <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path>
1051    </svg>
1052
1053  
1054
1055                                                  </summary>
1056                                                  <div class="menu-drawer__submenu motion-reduce" tabindex="-1">
1057                                                    <div class="menu-drawer__inner-submenu">
1058                                                      <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true">
1059                                                        
1060
1061
1062    <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26
1062.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg>
1063
1064  
1065
1066                                                        JUBAH KANAK-KANAK
1067                                                      </button>
1068                                                      <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1">
1069                                                        
1070                                                          
1071                                                          
1072                                                            <li>
1073                                                              <a href="/collections/jubah-cey-3-4-tahun"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
1074                                                                JUBAH CEY 3-4 TAHUN
1075                                                              </a>
1076                                                            </li>
1077                                                          
1078                                                        
1079                                                          
1080                                                          
1081                                                            <li>
1082                                                              <a href="/collections/jubah-cey-6-10-tahun"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
1083                                                                JUBAH CEY 6-10 TAHUN 
1084                                                              </a>
1085                                                            </li>
1086                                                          
1087                                                        
1088                                                        
1089                                                      </ul>
1090                                                    </div>
1091                                                  </div>
1092                                            </details>
1093                                          </li>
1094                                        
1095                                      
1096                                        
1097                                        
1098                                          <li>
1099                                            <a href="/collections/blouse-zehra"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
1100                                              BLOUSE ZEHRA
1101                                            </a>
1102                                          </li>
1103                                        
1104                                      
1105                                        
1106                                        
1107                                          <li>
1108                                            <a href="/collections/baggy-stripe-freesize-by-snhijabs"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
1109                                              BAGGY STRIPE FREESIZE BY SNHIJABS
1110                                            </a>
1111                                          </li>
1112                                        
1113                                      
1114                                        
1115                                        
1116                                          <li>
1117                                            <a href="/collections/tunik-zara-square"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
1118                                              TUNIK ZARA SQUARE
1119                                            </a>
1120                                          </li>
1121                                        
1122                                      
1123                                        
1124                                        
1125                                          <li>
1126                                            <a href="/collections/abaya"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
1127                                              ABAYA 
1128                                            </a>
1129                                          </li>
1130                                        
1131                                      
1132                                        
1133                                        
1134                                          <li>
1135                                            <a href="/collections/minyak-wangi"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
1136                                              MINYAK WANGI
1137                                            </a>
1138                                          </li>
1139                                        
1140                                      
1141                                        
1142                                        
1143                                          <li>
1144                                            <a href="/collections/add-on"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
1145                                              ADD ON
1146                                            </a>
1147                                          </li>
1148                                        
1149                                      
1150                                      
1151                                    </ul>
1152                                  </div>
1153                                </div>
1154                          </details>
1155                        </li>
1156                      
1157                    
1158                    
1159                      
1160                        <li>
1161                          <a href="/store-locator"  class="menu-drawer__menu-item list-menu__item link link--text focus-inset">
1162                            Lokasi 
1163                          </a>
1164                        </li>
1165                      
1166                    
1167                    
1168                      
1169                        <li>
1170                          <a href="https://wa.link/4fj3vc"  target="_blank"  class="menu-drawer__menu-item list-menu__item link link--text focus-inset">
1171                            Daftar MEMBER
1172                          </a>
1173                        </li>
1174                      
1175                    
1176                  </ul>
1177                </nav>
1178
1179                <div class="menu-drawer__utility-links">
1180
1181                  
1182
1183
1184
1185
1186
1187                  
1188                  
1189                  
1190                    <a href="/account/login" class="menu-drawer__account link link--text focus-inset h5">
1191                       
1192
1193
1194    <svg class="icon icon-account " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M300,296.19c-70.7,0-137.11,28.74-187,80.93-49.59,51.87-76.9,120.77-76.9,194v25H563.89v-25c0-73.22-27.31-142.12-76.9-194C437.11,324.93,370.7,296.19,300,296.19ZM87.42,546.11C99.29,433.81,190.1,346.19,300,346.19s200.71,87.62,212.58,199.92Z" fill="currentColor"/><path d="M300,285.34c77.6,0,140.73-63.13,140.73-140.73S377.6,3.89,300,3.89,159.27,67,159.27,144.61,222.4,285.34,300,285.34Zm0-231.45a90.73,90.73,0,1,1-90.73,90.72A90.82,90.82,0,0,1,300,53.89Z" fill="currentColor"/></svg>
1195
1196  
1197 
1198                      
1199                      SN HIJABS HQ
1200                    </a>
1201                  
1202                    <a href="/account/register" class="menu-drawer__account link link--text focus-inset h5">
1203                      
1204                       
1205
1206
1207    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-plus " fill="none" viewBox="0 0 10 10">
1208      <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"></path>
1209    </svg>
1210
1211  
1212 
1213                      SEJATI WALK SANDAKAN
1214                    </a>
1215                  
1216                  
1217                  
1218                </div>
1219              </div>
1220            </div>
1221          </div>
1222        </details>
1223      </header-drawer>
1224  
1225      
1226        <a href="/" class="header__heading-link link link--text focus-inset" itemprop="url">
1227          <img src="https://cdn.store-assets.com/s/385982/f/17617488.png" class="header__heading-logo" alt="SAUQAH " loading="lazy" itemprop="logo">
1228        </a>
1229      
1230
1231      
1232      <div class="header__search-input" tabindex="-1">
1233        <form action="/search" method="get" role="search" class="search search-modal__form">
1234          <div class="field">
1235            <input class="search__input field__input" 
1236              id="Search-In-Modal"
1237              type="search"
1238              name="q"
1239              value=""
1240              placeholder="Cari"
1241              autocomplete="off"
1242            >
1243            <label class="field__label" for="Search-In-Modal">Cari</label>
1244            <div class="dropdown" id="searchDropdown"></div>
1245            <input type="hidden" name="search_history" class="hidden_search_history">
1246            <input type="hidden" name="options[prefix]" value="last">
1247            <button class="search__button field__button" aria-label="Cari">
1248              <svg class="icon icon-search" aria-hidden="true" focusable="false" role="presentation">
1249                <use href="#icon-search">
1250              </svg>
1251            </button> 
1252          </div>
1253        </form>
1254      </div>
1255      
1256
1257      <nav class="header__inline-menu">
1258        <ul class="list-menu list-menu--inline" role="list">
1259          
1260            
1261              
1262                <li>
1263                  <a href="/"  class="header__menu-item header__menu-item list-menu__item link link--text focus-inset">
1264                    Home
1265                  </a>
1266                </li>
1267              
1268            
1269            
1270              
1271                
1272                <li>
1273                  <details-disclosure>
1274                    <details>
1275                      <summary class="header__menu-item list-menu__item link focus-inset">
1276                        <a href="/collections/all"  >Catalog</a>
1277                        
1278
1279
1280    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
1281      <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path>
1282    </svg>
1283
1284  
1285
1286                      </summary>
1287                      <ul class="header__submenu list-menu list-menu--disclosure caption-large motion-reduce" role="list" tabindex="-1">
1288                        
1289                        
1290                        
1291                          
1292                            
1293                            <li>
1294                              <a href="/collections/tudung-sarung-plain"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1295                                TUDUNG SARUNG PLAIN
1296                              </a>
1297                            </li>
1298                          
1299                        
1300                        
1301                          
1302                            
1303                            <li>
1304                              <a href="/collections/syria-tali-size-m"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1305                                SYRIA TALI SIZE M
1306                              </a>
1307                            </li>
1308                          
1309                        
1310                        
1311                          
1312                            
1313                            <li>
1314                              <a href="/collections/cute-hijabs-ch-coming-soon"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1315                                CUTE HIJABS ( CH ) 
1316                              </a>
1317                            </li>
1318                          
1319                        
1320                        
1321                          
1322                            
1323                            <li>
1324                              <a href="/collections/inner-basic"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1325                                INNER BASIC
1326                              </a>
1327                            </li>
1328                          
1329                        
1330                        
1331                          
1332                            
1333                            <li>
1334                              <details-disclosure>
1335                                <details>
1336                                  <summary class="header__menu-item link link--text list-menu__item focus-inset caption-large">
1337                                    <a href="/collections/snowcap-ninja" >SNOWCAP / NINJA</a>
1338                                    
1339
1340
1341    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret rotate-90" viewBox="0 0 10 6">
1342      <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path>
1343    </svg>
1344
1345  
1346
1347                                  </summary>
1348                                  <ul class="header__submenu list-menu list-menu--disclosure motion-reduce">
1349                                    
1350                                      
1351                                      
1352                                        <li>
1353                                          <a href="/collections/inner-syria"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">INNER SYRIA</a>
1354                                        </li>
1355                                      
1356                                    
1357                                      
1358                                      
1359                                        <li>
1360                                          <a href="/collections/inner-budak"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">INNER BUDAK</a>
1361                                        </li>
1362                                      
1363                                    
1364                                      
1365                                      
1366                                        <li>
1367                                          <a href="/collections/inner-neck"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">INNER NECK</a>
1368                                        </li>
1369                                      
1370                                    
1371                                  </ul>
1372                                </details>
1373                              </details-disclosure>
1374                            </li>
1375                            
1376                          
1377                        
1378                        
1379                          
1380                            
1381                            <li>
1382                              <a href="/collections/ts-bawal-baby"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1383                                TS BAWAL BABY
1384                              </a>
1385                            </li>
1386                          
1387                        
1388                        
1389                          
1390                            
1391                            <li>
1392                              <a href="/collections/tsp-loose-curve"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1393                                LCP LOOSE CURVE SIZE M
1394                              </a>
1395                            </li>
1396                          
1397                        
1398                        
1399                          
1400                            
1401                            <li>
1402                              <a href="/collections/tsp-loose-curve-size-xxl"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1403                                LCP LOOSE CURVE SIZE XXL
1404                              </a>
1405                            </li>
1406                          
1407   
1407                     
1408                        
1409                          
1410                            
1411                            <li>
1412                              <a href="/collections/tsp-syria-cey"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1413                                SYRIA CEY SIZE M
1414                              </a>
1415                            </li>
1416                          
1417                        
1418                        
1419                          
1420                            
1421                            <li>
1422                              <a href="/collections/tsp-bawal-basic"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1423                                TSP BAWAL SIZE M
1424                              </a>
1425                            </li>
1426                          
1427                        
1428                        
1429                          
1430                            
1431                            <li>
1432                              <a href="/collections/tsp-slim-1"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1433                                TUDUNG SARUNG SLIM SIZE L
1434                              </a>
1435                            </li>
1436                          
1437                        
1438                        
1439                          
1440                            
1441                            <li>
1442                              <a href="/collections/tsp-corak"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1443                                TSP CORAK DEWASA (S/M)
1444                              </a>
1445                            </li>
1446                          
1447                        
1448                        
1449                          
1450                            
1451                            <li>
1452                              <a href="/collections/tsp-budak-corak"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1453                                TSP BUDAK CORAK 6 -10 TAHUN
1454                              </a>
1455                            </li>
1456                          
1457                        
1458                        
1459                          
1460                            
1461                            <li>
1462                              <a href="/collections/sarung-shifa-size-m-by-sn-hijabs"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1463                                SARUNG SHIFA SIZE M 
1464                              </a>
1465                            </li>
1466                          
1467                        
1468                        
1469                          
1470                            
1471                            <li>
1472                              <a href="/collections/tsp-ayra-crepe-size-m-by-sn-hijabs"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1473                                TSP AYRA CREPE SIZE M 
1474                              </a>
1475                            </li>
1476                          
1477                        
1478                        
1479                          
1480                            
1481                            <li>
1482                              <a href="/collections/anaqah-hijabs-budak-6-10-tahun"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1483                                ANAQAH HIJABS BUDAK 6-10 TAHUN
1484                              </a>
1485                            </li>
1486                          
1487                        
1488                        
1489                          
1490                            
1491                            <li>
1492                              <a href="/collections/anaqah-hijabs-1"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1493                                ANAQAH HIJABS SIZE L
1494                              </a>
1495                            </li>
1496                          
1497                        
1498                        
1499                          
1500                            
1501                            <li>
1502                              <a href="/collections/khimar"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1503                                KHIMAR BERTALI
1504                              </a>
1505                            </li>
1506                          
1507                        
1508                        
1509                          
1510                            
1511                            <li>
1512                              <a href="/collections/tudung-reject-2"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1513                                TUDUNG REJECT
1514                              </a>
1515                            </li>
1516                          
1517                        
1518                        
1519                          
1520                            
1521                            <li>
1522                              <a href="/collections/tudung-sekolah"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1523                                TUDUNG SEKOLAH 
1524                              </a>
1525                            </li>
1526                          
1527                        
1528                        
1529                          
1530                            
1531                            <li>
1532                              <a href="/collections/bawal-corak-bidang-45"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1533                                BAWAL CORAK BIDANG 45
1534                              </a>
1535                            </li>
1536                          
1537                        
1538                        
1539                          
1540                            
1541                            <li>
1542                              <a href="/collections/tudung-nurse"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1543                                TUDUNG NURSE
1544                              </a>
1545                            </li>
1546                          
1547                        
1548                        
1549                          
1550                            
1551                            <li>
1552                              <a href="/collections/purdah-niqab"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1553                                PURDAH / NIQAB
1554                              </a>
1555                            </li>
1556                          
1557                        
1558                        
1559                          
1560                            
1561                            <li>
1562                              <a href="/collections/handsock-dewasa-ruffle"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1563                                HANDSOCK DEWASA (RUFFLE)
1564                              </a>
1565                            </li>
1566                          
1567                        
1568                        
1569                          
1570                            
1571                            <li>
1572                              <a href="/collections/handsock-cuff"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1573                                HANDSOCK CUFF
1574                              </a>
1575                            </li>
1576                          
1577                        
1578                        
1579                          
1580                            
1581                            <li>
1582                              <a href="/collections/handsock-dewasa"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1583                                HANDSOCK DEWASA
1584                              </a>
1585                            </li>
1586                          
1587                        
1588                        
1589                          
1590                            
1591                            <li>
1592                              <a href="/collections/handsock-budak"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1593                                HANDSOCK BUDAK
1594                              </a>
1595                            </li>
1596                          
1597                        
1598                        
1599                          
1600                            
1601                            <li>
1602                              <a href="/collections/handsock-aisyah"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1603                                HANDSOCK AISYAH
1604                              </a>
1605                            </li>
1606                          
1607                        
1608                        
1609                          
1610                            
1611                            <li>
1612                              <details-disclosure>
1613                                <details>
1614                                  <summary class="header__menu-item link link--text list-menu__item focus-inset caption-large">
1615                                    <a href="/collections/jubah-kanak2" >JUBAH KANAK-KANAK</a>
1616                                    
1617
1618
1619    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret rotate-90" viewBox="0 0 10 6">
1620      <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path>
1621    </svg>
1622
1623  
1624
1625                                  </summary>
1626                                  <ul class="header__submenu list-menu list-menu--disclosure motion-reduce">
1627                                    
1628                                      
1629                                      
1630                                        <li>
1631                                          <a href="/collections/jubah-cey-3-4-tahun"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">JUBAH CEY 3-4 TAHUN</a>
1632                                        </li>
1633                                      
1634                                    
1635                                      
1636                                      
1637                                        <li>
1638                                          <a href="/collections/jubah-cey-6-10-tahun"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">JUBAH CEY 6-10 TAHUN </a>
1639                                        </li>
1640                                      
1641                                    
1642                                  </ul>
1643                                </details>
1644                              </details-disclosure>
1645                            </li>
1646                            
1647                          
1648                        
1649                        
1650                          
1651                            
1652                            <li>
1653                              <a href="/collections/blouse-zehra"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1654                                BLOUSE ZEHRA
1655                              </a>
1656                            </li>
1657                          
1658                        
1659                        
1660                          
1661                            
1662                            <li>
1663                              <a href="/collections/baggy-stripe-freesize-by-snhijabs"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1664                                BAGGY STRIPE FREESIZE BY SNHIJABS
1665                              </a>
1666                            </li>
1667                          
1668                        
1669                        
1670                          
1671                            
1672                            <li>
1673                              <a href="/collections/tunik-zara-square"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1674                                TUNIK ZARA SQUARE
1675                              </a>
1676                            </li>
1677                          
1678                        
1679                        
1680                          
1681                            
1682                            <li>
1683                              <a href="/collections/abaya"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1684                                ABAYA 
1685                              </a>
1686                            </li>
1687                          
1688                        
1689                        
1690                          
1691                            
1692                            <li>
1693                              <a href="/collections/minyak-wangi"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1694                                MINYAK WANGI
1695                              </a>
1696                            </li>
1697                          
1698                        
1699                        
1700                          
1701                            
1702                            <li>
1703                              <a href="/collections/add-on"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
1704                                ADD ON
1705                              </a>
1706                            </li>
1707                          
1708                        
1709                      </ul>
1710                    </details>
1711                  </details-disclosure>
1712                </li>
1713              
1714            
1715            
1716              
1717                <li>
1718                  <a href="/store-locator"  class="header__menu-item header__menu-item list-menu__item link link--text focus-inset">
1719                    Lokasi 
1720                  </a>
1721                </li>
1722              
1723            
1724            
1725              
1726                <li>
1727                  <a href="https://wa.link/4fj3vc"  target="_blank"  class="header__menu-item header__menu-item list-menu__item link link--text focus-inset">
1728                    Daftar MEMBER
1729                  </a>
1730                </li>
1731              
1732            
1733            
1734            
1735              
1736                
1737                  
1738                
1739                  
1740                
1741              
1742            
1743        </ul>
1744      </nav>
1745      <div class="header__icons">
1746
1747        
1748          
1749            <div class="header__icon header__icon--account link link--text focus-inset small-hide medium-hide" style="position: relative;">
1750              <a href="/account/login" class="header__icon link link--text focus-inset p-2">
1751                
1752
1753
1754    <svg class="icon icon-account " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M300,296.19c-70.7,0-137.11,28.74-187,80.93-49.59,51.87-76.9,120.77-76.9,194v25H563.89v-25c0-73.22-27.31-142.12-76.9-194C437.11,324.93,370.7,296.19,300,296.19ZM87.42,546.11C99.29,433.81,190.1,346.19,300,346.19s200.71,87.62,212.58,199.92Z" fill="currentColor"/><path d="M300,285.34c77.6,0,140.73-63.13,140.73-140.73S377.6,3.89,300,3.89,159.27,67,159.27,144.61,222.4,285.34,300,285.34Zm0-231.45a90.73,90.73,0,1,1-90.73,90.72A90.82,90.82,0,0,1,300,53.89Z" fill="currentColor"/></svg>
1755
1756  
1757
1758                <span id="my-account" class="header__link-label">Daftar masuk</span>
1759              </a>
1760
1761              <!-- Referral Notification Popup for Desktop -->
1762              <div id="referralNotification" class="referral-notification" style="display: none;">
1763                <button class="close-btn" onclick="dismissReferralNotification()">&times;</button>
1764                <div style="text-align: center; margin-bottom: 16px;">
1765                  <div style="width: 100px; height: 100px; margin: 0 auto;">
1766                    <img src="https://resources.easystore.co/storefront/icons/channels/vector_referral_program.svg">
1767                  </div>
1768                </div>
1769                <p id="referralSignupMessage" style="text-align: center; font-size: 14px; color: #666; margin: 0 0 20px 0;">
1770                  Rakan anda menghadiahkan anda kredit  ! Daftar sekarang untuk menebus.
1771                </p>
1772                <div style="text-align: center;">
1773                  <button class="btn" onclick="goToSignupPage()" style="width: 100%;">
1774                    Daftar Sekarang
1775                  </button>
1776                </div>
1777              </div>
1778            </div>
1779          
1780        
1781
1782        <a href="/cart" class="header__icon link link--text focus-inset" id="cart-icon-bubble">
1783          <span class="header__icon--cart">
1784            
1785
1786
1787    <svg class="icon icon-cart-empty " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496.56 600"><path d="M453.52,128.63a25,25,0,0,0-24.91-22.8H364.72a117.48,117.48,0,0,0-232.89,0H67.94A25,25,0,0,0,43,128.63L8.8,515.21a72.11,72.11,0,0,0,19.05,55.6,79,79,0,0,0,58.22,25.3H410.49a79,79,0,0,0,58.22-25.3,72.11,72.11,0,0,0,19.05-55.6ZM248.28,53.89a67.58,67.58,0,0,1,65.65,51.94H182.63A67.57,67.57,0,0,1,248.28,53.89ZM431.83,537.05a28.85,28.85,0,0,1-21.34,9.06H86.07a28.85,28.85,0,0,1-21.34-9.06,22.69,22.69,0,0,1-6.13-17.43L90.82,155.83h40v51.23a25,25,0,0,0,50,0V155.83h135v51.23a25,25,0,0,0,50,0V155.83h40L438,519.62A22.68,22.68,0,0,1,431.83,537.05Z" fill="currentColor"/></svg>
1788
1789  
1790
1791            <div class="cart-count-bubble hidden">
1792              <span aria-hidden="true" class="js-content-cart-count">0</span>
1793            </div>
1794          </span>
1795          <span class="header__link-label medium-hide small-hide">
1796            Bakul
1797          </span>
1798        </a>
1799
1800        
1801          
1802          <!-- Referral Notification Modal for Mobile -->
1803          <details-modal class="referral-modal" id="referralMobileModal">
1804            <details>
1805              <summary class="referral-modal__toggle" aria-haspopup="dialog" aria-label="Open referral modal" style="display: none;">
1806              </summary>
1807              <div class="modal-overlay referral-modal-overlay"></div>
1808              <div class="referral-modal__dialog" role="dialog" aria-modal="true" aria-label="Referral notification">
1809                <div class="referral-modal__content">
1810                  <button type="button" class="modal__close-button" aria-label="Close" onclick="closeMobileReferralModal()" style="position: absolute; top: 16px; right: 16px; background: none; border: none; font-size: 24px; cursor: pointer;">
1811                    &times;
1812                  </button>
1813                  
1814                  <div style="margin-bottom: 24px;">
1815                    <div style="width: 120px; height: 120px; margin: 0 auto 20px;">
1816                      <img src="https://resources.easystore.co/storefront/icons/channels/vector_referral_program.svg" style="width: 100%; height: 100%;">
1817                    </div>
1818                  </div>
1819                  
1820                  <p id="referralSignupMessageMobile" style="font-size: 16px; color: #333; margin: 0 0 30px 0; line-height: 1.5;">
1821                    Rakan anda menghadiahkan anda kredit  ! Daftar sekarang untuk menebus.
1822                  </p>
1823                  
1824                  <button type="button" class="btn" onclick="goToSignupPageFromMobile()" style="width: 100%;">
1825                    Daftar Sekarang
1826                  </button>
1827                </div>
1828              </div>
1829            </details>
1830          </details-modal>
1831          
1832        
1833        
1834      </div>
1835    </header>
1836  </sticky-header>
1837  
1838<cart-notification>
1839  <div class="cart-notification-wrapper page-width color-background-1">
1840    <div id="cart-notification" class="cart-notification focus-inset" aria-modal="true" aria-label="Ditambah ke troli" role="dialog" tabindex="-1">
1841      <div class="cart-notification__header">
1842        <h2 class="cart-notification__heading caption-large">
1843
1844
1845    <svg class="icon icon-checkmark color-foreground-text " aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 9" fill="none">
1846      <path fill-rule="evenodd" clip-rule="evenodd" d="M11.35.643a.5.5 0 01.006.707l-6.77 6.886a.5.5 0 01-.719-.006L.638 4.845a.5.5 0 11.724-.69l2.872 3.011 6.41-6.517a.5.5 0 01.707-.006h-.001z" fill="currentColor"></path>
1847    </svg>
1848
1849  
1850 Ditambah ke troli</h2>
1851        <button type="button" class="cart-notification__close modal__close-button link link--text focus-inset" aria-label="accessibility.close">
1852          
1853
1854
1855    <svg class="icon icon-close " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M335.36,300,581.87,53.48a25,25,0,0,0-35.35-35.35L300,264.64,53.48,18.13A25,25,0,0,0,18.13,53.48L264.64,300,18.13,546.52a25,25,0,0,0,35.35,35.35L300,335.36,546.52,581.87a25,25,0,0,0,35.35-35.35Z" fill="currentColor"/></svg>
1856
1857  
1858
1859        </button>
1860      </div>
1861      <div id="cart-notification-product" class="cart-notification-product"></div>
1862      <div class="cart-notification__links">
1863        <a href="/cart" id="cart-notification-button" class="button button--secondary button--full-width">Bakul saya (<span class="js-content-cart-count">0</span>)</a>
1864        <form action="/cart" method="post" id="cart-notification-form">
1865          <input type="hidden" name="_token" value="QjkuaKFhMM9UIqEw7FCb0yX9h1bAJAHWeFlj0JYq">
1866          <input type="hidden" name="current_currency" value="">
1867          <button class="button button--primary button--full-width" name="checkout" value="true">Checkout</button>
1868        </form>
1869        <button type="button" class="link button-label">Terus membeli-belah</button>
1870      </div>
1871    </div>
1872  </div>
1873</cart-notification>
1874<style>
1875  .cart-notification {
1876     display: none;
1877  }
1878</style>
1879<script>
1880document.getElementById('cart-notification-form').addEventListener('submit',(event)=>{
1881  if(event.submitter) event.submitter.classList.add('loading');
1882})
1883
1884</script>
1884
1885
1886</div>
1887
1888
1889<script>
1890
1891  class StickyHeader extends HTMLElement {
1892    constructor() {
1893      super();
1894    }
1895
1896    connectedCallback() {
1897      this.header = document.getElementById('easystore-section-header');
1898      this.headerBounds = {};
1899      this.currentScrollTop = 0;
1900      this.preventReveal = false;
1901
1902      this.onScrollHandler = this.onScroll.bind(this);
1903      this.hideHeaderOnScrollUp = () => this.preventReveal = true;
1904
1905      this.addEventListener('preventHeaderReveal', this.hideHeaderOnScrollUp);
1906      window.addEventListener('scroll', this.onScrollHandler, false);
1907
1908      this.createObserver();
1909    }
1910
1911    disconnectedCallback() {
1912      this.removeEventListener('preventHeaderReveal', this.hideHeaderOnScrollUp);
1913      window.removeEventListener('scroll', this.onScrollHandler);
1914    }
1915
1916    createObserver() {
1917      let observer = new IntersectionObserver((entries, observer) => {
1918        this.headerBounds = entries[0].intersectionRect;
1919        observer.disconnect();
1920      });
1921
1922      observer.observe(this.header);
1923    }
1924
1925    onScroll() {
1926      const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
1927
1928      if (scrollTop > this.currentScrollTop && scrollTop > this.headerBounds.bottom) {
1929        requestAnimationFrame(this.hide.bind(this));
1930      } else if (scrollTop < this.currentScrollTop && scrollTop > this.headerBounds.bottom) {
1931        if (!this.preventReveal) {
1932          requestAnimationFrame(this.reveal.bind(this));
1933        } else {
1934          window.clearTimeout(this.isScrolling);
1935
1936          this.isScrolling = setTimeout(() => {
1937            this.preventReveal = false;
1938          }, 66);
1939
1940          requestAnimationFrame(this.hide.bind(this));
1941        }
1942      } else if (scrollTop <= this.headerBounds.top) {
1943        requestAnimationFrame(this.reset.bind(this));
1944      }
1945
1946
1947      this.currentScrollTop = scrollTop;
1948    }
1949
1950    hide() {
1951      this.header.classList.add('easystore-section-header-hidden', 'easystore-section-header-sticky');
1952      this.closeMenuDisclosure();
1953      // this.closeSearchModal();
1954    }
1955
1956    reveal() {
1957      this.header.classList.add('easystore-section-header-sticky', 'animate');
1958      this.header.classList.remove('easystore-section-header-hidden');
1959    }
1960
1961    reset() {
1962      this.header.classList.remove('easystore-section-header-hidden', 'easystore-section-header-sticky', 'animate');
1963    }
1964
1965    closeMenuDisclosure() {
1966      this.disclosures = this.disclosures || this.header.querySelectorAll('details-disclosure');
1967      this.disclosures.forEach(disclosure => disclosure.close());
1968    }
1969
1970    // closeSearchModal() {
1971    //   this.searchModal = this.searchModal || this.header.querySelector('details-modal');
1972    //   this.searchModal.close(false);
1973    // }
1974  }
1975
1976  customElements.define('sticky-header', StickyHeader);
1977
1978  
1979  class DetailsDisclosure extends HTMLElement{
1980    constructor() {
1981      super();
1982      this.mainDetailsToggle = this.querySelector('details');
1983      // this.mainDetailsToggle.addEventListener('focusout', this.onFocusOut.bind(this));
1984      this.mainDetailsToggle.addEventListener('mouseover', this.open.bind(this));
1985      this.mainDetailsToggle.addEventListener('mouseleave', this.close.bind(this));
1986    }
1987
1988    onFocusOut() {
1989      setTimeout(() => {
1990        if (!this.contains(document.activeElement)) this.close();
1991      })
1992    }
1993
1994    open() {
1995      this.mainDetailsToggle.setAttribute('open',1)
1996    }
1997
1998    close() {
1999      this.mainDetailsToggle.removeAttribute('open')
2000    }
2001  }
2002
2003  customElements.define('details-disclosure', DetailsDisclosure);
2004
2005  function clearAll() {
2006    localStorage.removeItem('searchHistory'); 
2007    
2008    var customer = "";
2009    if(customer) {
2010      // Your logic to clear all data or call an endpoint
2011      fetch('/account/search_histories', {
2012          method: 'DELETE',
2013          headers: {
2014            "Content-Type": "application/json",
2015            "X-Requested-With": "XMLHttpRequest"
2016          },
2017          body: JSON.stringify({
2018            _token: "QjkuaKFhMM9UIqEw7FCb0yX9h1bAJAHWeFlj0JYq"
2019          }),
2020      })
2021      .then(response => response.json())
2022    }
2023  }
2024  // End - delete search history from local storage
2025  
2026  // search history dropdown  
2027  var searchInputs = document.querySelectorAll('.search__input');
2028  
2029  if(searchInputs.length > 0) {
2030    
2031    searchInputs.forEach((searchInput)=> {
2032    
2033      searchInput.addEventListener('focus', function() {
2034        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
2035        searchDropdown.innerHTML = ''; // Clear existing items
2036  
2037        // retrieve data from local storage
2038        var searchHistoryData = JSON.parse(localStorage.getItem('searchHistory')) || [];
2039  
2040        // Convert JSON to string
2041        var search_history_json = JSON.stringify(searchHistoryData);
2042  
2043        // Set the value of the hidden input
2044        searchInput.closest('form').querySelector(".hidden_search_history").value = search_history_json;
2045  
2046        // create dropdown items
2047        var clearAllItem = document.createElement('div');
2048        clearAllItem.className = 'dropdown-item clear-all';
2049        clearAllItem.textContent = 'Clear';
2050        clearAllItem.addEventListener('click', function() {
2051          clearAll();
2052          searchDropdown.style.display = 'none';
2053          searchInput.classList.remove('is-focus');
2054        });
2055        searchDropdown.appendChild(clearAllItem);
2056  
2057        // create dropdown items
2058        searchHistoryData.forEach(function(item) {
2059          var dropdownItem = document.createElement('div');
2060          dropdownItem.className = 'dropdown-item';
2061          dropdownItem.textContent = item.term;
2062          dropdownItem.addEventListener('click', function() {
2063            searchInput.value = item.term;
2064            searchInput.closest('form').submit();
2065            searchDropdown.style.display = 'none';
2066          });
2067          searchDropdown.appendChild(dropdownItem);
2068        });
2069  
2070        if(searchHistoryData.length > 0){
2071          // display the dropdown
2072          searchInput.classList.add('is-focus');
2073          document.body.classList.add('search-input-focus');
2074          searchDropdown.style.display = 'block';
2075        }
2076      });
2077  
2078      searchInput.addEventListener("focusout", (event) => {
2079        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
2080        searchInput.classList.remove('is-focus');
2081        searchDropdown.classList.add('transparent');
2082        setTimeout(()=>{
2083          searchDropdown.style.display = 'none';
2084          searchDropdown.classList.remove('transparent');
2085          document.body.classList.remove('search-input-focus');
2086        }, 400);
2087      });
2088    })
2089  }
2090  // End - search history dropdown
2091
2092  // referral notification popup
2093  const referralMessageTemplate = 'Rakan anda menghadiahkan anda kredit __CURRENCY_CODE__ __CREDIT_AMOUNT__! Daftar sekarang untuk menebus.';
2094  const shopCurrency = 'RM';
2095
2096  function getCookie(name) {
2097    const value = `; ${document.cookie}`;
2098    const parts = value.split(`; ${name}=`);
2099    if (parts.length === 2) return parts.pop().split(';').shift();
2100    return null;
2101  }
2102
2103  function removeCookie(name) {
2104    document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;
2105  }
2106
2107  function showReferralNotification() {
2108    const referralCode = getCookie('customer_referral_code');
2109    
2110    
2111    const customerReferralCode = null;
2112    
2113    
2114    const activeReferralCode = referralCode || customerReferralCode;
2115    const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {};
2116    
2117    if (referralData.timestamp && referralData.expirationDays) {
2118      const expirationTime = referralData.timestamp + (referralData.expirationDays * 24 * 60 * 60 * 1000);
2119      if (Date.now() > expirationTime) {
2120        localStorage.removeItem('referral_notification_data');
2121        return;
2122      }
2123    }
2124    
2125    if (referralData.dismissed) return;
2126    
2127    if (activeReferralCode) {
2128      if (referralData.creditAmount) {
2129        displayReferralNotification(referralData.creditAmount);
2130      } else {
2131        fetchReferralCampaignData(activeReferralCode);
2132      }
2133    }
2134  }
2135    
2136  function fetchReferralCampaignData(referralCode) {
2137    fetch(`/customer/referral_program/campaigns/${referralCode}`)
2138      .then(response => {
2139        if (!response.ok) {
2140          throw new Error('Network response was not ok');
2141        }
2142        return response.json();
2143      })
2144      .then(data => {
2145        let refereeCreditAmount = null;
2146        if (data.data.campaign && data.data.campaign.referral_rules) {
2147          const refereeRule = data.data.campaign.referral_rules.find(rule => 
2148            rule.target_type === 'referee' && 
2149            rule.event_name === 'customer/create' && 
2150            rule.entitlement && 
2151            rule.entitlement.type === 'credit'
2152          );
2153          
2154          if (refereeRule) {
2155            refereeCreditAmount = refereeRule.entitlement.amount;
2156          }
2157        }
2158        
2159        const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {};
2160        referralData.creditAmount = refereeCreditAmount;
2161        referralData.dismissed = referralData.dismissed || false;
2162        referralData.timestamp = Date.now();
2163        referralData.expirationDays = 3;
2164        localStorage.setItem('referral_notification_data', JSON.stringify(referralData));
2165        
2166        displayReferralNotification(refereeCreditAmount);
2167      })
2168      .catch(error => {
2169        removeCookie('customer_referral_code');
2170      });
2171  }
2172    
2173  function displayReferralNotification(creditAmount = null) {
2174    const isMobile = innerWidth <= 749;
2175    
2176    if (isMobile) {
2177      const mobileModal = document.querySelector('#referralMobileModal details');
2178      const mobileMessageElement = document.getElementById('referralSignupMessageMobile');
2179      
2180      if (mobileModal && mobileMessageElement) {
2181        if (creditAmount) {
2182          const finalMessage = referralMessageTemplate
2183            .replace('__CREDIT_AMOUNT__', creditAmount)
2184            .replace('__CURRENCY_CODE__', shopCurrency);
2185          
2186          mobileMessageElement.textContent = finalMessage;
2187        }
2188        
2189        mobileModal.setAttribute('open', '');
2190      }
2191    } else {
2192      const notification = document.getElementById('referralNotification');
2193      
2194      if (notification) {
2195        if (creditAmount) {
2196          const messageElement = document.getElementById('referralSignupMessage');
2197          if (messageElement) {
2198            const finalMessage = referralMessageTemplate
2199              .replace('__CREDIT_AMOUNT__', creditAmount)
2200              .replace('__CURRENCY_CODE__', shopCurrency);
2201            
2202            messageElement.textContent = finalMessage;
2203          }
2204        }
2205        
2206        notification.style.display = 'block';
2207      }
2208    }
2209  }
2210
2211  showReferralNotification();
2212
2213  addEventListener('beforeunload', function() {
2214    const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {};
2215    
2216    if (referralData.creditAmount !== undefined) {
2217      referralData.creditAmount = null;
2218      localStorage.setItem('referral_notification_data', JSON.stringify(referralData));
2219    }
2220  });
2221
2222  function closeReferralNotification() {
2223    const notification = document.getElementById('referralNotification');
2224    if (notification) {
2225      notification.style.display = 'none';
2226    }
2227  }
2228
2229  function dismissReferralNotification() {
2230    const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {};
2231    
2232    referralData.dismissed = true;
2233    referralData.timestamp = referralData.timestamp || Date.now();
2234    referralData.expirationDays = referralData.expirationDays || 3;
2235    
2236    localStorage.setItem('referral_notification_data', JSON.stringify(referralData));
2237    
2238    closeReferralNotification();
2239  }
2240
2241  function goToSignupPage() {
2242    location.href = '/account/register';
2243    dismissReferralNotification();
2244  }
2245
2246  function closeMobileReferralModal() {
2247    const mobileModal = document.querySelector('#referralMobileModal details');
2248    if (mobileModal) {
2249      mobileModal.removeAttribute('open');
2250    }
2251    
2252    const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {};
2253    referralData.dismissed = true;
2254    referralData.timestamp = referralData.timestamp || Date.now();
2255    referralData.expirationDays = referralData.expirationDays || 3;
2256    localStorage.setItem('referral_notification_data', JSON.stringify(referralData));
2257  }
2258
2259  function goToSignupPageFromMobile() {
2260    location.href = '/account/register';
2261    closeMobileReferralModal();
2262  }
2263  // End - referral notification popup
2264</script>
2264
2265
2266
2267
2268  <main id="MainContent" class="content-for-layout focus-none" role="main" tabindex="-1">
2269    
2270    <link rel="stylesheet" href="/assets/css/store-locator.css?v3.1">
2271
2272
2273  <div class="store-locator-heading page-width">
2274   <h1 class="section-header__title">Alamat kedai</h1>
2275   <b>Pilih negeri di bawah ini untuk mencari kedai yang berhampiran anda</b>
2276   <div class="store-locator-search">
2277     <div class="select">
2278       <select id="province-select" class="select__select">
2279         <option value="all">Semua</option>
2280       </select>
2281     </div>
2282   </div>
2283  </div>
2284  <div class='store-locator-section no-watermark page-width'>
2285      <div class="store-locator-grid">
2286        
2287          <div class="store-locator-grid_item" data-province="Sabah">
2288              <div class="store-selector-item">
2289                <div class="location-detail">
2290                  <strong>
2291                    SAUQAH
2292                  </strong>
2293                   <a href="tel:[email protected]">0172394461</a> <br> 
2294                   <a href="mailto:[email protected]">[email protected]</a> <br> 
2295
2296                  <address>
2297                     LOT 1-A-186 TINGKAT 1 BLOK A  <br> 
2298                     SEJATIWALK BATU 7 <br> 
2299                    Sandakan, 90000<br>
2300                    Sabah , Malaysia <br>
2301
2302                    <div id="business-hour-0"></div>
2303                  </address>
2304
2305                </div><br>
2306                <a class="button button--tertiary" href="https://www.google.com/maps?q=SAUQAH LOT 1-A-186 TINGKAT 1 BLOK A  SEJATIWALK BATU 7 Sandakan 90000 MY" target="_blank">Navigasi</a>
2307              </div>
2308          </div>
2309        
2310      </div>
2311  </div>
2312
2313
2314
2315
2316
2317
2318<script>
2319
2320  var locations = [{"id":294835,"store_id":385982,"code":"90000","name":"SAUQAH","company":null,"address1":"LOT 1-A-186 TINGKAT 1 BLOK A ","address2":"SEJATIWALK BATU 7","city":"Sandakan","zip":"90000","village":null,"sub_district":null,"sub_district_code":null,"district":null,"district_code":null,"province":"Sabah","province_code":"MY-12","country":"Malaysia","country_code":"MY","phone":"0172394461","email":"[email protected]","pickup_charge":"0.0","service_provider":null,"latitude":"5.904134","longitude":"118.053025","geocoded_at":null,"geocoding_status":null,"cod_type":0,"cod_min_amount":"0.0","cod_max_amount":"0.0","is_primary":true,"enable_pickup":false,"business_hour":"{\"mon\":[{\"start\":\"10:00\",\"end\":\"19:00\"}],\"tue\":[{\"start\":\"10:00\",\"end\":\"19:00\"}],\"wed\":\"closed\",\"thur\":[{\"start\":\"10:00\",\"end\":\"19:00\"}],\"fri\":[{\"start\":\"10:00\",\"end\":\"19:00\"}],\"sat\":[{\"start\":\"10:00\",\"end\":\"21:00\"}],\"sun\":[{\"start\":\"10:00\",\"end\":\"21:00\"}]}","disabled_date":"","cutoff_day":0,"cutoff_value":0,"cutoff_unit":"day","pickup_available_unit":"day","pickup_available_value":30,"track_inventory_enabled":true,"is_hidden":false,"online_fulfillment_enabled":true,"fulfillment_priority":null,"pickup_time_selection_enabled":false,"pickup_description":"oneHours","is_visitable":true,"is_enabled":true,"is_deleted":false,"deleted_at":null,"updated_at":"2026-09-11T09:53:24.000+08:00","created_at":"2022-05-13T03:20:50.000+08:00","formatted":"SAUQAH LOT 1-A-186 TINGKAT 1 BLOK A  SEJATIWALK BATU 7 Sandakan 90000 MY"}];
2321
2322  const ordering = { mon: 1, tue: 2, wed: 3, thur: 4, fri: 5, sat: 6, sun: 7 }
2323
2324  const formatDay = day => day.replace(day[0], day[0].toUpperCase())
2325
2326  const convertTime = time => {
2327
2328    if(!time.includes(":")) time += ":00"
2329
2330    time = time.toString ().match (/^([01]\d|2[0-3])(:)([0-5]\d)(:[0-5]\d)?$/) || [time];
2331
2332    if (time.length > 1) {
2333      time = time.slice (1);
2334      time[5] = +time[0] < 12 ? 'am' : 'pm';
2335      time[0] = +time[0] % 12 || 12;
2336    }
2337
2338    return time.join ('');
2339  }
2340
2341  const checkTimeFormat = value => {
2342
2343    if(value.split(':').length == 3) {
2344      return value.slice(0, value.length - 3)
2345    }
2346    return value
2347  }
2348
2349  const formatTime = time => {
2350
2351    var start = convertTime(checkTimeFormat(time.start))
2352    var end = convertTime(checkTimeFormat(time.end))
2353
2354    return `${start} - ${end}`
2355  }
2356
2357  const getToday = businessHour => {
2358
2359    var today = new Date().getDay()
2360
2361    var today = Object.keys(businessHour).filter(key => ordering[key] === today)[0];
2362
2363    return today
2364
2365  }
2366
2367  const checkOpen = businessHour => {
2368
2369    var today = getToday(businessHour)
2370
2371    var result = businessHour.everyday;
2372
2373    if(today !== undefined) result = businessHour[today]
2374
2375    if (result === 'closed') return false
2376
2377    var { start, end } = result
2378
2379    start = start.split(':')
2380    if(start.length > 2) start.pop()
2381    start = parseInt(start.join(''))
2382
2383    end = end.split(':')
2384    if(end.length > 2) end.pop()
2385    end = parseInt(end.join(''))
2386
2387    var now = new Date()
2388    now = parseInt(`${now.getHours()}${String(now.getMinutes()).padStart(2, "0")}`)
2389
2390    if(now < start || now >= end) {
2391      return false
2392    }
2393
2394    return true
2395
2396  }
2397
2398
2399
2400  var provinceSelect = document.getElementById('province-select'),
2401      locationItem = document.querySelectorAll("[data-province]")
2402  provinceSelect.addEventListener("change", function(){
2403    locationItem.forEach(function(item){
2404      if(item.getAttribute('data-province') != provinceSelect.value && provinceSelect.value != 'all'){
2405        item.style.display = "none";
2406      }else{
2407        item.style.display = "";
2408      }
2409    });
2410  });
2411
2412
2413
2414  for(var i = 0; i < locations.length; i++) {
2415
2416    // Update provinceSelect Option
2417    var provinceOptionExist = false
2418    for (x = 0; x < provinceSelect.length; ++x){
2419      if (provinceSelect.options[x].value == locations[i].province){
2420        provinceOptionExist = true
2421      }
2422    }
2423    if(!provinceOptionExist){
2424      var opt = document.createElement('option');
2425      opt.appendChild( document.createTextNode(locations[i].province) );
2426      opt.value = locations[i].province;
2427      provinceSelect.appendChild(opt);
2428    }
2429
2430    var node = document.getElementById(`business-hour-${i}`)
2431    var businessHour = JSON.parse(locations[i].business_hour)
2432
2433    var dropdown = document.createElement("div")
2434    dropdown.className = "dropdown"
2435    dropdown.setAttribute("data-toggle","0")
2436
2437    var dropdownToggle = document.createElement("span")
2438    dropdownToggle.className = "dropdown-toggle"
2439
2440    var caret = document.createElement("span")
2441    caret.className = "caret"
2442
2443    var dropdownMenu = document.createElement("ul")
2444    dropdownMenu.className = "dropdown-menu list-unstyled"
2445
2446    if(Object.keys(businessHour).length <= 0) {
2447
2448      dropdownToggle.innerHTML = `<span style="color: green; font-weight: bold;">Open</span>`
2449
2450      var li = document.createElement("li")
2451      var a = document.createElement("a")
2452      a.innerHTML = "Open for 24 hours"
2453      li.appendChild(a)
2454      dropdownMenu.appendChild(li)
2455
2456    }
2457
2458    else if("everyday" in businessHour) {
2459
2460      dropdownToggle.innerHTML = `<span style="color: red; font-weight: bold;">Closed</span>`
2461
2462      if(checkOpen(businessHour)) {
2463        dropdownToggle.innerHTML = `<span style="color: green; font-weight: bold;">Open</span> ⋅ Closes ${convertTime(businessHour.everyday.end)}`
2464      }
2465
2466      var li = document.createElement("li")
2467      var a = document.createElement("a")
2468      a.innerHTML = `Everyday: ${formatTime(businessHour.everyday)}`
2469      li.appendChild(a)
2470      dropdownMenu.appendChild(li)
2471    }
2472
2473    else {
2474
2475      dropdownToggle.innerHTML = `<span style="color: red; font-weight: bold;">Closed</span>`
2476
2477      var today = getToday(businessHour)
2478
2479      if(checkOpen(businessHour)) {
2480        dropdownToggle.innerHTML = `<span style="color: green; font-weight: bold;">Open</span> ⋅ Closes ${convertTime(businessHour[today].end)}`
2481      }
2482
2483      var listItems = []
2484
2485      for(var day in businessHour) {
2486
2487        var li = document.createElement("li")
2488        var a = document.createElement("a")
2489        a.innerHTML = `${formatDay(day)}: ${businessHour[day] === 'closed' ? 'Closed': formatTime(businessHour[day])}`
2490        li.appendChild(a)
2491
2492        listItems[ordering[day]] = li
2493
2494      }
2495
2496      listItems.forEach(el => el != undefined && dropdownMenu.appendChild(el))
2497
2498    }
2499
2500    dropdown.appendChild(dropdownToggle)
2501    dropdown.appendChild(caret)
2502    dropdown.appendChild(dropdownMenu)
2503
2504
2505
2506    node.appendChild(dropdown)
2507
2508
2509  }
2510
2511  var dropdowns = document.querySelectorAll("[data-toggle]");
2512  dropdowns.forEach(function(btn){
2513    btn.addEventListener('click', function(el) {
2514       if(btn.getAttribute('data-toggle') != '0'){
2515        btn.setAttribute("data-toggle", "0")
2516      }else{
2517       btn.setAttribute("data-toggle", "1")
2518     }
2519   });
2520  });
2521
2522  window.addEventListener('click', function(e){
2523    dropdowns.forEach(function(btn){
2524      if (!btn.contains(e.target)){
2525        btn.setAttribute("data-toggle", "0")
2526      }
2527    });
2528  });
2529
2530
2531</script>
2531
2532
2533
2534
2535
2536    
2537  </main>
2538 	<style>
2539  .footer{
2540    background-color: #EDD6B6;
2541    color: #10100f;
2542    --color-foreground: 16,16,15;
2543  }
2544  .footer .link--text,
2545  .footer .list-menu__item--link,
2546  .footer .footer-block__details-content .list-menu__item--link{
2547    color: #10100f;
2548  }
2549  .footer-block__heading{
2550    color: #040403;
2551  }
2552  .rounded{
2553    border-radius: 10px;
2554  }
2555  .object-contain{
2556    object-fit: contain;
2557  }
2558  .shopping-app-border{
2559    border: 1px #ECECEC solid;
2560    margin-right: 3px;
2561  }
2562  .app-download-badge{
2563    display: inline-block; 
2564    margin-right: 3px;
2565  }
2566</style>
2567
2568<link href="https://store-themes.easystore.co/385982/themes/295436/assets/section-footer.css?t=1787123890" rel="stylesheet" type="text/css" media="screen" />
2569
2570<footer class="footer color-background-1">
2571  <div class="footer__content-top page-width">
2572    <div class="grid grid--1-col grid--4-col-tablet ">
2573      
2574      
2575      
2576        <div class="grid__item">
2577          
2578              <h2 class="footer-block__heading">Our mission</h2>
2579              <div class="footer-block__details-content">
2580                <p>Quality materials, good designs, craftsmanship and sustainability.</p>
2581              </div>
2582            
2583        </div>
2584      
2585    </div>
2586  </div>
2587  <div class="footer__content-bottom">
2588    <div class="footer__content-bottom-wrapper page-width">
2589      <div class="footer__column footer__column--info">
2590
2591        
2592
2593
2594
2595
2596        
2597        <div class="footer__copyright caption">
2598          <div class="copyright__content">Copyright © 2026 sauQah Hq. E-commerce Powered by <a href="http://www.easystore.co/?utm_source=storefront&utm_medium=sf_ref_footer&utm_campaign=sf_ref">EasyStore</a></div>
2599        </div>
2600
2601        <div class="footer__copyright caption">
2602          
2603            <div>
2604            
2605            
2606              
2607                <a href="/legal/terms-of-service">Terms of Service</a>
2608              
2609              
2610            
2611              
2612                | <a href="/legal/privacy-policy">Privacy Policy</a>
2613              
2614              
2615            
2616              
2617                | <a href="/legal/refund-policy">Refund Policy</a>
2618              
2619              
2620            
2621              
2622                | <a href="/pages/mengenai-kami">Mengenai Kami</a>
2623              
2624              
2625            
2626            </div>
2627         
2628        </div>
2629        
2630      </div>
2631    </div>
2632  </div>
2633</footer>
2634
2635
2636
2637
2638  
2639
2640  
2640<script>
2641  EasyStore.Currencies.init([{"name":"Malaysian Ringgit","code":"MYR","rate":"1.0","format_prefix":"RM","format_suffix":null,"format_decimals":2,"thousand_separator":",","is_primary":true}], 1)
2642</script>
2642
2643
2644
2645
2646  
2646<script>
2647    let page_template = 'store-locator';
2648
2649    if(document.querySelector('.currency-picker')) {
2650      EasyStore.Currencies.change(document.querySelector('.currency-picker').value)
2651      EasyStore.Currencies.convertAll() 
2652    }
2653
2654    document.querySelectorAll('.currency-picker').forEach((el)=>{
2655      el.addEventListener('change',(event)=>{
2656        EasyStore.Currencies.change(event.target.value)
2657
2658        
2659          if (page_template == 'cart') {
2660            const params = new URLSearchParams(window.location.search);
2661            params.set('delete_cache', 1);
2662            window.location.search = params;
2663          } else {
2664            window.location.reload();
2665          }
2666
2667          return
2668        
2669
2670        document.querySelectorAll('[name=currencies],[name=current_currency]').forEach((el)=>{
2671          el.value = event.target.value
2672        })
2673
2674        if(page_template == 'cart') location.reload();
2675      })
2676    })
2677  </script>
2677
2678
2679
2680
2681
2682  
2682<script>
2683
2684    window.variantStrings = {
2685      addToCart: `Tambah ke bakul`,
2686      updateCart: `Kemaskini bakul`,
2687      soldOut: `Habis`,
2688      unavailable: `Tiada`,
2689    }
2690
2691    window.accessibilityStrings = {
2692      shareSuccess: `Pautan disalin ke papan keratan`,
2693    }
2694    
2695    window.promotionStrings = {
2696      title: `Promosi`,
2697    }
2698    
2699    window.productSettings = {
2700      variantOptionsDisplay: `radio`,
2701    }
2702  </script>
2702
2703
2704  <link href="https://store-themes.easystore.co/385982/themes/295436/assets/section-main-product.css?t=1787123890" rel="stylesheet" type="text/css" media="screen" />
2705<link href="https://store-themes.easystore.co/385982/themes/295436/assets/component-loading-overlay.css?t=1787123890" rel="stylesheet" type="text/css" media="screen" />
2706<link href="https://store-themes.easystore.co/385982/themes/295436/assets/product-quickview.css?t=1787123890" rel="stylesheet" type="text/css" media="screen" />
2707
2708<product-quickview-modal>
2709  <div id="product-quickview-modal" class="product-quickview-modal-wrapper focus-inset" aria-modal="true" role="dialog" tabindex="-1">
2710    <button type="button" class="product-quickview-modal__close modal__close-button link link--text focus-inset" aria-label="accessibility.close">
2711      
2712
2713
2714    <svg class="icon icon-close " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M335.36,300,581.87,53.48a25,25,0,0,0-35.35-35.35L300,264.64,53.48,18.13A25,25,0,0,0,18.13,53.48L264.64,300,18.13,546.52a25,25,0,0,0,35.35,35.35L300,335.36,546.52,581.87a25,25,0,0,0,35.35-35.35Z" fill="currentColor"/></svg>
2715
2716  
2717
2718    </button>
2719
2720    <div class="loading-overlay">	
2721      <div class="loading-overlay__spinner">	
2722        <svg aria-hidden="true" focusable="false" role="presentation" class="spinner" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">	
2723            <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle>	
2724        </svg>	
2725      </div>	
2726    </div>	
2727
2728    <div class="product-quickview-modal__body" style="display: none;"></div>
2729  </div>
2730  <div class="product-quickview-modal-backdrop"></div>
2731</product-quickview-modal>
2732
2733<script src="https://store-themes.easystore.co/385982/themes/295436/assets/product-form.js?t=1787123890" type="text/javascript" ></script>
vendor: 1 bytes, line 2733
2733
2734<script src="https://store-themes.easystore.co/385982/themes/295436/assets/product-quickview.js?t=1787123890" type="text/javascript" ></script>
2734
2735  
2735<script>
2736
2737  /*
2738
2739    ------
2740    Events
2741    ------
2742
2743    pages/viewed
2744
2745    customers/signup
2746
2747    customers/login
2748
2749    products/searched
2750
2751    collections/viewed
2752
2753    products/viewed
2754
2755    products/shared
2756
2757    wishlists/item_added
2758
2759    carts/items_added
2760
2761    carts/viewed
2762
2763    carts/item_removed
2764
2765    checkouts/initiated
2766
2767    checkouts/shipping_info_added
2768
2769    checkouts/payment_info_added
2770
2771    checkouts/completed
2772
2773    orders/placed
2774
2775    orders/purchased
2776
2777    payments/captured
2778
2779    payments/failed
2780
2781  */
2782
2783  window.__latest_cart = window.__latest_cart || null;
2784
2785  const _selector = document.querySelector.bind(document),
2786        _selectorAll = document.querySelectorAll.bind(document)
2787
2788  document.addEventListener('DOMContentLoaded', (event) => {
2789
2790    const default_currency = getCookie("currency")
2791    const customer_id = window.__st.cid
2792    const template    = window.__st.p
2793
2794    onPageView()
2795
2796    //-----------------------//
2797    //        Configs        //
2798    //-----------------------//
2799
2800    window.dataLayer = window.dataLayer || []
2801
2802    Array.prototype.last = Array.prototype.last || function() {
2803      return this[this.length - 1] || null
2804    }
2805
2806    Array.prototype.first = Array.prototype.first || function() {
2807      return this[0] || null
2808    }
2809
2810    //----------------------//
2811    //       Triggers       //
2812    //----------------------//
2813
2814    const XHR = window.XMLHttpRequest
2815
2816    function xhr() {
2817
2818      const xhr = new XHR()
2819
2820      xhr.addEventListener("readystatechange", function() {
2821
2822        if(xhr.readyState != 4) return
2823
2824        try {
2825
2826          const response_url = xhr.responseURL
2827
2828          if (response_url.includes("cart/add")) {
2829
2830            window.__latest_cart = JSON.parse(xhr.response)
2831
2832            onCartItemsAdded() // ok
2833
2834          }
2835
2836          if (response_url.includes("cart/remove_item_quantity")) {
2837
2838            window.__latest_cart = JSON.parse(xhr.response)
2839
2840            onCartItemRemoved() // ok
2841
2842          }
2843
2844          if (response_url.includes("new_cart?retrieve=true")) {
2845
2846            result = JSON.parse(xhr.response)
2847
2848            if (result.cart) {
2849              window.__latest_cart = result.cart
2850            }
2851
2852          }
2853
2854        } catch(e) {
2855
2856          console.error(e)
2857
2858        }
2859
2860      }, false);
2861
2862      return xhr
2863
2864    }
2865
2866    window.XMLHttpRequest = xhr
2867
2868    switch(template) {
2869
2870      case 'cart': onCartView() // ok
2871      break
2872      case 'product': onProductView() // ok
2873      break
2874      case 'collection': onCollectionView() // ok
2875      break
2876      case 'blog': onBlogView()
2877      break
2878      case 'article': onArticleView()
2879      break
2880      case 'payment_completed': onOrderPlace()
2881      break
2882      case 'payment_fail': onPaymentFail()
2883      break
2884
2885    }
2886
2887    // _selector('form[action="/checkout/payments"]').addEventListener("submit", onPaymentInfoAdded(_selector('form[action="/checkout/payments"]')))
2888    if (_selector('form[action="/checkout/detail"]'))                            _selector('form[action="/checkout/detail"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/detail"]'))})  // ok
2889    if (_selector('form[action="/checkout/shipping"]'))                          _selector('form[action="/checkout/shipping"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/shipping"]'))})  // ok
2890    if (_selector('form[action="/account/register"]'))                           _selector('form[action="/account/register"]').addEventListener("submit", onSignUp)  // ok
2891    if (_selector('form[action="/account/login"]'))                              _selector('form[action="/account/login"]').addEventListener("submit", onLogin)  // ok
2892    if (_selector('form[action="/search"]'))                                     _selector('form[action="/search"]').addEventListener("submit", onProductSearch()) // ok
2893    if (_selector('#line-login-btn'))                                            _selector('#line-login-btn').addEventListener('click', onLineLogin) // ok
2894    if (_selector('#PlaceOrder'))                                                _selector('#PlaceOrder').addEventListener("click", ()=>{onCheckoutComplete(_selector('form[action="/checkout/payments"]'))});  // ok
2895    if (_selector('#add_wishlist'))                                              _selector('#add_wishlist').addEventListener("click", onWishlistItemAdded) // ok
2896    if (_selectorAll('a[href="/account/logout"]'))                               _selectorAll('a[href="/account/logout"]').forEach(logoutButton => logoutButton.addEventListener("click", onLogout)) // ok
2897    if (_selector('.CartDrawerTrigger.cart-page-link'))                          _selector('.CartDrawerTrigger.cart-page-link').addEventListener("click", onCartView) // ok
2898    if (_selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link'))    _selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link').addEventListener("click", onCartView) // ok
2899    if (_selectorAll('a[class^="share-"]'))                                      _selectorAll('a[class^="share-"]').forEach(shareButton => shareButton.addEventListener("click", ()=>{onProductShare(shareButton)}) ) // ok
2900    if (_selectorAll('[name$="checkout"]'))                                      _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate))
2901
2902    // For append elements
2903    const bodyMutationObserver = new MutationObserver(() => {
2904      if (_selector('#form__spc #PlaceOrder'))             _selector('#form__spc #PlaceOrder').addEventListener("click", onSinglePageCheckout) // ok
2905      if (_selectorAll('[name$="checkout"]'))              _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate))
2906    });
2907    bodyMutationObserver.observe(_selector("body"), {subtree: true, childList: true});
2908
2909    //------------------------------//
2910    //        Event handlers        //
2911    //------------------------------//
2912
2913    function onPageView() {
2914
2915      EasyStore.Event.dispatch('pages/viewed', {
2916        page: {
2917          type: template,
2918          title: document.title,
2919          description: _selector('meta[name=description]') ? _selector('meta[name=description]').getAttribute('content') : null,
2920          url: location.href,
2921        }
2922      })
2923
2924    }
2925
2926    function onSignUp() {
2927
2928      const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/)
2929      const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/)
2930
2931      const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "")
2932
2933      let data = {}
2934
2935      if (email_regex.test(email_or_phone)) {
2936        data.method = 'email'
2937        data.email = email_or_phone
2938      }
2939
2940      if (phone_regex.test(email_or_phone)) {
2941        data.method = "phone"
2942        data.phone = email_or_phone
2943      }
2944
2945      if (!data.method) return
2946
2947      EasyStore.Event.dispatch('customers/signup', data)
2948
2949    }
2950
2951    function onLogin() {
2952
2953      const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/)
2954      const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/)
2955
2956      const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "")
2957
2958      let data = {}
2959
2960      if (email_regex.test(email_or_phone)) {
2961        data.method = 'email'
2962        data.email = email_or_phone
2963      }
2964
2965      if (phone_regex.test(email_or_phone)) {
2966        data.method = "phone"
2967        data.phone = email_or_phone
2968      }
2969
2970      if (!data.method) return
2971
2972      EasyStore.Event.dispatch('customers/login', data)
2973
2974    }
2975
2976    function onLineLogin() {
2977
2978      EasyStore.Event.dispatch('customers/login', { method: 'line' })
2979
2980    }
2981
2982    function onLogout() {
2983
2984      EasyStore.Event.dispatch('customers/logout', { customer_id })
2985
2986    }
2987
2988    function onBlogView() {
2989
2990      const blog = ""
2991
2992      EasyStore.Event.dispatch('blogs/viewed', { blog })
2993
2994    }
2995
2996    function onArticleView() {
2997
2998      const article = ""
2999
3000      EasyStore.Event.dispatch('articles/viewed', { article })
3001
3002    }
3003
3004    function onProductSearch() {
3005
3006      const query = _selector('input[name=q]').value
3007
3008      if (!query) return
3009
3010      EasyStore.Event.dispatch('products/searched', { query })
3011
3012    }
3013
3014    function onCollectionView() {
3015
3016      const collection = ""
3017
3018      EasyStore.Event.dispatch('collections/viewed', { collection })
3019
3020    }
3021
3022    function onProductView() {
3023
3024      const product = ""
3025
3026      EasyStore.Event.dispatch("products/viewed", { product })
3027
3028    }
3029
3030    function onProductShare(el) {
3031
3032      const product = ""
3033
3034      const channel = el.getAttribute("class").split("-").last()
3035
3036      EasyStore.Event.dispatch('products/shared', { product, channel })
3037
3038    }
3039
3040    function onWishlistItemAdded() {
3041
3042      let product  = ""
3043      const quantity = _selector("#Quantity").value
3044
3045      EasyStore.Event.dispatch('wishlists/item_added', { product })
3046
3047    }
3048
3049    async function onCartItemsAdded() {
3050
3051      const cart = await getCart()
3052
3053      if(cart && cart.items != undefined && cart.items.length > 0) {
3054
3055        EasyStore.Event.dispatch('carts/item_added', { cart })
3056
3057      }
3058
3059    }
3060
3061    async function onCartView() {
3062
3063      const cart = await getCart()
3064
3065      EasyStore.Event.dispatch('carts/viewed', { cart })
3066
3067    }
3068
3069    async function onCartItemRemoved() {
3070
3071      const cart = await getCart()
3072
3073      cart.items = []
3074
3075      if(cart) {
3076
3077        EasyStore.Event.dispatch('carts/item_removed', { cart })
3078
3079      }
3080
3081    }
3082
3083    async function onCheckoutInitiate() {
3084
3085      const cart = await getCart()
3086
3087      EasyStore.Event.dispatch('checkouts/initiated', { cart })
3088
3089    }
3090
3091    async function onShippingInfoAdded(form) {
3092      let checkout = getCheckout()
3093
3094      let form_data = {}
3095      new FormData(form).forEach((value, key) => form_data[key] = value)
3096
3097      let shipping_tier = null
3098
3099      if (form_data.type && form_data.type.startsWith("r_pickup")) {
3100        shipping_tier = `Pickup - ${form_data.pick_location}`
3101      }
3102
3103      if (form_data.s_id) {
3104        shipping_tier = _selector(`input[id='`+form_data.s_id+`']`).getAttribute("data-shipping-name")
3105      }
3106
3107      if (!shipping_tier) return
3108
3109      EasyStore.Event.dispatch('checkouts/shipping_info_added', { checkout, shipping_tier })
3110
3111    }
3112
3113    async function onPaymentInfoAdded(form) {
3114
3115      let checkout = getCheckout()
3116
3117      let payment_type = new FormData(form).get('payment_method')
3118
3119      EasyStore.Event.dispatch("checkouts/payment_info_added", { checkout, payment_type })
3120
3121    }
3122
3123    async function onOrderPlace() {
3124
3125      let cart_token  = getCookie("cart_js")
3126      let previous_cart_token = getCookie("previous_cart_ga4_js")
3127
3128      if (previous_cart_token && previous_cart_token == cart_token) {
3129        // Prevent duplicate purchase tracking
3130        return
3131      }
3132
3133      let order = getOrder()
3134
3135      EasyStore.Event.dispatch('orders/placed', { order })
3136
3137      if(order.is_manual_payment) {
3138
3139        EasyStore.Event.dispatch('orders/purchased', { order })
3140
3141      }
3142
3143      const last_transaction = order.transactions.last()
3144
3145      if (last_transaction.status) {
3146
3147        EasyStore.Event.dispatch('orders/purchased', { order })
3148        EasyStore.Event.dispatch('payments/captured', { order })
3149
3150      }
3151
3152    }
3153
3154    async function onPaymentFail() {
3155
3156      const order = getOrder()
3157
3158      EasyStore.Event.dispatch('payments/failed', { order })
3159
3160    }
3161
3162    async function onCheckoutComplete(form) {
3163
3164      onPaymentInfoAdded(form)
3165
3166      const checkout = getCheckout()
3167
3168      EasyStore.Event.dispatch('checkouts/completed', { checkout })
3169
3170    }
3171
3172    async function onSinglePageCheckout() {
3173
3174      // let checkout = $("[data-app-checkout]").data("app-checkout")
3175
3176      let checkout = getCheckout()
3177
3178      // const payment_type = _selector("#app_spc_payment_method").find(`[class*="label-content"]`).first().find("b").first().text()
3179      const payment_type = _selector("#app_spc_payment_method").getElementsByClassName('label-content')[0].getElementsByTagName('b')[0].innerHTML
3180
3181      const shipping_method = _selector("#delivery_method").value
3182
3183      let shipping_tier = null
3184      let app_spc_customer_info_label = _selector("#app_spc_customer_info").getElementsByClassName('label-content')
3185      if (shipping_method == "shipping") {
3186        shipping_tier = app_spc_customer_info_label[app_spc_customer_info_label.length - 1].getElementsByTagName('b')[0].innerHTML
3187      }
3188
3189      if (shipping_method == "pickup") {
3190        shipping_tier = app_spc_customer_info_label[0].innerHTML
3191      }
3192
3193      if (shipping_tier) {
3194
3195        EasyStore.Event.dispatch('checkouts/shipping_info_added', {
3196          checkout,
3197          shipping_tier,
3198        })
3199
3200      }
3201
3202      if (payment_type) {
3203
3204        EasyStore.Event.dispatch('checkouts/payment_info_added', {
3205          checkout,
3206          payment_type,
3207        })
3208
3209      }
3210
3211      EasyStore.Event.dispatch('checkouts/completed', { checkout })
3212
3213    }
3214
3215  })
3216
3217
3218  //-----------------------//
3219  //       Functions       //
3220  //-----------------------//
3221
3222  function getCookie(name) {
3223
3224    name += "="
3225
3226    decodedCookie = decodeURIComponent(document.cookie)
3227
3228    ca = decodedCookie.split(";")
3229
3230    for(i = 0; i < ca.length; i++) {
3231      c = ca[i]
3232      while (c.charAt(0) == " ") {
3233        c = c.substring(1)
3234      }
3235      if (c.indexOf(name) == 0) {
3236        return c.substring(name.length, c.length)
3237      }
3238    }
3239
3240    return ""
3241
3242  }
3243
3244  const parsePrice = price => {
3245    if(typeof price === 'string') {
3246      return parseFloat(price.split(',').join(''))
3247    }
3248
3249    return price
3250  }
3251
3252  const requestCart = async (method, data) => {
3253
3254  let response = await fetch('/cart.json', {method: 'GET',headers: {'Content-Type': 'application/json'}})
3255    result = await response.json()
3256
3257    return result.cart
3258
3259  }
3260  const getCart = async (latest = false) => {
3261
3262    let cart = window.__latest_cart
3263
3264    const cart_invalid = !cart || !cart.items || (cart.total_price > 0 && !cart.items.length)
3265
3266    if(latest || cart_invalid) {
3267      cart = await requestCart()
3268    }
3269
3270    cart.items = cart.items || []
3271
3272    return mapCart(cart)
3273
3274  }
3275
3276  const getCheckout = async () => {
3277    mapCheckout(window.__latest_cart || await requestCart())
3278  }
3279
3280  const getOrder = async () => {
3281    mapOrder(window.__latest_cart || await requestCart())
3282  }
3283
3284  //-----------------------//
3285  //        Mappers        //
3286  //-----------------------//
3287
3288  const fallbackAttribute = (object, attribute) => {
3289
3290    if(!Array.isArray(attribute)) {
3291      attribute = [attribute]
3292    }
3293
3294    let final_value = null
3295
3296    do {
3297
3298      final_value = object[attribute.shift()]
3299
3300    } while(!final_value && attribute.length)
3301
3302    return final_value
3303
3304  }
3305
3306  const map = (object, mapper) => {
3307
3308    const newObject = {}
3309
3310    for(const key in mapper) {
3311
3312      // Handle different keys between new and old format
3313      newObject[key] = fallbackAttribute(object, mapper[key])
3314
3315      // Cast price to float
3316      if(newObject[key] && ['price', 'amount', 'discount', 'discounts'].some(x => key.endsWith(x))) {
3317        newObject[key] = parsePrice(newObject[key])
3318      }
3319
3320      if(newObject[key] === undefined) {
3321        delete newObject[key]
3322      }
3323
3324    }
3325
3326    return newObject
3327
3328  }
3329
3330  const mapCart = cart => {
3331
3332    const oldCart = cart
3333
3334    const mapper = {
3335      id: 'id',
3336      currency: 'currency',
3337      item_count: 'item_count',
3338      items: 'items',
3339      total_price: 'total_price',
3340      latest_items: 'latest_items'
3341    }
3342
3343    cart = map(cart, mapper)
3344
3345    const discounts = (oldCart.storewide_discounts || []).concat((oldCart.voucher_discounts || []))
3346
3347    cart.discount_applications = discounts.map(discount => ({
3348      title: discount.voucher_code || null,
3349      value: parsePrice(discount.amount),
3350    }))
3351
3352    cart.original_total_price = cart.items.length
3353    ? cart.items
3354      .map(item => item.original_price)
3355      .reduce((sum, price) => sum + price)
3356    : 0
3357
3358    cart.total_discount = cart.discount_applications.length
3359    ? cart.discount_applications
3360      .map(discount => parsePrice(discount.value))
3361      .reduce((sum, value) => sum + value)
3362    : 0
3363
3364    cart.items = cart.items.map(item => mapLineItem(item))
3365
3366    return cart
3367
3368  }
3369
3370  const mapCheckout = checkout => {
3371
3372    const mapper = {
3373      note: 'note',
3374      attributes: 'note_attributes',
3375      billing_address: 'billing_address',
3376      currency: 'currency',
3377      customer_id: 'customer_id',
3378      discounts_amount: 'total_discount',
3379      id: 'id',
3380      line_items: 'order_item',
3381      order_number: 'order_number',
3382      shipping_address: 'shipping_address',
3383      shipping_price: 'shipping_tax',
3384      shipping_method: 'shipping_method_name',
3385      tax_price: 'total_tax',
3386    }
3387
3388    checkout = map(checkout, mapper)
3389
3390    checkout.requires_shipping = checkout.line_items.some(item => item.shipping_required)
3391
3392    checkout.line_items = checkout.line_items.map(item => mapLineItem(item))
3393
3394    return checkout
3395
3396  }
3397
3398  const mapOrder = order => {
3399
3400    const mapper = {
3401      attributes: 'note_attributes',
3402      billing_address: 'billing_address',
3403      cancelled: 'is_cancelled',
3404      cancelled_at: 'cancelled_at',
3405      created_at: 'created_at',
3406      customer_id: 'customer_id',
3407      // discount_applications: 'discount_applications',
3408      email: 'email',
3409      financial_status: 'financial_status',
3410      fulfillment_status: 'fulfillment_status',
3411      line_items: 'order_item',
3412      note: 'note',
3413      order_number: 'order_number',
3414      phone: 'phone',
3415      shipping_address: 'shipping_address',
3416      shipping_methods: 'shipping_methods',
3417      shipping_price: 'total_shipping',
3418      subtotal_price: 'subtotal_price',
3419      // tax_lines: 'tax_lines',
3420      tax_price: 'total_tax',
3421      total_discounts: 'total_discount',
3422      total_net_amount: 'total_amount_include_transaction',
3423      total_price: 'total_price',
3424      transactions: 'transaction_records',
3425      is_manual_payment: 'is_manual_payment',
3426    }
3427
3428    order.email = order.billing_address.email
3429    order.phone = order.billing_address.phone
3430    order.shipping_method = order.shipping_method_name
3431
3432    order = map(order, mapper)
3433
3434    order.line_items = order.line_items.map(item => mapLineItem(item))
3435    order.transactions = order.transactions.map(transaction => mapTransaction(transaction))
3436
3437    return order
3438
3439  }
3440
3441  const mapLineItem = line_item => {
3442
3443    const old_line_item = line_item
3444
3445    const mapper = {
3446      final_price: 'price',
3447      image: 'img_url',
3448      message: 'message',
3449      original_line_price: 'original_line_price',
3450      original_price: 'original_price',
3451      properties: 'properties',
3452      quantity: 'quantity',
3453      requires_shipping: 'shipping_required',
3454      sku: 'sku',
3455      taxable: 'taxable',
3456      title: 'product_name',
3457      product_name: 'product_name',
3458      url: 'url',
3459      product_id: 'product_id',
3460      variant_id: 'variant_id',
3461      id: ['id', 'i_id'],
3462    }
3463
3464    line_item = map(line_item, mapper)
3465
3466    line_item.product_id = line_item.product_id || (old_line_item.product && old_line_item.product.id) || null
3467    line_item.variant_id = line_item.variant_id || (old_line_item.variant && old_line_item.variant.id) || null
3468    line_item.image      = line_item.image || (old_line_item.image && old_line_item.image.url) || null
3469
3470    return line_item
3471
3472  }
3473
3474  const mapTransaction = transaction => {
3475
3476    const mapper = {
3477      amount: 'amount',
3478      created_at: 'created_at',
3479      gateway: 'gateway_type',
3480      id: 'id',
3481      status: 'status',
3482    }
3483
3484    transaction = map(transaction, mapper)
3485
3486    return transaction
3487
3488  }
3489
3490
3491</script>
3491
3492
3493
3494
3495
3496  
3497
3498
3499
3500
3501
3502<script>
3503  // Create a link element for the external CSS
3504  var link = document.createElement('link');
3505  link.rel = 'stylesheet';
3506  link.type = 'text/css';
3507  link.href = '/assets/css/shopping_app_banner.css?v1.02';
3508
3509  // Create a div element for the app banner
3510  var banner = document.createElement('div');
3511  banner.id = 'shopping_app_download_banner';
3512  banner.className = 'is_shopping_app';
3513  banner.innerHTML = `
3514    <svg onclick="removeShoppingAppDownloadBanner()" xmlns="http://www.w3.org/2000/svg" class="icon-x" width="20" height="20" viewBox="0 0 24 24" stroke-width="2" stroke="#9e9e9e" fill="none" stroke-linecap="round" stroke-linejoin="round">
3515      <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
3516      <path d="M18 6L6 18" />
3517      <path d="M6 6l12 12" />
3518    </svg>
3519    <div class="sa_banner-container">
3520      <a class="sa_banner-detail" href="https://sauqah.com/app/download" target="_blank">
3521        <div class="sa_banner-icons">
3522          
3523            <img src="https://cdn.store-assets.com/s/385982/f/17626702.png" width="48px" height="48px" class="sa_banner-border" alt="SAUQAH " loading="lazy">
3524          
3525          
3526            <img src="https://resources.easystore.co/storefront/icons/channels/icon-shopping-app.png" class="sa_banner-border" width="48px" height="48px" loading="lazy">
3527          
3528        </div>
3529        <div class="sa_banner-text-wrapper">
3530          
3531            <b>Shopping: Jejak Pesanan Anda</b>
3532          
3533          <span class="sa_text-muted">Kedai Dipercayai Anda</span>
3534        </div>
3535      </a>
3536      <a class="sa_btn-download" href="https://sauqah.com/app/download" target="_blank">
3537        Buka
3538      </a>
3539    </div>
3540  `;
3541
3542  // Function to set a cookie
3543  function _sa_setCookie(name, value, days) {
3544    var date = new Date();
3545    date.setTime(date.getTime() + (days*24*60*60*1000));
3546    var expires = "expires=" + date.toUTCString();
3547    document.cookie = name + "=" + value + ";" + expires + ";path=/";
3548  }
3549
3550  // Function to get a cookie
3551  function _sa_getCookie(name) {
3552    var nameEQ = name + "=";
3553    var ca = document.cookie.split(';');
3554    for(var i=0;i < ca.length;i++) {
3555      var c = ca[i];
3556      while (c.charAt(0) == ' ') c = c.substring(1,c.length);
3557      if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
3558    }
3559    return null;
3560  }
3561
3562  // Append the banner if the cookie 'isAppDownloadBannerClosed' is not set
3563  if (!_sa_getCookie('isAppDownloadBannerClosed')) document.head.appendChild(link);
3564  if (!_sa_getCookie('isAppDownloadBannerClosed')) document.body.prepend(banner);
3565  
3566
3567  function removeShoppingAppDownloadBanner() {
3568    document.querySelector('#shopping_app_download_banner').remove();
3569    _sa_setCookie('isAppDownloadBannerClosed', true, 2); // Store the banner state in a cookie for 2 days
3570  }
3571</script>
3571
3572
3573</body>
3574</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.