PageSourceSearch

https://www.alaiacosmetic.com/account/register

html alaiacosmetic.com collected 2026-10-06 19:07:53 UTC 106,838 bytes, 2,960 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/1074007/f/16413023.png" />
15  
16
17  <!-- Title and description ================================================== -->
18  <title>
19  Login &ndash; ALAIA
20  </title>
21
22  
23
24  <!-- Social meta ================================================== -->
25  
26
27  <meta property="og:type" content="website">
28  <meta property="og:title" content="Login">
29  <meta property="og:url" content="https://www.alaiacosmetic.com/account/login">
30  
31    <meta property="og:image" content="https://cdn.store-assets.com/s/1074007/f/16413023.png">
32    <meta property="og:image:secure_url" content="https://cdn.store-assets.com/s/1074007/f/16413023.png">
33  
34
35
36<meta property="og:description" content="ALAIA">
37<meta property="og:site_name" content="ALAIA">
38
39
40
41  <meta name="twitter:card" content="summary">
42
43
44
45  <meta name="twitter:site" content="@">
46
47
48
49
50
51  <!-- Helpers ================================================== -->
52  <link rel="canonical" href="https://www.alaiacosmetic.com/account/login">
53  <meta name="viewport" content="width=device-width,initial-scale=1">
54  <meta name="theme-color" content="#121212">
55  
56  
56<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript" ></script>
56
57  
58  <!-- Header hook for plugins ================================================== -->
59  
60<!-- ScriptTags -->
61<script>window.__st={p: "customers",cid: null,cem: null,cph: null,cfn: null,cln: null,cge: null,cdb: null,ccc: null};</script>
61<script src='/assets/events.js'></script>
61<script>(function(){function asyncLoad(){var urls=['/assets/facebook-pixel.js?v=1.2.1777345982','/assets/traffic.js?v=1','https://apps.easystore.co/marketplace/shopee-malaysia/script.js?shop=shopalaia.easy.co','https://apps.easystore.co/facebook-login/script.js?shop=shopalaia.easy.co&t=1777347323'];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>
61
62<!-- /ScriptTags -->
63
64  
65  
66  
66<script src="https://store-themes.easystore.co/1074007/themes/55058/assets/global.js?t=1788237975" defer="defer"></script>
66
67
68  
69  
70    
70<script src="/assets/shop_common.js" type="text/javascript" ></script>
70
71    
71<script src="/assets/customer_area.js" type="text/javascript" ></script>
71
72  
73  
73<script>
74  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
75  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
76  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
77  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
78
79  ga('create', '', 'auto','myTracker');
80  ga('myTracker.send', 'pageview');
81
82  </script>
82
83  
84  
84<script src="/assets/storefront.js?id=1d419de2011a5572c98b" type="text/javascript" ></script>
84
85  
86
87  <!-- CSS ================================================== -->
88  <style>
89      @font-face {
90        font-family: 'Arimo';
91        font-style: normal;
92        font-weight: regular;
93        src: local('Arimo regular'), local('Arimo-regular'), url(https://fonts.gstatic.com/s/arimo/v17/P5sfzZCDf9_T_3cV7NCUECyoxNk37cxsBxDAVQI4aA.ttf) format('truetype');
94      }
95
96      @font-face {
97        font-family: 'Arimo';
98        font-style: normal;
99        font-weight: regular;
100        src: local('Arimo regular'), local('Arimo-regular'), url(https://fonts.gstatic.com/s/arimo/v17/P5sfzZCDf9_T_3cV7NCUECyoxNk37cxsBxDAVQI4aA.ttf) format('truetype');
101      }
102
103      :root {
104        --font-body-family: 'Arimo', sans-serif;
105        --font-body-style: normal;
106        --font-body-weight: 300;
107
108        --font-heading-family: 'Arimo', sans-serif;
109        --font-heading-style: normal;
110        --font-heading-weight: 700;
111
112        --color-heading-text: 18,18,18;
113        --color-base-text: 18,18,18;
114        --color-base-background-1: 255,255,255;
115        --color-base-background-2: 255,255,255;
116        
117        --color-base-solid-button-labels: 255,255,255;
118        --color-base-outline-button-labels: 18,18,18;
119        
120        --color-base-accent-1: 18,18,18;
121        --color-base-accent-2: 18,18,18;
122        --payment-terms-background-color: 255,255,255;
123
124        --gradient-base-background-1: 255,255,255;
125        --gradient-base-background-2: 255,255,255;
126        --gradient-base-accent-1: 18,18,18;
127        --gradient-base-accent-2: 18,18,18;
128
129        --page-width: 145rem;
130      }
131
132      *,
133      *::before,
134      *::after {
135        box-sizing: inherit;
136      }
137
138      html {
139        box-sizing: border-box;
140        font-size: 62.5%;
141        height: 100%;
142      }
143
144      body {
145        display: grid;
146        grid-template-rows: auto auto 1fr auto;
147        grid-template-columns: 100%;
148        min-height: 100%;
149        margin: 0;
150        font-size: 1.5rem;
151        letter-spacing: 0.06rem;
152        line-height: 1.8;
153        font-family: var(--font-body-family);
154        font-style: var(--font-body-style);
155        font-weight: var(--font-body-weight);
156        
157      }
158
159      @media screen and (min-width: 750px) {
160        body {
161          font-size: 1.6rem;
162        }
163      }
164   </style>
165  
166  <link href="https://store-themes.easystore.co/1074007/themes/55058/assets/base.css?t=1788237975" rel="stylesheet" type="text/css" media="screen" />
167
168  
169  
170<!-- Snippet:global/head: Shopee Malaysia -->
171<link type="text/css" rel="stylesheet" href="https://apps.easystore.co/assets/css/marketplace/main.css?v1.71">
172<!-- /Snippet -->
173
174
175  
175<script>document.documentElement.className = document.documentElement.className.replace('no-js', 'js');</script>
175
176</head>
177
178<body id="login" class="template-customers" >
179	
180  
181<!-- Snippet:global/body_start: Console Extension -->
182<div id='es_console' style='display: none;'>1074007</div>
183<!-- /Snippet -->
184
185	
186 	<style>
187  header {
188    --logo-width: 115px;
189  }
190  .header-wrapper,
191  .header-wrapper .list-menu--disclosure,
192  .header-wrapper .search-modal{
193    background-color: #FFFFFF;
194  }
195  .header-wrapper .search-modal .field__input{
196    background-color: rgb(var(--color-background));
197  }
198  .header-wrapper summary .icon-caret,
199  .header-wrapper .header__menu-item a,
200  .header-wrapper .list-menu__item,
201  .header-wrapper .link--text{
202    color: #000000;
203  }
204  
205  .search-modal__form{
206    position: relative;
207  }
208  
209  .dropdown {
210    display: none;
211    position: absolute;
212    top: 100%;
213    left: 0;
214    width: 100%;
215    padding: 5px 0;
216    background-color: #fff;
217    color:#000;
218    z-index: 1000;
219    border-bottom-left-radius: 15px;
220    border-bottom-right-radius: 15px;
221    border: 1px solid rgba(var(--color-foreground), 1);
222    border-top: none;
223    overflow-x: hidden;
224    overflow-y: auto;
225    max-height: 350px;
226  }
227  
228  .dropdown-item {
229    padding: 0.4rem 2rem;
230    cursor: pointer;
231    line-height: 1.4;
232    overflow: hidden;
233    text-overflow: ellipsis;
234    white-space: nowrap;
235  }
236  
237  .dropdown-item:hover{
238    background-color: #f3f3f3;
239  }
240  
241  .search__input.is-focus{
242    border-radius: 15px;
243    border-bottom-left-radius: 0;
244    border-bottom-right-radius: 0;
245    border: 1px solid rgba(var(--color-foreground), 1);
246    border-bottom: none;
247    box-shadow: none;
248  }
249  
250  .clear-all {
251    text-align: right;
252    padding: 0 2rem 0.2rem;
253    line-height: 1;
254    font-size: 70%;
255    margin-bottom: -2px;
256  }
257  
258  .clear-all:hover{
259    background-color: #fff;
260  }
261  
262  .search-input-focus .easystore-section-header-hidden{
263    transform: none;
264  }
265  .referral-notification {
266    position: absolute;
267    top: 100%;
268    right: 0;
269    background: white;
270    border: 1px solid #e0e0e0;
271    border-radius: 8px;
272    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
273    width: 280px;
274    z-index: 1000;
275    padding: 16px;
276    margin-top: 8px;
277    font-size: 14px;
278    line-height: 1.4;
279  }
280  
281  .referral-notification::before {
282    content: '';
283    position: absolute;
284    top: -8px;
285    right: 20px;
286    width: 0;
287    height: 0;
288    border-left: 8px solid transparent;
289    border-right: 8px solid transparent;
290    border-bottom: 8px solid white;
291  }
292  
293  .referral-notification::after {
294    content: '';
295    position: absolute;
296    top: -9px;
297    right: 20px;
298    width: 0;
299    height: 0;
300    border-left: 8px solid transparent;
301    border-right: 8px solid transparent;
302    border-bottom: 8px solid #e0e0e0;
303  }
304  
305  .referral-notification h4 {
306    margin: 0 0 8px 0;
307    color: #2196F3;
308    font-size: 16px;
309    font-weight: 600;
310  }
311  
312  .referral-notification p {
313    margin: 0 0 12px 0;
314    color: #666;
315  }
316  
317  .referral-notification .referral-code {
318    background: #f5f5f5;
319    padding: 8px;
320    border-radius: 4px;
321    font-family: monospace;
322    font-size: 13px;
323    text-align: center;
324    margin: 8px 0;
325    border: 1px solid #ddd;
326  }
327  
328  .referral-notification .close-btn {
329    position: absolute;
330    top: 8px;
331    right: 8px;
332    background: none;
333    border: none;
334    font-size: 18px;
335    color: #999;
336    cursor: pointer;
337    padding: 0;
338    width: 20px;
339    height: 20px;
340    line-height: 1;
341  }
342  
343  .referral-notification .close-btn:hover {
344    color: #333;
345  }
346  
347  .referral-notification .action-btn {
348    background: #2196F3;
349    color: white;
350    border: none;
351    padding: 8px 16px;
352    border-radius: 4px;
353    cursor: pointer;
354    font-size: 12px;
355    margin-right: 8px;
356    margin-top: 8px;
357  }
358  
359  .referral-notification .action-btn:hover {
360    background: #1976D2;
361  }
362  
363  .referral-notification .dismiss-btn {
364    background: transparent;
365    color: #666;
366    border: 1px solid #ddd;
367    padding: 8px 16px;
368    border-radius: 4px;
369    cursor: pointer;
370    font-size: 12px;
371    margin-top: 8px;
372  }
373  
374  .referral-notification .dismiss-btn:hover {
375    background: #f5f5f5;
376  }
377  .referral-modal__dialog {
378    transform: translate(-50%, 0);
379    transition: transform var(--duration-default) ease, visibility 0s;
380    z-index: 10000;
381    position: fixed;
382    top: 20vh;
383    left: 50%;
384    width: 100%;
385    max-width: 350px;
386    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
387    border-radius: 12px;
388    background-color: #fff;
389    color: #000;
390    padding: 20px;
391    text-align: center;
392  }
393
394  .modal-overlay.referral-modal-overlay {
395    position: fixed;
396    top: 0;
397    left: 0;
398    width: 100%;
399    height: 100%;
400    background-color: rgba(0, 0, 0, 0.7);
401    z-index: 2001;
402    display: block;
403    opacity: 1;
404    transition: opacity var(--duration-default) ease, visibility 0s;
405  }
406</style>
407
408<link rel="preload" href="https://store-themes.easystore.co/1074007/themes/55058/assets/section-header.css?t=1788237975" as="style" onload="this.onload=null;this.rel='stylesheet'">
409<link rel="preload" href="https://store-themes.easystore.co/1074007/themes/55058/assets/component-list-menu.css?t=1788237975" as="style" onload="this.onload=null;this.rel='stylesheet'">
410<link rel="preload" href="https://store-themes.easystore.co/1074007/themes/55058/assets/component-menu-drawer.css?t=1788237975" as="style" onload="this.onload=null;this.rel='stylesheet'">
411<link rel="preload" href="https://store-themes.easystore.co/1074007/themes/55058/assets/component-cart-notification.css?v1.1?t=1788237975" as="style" onload="this.onload=null;this.rel='stylesheet'">
412
413<script src="https://store-themes.easystore.co/1074007/themes/55058/assets/cart-notification.js?t=1788237975" defer="defer"></script>
vendor: 2 bytes, line 413
413
414<script src="https://store-themes.easystore.co/1074007/themes/55058/assets/details-modal.js?t=1788237975" defer="defer"></script>
414
415
416<svg xmlns="http://www.w3.org/2000/svg" class="hidden">
417  <symbol id="icon-search" viewbox="0 0 18 19" fill="none">
418    <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"/>
419  </symbol>
420
421  <symbol id="icon-close" class="icon icon-close" fill="none" viewBox="0 0 18 17">
422    <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">
423  </symbol>
424</svg>
425
426
427<div id="easystore-section-header">
428  <sticky-header class="header-wrapper header-wrapper--border-bottom">
429    <header class="header header--middle-left page-width header--has-menu" itemscope itemtype="http://schema.org/Organization">
430      <header-drawer data-breakpoint="tablet">
431        <details class="menu-drawer-container menu-opening">
432          <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">
433            <span>
434              
435
436
437    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-hamburger " fill="none" viewBox="0 0 18 16">
438      <path d="M1 .5a.5.5 0 100 1h15.71a.5.5 0 000-1H1zM.5 8a.5.5 0 01.5-.5h15.71a.5.5 0 010 1H1A.5.5 0 01.5 8zm0 7a.5.5 0 01.5-.5h15.71a.5.5 0 010 1H1a.5.5 0 01-.5-.5z" fill="currentColor">
439      </path>
440    </svg>
441
442  
443
444              
445
446
447    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-close " fill="none" viewBox="0 0 18 17">
448      <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">
449      </path>
450    </svg>
451
452  
453
454            </span>
455          </summary>
456          <div id="menu-drawer" class="menu-drawer motion-reduce" tabindex="-1">
457            <div class="menu-drawer__inner-container">
458              <div class="menu-drawer__navigation-container">
459                <nav class="menu-drawer__navigation">
460                  <ul class="menu-drawer__menu list-menu" role="list">
461                    
462                    
463                      
464                        <li>
465                          <a href="/"  class="menu-drawer__menu-item list-menu__item link link--text focus-inset">
466                            Home
467                          </a>
468                        </li>
469                      
470                    
471                    
472                      
473                        
474                        <li>
475                          <details>
476                                <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags">
477                                  <a href="/face"  class="link--text list-menu__item menu-drawer__menu-item">
478                                    Shop Face
479                                  </a>
480                                  
481
482
483    <svg viewBox="0 0 14 10" fill="none" aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow " xmlns="http://www.w3.org/2000/svg">
484      <path fill-rule="evenodd" clip-rule="evenodd" d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z" fill="currentColor"></path>
485    </svg>
486
487  
488
489                                  
490
491
492    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
493      <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>
494    </svg>
495
496  
497
498                                </summary>
499                                <div class="menu-drawer__submenu motion-reduce" tabindex="-1">
500                                  <div class="menu-drawer__inner-submenu">
501                                    <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true">
502                                      
503
504
505    <svg viewBox="0 0 14 10" fill="none" aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow " xmlns="http://www.w3.org/2000/svg">
506      <path fill-rule="evenodd" clip-rule="evenodd" d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z" fill="currentColor"></path>
507    </svg>
508
509  
510
511                                      Shop Face
512                                    </button>
513                                    <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1">
514                                      
515                                        
516                                        
517                                          <li>
518                                            <a href="https://www.alaiacosmetic.com/products/alaia-duo-pocket-blush"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
519                                              Duo Pocket Blush
520                                            </a>
521                                          </li>
522                                        
523                                      
524                                      
525                                    </ul>
526                                  </div>
527                                </div>
528                          </details>
529                        </li>
530                      
531                    
532                    
533                      
534                        
535                        <li>
536                          <details>
537                                <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags">
538                                  <a href="/shoplashes"  class="link--text list-menu__item menu-drawer__menu-item">
539                                    Shop Lashes
540                                  </a>
541                                  
542
543
544    <svg viewBox="0 0 14 10" fill="none" aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow " xmlns="http://www.w3.org/2000/svg">
545      <path fill-rule="evenodd" clip-rule="evenodd" d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z" fill="currentColor"></path>
546    </svg>
547
548  
549
550                                  
551
552
553    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
554      <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>
555    </svg>
556
557  
558
559                                </summary>
560                                <div class="menu-drawer__submenu motion-reduce" tabindex="-1">
561                                  <div class="menu-drawer__inner-submenu">
562                                    <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true">
563                                      
564
565
566    <svg viewBox="0 0 14 10" fill="none" aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow " xmlns="http://www.w3.org/2000/svg">
567      <path fill-rule="evenodd" clip-rule="evenodd" d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z" fill="currentColor"></path>
568    </svg>
569
570  
571
572                                      Shop Lashes
573                                    </button>
574                                    <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1">
575                                      
576                                        
577                                        
578                                          <li>
579                                            <a href="/collections/soft-magnetic-lash"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
580                                              Soft Magnetic Lash
581                                            </a>
582                                          </li>
583                                        
584                                      
585                                        
586                                        
587                                          <li>
588                                            <a href="/collections/improved-soft-magnetic-lash"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
589                                              IMPROVED Soft Magnetic Lash
590                                            </a>
591                                          </li>
592                                        
593                                      
594                                        
595                                        
596                                          <li>
597                                            <a href="/collections/press-on-lashes"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
598                                              Press On Lash
599                                            </a>
600                                          </li>
601                                        
602                                      
603                                        
604                                        
605                                          <li>
606                                            <a href="/collections/full-collection"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
607                                              Magnetic Lash
608                                            </a>
609                                          </li>
610                                        
611                                      
612                                      
613                                    </ul>
614                                  </div>
615                                </div>
616                          </details>
617                        </li>
618                      
619                    
620                    
621                      
622                        
623                        <li>
624                          <details>
625                                <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags">
626                                  <a href="/shopnails"  class="link--text list-menu__item menu-drawer__menu-item">
627                                    Shop Nails
628                                  </a>
629                                  
630
631
632    <svg viewBox="0 0 14 10" fill="none" aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow " xmlns="http://www.w3.org/2000/svg">
633      <path fill-rule="evenodd" clip-rule="evenodd" d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z" fill="currentColor"></path>
634    </svg>
635
636  
637
638                                  
639
640
641    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
642      <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>
643    </svg>
644
645  
646
647                                </summary>
648                                <div class="menu-drawer__submenu motion-reduce" tabindex="-1">
649                                  <div class="menu-drawer__inner-submenu">
650                                    <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true">
651                                      
652
653
654    <svg viewBox="0 0 14 10" fill="none" aria-hidden="true" focusable="false" role="presentation" class="icon icon-arrow " xmlns="http://www.w3.org/2000/svg">
655      <path fill-rule="evenodd" clip-rule="evenodd" d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z" fill="currentColor"></path>
656    </svg>
657
658  
659
660                                      Shop Nails
661                                    </button>
662                                    <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1">
663                                      
664                                        
665                                        
666                                          <li>
667                                            <a href="/collections/press-on-nails"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
668                                              Press On Nails
669                                            </a>
670                                          </li>
671                                        
672                                      
673                                      
674                                    </ul>
675                                  </div>
676                                </div>
677                          </details>
678                        </li>
679                      
680                    
681                    
682                      
683                        <li>
684                          <a href="/store-locator"  class="menu-drawer__menu-item list-menu__item link link--text focus-inset">
685                            Location
686                          </a>
687                        </li>
688                      
689                    
690                  </ul>
691                </nav>
692
693                <div class="menu-drawer__utility-links">
694
695                  
696
697
698                  
699                  
700                  
701                    <a href="/account/login" class="menu-drawer__account link link--text focus-inset h5">
702                       
703
704
705    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-account " fill="none" viewBox="0 0 18 19">
706      <path fill-rule="evenodd" clip-rule="evenodd" d="M6 4.5a3 3 0 116 0 3 3 0 01-6 0zm3-4a4 4 0 100 8 4 4 0 000-8zm5.58 12.15c1.12.82 1.83 2.24 1.91 4.85H1.51c.08-2.6.79-4.03 1.9-4.85C4.66 11.75 6.5 11.5 9 11.5s4.35.26 5.58 1.15zM9 10.5c-2.5 0-4.65.24-6.17 1.35C1.27 12.98.5 14.93.5 18v.5h17V18c0-3.07-.77-5.02-2.33-6.15-1.52-1.
7061-3.67-1.35-6.17-1.35z" fill="currentColor"></path>
707    </svg>
708
709  
710 
711                      
712                      Log in
713                    </a>
714                  
715                    <a href="/account/register" class="menu-drawer__account link link--text focus-inset h5">
716                      
717                       
718
719
720    <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">
721      <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>
722    </svg>
723
724  
725 
726                      Create account
727                    </a>
728                  
729                  
730                  
731                </div>
732              </div>
733            </div>
734          </div>
735        </details>
736      </header-drawer>
737  
738      
739        <a href="/" class="header__heading-link link link--text focus-inset" itemprop="url">
740          <img src="https://cdn.store-assets.com/s/1074007/f/16413023.png" class="header__heading-logo" alt="ALAIA" loading="lazy" itemprop="logo">
741        </a>
742      
743      <nav class="header__inline-menu">
744        <ul class="list-menu list-menu--inline" role="list">
745          
746            
747              
748                <li>
749                  <a href="/"  class="header__menu-item header__menu-item list-menu__item link link--text focus-inset">
750                    Home
751                  </a>
752                </li>
753              
754            
755            
756              
757                
758                <li>
759                  <details-disclosure>
760                    <details>
761                      <summary class="header__menu-item list-menu__item link focus-inset">
762                        <a href="/face"  >Shop Face</a>
763                        
764
765
766    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
767      <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>
768    </svg>
769
770  
771
772                      </summary>
773                      <ul class="header__submenu list-menu list-menu--disclosure caption-large motion-reduce" role="list" tabindex="-1">
774                        
775                        
776                        
777                          
778                            
779                            <li>
780                              <a href="https://www.alaiacosmetic.com/products/alaia-duo-pocket-blush"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
781                                Duo Pocket Blush
782                              </a>
783                            </li>
784                          
785                        
786                      </ul>
787                    </details>
788                  </details-disclosure>
789                </li>
790              
791            
792            
793              
794                
795                <li>
796                  <details-disclosure>
797                    <details>
798                      <summary class="header__menu-item list-menu__item link focus-inset">
799                        <a href="/shoplashes"  >Shop Lashes</a>
800                        
801
802
803    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
804      <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>
805    </svg>
806
807  
808
809                      </summary>
810                      <ul class="header__submenu list-menu list-menu--disclosure caption-large motion-reduce" role="list" tabindex="-1">
811                        
812                        
813                        
814                          
815                            
816                            <li>
817                              <a href="/collections/soft-magnetic-lash"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
818                                Soft Magnetic Lash
819                              </a>
820                            </li>
821                          
822                        
823                        
824                          
825                            
826                            <li>
827                              <a href="/collections/improved-soft-magnetic-lash"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
828                                IMPROVED Soft Magnetic Lash
829                              </a>
830                            </li>
831                          
832                        
833                        
834                          
835                            
836                            <li>
837                              <a href="/collections/press-on-lashes"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
838                                Press On Lash
839                              </a>
840                            </li>
841                          
842                        
843                        
844                          
845                            
846                            <li>
847                              <a href="/collections/full-collection"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
848                                Magnetic Lash
849                              </a>
850                            </li>
851                          
852                        
853                      </ul>
854                    </details>
855                  </details-disclosure>
856                </li>
857              
858            
859            
860              
861                
862                <li>
863                  <details-disclosure>
864                    <details>
865                      <summary class="header__menu-item list-menu__item link focus-inset">
866                        <a href="/shopnails"  >Shop Nails</a>
867                        
868
869
870    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
871      <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>
872    </svg>
873
874  
875
876                      </summary>
877                      <ul class="header__submenu list-menu list-menu--disclosure caption-large motion-reduce" role="list" tabindex="-1">
878                        
879                        
880                        
881                          
882                            
883                            <li>
884                              <a href="/collections/press-on-nails"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
885                                Press On Nails
886                              </a>
887                            </li>
888                          
889                        
890                      </ul>
891                    </details>
892                  </details-disclosure>
893                </li>
894              
895            
896            
897              
898                <li>
899                  <a href="/store-locator"  class="header__menu-item header__menu-item list-menu__item link link--text focus-inset">
900                    Location
901                  </a>
902                </li>
903              
904            
905            
906            
907              
908                
909                  
910                
911                  
912                
913              
914            
915        </ul>
916      </nav>
917      <div class="header__icons">
918        <details-modal class="header__search">
919          <details>
920            <summary class="header__icon header__icon--search header__icon--summary link link--text focus-inset modal__toggle" aria-haspopup="dialog" aria-label="Search">
921              <span>
922                <svg class="modal__toggle-open icon icon-search" aria-hidden="true" focusable="false" role="presentation">
923                  <use href="#icon-search">
924                </svg>
925                <svg class="modal__toggle-close icon icon-close" aria-hidden="true" focusable="false" role="presentation">
926                  <use href="#icon-close">
927                </svg>
928              </span>
929            </summary>
930            <div class="search-modal modal__content" role="dialog" aria-modal="true" aria-label="Search">
931              <div class="modal-overlay"></div>
932              <div class="search-modal__content" tabindex="-1">
933                  <form action="/search" method="get" role="search" class="search search-modal__form">
934                    <div class="field">
935                      <input class="search__input field__input" 
936                        id="Search-In-Modal"
937                        type="search"
938                        name="q"
939                        value=""
940                        placeholder="Search"
941                        autocomplete="off"
942                      >
943                      <label class="field__label" for="Search-In-Modal">Search</label>
944                      <div class="dropdown" id="searchDropdown"></div>
945                      <input type="hidden" name="search_history" class="hidden_search_history">
946                      <input type="hidden" name="options[prefix]" value="last">
947                      <button class="search__button field__button" aria-label="Search">
948                        <svg class="icon icon-search" aria-hidden="true" focusable="false" role="presentation">
949                          <use href="#icon-search">
950                        </svg>
951                      </button> 
952                    </div>
953                  </form>
954                <button type="button" class="search-modal__close-button modal__close-button link link--text focus-inset" aria-label="accessibility.close">
955                  <svg class="icon icon-close" aria-hidden="true" focusable="false" role="presentation">
956                    <use href="#icon-close">
957                  </svg>
958                </button>
959              </div>
960            </div>
961          </details>
962        </details-modal>
963
964        
965          
966            <div class="header__icon header__icon--account link link--text focus-inset small-hide medium-hide" style="position: relative;">
967              <a href="/account/login" class="header__icon link link--text focus-inset p-2">
968                
969
970
971    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-account " fill="none" viewBox="0 0 18 19">
972      <path fill-rule="evenodd" clip-rule="evenodd" d="M6 4.5a3 3 0 116 0 3 3 0 01-6 0zm3-4a4 4 0 100 8 4 4 0 000-8zm5.58 12.15c1.12.82 1.83 2.24 1.91 4.85H1.51c.08-2.6.79-4.03 1.9-4.85C4.66 11.75 6.5 11.5 9 11.5s4.35.26 5.58 1.15zM9 10.5c-2.5 0-4.65.24-6.17 1.35C1.27 12.98.5 14.93.5 18v.5h17V18c0-3.07-.77-5.02-2.33-6.15-1.52-1.1-3.67-1.35-6.17-1.35z" fill="currentColor"></path>
973    </svg>
974
975  
976
977              </a>
978
979              <!-- Referral Notification Popup for Desktop -->
980              <div id="referralNotification" class="referral-notification" style="display: none;">
981                <button class="close-btn" onclick="dismissReferralNotification()">&times;</button>
982                <div style="text-align: center; margin-bottom: 16px;">
983                  <div style="width: 100px; height: 100px; margin: 0 auto;">
984                    <img src="https://resources.easystore.co/storefront/icons/channels/vector_referral_program.svg">
985                  </div>
986                </div>
987                <p id="referralSignupMessage" style="text-align: center; font-size: 14px; color: #666; margin: 0 0 20px 0;">
988                  Your friend gifted you   credit! Sign up now to redeem.
989                </p>
990                <div style="text-align: center;">
991                  <button class="btn" onclick="goToSignupPage()" style="width: 100%;">
992                    Sign Up
993                  </button>
994                </div>
995              </div>
996            </div>
997          
998        
999        
1000        <a href="/cart" class="header__icon header__icon--cart link link--text focus-inset" id="cart-icon-bubble">
1001          
1002
1003
1004    <svg class="icon icon-cart-empty " aria-hidden="true" focusable="false" role="presentation" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none">
1005      <path d="m15.75 11.8h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33l-.78-11.61zm0 1h-2.22l-.71 10.67a4 4 0 0 0 3.99 4.27h7.38a4 4 0 0 0 4-4.27l-.72-10.67h-2.22v.63a4.75 4.75 0 1 1 -9.5 0zm8.5 0h-7.5v.63a3.7
10055 3.75 0 1 0 7.5 0z" fill="currentColor" fill-rule="evenodd"></path>
1006    </svg>
1007
1008  
1009
1010          <div class="cart-count-bubble hidden">
1011            <span aria-hidden="true" class="js-content-cart-count">0</span>
1012          </div>
1013        </a>
1014
1015        
1016          
1017          <!-- Referral Notification Modal for Mobile -->
1018          <details-modal class="referral-modal" id="referralMobileModal">
1019            <details>
1020              <summary class="referral-modal__toggle" aria-haspopup="dialog" aria-label="Open referral modal" style="display: none;">
1021              </summary>
1022              <div class="modal-overlay referral-modal-overlay"></div>
1023              <div class="referral-modal__dialog" role="dialog" aria-modal="true" aria-label="Referral notification">
1024                <div class="referral-modal__content">
1025                  <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;">
1026                    &times;
1027                  </button>
1028                  
1029                  <div style="margin-bottom: 24px;">
1030                    <div style="width: 120px; height: 120px; margin: 0 auto 20px;">
1031                      <img src="https://resources.easystore.co/storefront/icons/channels/vector_referral_program.svg" style="width: 100%; height: 100%;">
1032                    </div>
1033                  </div>
1034                  
1035                  <p id="referralSignupMessageMobile" style="font-size: 16px; color: #333; margin: 0 0 30px 0; line-height: 1.5;">
1036                    Your friend gifted you   credit! Sign up now to redeem.
1037                  </p>
1038                  
1039                  <button type="button" class="btn" onclick="goToSignupPageFromMobile()" style="width: 100%;">
1040                    Sign Up
1041                  </button>
1042                </div>
1043              </div>
1044            </details>
1045          </details-modal>
1046          
1047        
1048      </div>
1049    </header>
1050  </sticky-header>
1051  
1052<cart-notification>
1053  <div class="cart-notification-wrapper page-width color-background-1">
1054    <div id="cart-notification" class="cart-notification focus-inset" aria-modal="true" aria-label="Added to cart" role="dialog" tabindex="-1">
1055      <div class="cart-notification__header">
1056        <h2 class="cart-notification__heading caption-large">
1057
1058
1059    <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">
1060      <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>
1061    </svg>
1062
1063  
1064 Added to cart</h2>
1065        <button type="button" class="cart-notification__close modal__close-button link link--text focus-inset" aria-label="accessibility.close">
1066          
1067
1068
1069    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-close " fill="none" viewBox="0 0 18 17">
1070      <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">
1071      </path>
1072    </svg>
1073
1074  
1075
1076        </button>
1077      </div>
1078      <div id="cart-notification-product" class="cart-notification-product"></div>
1079      <div class="cart-notification__links">
1080        <a href="/cart" id="cart-notification-button" class="button button--secondary button--full-width">View cart (<span class="js-content-cart-count">0</span>)</a>
1081        <form action="/cart" method="post" id="cart-notification-form">
1082          <input type="hidden" name="_token" value="IaqS15tBAPkZqUIUMjGHNVtI7Bpt08nzpx1iCciC">
1083          <input type="hidden" name="current_currency" value="">
1084          <button class="button button--primary button--full-width" name="checkout" value="true">Checkout</button>
1085        </form>
1086        <button type="button" class="link button-label">Continue shopping</button>
1087      </div>
1088    </div>
1089  </div>
1090</cart-notification>
1091<style>
1092  .cart-notification {
1093     display: none;
1094  }
1095</style>
1096<script>
1097document.getElementById('cart-notification-form').addEventListener('submit',(event)=>{
1098  if(event.submitter) event.submitter.classList.add('loading');
1099})
1100
1101</script>
1101
1102
1103</div>
1104
1105
1106<script>
1107
1108  class StickyHeader extends HTMLElement {
1109    constructor() {
1110      super();
1111    }
1112
1113    connectedCallback() {
1114      this.header = document.getElementById('easystore-section-header');
1115      this.headerBounds = {};
1116      this.currentScrollTop = 0;
1117      this.preventReveal = false;
1118
1119      this.onScrollHandler = this.onScroll.bind(this);
1120      this.hideHeaderOnScrollUp = () => this.preventReveal = true;
1121
1122      this.addEventListener('preventHeaderReveal', this.hideHeaderOnScrollUp);
1123      window.addEventListener('scroll', this.onScrollHandler, false);
1124
1125      this.createObserver();
1126    }
1127
1128    disconnectedCallback() {
1129      this.removeEventListener('preventHeaderReveal', this.hideHeaderOnScrollUp);
1130      window.removeEventListener('scroll', this.onScrollHandler);
1131    }
1132
1133    createObserver() {
1134      let observer = new IntersectionObserver((entries, observer) => {
1135        this.headerBounds = entries[0].intersectionRect;
1136        observer.disconnect();
1137      });
1138
1139      observer.observe(this.header);
1140    }
1141
1142    onScroll() {
1143      const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
1144
1145      if (scrollTop > this.currentScrollTop && scrollTop > this.headerBounds.bottom) {
1146        requestAnimationFrame(this.hide.bind(this));
1147      } else if (scrollTop < this.currentScrollTop && scrollTop > this.headerBounds.bottom) {
1148        if (!this.preventReveal) {
1149          requestAnimationFrame(this.reveal.bind(this));
1150        } else {
1151          window.clearTimeout(this.isScrolling);
1152
1153          this.isScrolling = setTimeout(() => {
1154            this.preventReveal = false;
1155          }, 66);
1156
1157          requestAnimationFrame(this.hide.bind(this));
1158        }
1159      } else if (scrollTop <= this.headerBounds.top) {
1160        requestAnimationFrame(this.reset.bind(this));
1161      }
1162
1163
1164      this.currentScrollTop = scrollTop;
1165    }
1166
1167    hide() {
1168      this.header.classList.add('easystore-section-header-hidden', 'easystore-section-header-sticky');
1169      this.closeMenuDisclosure();
1170      // this.closeSearchModal();
1171    }
1172
1173    reveal() {
1174      this.header.classList.add('easystore-section-header-sticky', 'animate');
1175      this.header.classList.remove('easystore-section-header-hidden');
1176    }
1177
1178    reset() {
1179      this.header.classList.remove('easystore-section-header-hidden', 'easystore-section-header-sticky', 'animate');
1180    }
1181
1182    closeMenuDisclosure() {
1183      this.disclosures = this.disclosures || this.header.querySelectorAll('details-disclosure');
1184      this.disclosures.forEach(disclosure => disclosure.close());
1185    }
1186
1187    // closeSearchModal() {
1188    //   this.searchModal = this.searchModal || this.header.querySelector('details-modal');
1189    //   this.searchModal.close(false);
1190    // }
1191  }
1192
1193  customElements.define('sticky-header', StickyHeader);
1194
1195  
1196  class DetailsDisclosure extends HTMLElement{
1197    constructor() {
1198      super();
1199      this.mainDetailsToggle = this.querySelector('details');
1200      // this.mainDetailsToggle.addEventListener('focusout', this.onFocusOut.bind(this));
1201      this.mainDetailsToggle.addEventListener('mouseover', this.open.bind(this));
1202      this.mainDetailsToggle.addEventListener('mouseleave', this.close.bind(this));
1203    }
1204
1205    onFocusOut() {
1206      setTimeout(() => {
1207        if (!this.contains(document.activeElement)) this.close();
1208      })
1209    }
1210
1211    open() {
1212      this.mainDetailsToggle.setAttribute('open',1)
1213    }
1214
1215    close() {
1216      this.mainDetailsToggle.removeAttribute('open')
1217    }
1218  }
1219
1220  customElements.define('details-disclosure', DetailsDisclosure);
1221
1222  function clearAll() {
1223    localStorage.removeItem('searchHistory'); 
1224    
1225    var customer = "";
1226    if(customer) {
1227      // Your logic to clear all data or call an endpoint
1228      fetch('/account/search_histories', {
1229          method: 'DELETE',
1230          headers: {
1231            "Content-Type": "application/json",
1232            "X-Requested-With": "XMLHttpRequest"
1233          },
1234          body: JSON.stringify({
1235            _token: "IaqS15tBAPkZqUIUMjGHNVtI7Bpt08nzpx1iCciC"
1236          }),
1237      })
1238      .then(response => response.json())
1239    }
1240  }
1241  // End - delete search history from local storage
1242  
1243  // search history dropdown  
1244  var searchInputs = document.querySelectorAll('.search__input');
1245  
1246  if(searchInputs.length > 0) {
1247    
1248    searchInputs.forEach((searchInput)=> {
1249    
1250      searchInput.addEventListener('focus', function() {
1251        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
1252        searchDropdown.innerHTML = ''; // Clear existing items
1253  
1254        // retrieve data from local storage
1255        var searchHistoryData = JSON.parse(localStorage.getItem('searchHistory')) || [];
1256  
1257        // Convert JSON to string
1258        var search_history_json = JSON.stringify(searchHistoryData);
1259  
1260        // Set the value of the hidden input
1261        searchInput.closest('form').querySelector(".hidden_search_history").value = search_history_json;
1262  
1263        // create dropdown items
1264        var clearAllItem = document.createElement('div');
1265        clearAllItem.className = 'dropdown-item clear-all';
1266        clearAllItem.textContent = 'Clear';
1267        clearAllItem.addEventListener('click', function() {
1268          clearAll();
1269          searchDropdown.style.display = 'none';
1270          searchInput.classList.remove('is-focus');
1271        });
1272        searchDropdown.appendChild(clearAllItem);
1273  
1274        // create dropdown items
1275        searchHistoryData.forEach(function(item) {
1276          var dropdownItem = document.createElement('div');
1277          dropdownItem.className = 'dropdown-item';
1278          dropdownItem.textContent = item.term;
1279          dropdownItem.addEventListener('click', function() {
1280            searchInput.value = item.term;
1281            searchInput.closest('form').submit();
1282            searchDropdown.style.display = 'none';
1283          });
1284          searchDropdown.appendChild(dropdownItem);
1285        });
1286  
1287        if(searchHistoryData.length > 0){
1288          // display the dropdown
1289          searchInput.classList.add('is-focus');
1290          document.body.classList.add('search-input-focus');
1291          searchDropdown.style.display = 'block';
1292        }
1293      });
1294  
1295      searchInput.addEventListener("focusout", (event) => {
1296        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
1297        searchInput.classList.remove('is-focus');
1298        searchDropdown.classList.add('transparent');
1299        setTimeout(()=>{
1300          searchDropdown.style.display = 'none';
1301          searchDropdown.classList.remove('transparent');
1302          document.body.classList.remove('search-input-focus');
1303        }, 400);
1304      });
1305    })
1306  }
1307  // End - search history dropdown
1308
1309  // referral notification popup
1310  const referralMessageTemplate = 'Your friend gifted you __CURRENCY_CODE__ __CREDIT_AMOUNT__ credit! Sign up now to redeem.';
1311  const shopCurrency = 'RM';
1312
1313  function getCookie(name) {
1314    const value = `; ${document.cookie}`;
1315    const parts = value.split(`; ${name}=`);
1316    if (parts.length === 2) return parts.pop().split(';').shift();
1317    return null;
1318  }
1319
1320  function removeCookie(name) {
1321    document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;
1322  }
1323
1324  function showReferralNotification() {
1325    const referralCode = getCookie('customer_referral_code');
1326    
1327    
1328    const customerReferralCode = null;
1329    
1330    
1331    const activeReferralCode = referralCode || customerReferralCode;
1332    const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {};
1333    
1334    if (referralData.timestamp && referralData.expirationDays) {
1335      const expirationTime = referralData.timestamp + (referralData.expirationDays * 24 * 60 * 60 * 1000);
1336      if (Date.now() > expirationTime) {
1337        localStorage.removeItem('referral_notification_data');
1338        return;
1339      }
1340    }
1341    
1342    if (referralData.dismissed) return;
1343    
1344    if (activeReferralCode) {
1345      if (referralData.creditAmount) {
1346        displayReferralNotification(referralData.creditAmount);
1347      } else {
1348        fetchReferralCampaignData(activeReferralCode);
1349      }
1350    }
1351  }
1352    
1353  function fetchReferralCampaignData(referralCode) {
1354    fetch(`/customer/referral_program/campaigns/${referralCode}`)
1355      .then(response => {
1356        if (!response.ok) {
1357          throw new Error('Network response was not ok');
1358        }
1359        return response.json();
1360      })
1361      .then(data => {
1362        let refereeCreditAmount = null;
1363        if (data.data.campaign && data.data.campaign.referral_rules) {
1364          const refereeRule = data.data.campaign.referral_rules.find(rule => 
1365            rule.target_type === 'referee' && 
1366            rule.event_name === 'customer/create' && 
1367            rule.entitlement && 
1368            rule.entitlement.type === 'credit'
1369          );
1370          
1371          if (refereeRule) {
1372            refereeCreditAmount = refereeRule.entitlement.amount;
1373          }
1374        }
1375        
1376        const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {};
1377        referralData.creditAmount = refereeCreditAmount;
1378        referralData.dismissed = referralData.dismissed || false;
1379        referralData.timestamp = Date.now();
1380        referralData.expirationDays = 3;
1381        localStorage.setItem('referral_notification_data', JSON.stringify(referralData));
1382        
1383        displayReferralNotification(refereeCreditAmount);
1384      })
1385      .catch(error => {
1386        removeCookie('customer_referral_code');
1387      });
1388  }
1389    
1390  function displayReferralNotification(creditAmount = null) {
1391    const isMobile = innerWidth <= 749;
1392    
1393    if (isMobile) {
1394      const mobileModal = document.querySelector('#referralMobileModal details');
1395      const mobileMessageElement = document.getElementById('referralSignupMessageMobile');
1396      
1397      if (mobileModal && mobileMessageElement) {
1398        if (creditAmount) {
1399          const finalMessage = referralMessageTemplate
1400            .replace('__CREDIT_AMOUNT__', creditAmount)
1401            .replace('__CURRENCY_CODE__', shopCurrency);
1402          
1403          mobileMessageElement.textContent = finalMessage;
1404        }
1405        
1406        mobileModal.setAttribute('open', '');
1407      }
1408    } else {
1409      const notification = document.getElementById('referralNotification');
1410      
1411      if (notification) {
1412        if (creditAmount) {
1413          const messageElement = document.getElementById('referralSignupMessage');
1414          if (messageElement) {
1415            const finalMessage = referralMessageTemplate
1416              .replace('__CREDIT_AMOUNT__', creditAmount)
1417              .replace('__CURRENCY_CODE__', shopCurrency);
1418            
1419            messageElement.textContent = finalMessage;
1420          }
1421        }
1422        
1423        notification.style.display = 'block';
1424      }
1425    }
1426  }
1427
1428  showReferralNotification();
1429
1430  addEventListener('beforeunload', function() {
1431    const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {};
1432    
1433    if (referralData.creditAmount !== undefined) {
1434      referralData.creditAmount = null;
1435      localStorage.setItem('referral_notification_data', JSON.stringify(referralData));
1436    }
1437  });
1438
1439  function closeReferralNotification() {
1440    const notification = document.getElementById('referralNotification');
1441    if (notification) {
1442      notification.style.display = 'none';
1443    }
1444  }
1445
1446  function dismissReferralNotification() {
1447    const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {};
1448    
1449    referralData.dismissed = true;
1450    referralData.timestamp = referralData.timestamp || Date.now();
1451    referralData.expirationDays = referralData.expirationDays || 3;
1452    
1453    localStorage.setItem('referral_notification_data', JSON.stringify(referralData));
1454    
1455    closeReferralNotification();
1456  }
1457
1458  function goToSignupPage() {
1459    location.href = '/account/register';
1460    dismissReferralNotification();
1461  }
1462
1463  function closeMobileReferralModal() {
1464    const mobileModal = document.querySelector('#referralMobileModal details');
1465    if (mobileModal) {
1466      mobileModal.removeAttribute('open');
1467    }
1468    
1469    const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {};
1470    referralData.dismissed = true;
1471    referralData.timestamp = referralData.timestamp || Date.now();
1472    referralData.expirationDays = referralData.expirationDays || 3;
1473    localStorage.setItem('referral_notification_data', JSON.stringify(referralData));
1474  }
1475
1476  function goToSignupPageFromMobile() {
1477    location.href = '/account/register';
1478    closeMobileReferralModal();
1479  }
1480  // End - referral notification popup
1481</script>
1481
1482
1483
1484  <main id="MainContent" class="content-for-layout focus-none" role="main" tabindex="-1">
vendor: 83 bytes, lines 1484-1487
1484
1485    
1486    
1487<script src="https://www.recaptcha.net/recaptcha/enterprise.js?render=
14876LdMNdIqAAAAALegJp7y4weVcCIlnwmIN8TWseEF
vendor: 12 bytes, line 1487
1487"></script>
1488<link rel="preload" href="https://store-themes.easystore.co/1074007/themes/55058/assets/customer.css?t=1788237975" as="style" onload="this.onload=null;this.rel='stylesheet'">
1489<style>
1490  main.main-content .field > label{
1491    display: none;
1492  }
1493  .h3{
1494    font-size: 18px;
1495  }
1496  .button--full-width{
1497    width: 100%;
1498  }
1499  .tab-wrapper{
1500    display: inline-flex;
1501    justify-content: center;
1502    align-items: center;
1503    margin: 10px auto 20px;
1504    background-color: #eaeaea;
1505    border-radius: 200px;
1506    padding: 5px;
1507    gap: 10px;
1508  }
1509  .tab-wrapper .tab-label {
1510    display: inline-block;
1511    min-width: 130px;
1512    padding: 8px 15px;
1513    border-radius: 100px;
1514    cursor: pointer;
1515    font-size: 17px;
1516    line-height: 1.1;
1517    user-select: none;
1518    margin: 0;
1519    color: #000;
1520  }
1521  #register-tos a {
1522    display: inline;
1523  }
1524  @media screen and (max-width: 400px){
1525    .tab-wrapper .tab-label {
1526      min-width: 110px;
1527    }
1528  }
1529  .tab-wrapper input[type='radio']:checked + .tab-label {
1530    background-color: #fff;
1531    box-shadow: 2px 2px 25px -10px #333;
1532  }
1533
1534  @media screen and (min-width: 500px){
1535    .large--five-twelfths{
1536      min-width: 420px;
1537    }
1538  }
1539</style>
1540
1541
1542
1543
1544<div class="customer login section-width-control small-width large--five-twelfths text-center wrapper">
1545  <div class="card">
1546    <h1 id="login" tabindex="-1" class="mb-0">
1547      Welcome
1548    </h1>
1549    <p class="h3 mt-0">
1550      
1551        Sign up or log in to continue
1552      
1553    </p>
1554    <div>
1555      
1556
1557      
1558
1559      
1560
1561      
1562
1563      
1564
1565      
1566
1567      
1568
1569      
1570
1571      
1572      <div class="tab-wrapper">
1573        <div>
1574          <input type="radio" name="type" id="tab-register" class="hide hidden" checked>
1575          <label for="tab-register" class="tab-label">
1576            Sign up
1577          </label>
1578        </div>
1579        <div>
1580          <input type="radio" name="type" id="tab-login" class="hide hidden">
1581          <label for="tab-login" class="tab-label">
1582            Login
1583          </label>
1584        </div>
1585      </div>
1586      
1587
1588      <form id="form-login" action="/account/auth" method="post" class="mt-2">
1589        <input type="hidden" name="_token" value="IaqS15tBAPkZqUIUMjGHNVtI7Bpt08nzpx1iCciC">
1590        <input type="hidden" name="location_id" value="">
1591        <input type="hidden" name="staff_id" value="">
1592        <input type="hidden" id="recaptchaResponse" name="g-recaptcha-response">
1593
1594        
1595        <div id="error-content"></div>
1596
1597        <div class="field">
1598          <input
1599            type="text"
1600            name="customer[email_or_phone]"
1601            id="CustomerDetail"
1602            autocorrect="off"
1603            autocapitalize="off"
1604            placeholder="Email"
1605            required
1606          >
1607          <label for="CustomerDetail">
1608            Email
1609          </label>
1610        </div>
1611
1612        <button
1613          type="submit"
1614          form="form-login"
1615          class="btn button--full-width g-recaptcha">
1616          Continue
1617        </button>
1618
1619        <div class="button-snippet">
1620          
1621<!-- Snippet:login/button: Facebook Login -->
1622                <style>
1623                    #fb-login-btn.btn{
1624                        background-color: #fff;
1625                        color: #000;
1626                        padding: 0;
1627                        overflow: hidden;
1628                        display: flex;
1629                        justify-content: center;
1630                        align-items: center;
1631                        width: 100%;
1632                        margin: 15px auto;
1633                        font-size: 14px;
1634                        border: 1px solid currentColor;
1635                        box-shadow: none;
1636                    }
1637                    #fb-login-btn.btn:hover{
1638                        background-color: #fff;
1639                    }
1640                    #fb-login-btn.btn svg{
1641                        width: 45px;
1642                        vertical-align: middle;
1643                        padding: 5px;
1644                    }
1645                    #fb-login-btn.btn .fb-login-text{
1646                        padding: 13px 75px 13px 30px;
1647                        display: inline-block;
1648                        width: calc(100% - 52px);
1649                    }
1650
1651                    #fb-login-btn.btn--loading{
1652                      color: transparent !important;
1653                      pointer-events: none;
1654                      background: #fff !important;
1655                      border-color: #000;
1656                    }
1657
1658                    #fb-login-btn.btn--loading:after {
1659                      animation: loading 500ms infinite linear;
1660                      border: 0.3em solid rgba(0, 0, 0, 0.4);
1661                      border-left: 0.3em solid rgb(0, 0, 0);
1662                      border-radius: 100%;
1663                      box-sizing: content-box;
1664                      content: '';
1665                      display: block;
1666                      height: 1em;
1667                      position: absolute;
1668                      width: 1em;
1669                    }
1670
1671                    @keyframes loading {
1672                      0% {
1673                        transform: rotate(0deg);
1674                      }
1675                      100% {
1676                        transform: rotate(360deg);
1677                      }
1678                    }
1679                    @media screen and (max-width: 500px) {
1680                      #fb-login-btn.btn .fb-login-text{
1681                        padding: 13px 25px 13px 8px;
1682                        font-size: 13px;
1683                      }
1684                    }
1685                </style>
1686                <button id="fb-login-btn" type="button"  class="btn"  onclick="fb_login()" style="background-color: #fff; color: #000; font-weight: normal;">
1687                  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 700 700"><g><path d="M650,350C650,184.32,515.68,50,350,50S50,184.32,50,350c0,140.69,96.86,258.74,227.53,291.17V441.68H215.66V350h61.87V310.5c0-102.11,46.2-149.44,146.4-149.44,19,0,51.81,3.72,65.22,7.45V251.6c-7.08-.74-19.38-1.12-34.65-1.12-49.2,0-68.2,18.64-68.2,67.08V350h98.1l-16.8,91.68H386.35V647.8C534.88,629.86,650,503.38,650,350Z" fill="#0866ff"/><path d="M467.5,441.68,484.4,350h-98V317.6c0-48.44,19-67.08,68.19-67.08,15.28,0,27.6.37,34.66,1.12V168.51c-13.42-3.73-46.21-7.45-65.22-7.45-100.25,0-146.4,47.33-146.4,149.44V350H2
168715.66v91.68h61.87V641.17a301.61,301.61,0,0,0,108.82,6.63V441.68Z" fill="#fff"/></g></svg>
1688                  <span class="fb-login-text">Continue with Facebook</span>
1689                </button>
1690
1691                <style>
1692                    #fb-login-legal a{
1693                        display: inline;
1694                        font-size: 1em;
1695                    }
1696                </style>
1697
1698                <div id="fb-login-legal" style="text-align:center;margin:-5px auto 15px;font-size:12px;color:#666;">By continuing, you agree to our <a href="https://apps.easystore.co/facebook-login/privacy-policy" target="_blank" rel="noopener" style="color:#666;text-decoration:underline;">Privacy Policy</a> and <a href="https://apps.easystore.co/facebook-login/terms-of-service" target="_blank" rel="noopener" style="color:#666;text-decoration:underline;">Terms of Service</a>.</div>
1699
1700                
1700<script>
1701                    function fb_login(){
1702                        location.href = 'https://apps.easystore.co/facebook-login/run?domain='+window.location.protocol+'//'+window.location.hostname+'&shop=shopalaia.easy.co';
1703                    }
1704                    document.querySelector('#fb-login-btn').addEventListener('click',()=>{
1705                      document.querySelector('#fb-login-btn').classList.add('btn--loading')
1706                    })
1707                </script>
1707
1708<!-- /Snippet -->
1709                
1710        </div>
1711
1712        
1713
1714        <div id="register-tos">
1715          By signing up, I agree to the ALAIA's <a target="_blank" href="/legal/terms-of-service">Terms of Service</a>, <a target="_blank" href="/legal/privacy-policy">Privacy Policy</a> and <a target="_blank" href="/legal/refund-policy">Refund Policy</a>.
1716        </div>
1717
1718      </form>
1719    </div>
1720  </div>
1721
1722</div>
1723
1724
1725
1726<script>
1727  const register_tab = document.querySelector('#tab-register');
1728  const login_tab = document.querySelector('#tab-login');
1729  const register_tos = document.querySelector('#register-tos');
1730  const isRegistrationEnabled = "1";
1731
1732  if (register_tab) {
1733    register_tab.addEventListener('click', function() {
1734      if (register_tos) {
1735        register_tos.style.display = 'block';
1736      }
1737    });
1738  }
1739  if (login_tab) {
1740    login_tab.addEventListener('click', function() {
1741      if (register_tos) {
1742        register_tos.style.display = 'none';
1743      }
1744    });
1745  }
1746
1747  const methodSwitchBtn = document.getElementById('phone-login-btn');
1748  if (methodSwitchBtn) {
1749    methodSwitchBtn.onclick = function () {
1750      var type = (register_tab && register_tab.checked) ? 'register' : 'login';
1751      window.location.href = '/account/login?method=phone&type=' + type;
1752    };
1753  }
1754
1755  let lastPathSegment = window.location.pathname.split('/').filter(segment => segment.length > 0).pop();
1756  
1757  // Redirect to login if trying to access register when self registration is disabled
1758  if (!isRegistrationEnabled) {
1759    if (lastPathSegment === 'register') {
1760      window.location.href = '/account/login';
1761    } else if (lastPathSegment === 'login' || lastPathSegment === 'auth') {
1762      if (register_tos) {
1763        register_tos.style.display = 'none';
1764      }
1765    } 
1766  } else {
1767    // Only proceed with tab logic if not redirecting
1768    if(lastPathSegment === 'login') {
1769      if (login_tab) {
1770        login_tab.checked = true;
1771      }
1772      if (register_tos) {
1773        register_tos.style.display = 'none';
1774      }
1775    } else {
1776      if (register_tos) {
1777        register_tos.style.display = 'block';
1778      }
1779    }
1780  }
1781
1782  const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
1783  const phonePattern = /^(?:\+?\d{1,3}[\s-]?)?(?:\d{1,14}[\s-]?){1,5}$/;
1784
1785  let form = document.querySelector('#form-login'),
1786      input = document.querySelector('#CustomerDetail'),
1787      error_content = document.querySelector('#error-content');
1788
1789
1790  // One attempt at a time: the reCAPTCHA wait below is async, so without
1791  // this a double-click starts two continuations and posts the form twice.
1792  var submitting = false;
1793
1794  form.addEventListener('submit', async function (event) {
1795    // preventDefault FIRST: a re-entrant submit must still be cancelled, or the
1796    // browser performs a native post with no captcha token.
1797    event.preventDefault();
1798    if (submitting) return;
1799
1800    let input_value = input.value
1801    error_content.innerHTML = '';
1802    if (!input_value.match(emailPattern) && !input_value.match(phonePattern)) {
1803      error_content.innerHTML = `<div class="errors note">Invalid Email or Phone</div>`;
1804      return false;
1805    }
1806
1807    submitting = true;
1808    document.querySelector('#form-login .btn').classList.add('btn--loading','loading');
1809
1810    // reCAPTCHA is unreachable from some regions (google.com is blocked in
1811    // mainland China). Fail open the same way checkout and forgot-password do:
1812    // submit without a token rather than leave the button spinning forever.
1813    try {
1814      if (window.grecaptcha && typeof window.grecaptcha.enterprise === 'object') {
1815        // The loader defines a stub {ready} synchronously and fetches the real
1816        // implementation asynchronously, so execute() may not exist yet.
1817        // ready() queues until it does; the timeout stops a bundle that never
1818        // arrives from hanging the button.
1819        await new Promise(function (resolve) {
1820          setTimeout(resolve, 3000);
1821          try { grecaptcha.enterprise.ready(resolve); } catch (e) { resolve(); }
1822        });
1823
1824        const token = await grecaptcha.enterprise.execute('6LdMNdIqAAAAALegJp7y4weVcCIlnwmIN8TWseEF', { action: 'LOGIN' });
1825        document.getElementById('recaptchaResponse').value = token;
1826      }
1827    } catch (e) { /* fail open */ }
1828
1829    document.getElementById('form-login').submit();
1830  });
1831
1832
1833</script>
1833
1834
1835    
1836  </main>
1837 	<style>
1838  .footer{
1839    background-color: #FFFFFF;
1840    color: #484848;
1841  }
1842  .footer .link--text,
1843  .footer .list-menu__item--link,
1844  .footer .footer-block__details-content .list-menu__item--link{
1845    color: #484848;
1846  }
1847  .footer-block__heading{
1848    color: #000000;
1849  }
1850</style>
1851
1852<link href="https://store-themes.easystore.co/1074007/themes/55058/assets/section-footer.css?t=1788237975" rel="stylesheet" type="text/css" media="screen" />
1853
1854<footer class="footer color-background-1">
1855  <div class="footer__content-top page-width">
1856    <div class="grid grid--1-col grid--4-col-tablet ">
1857      
1858      
1859      
1860        <div class="grid__item">
1861          
1862              <h2 class="footer-block__heading">Our mission</h2>
1863              <div class="footer-block__details-content">
1864                <p>Quality materials, good designs, craftsmanship and sustainability.</p>
1865              </div>
1866              <ul class="footer__list-social list-unstyled list-social" role="list">
1867                
1868                
1869                  <li class="list-social__item">
1870                    <a href="https://www.facebook.com/alaiacosmeticss/" class="link link--text list-social__link">
1871                      
1872
1873
1874    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-facebook "
1875    viewBox="0 0 18 18">
1876      <path fill="currentColor"
1877        d="M16.42.61c.27 0 .5.1.69.28.19.2.28.42.28.7v15.44c0 .27-.1.5-.28.69a.94.94 0 01-.7.28h-4.39v-6.7h2.25l.31-2.65h-2.56v-1.7c0-.4.1-.72.28-.93.18-.2.5-.32 1-.32h1.37V3.35c-.6-.06-1.27-.1-2.01-.1-1.01 0-1.83.3-2.45.9-.62.6-.93 1.44-.93 2.53v1.97H7.04v2.65h2.24V18H.98c-.28 0-.5-.1-.7-.28a.94.94 0 01-.28-.7V1.59c0-.27.1-.5.28-.69a.94.94 0 01.7-.28h15.44z">
1878      </path>
1879    </svg>
1880
1881  
1882
1883                    </a>
1884                  </li>
1885                
1886                
1887                  <li class="list-social__item">
1888                    <a href="https://www.instagram.com/alaiacosmetic?utm_source=ig_web_button_share_sheet&igsh=ZDNlZDc0MzIxNw==" class="link link--text list-social__link">
1889                      
1890
1891
1892    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-instagram "
1893    viewBox="0 0 18 18">
1894      <path fill="currentColor"
1895        d="M8.77 1.58c2.34 0 2.62.01 3.54.05.86.04 1.32.18 1.63.3.41.17.7.35 1.01.66.3.3.5.6.65 1 .12.32.27.78.3 1.64.05.92.06 1.2.06 3.54s-.01 2.62-.05 3.54a4.79 4.79 0 01-.3 1.63c-.17.41-.35.7-.66 1.01-.3.3-.6.5-1.01.66-.31.12-.77.26-1.63.3-.92.04-1.2.05-3.54.05s-2.62 0-3.55-.05a4.79 4.79 0 01-1.62-.3c-.42-.16-.7-.35-1.01-.66-.31-.3-.5-.6-.66-1a4.87 4.87 0 01-.3-1.64c-.04-.92-.05-1.2-.05-3.54s0-2.62.05-3.54c.04-.86.18-1.32.3-1.63.16-.41.35-.7.66-1.01.3-.3.6-.5 1-.65.32-.12.78-.27 1.63-.3.93-.05 1.2-.06 3.55-.06zm0-1.58C6.39 0 6.09.01 5.15.05c-.93.04-1.57.2-2.13.4-.57.23-1.06.54-1.55 1.02C1 1.96.7 2.45.46 3.02c-.22.56-.37 1.2-.4 2.13C0 6.1 0 6.4 0 8.77s.01 2.68.05 3.61c.04.94.2 1.57.4 2.13.23.58.54 1.07 1.02 1.56.49.48.98.78 1.55 1.01.56.22 1.2.37 2.13.4.94.05 1.24.06 3.62.06 2.39 0 2.68-.01 3.62-.05.93-.04 1.57-.2 2.13-.41a4.27 4.27 0 001.55-1.01c.49-.49.79-.98 1.01-1.56.22-.55.37-1.19.41-2.13.04-.93.05-1.23.05-3.61 0-2.39 0-2.68-.05-3.62a6.47 6.47 0 00-.4-2.13 4.27 4.27 0 00-1.02-1.55A4.35 4.35 0 0014.52.46a6.43 6.43 0 00-2.13-.41A69 69 0 008.77 0z">
1896      </path>
1897      <path fill="currentColor"
1898        d="M8.8 4a4.5 4.5 0 100 9 4.5 4.5 0 000-9zm0 7.43a2.92 2.92 0 110-5.85 2.92 2.92 0 010 5.85zM13.43 5a1.05 1.05 0 100-2.1 1.05 1.05 0 000 2.1z">
1899      </path>
1900    </svg>
1901
1902  
1903
1904                    </a>
1905                  </li>
1906                
1907                
1908                  <li class="list-social__item">
1909                    <a href="https://www.tiktok.com/@alaiacosmetic?is_from_webapp=1&sender_device=pc" class="link link--text list-social__link">
1910                      
1911
1912
1913    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-tiktok " width="16"
1914    height="18" fill="none" xmlns="http://www.w3.org/2000/svg">
1915      <path
1916        d="M8.02 0H11s-.17 3.82 4.13 4.1v2.95s-2.3.14-4.13-1.26l.03 6.1a5.52 5.52 0 11-5.51-5.52h.77V9.4a2.5 2.5 0 101.76 2.4L8.02 0z"
1917        fill="currentColor">
1918      </path>
1919    </svg>
1920
1921  
1922
1923                    </a>
1924                  </li>
1925                
1926                
1927                
1928                
1929                
1930                
1931              </ul>
1932            
1933        </div>
1934      
1935    </div>
1936  </div>
1937  <div class="footer__content-bottom">
1938    <div class="footer__content-bottom-wrapper page-width">
1939      <div class="footer__column footer__column--info">
1940
1941        
1942
1943
1944        <div class="footer__payment">
1945          <ul class="list list-payment" role="list">
1946            
1947              <li class="list-payment__item">
1948                
1949
1950
1951    <svg class="icon icon--full-color " viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" role="img"
1952    width="38" height="24" aria-labelledby="pi-visa">
1953      <path opacity=".07"
1954        d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path>
1955      <path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32">
1956      </path>
1957      <path
1958        d="M28.3 10.1H28c-.4 1-.7 1.5-1 3h1.9c-.3-1.5-.3-2.2-.6-3zm2.9 5.9h-1.7c-.1 0-.1 0-.2-.1l-.2-.9-.1-.2h-2.4c-.1 0-.2 0-.2.2l-.3.9c0 .1-.1.1-.1.1h-2.1l.2-.5L27 8.7c0-.5.3-.7.8-.7h1.5c.1 0 .2 0 .2.2l1.4 6.5c.1.4.2.7.2 1.1.1.1.1.1.1.2zm-13.4-.3l.4-1.8c.1 0 .2.1.2.1.7.3 1.4.5 2.1.4.2 0 .5-.1.7-.2.5-.2.5-.7.1-1.1-.2-.2-.5-.3-.8-.5-.4-.2-.8-.4-1.1-.7-1.2-1-.8-2.4-.1-3.1.6-.4.9-.8 1.7-.8 1.2 0 2.5 0 3.1.2h.1c-.1.6-.2 1.1-.4 1.7-.5-.2-1-.4-1.5-.4-.3 0-.6 0-.9.1-.2 0-.3.1-.4.2-.2.2-.2.5 0 .7l.5.4c.4.2.8.4 1.1.6.5.3 1 .8 1.1 1.4.2.9-.1 1.7-.9 2.3-.5.4-.7.6-1.4.6-1.4 0-2.5.1-3.4-.2-.1.2-.1.2-.2.1zm-3.5.3c.1-.7.1-.7.2-1 .5-2.2 1-4.5 1.4-6.7.1-.2.1-.3.3-.3H18c-.2 1.2-.4 2.1-.7 3.2-.3 1.5-.6 3-1 4.5 0 .2-.1.2-.3.2M5 8.2c0-.1.2-.2.3-.2h3.4c.5 0 .9.3 1 .8l.9 4.4c0 .1 0 .1.1.2 0-.1.1-.1.1-.1l2.1-5.1c-.1-.1 0-.2.1-.2h2.1c0 .1 0 .1-.1.2l-3.1 7.3c-.1.2-.1.3-.2.4-.1.1-.3 0-.5 0H9.7c-.1 0-.2 0-.2-.2L7.9 9.5c-.2-.2-.5-.5-.9-.6-.6-.3-1.7-.5-1.9-.5L5 8.2z"
1959        fill="#142688"></path>
1960    </svg>
1961
1962  
1963
1964              </li>
1965            
1966            
1967              <li class="list-payment__item">
1968                
1969
1970
1971    <svg class="icon icon--full-color " viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" role="img"
1972    width="38" height="24" aria-labelledby="pi-master">
1973      <path opacity=".07"
1974        d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path>
1975      <path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32">
1976      </path>
1977      <circle fill="#EB001B" cx="15" cy="12" r="7"></circle>
1978      <circle fill="#F79E1B" cx="23" cy="12" r="7"></circle>
1979      <path fill="#FF5F00"
1980        d="M22 12c0-2.4-1.2-4.5-3-5.7-1.8 1.3-3 3.4-3 5.7s1.2 4.5 3 5.7c1.8-1.2 3-3.3 3-5.7z"></path>
1981    </svg>
1982
1983  
1984
1985              </li>
1986            
1987            
1988              <li class="list-payment__item">
1989                
1990
1991
1992    <svg class="icon icon--full-color " xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24"
1993      width="38" height="24" aria-labelledby="pi-american_express">
1994      <g fill="none">
1995        <path fill="#000"
1996          d="M35,0 L3,0 C1.3,0 0,1.3 0,3 L0,21 C0,22.7 1.4,24 3,24 L35,24 C36.7,24 38,22.7 38,21 L38,3 C38,1.3 36.6,0 35,0 Z"
1997          opacity=".07"></path>
1998        <path fill="#006FCF"
1999          d="M35,1 C36.1,1 37,1.9 37,3 L37,21 C37,22.1 36.1,23 35,23 L3,23 C1.9,23 1,22.1 1,21 L1,3 C1,1.9 1.9,1 3,1 L35,1">
2000        </path>
2001        <path fill="#FFF"
2002          d="M8.971,10.268 L9.745,12.144 L8.203,12.144 L8.971,10.268 Z M25.046,10.346 L22.069,10.346 L22.069,11.173 L24.998,11.173 L24.998,12.412 L22.075,12.412 L22.075,13.334 L25.052,13.334 L25.052,14.073 L27.129,11.828 L25.052,9.488 L25.046,10.346 L25.046,10.346 Z M10.983,8.006 L14.978,8.006 L15.865,9.941 L16.687,8 L27.057,8 L28.135,9.19 L29.25,8 L34.013,8 L30.494,11.852 L33.977,15.68 L29.143,15.68 L28.065,14.49 L26.94,15.68 L10.03,15.68 L9.536,14.49 L8.406,14.49 L7.911,15.68 L4,15.68 L7.286,8 L10.716,8 L10.983,8.006 Z M19.646,9.084 L17.407,9.084 L15.907,12.62 L14.282,9.084 L12.06,9.084 L12.06,13.894 L10,9.084 L8.007,9.084 L5.625,14.596 L7.18,14.596 L7.674,13.406 L10.27,13.406 L10.764,14.596 L13.484,14.596 L13.484,10.661 L15.235,14.602 L16.425,14.602 L18.165,10.673 L18.165,14.603 L19.623,14.603 L19.647,9.083 L19.646,9.084 Z M28.986,11.852 L31.517,9.084 L29.695,9.084 L28.094,10.81 L26.546,9.084 L20.652,9.084 L20.652,14.602 L26.462,14.602 L28.076,12.864 L29.624,14.602 L31.499,14.602 L28.987,11.852 L28.986,11.852 Z">
2003        </path>
2004      </g>
2005    </svg>
2006
2007  
2008
2009              </li>
2010            
2011            
2012              <li class="list-payment__item">
2013                
2014
2015
2016    <svg class="icon icon--full-color " viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" width="38"
2017      height="24" role="img" aria-labelledby="pi-paypal">
2018      <path opacity=".07"
2019        d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path>
2020      <path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32">
2021      </path>
2022      <path fill="#003087"
2023        d="M23.9 8.3c.2-1 0-1.7-.6-2.3-.6-.7-1.7-1-3.1-1h-4.1c-.3 0-.5.2-.6.5L14 15.6c0 .2.1.4.3.4H17l.4-3.4 1.8-2.2 4.7-2.1z">
2024      </path>
2025      <path fill="#3086C8"
2026        d="M23.9 8.3l-.2.2c-.5 2.8-2.2 3.8-4.6 3.8H18c-.3 0-.5.2-.6.5l-.6 3.9-.2 1c0 .2.1.4.3.4H19c.3 0 .5-.2.5-.4v-.1l.4-2.4v-.1c0-.2.3-.4.5-.4h.3c2.1 0 3.7-.8 4.1-3.2.2-1 .1-1.8-.4-2.4-.1-.5-.3-.7-.5-.8z">
2027      </path>
2028      <path fill="#012169"
2029        d="M23.3 8.1c-.1-.1-.2-.1-.3-.1-.1 0-.2 0-.3-.1-.3-.1-.7-.1-1.1-.1h-3c-.1 0-.2 0-.2.1-.2.1-.3.2-.3.4l-.7 4.4v.1c0-.3.3-.5.6-.5h1.3c2.5 0 4.1-1 4.6-3.8v-.2c-.1-.1-.3-.2-.5-.2h-.1z">
2030      </path>
2031    </svg>
2032
2033  
2034
2035              </li>
2036            
2037            
2038              <li class="list-payment__item">
2039                
2040
2041
2042    <svg class="icon icon--full-color " viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" role="img"
2043      width="38" height="24" aria-labelledby="pi-diners_club">
2044      <path opacity=".07"
2045        d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path>
2046      <path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32">
2047      </path>
2048      <path
2049        d="M12 12v3.7c0 .3-.2.3-.5.2-1.9-.8-3-3.3-2.3-5.4.4-1.1 1.2-2 2.3-2.4.4-.2.5-.1.5.2V12zm2 0V8.3c0-.3 0-.3.3-.2 2.1.8 3.2 3.3 2.4 5.4-.4 1.1-1.2 2-2.3 2.4-.4.2-.4.1-.4-.2V12zm7.2-7H13c3.8 0 6.8 3.1 6.8 7s-3 7-6.8 7h8.2c3.8 0 6.8-3.1 6.8-7s-3-7-6.8-7z"
2050        fill="#3086C8"></path>
2051    </svg>
2052
2053  
2054
2055              </li>
2056            
2057            
2058              <li class="list-payment__item">
2059                
2060
2061
2062    <svg class="icon icon--full-color " viewBox="0 0 38 24" width="38" height="24" role="img"
2063      aria-labelledby="pi-discover" fill="none" xmlns="http://www.w3.org/2000/svg">
2064      <path fill="#000" opacity=".07"
2065        d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path>
2066      <path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32z" fill="#fff">
2067      </path>
2068      <path
2069        d="M3.57 7.16H2v5.5h1.57c.83 0 1.43-.2 1.96-.63.63-.52 1-1.3 1-2.11-.01-1.63-1.22-2.76-2.96-2.76zm1.26 4.14c-.34.3-.77.44-1.47.44h-.29V8.1h.29c.69 0 1.11.12 1.47.44.37.33.59.84.59 1.37 0 .53-.22 1.06-.59 1.39zm2.19-4.14h1.07v5.5H7.02v-5.5zm3.69 2.11c-.64-.24-.83-.4-.83-.69 0-.35.34-.61.8-.61.32 0 .59.13.86.45l.56-.73c-.46-.4-1.01-.61-1.62-.61-.97 0-1.72.68-1.72 1.58 0 .76.35 1.15 1.35 1.51.42.15.63.25.74.31.21.14.32.34.32.57 0 .45-.35.78-.83.78-.51 0-.92-.26-1.17-.73l-.69.67c.49.73 1.09 1.05 1.9 1.05 1.11 0 1.9-.74 1.9-1.81.02-.89-.35-1.29-1.57-1.74zm1.92.65c0 1.62 1.27 2.87 2.9 2.87.46 0 .86-.09 1.34-.32v-1.26c-.43.43-.81.6-1.29.6-1.08 0-1.85-.78-1.85-1.9 0-1.06.79-1.89 1.8-1.89.51 0 .9.18 1.34.62V7.38c-.47-.24-.86-.34-1.32-.34-1.61 0-2.92 1.28-2.92 2.88zm12.76.94l-1.47-3.7h-1.17l2.33 5.64h.58l2.37-5.64h-1.16l-1.48 3.7zm3.13 1.8h3.04v-.93h-1.97v-1.48h1.9v-.93h-1.9V8.1h1.97v-.94h-3.04v5.5zm7.29-3.87c0-1.03-.71-1.62-1.95-1.62h-1.59v5.5h1.07v-2.21h.14l1.48 2.21h1.32l-1.73-2.32c.81-.17 1.26-.72 1.26-1.56zm-2.16.91h-.31V8.03h.33c.67 0 1.03.28 1.03.82 0 .55-.36.85-1.05.85z"
2070        fill="#231F20"></path>
2071      <path d="M20.16 12.86a2.931 2.931 0 100-5.862 2.931 2.931 0 000 5.862z" fill="url(#pi-paint0_linear)">
2072      </path>
2073      <path opacity=".65" d="M20.16 12.86a2.931 2.931 0 100-5.862 2.931 2.931 0 000 5.862z"
2074        fill="url(#pi-paint1_linear)"></path>
2075      <path
2076        d="M36.57 7.506c0-.1-.07-.15-.18-.15h-.16v.48h.12v-.19l.14.19h.14l-.16-.2c.06-.01.1-.06.1-.13zm-.2.07h-.02v-.13h.02c.06 0 .09.02.09.06 0 .05-.03.07-.09.07z"
2077        fill="#231F20"></path>
2078      <path
2079        d="M36.41 7.176c-.23 0-.42.19-.42.42 0 .23.19.42.42.42.23 0 .42-.19.42-.42 0-.23-.19-.42-.42-.42zm0 .77c-.18 0-.34-.15-.34-.35 0-.19.15-.35.34-.35.18 0 .33.16.33.35 0 .19-.15.35-.33.35z"
2080        fill="#231F20"></path>
2081      <path d="M37 12.984S27.09 19.873 8.976 23h26.023a2 2 0 002-1.984l.024-3.02L37 12.985z" fill="#F48120">
2082      </path>
2083      <defs>
2084        <linearGradient id="pi-paint0_linear" x1="21.657" y1="12.275" x2="19.632" y2="9.104"
2085          gradientUnits="userSpaceOnUse">
2086          <stop stop-color="#F89F20"></stop>
2087          <stop offset=".25" stop-color="#F79A20"></stop>
2088          <stop offset=".533" stop-color="#F68D20"></stop>
2089          <stop offset=".62" stop-color="#F58720"></stop>
2090          <stop offset=".723" stop-color="#F48120"></stop>
2091          <stop offset="1" stop-color="#F37521"></stop>
2092        </linearGradient>
2093        <linearGradient id="pi-paint1_linear" x1="21.338" y1="12.232" x2="18.378" y2="6.446"
2094          gradientUnits="userSpaceOnUse">
2095          <stop stop-color="#F58720"></stop>
2096          <stop offset=".359" stop-color="#E16F27"></stop>
2097          <stop offset=".703" stop-color="#D4602C"></stop>
2098          <stop offset=".982" stop-color="#D05B2E"></stop>
2099        </linearGradient>
2100      </defs>
2101    </svg>
2102
2103  
2104
2105              </li>
2106            
2107          </ul>
2108        </div>
2109        
2110        <div class="footer__copyright caption">
2111          <div class="copyright__content">© 2026 ALAIA. Powered by <a href="http://www.easystore.co/?utm_source=storefront&utm_medium=sf_ref_footer&utm_campaign=sf_ref">EasyStore</a></div>
2112        </div>
2113
2114        <div class="footer__copyright caption">
2115          
2116            <div>
2117            
2118            
2119              
2120                <a href="/legal/terms-of-service">Terms of Service</a>
2121              
2122              
2123            
2124              
2125                | <a href="/legal/privacy-policy">Privacy Policy</a>
2126              
2127              
2128            
2129              
2130                | <a href="/legal/refund-policy">Refund Policy</a>
2131              
2132              
2133            
2134            </div>
2135         
2136        </div>
2137        
2138      </div>
2139    </div>
2140  </div>
2141</footer>
2142
2143
2144
2145  
2146
2147  
2147<script>
2148  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)
2149</script>
2149
2150
2151
2152
2153  
2153<script>
2154    let page_template = 'customers';
2155
2156    if(document.querySelector('.currency-picker')) {
2157      EasyStore.Currencies.change(document.querySelector('.currency-picker').value)
2158      EasyStore.Currencies.convertAll() 
2159    }
2160
2161    document.querySelectorAll('.currency-picker').forEach((el)=>{
2162      el.addEventListener('change',(event)=>{
2163        EasyStore.Currencies.change(event.target.value)
2164
2165        
2166          if (page_template == 'cart') {
2167            const params = new URLSearchParams(window.location.search);
2168            params.set('delete_cache', 1);
2169            window.location.search = params;
2170          } else {
2171            window.location.reload();
2172          }
2173
2174          return
2175        
2176
2177        document.querySelectorAll('[name=currencies],[name=current_currency]').forEach((el)=>{
2178          el.value = event.target.value
2179        })
2180
2181        if(page_template == 'cart') location.reload();
2182      })
2183    })
2184  </script>
2184
2185
2186
2187
2188
2189  
2189<script>
2190
2191    window.variantStrings = {
2192      addToCart: `Add to Cart`,
2193      soldOut: `Sold Out`,
2194      unavailable: `Unavailable`,
2195    }
2196
2197    window.accessibilityStrings = {
2198      shareSuccess: `Link copied to clipboard`,
2199    }
2200  </script>
2200
2201  
2201<script>
2202
2203  /*
2204
2205    ------
2206    Events
2207    ------
2208
2209    pages/viewed
2210
2211    customers/signup
2212
2213    customers/login
2214
2215    products/searched
2216
2217    collections/viewed
2218
2219    products/viewed
2220
2221    products/shared
2222
2223    wishlists/item_added
2224
2225    carts/items_added
2226
2227    carts/viewed
2228
2229    carts/item_removed
2230
2231    checkouts/initiated
2232
2233    checkouts/shipping_info_added
2234
2235    checkouts/payment_info_added
2236
2237    checkouts/completed
2238
2239    orders/placed
2240
2241    orders/purchased
2242
2243    payments/captured
2244
2245    payments/failed
2246
2247  */
2248
2249  window.__latest_cart = window.__latest_cart || null;
2250
2251  const _selector = document.querySelector.bind(document),
2252        _selectorAll = document.querySelectorAll.bind(document)
2253
2254  document.addEventListener('DOMContentLoaded', (event) => {
2255
2256    const default_currency = getCookie("currency")
2257    const customer_id = window.__st.cid
2258    const template    = window.__st.p
2259
2260    onPageView()
2261
2262    //-----------------------//
2263    //        Configs        //
2264    //-----------------------//
2265
2266    window.dataLayer = window.dataLayer || []
2267
2268    Array.prototype.last = Array.prototype.last || function() {
2269      return this[this.length - 1] || null
2270    }
2271
2272    Array.prototype.first = Array.prototype.first || function() {
2273      return this[0] || null
2274    }
2275
2276    //----------------------//
2277    //       Triggers       //
2278    //----------------------//
2279
2280    const XHR = window.XMLHttpRequest
2281
2282    function xhr() {
2283
2284      const xhr = new XHR()
2285
2286      xhr.addEventListener("readystatechange", function() {
2287
2288        if(xhr.readyState != 4) return
2289
2290        try {
2291
2292          const response_url = xhr.responseURL
2293
2294          if (response_url.includes("cart/add")) {
2295
2296            window.__latest_cart = JSON.parse(xhr.response)
2297
2298            onCartItemsAdded() // ok
2299
2300          }
2301
2302          if (response_url.includes("cart/remove_item_quantity")) {
2303
2304            window.__latest_cart = JSON.parse(xhr.response)
2305
2306            onCartItemRemoved() // ok
2307
2308          }
2309
2310          if (response_url.includes("new_cart?retrieve=true")) {
2311
2312            result = JSON.parse(xhr.response)
2313
2314            if (result.cart) {
2315              window.__latest_cart = result.cart
2316            }
2317
2318          }
2319
2320        } catch(e) {
2321
2322          console.error(e)
2323
2324        }
2325
2326      }, false);
2327
2328      return xhr
2329
2330    }
2331
2332    window.XMLHttpRequest = xhr
2333
2334    switch(template) {
2335
2336      case 'cart': onCartView() // ok
2337      break
2338      case 'product': onProductView() // ok
2339      break
2340      case 'collection': onCollectionView() // ok
2341      break
2342      case 'blog': onBlogView()
2343      break
2344      case 'article': onArticleView()
2345      break
2346      case 'payment_completed': onOrderPlace()
2347      break
2348      case 'payment_fail': onPaymentFail()
2349      break
2350
2351    }
2352
2353    // _selector('form[action="/checkout/payments"]').addEventListener("submit", onPaymentInfoAdded(_selector('form[action="/checkout/payments"]')))
2354    if (_selector('form[action="/checkout/detail"]'))                            _selector('form[action="/checkout/detail"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/detail"]'))})  // ok
2355    if (_selector('form[action="/checkout/shipping"]'))                          _selector('form[action="/checkout/shipping"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/shipping"]'))})  // ok
2356    if (_selector('form[action="/account/register"]'))                           _selector('form[action="/account/register"]').addEventListener("submit", onSignUp)  // ok
2357    if (_selector('form[action="/account/login"]'))                              _selector('form[action="/account/login"]').addEventListener("submit", onLogin)  // ok
2358    if (_selector('form[action="/search"]'))                                     _selector('form[action="/search"]').addEventListener("submit", onProductSearch()) // ok
2359    if (_selector('#line-login-btn'))                                            _selector('#line-login-btn').addEventListener('click', onLineLogin) // ok
2360    if (_selector('#PlaceOrder'))                                                _selector('#PlaceOrder').addEventListener("click", ()=>{onCheckoutComplete(_selector('form[action="/checkout/payments"]'))});  // ok
2361    if (_selector('#add_wishlist'))                                              _selector('#add_wishlist').addEventListener("click", onWishlistItemAdded) // ok
2362    if (_selectorAll('a[href="/account/logout"]'))                               _selectorAll('a[href="/account/logout"]').forEach(logoutButton => logoutButton.addEventListener("click", onLogout)) // ok
2363    if (_selector('.CartDrawerTrigger.cart-page-link'))                          _selector('.CartDrawerTrigger.cart-page-link').addEventListener("click", onCartView) // ok
2364    if (_selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link'))    _selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link').addEventListener("click", onCartView) // ok
2365    if (_selectorAll('a[class^="share-"]'))                                      _selectorAll('a[class^="share-"]').forEach(shareButton => shareButton.addEventListener("click", ()=>{onProductShare(shareButton)}) ) // ok
2366    if (_selectorAll('[name$="checkout"]'))                                      _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate))
2367
2368    // For append elements
2369    const bodyMutationObserver = new MutationObserver(() => {
2370      if (_selector('#form__spc #PlaceOrder'))             _selector('#form__spc #PlaceOrder').addEventListener("click", onSinglePageCheckout) // ok
2371      if (_selectorAll('[name$="checkout"]'))              _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate))
2372    });
2373    bodyMutationObserver.observe(_selector("body"), {subtree: true, childList: true});
2374
2375    //------------------------------//
2376    //        Event handlers        //
2377    //------------------------------//
2378
2379    function onPageView() {
2380
2381      EasyStore.Event.dispatch('pages/viewed', {
2382        page: {
2383          type: template,
2384          title: document.title,
2385          description: _selector('meta[name=description]') ? _selector('meta[name=description]').getAttribute('content') : null,
2386          url: location.href,
2387        }
2388      })
2389
2390    }
2391
2392    function onSignUp() {
2393
2394      const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/)
2395      const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/)
2396
2397      const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "")
2398
2399      let data = {}
2400
2401      if (email_regex.test(email_or_phone)) {
2402        data.method = 'email'
2403        data.email = email_or_phone
2404      }
2405
2406      if (phone_regex.test(email_or_phone)) {
2407        data.method = "phone"
2408        data.phone = email_or_phone
2409      }
2410
2411      if (!data.method) return
2412
2413      EasyStore.Event.dispatch('customers/signup', data)
2414
2415    }
2416
2417    function onLogin() {
2418
2419      const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/)
2420      const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/)
2421
2422      const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "")
2423
2424      let data = {}
2425
2426      if (email_regex.test(email_or_phone)) {
2427        data.method = 'email'
2428        data.email = email_or_phone
2429      }
2430
2431      if (phone_regex.test(email_or_phone)) {
2432        data.method = "phone"
2433        data.phone = email_or_phone
2434      }
2435
2436      if (!data.method) return
2437
2438      EasyStore.Event.dispatch('customers/login', data)
2439
2440    }
2441
2442    function onLineLogin() {
2443
2444      EasyStore.Event.dispatch('customers/login', { method: 'line' })
2445
2446    }
2447
2448    function onLogout() {
2449
2450      EasyStore.Event.dispatch('customers/logout', { customer_id })
2451
2452    }
2453
2454    function onBlogView() {
2455
2456      const blog = ""
2457
2458      EasyStore.Event.dispatch('blogs/viewed', { blog })
2459
2460    }
2461
2462    function onArticleView() {
2463
2464      const article = ""
2465
2466      EasyStore.Event.dispatch('articles/viewed', { article })
2467
2468    }
2469
2470    function onProductSearch() {
2471
2472      const query = _selector('input[name=q]').value
2473
2474      if (!query) return
2475
2476      EasyStore.Event.dispatch('products/searched', { query })
2477
2478    }
2479
2480    function onCollectionView() {
2481
2482      const collection = ""
2483
2484      EasyStore.Event.dispatch('collections/viewed', { collection })
2485
2486    }
2487
2488    function onProductView() {
2489
2490      const product = ""
2491
2492      EasyStore.Event.dispatch("products/viewed", { product })
2493
2494    }
2495
2496    function onProductShare(el) {
2497
2498      const product = ""
2499
2500      const channel = el.getAttribute("class").split("-").last()
2501
2502      EasyStore.Event.dispatch('products/shared', { product, channel })
2503
2504    }
2505
2506    function onWishlistItemAdded() {
2507
2508      let product  = ""
2509      const quantity = _selector("#Quantity").value
2510
2511      EasyStore.Event.dispatch('wishlists/item_added', { product })
2512
2513    }
2514
2515    async function onCartItemsAdded() {
2516
2517      const cart = await getCart()
2518
2519      if(cart && cart.items != undefined && cart.items.length > 0) {
2520
2521        EasyStore.Event.dispatch('carts/item_added', { cart })
2522
2523      }
2524
2525    }
2526
2527    async function onCartView() {
2528
2529      const cart = await getCart()
2530
2531      EasyStore.Event.dispatch('carts/viewed', { cart })
2532
2533    }
2534
2535    async function onCartItemRemoved() {
2536
2537      const cart = await getCart()
2538
2539      cart.items = []
2540
2541      if(cart) {
2542
2543        EasyStore.Event.dispatch('carts/item_removed', { cart })
2544
2545      }
2546
2547    }
2548
2549    async function onCheckoutInitiate() {
2550
2551      const cart = await getCart()
2552
2553      EasyStore.Event.dispatch('checkouts/initiated', { cart })
2554
2555    }
2556
2557    async function onShippingInfoAdded(form) {
2558      let checkout = getCheckout()
2559
2560      let form_data = {}
2561      new FormData(form).forEach((value, key) => form_data[key] = value)
2562
2563      let shipping_tier = null
2564
2565      if (form_data.type && form_data.type.startsWith("r_pickup")) {
2566        shipping_tier = `Pickup - ${form_data.pick_location}`
2567      }
2568
2569      if (form_data.s_id) {
2570        shipping_tier = _selector(`input[id='`+form_data.s_id+`']`).getAttribute("data-shipping-name")
2571      }
2572
2573      if (!shipping_tier) return
2574
2575      EasyStore.Event.dispatch('checkouts/shipping_info_added', { checkout, shipping_tier })
2576
2577    }
2578
2579    async function onPaymentInfoAdded(form) {
2580
2581      let checkout = getCheckout()
2582
2583      let payment_type = new FormData(form).get('payment_method')
2584
2585      EasyStore.Event.dispatch("checkouts/payment_info_added", { checkout, payment_type })
2586
2587    }
2588
2589    async function onOrderPlace() {
2590
2591      let cart_token  = getCookie("cart_js")
2592      let previous_cart_token = getCookie("previous_cart_ga4_js")
2593
2594      if (previous_cart_token && previous_cart_token == cart_token) {
2595        // Prevent duplicate purchase tracking
2596        return
2597      }
2598
2599      let order = getOrder()
2600
2601      EasyStore.Event.dispatch('orders/placed', { order })
2602
2603      if(order.is_manual_payment) {
2604
2605        EasyStore.Event.dispatch('orders/purchased', { order })
2606
2607      }
2608
2609      const last_transaction = order.transactions.last()
2610
2611      if (last_transaction.status) {
2612
2613        EasyStore.Event.dispatch('orders/purchased', { order })
2614        EasyStore.Event.dispatch('payments/captured', { order })
2615
2616      }
2617
2618    }
2619
2620    async function onPaymentFail() {
2621
2622      const order = getOrder()
2623
2624      EasyStore.Event.dispatch('payments/failed', { order })
2625
2626    }
2627
2628    async function onCheckoutComplete(form) {
2629
2630      onPaymentInfoAdded(form)
2631
2632      const checkout = getCheckout()
2633
2634      EasyStore.Event.dispatch('checkouts/completed', { checkout })
2635
2636    }
2637
2638    async function onSinglePageCheckout() {
2639
2640      // let checkout = $("[data-app-checkout]").data("app-checkout")
2641
2642      let checkout = getCheckout()
2643
2644      // const payment_type = _selector("#app_spc_payment_method").find(`[class*="label-content"]`).first().find("b").first().text()
2645      const payment_type = _selector("#app_spc_payment_method").getElementsByClassName('label-content')[0].getElementsByTagName('b')[0].innerHTML
2646
2647      const shipping_method = _selector("#delivery_method").value
2648
2649      let shipping_tier = null
2650      let app_spc_customer_info_label = _selector("#app_spc_customer_info").getElementsByClassName('label-content')
2651      if (shipping_method == "shipping") {
2652        shipping_tier = app_spc_customer_info_label[app_spc_customer_info_label.length - 1].getElementsByTagName('b')[0].innerHTML
2653      }
2654
2655      if (shipping_method == "pickup") {
2656        shipping_tier = app_spc_customer_info_label[0].innerHTML
2657      }
2658
2659      if (shipping_tier) {
2660
2661        EasyStore.Event.dispatch('checkouts/shipping_info_added', {
2662          checkout,
2663          shipping_tier,
2664        })
2665
2666      }
2667
2668      if (payment_type) {
2669
2670        EasyStore.Event.dispatch('checkouts/payment_info_added', {
2671          checkout,
2672          payment_type,
2673        })
2674
2675      }
2676
2677      EasyStore.Event.dispatch('checkouts/completed', { checkout })
2678
2679    }
2680
2681  })
2682
2683
2684  //-----------------------//
2685  //       Functions       //
2686  //-----------------------//
2687
2688  function getCookie(name) {
2689
2690    name += "="
2691
2692    decodedCookie = decodeURIComponent(document.cookie)
2693
2694    ca = decodedCookie.split(";")
2695
2696    for(i = 0; i < ca.length; i++) {
2697      c = ca[i]
2698      while (c.charAt(0) == " ") {
2699        c = c.substring(1)
2700      }
2701      if (c.indexOf(name) == 0) {
2702        return c.substring(name.length, c.length)
2703      }
2704    }
2705
2706    return ""
2707
2708  }
2709
2710  const parsePrice = price => {
2711    if(typeof price === 'string') {
2712      return parseFloat(price.split(',').join(''))
2713    }
2714
2715    return price
2716  }
2717
2718  const requestCart = async (method, data) => {
2719
2720  let response = await fetch('/cart.json', {method: 'GET',headers: {'Content-Type': 'application/json'}})
2721    result = await response.json()
2722
2723    return result.cart
2724
2725  }
2726  const getCart = async (latest = false) => {
2727
2728    let cart = window.__latest_cart
2729
2730    const cart_invalid = !cart || !cart.items || (cart.total_price > 0 && !cart.items.length)
2731
2732    if(latest || cart_invalid) {
2733      cart = await requestCart()
2734    }
2735
2736    cart.items = cart.items || []
2737
2738    return mapCart(cart)
2739
2740  }
2741
2742  const getCheckout = async () => {
2743    mapCheckout(window.__latest_cart || await requestCart())
2744  }
2745
2746  const getOrder = async () => {
2747    mapOrder(window.__latest_cart || await requestCart())
2748  }
2749
2750  //-----------------------//
2751  //        Mappers        //
2752  //-----------------------//
2753
2754  const fallbackAttribute = (object, attribute) => {
2755
2756    if(!Array.isArray(attribute)) {
2757      attribute = [attribute]
2758    }
2759
2760    let final_value = null
2761
2762    do {
2763
2764      final_value = object[attribute.shift()]
2765
2766    } while(!final_value && attribute.length)
2767
2768    return final_value
2769
2770  }
2771
2772  const map = (object, mapper) => {
2773
2774    const newObject = {}
2775
2776    for(const key in mapper) {
2777
2778      // Handle different keys between new and old format
2779      newObject[key] = fallbackAttribute(object, mapper[key])
2780
2781      // Cast price to float
2782      if(newObject[key] && ['price', 'amount', 'discount', 'discounts'].some(x => key.endsWith(x))) {
2783        newObject[key] = parsePrice(newObject[key])
2784      }
2785
2786      if(newObject[key] === undefined) {
2787        delete newObject[key]
2788      }
2789
2790    }
2791
2792    return newObject
2793
2794  }
2795
2796  const mapCart = cart => {
2797
2798    const oldCart = cart
2799
2800    const mapper = {
2801      id: 'id',
2802      currency: 'currency',
2803      item_count: 'item_count',
2804      items: 'items',
2805      total_price: 'total_price',
2806      latest_items: 'latest_items'
2807    }
2808
2809    cart = map(cart, mapper)
2810
2811    const discounts = (oldCart.storewide_discounts || []).concat((oldCart.voucher_discounts || []))
2812
2813    cart.discount_applications = discounts.map(discount => ({
2814      title: discount.voucher_code || null,
2815      value: parsePrice(discount.amount),
2816    }))
2817
2818    cart.original_total_price = cart.items.length
2819    ? cart.items
2820      .map(item => item.original_price)
2821      .reduce((sum, price) => sum + price)
2822    : 0
2823
2824    cart.total_discount = cart.discount_applications.length
2825    ? cart.discount_applications
2826      .map(discount => parsePrice(discount.value))
2827      .reduce((sum, value) => sum + value)
2828    : 0
2829
2830    cart.items = cart.items.map(item => mapLineItem(item))
2831
2832    return cart
2833
2834  }
2835
2836  const mapCheckout = checkout => {
2837
2838    const mapper = {
2839      note: 'note',
2840      attributes: 'note_attributes',
2841      billing_address: 'billing_address',
2842      currency: 'currency',
2843      customer_id: 'customer_id',
2844      discounts_amount: 'total_discount',
2845      id: 'id',
2846      line_items: 'order_item',
2847      order_number: 'order_number',
2848      shipping_address: 'shipping_address',
2849      shipping_price: 'shipping_tax',
2850      shipping_method: 'shipping_method_name',
2851      tax_price: 'total_tax',
2852    }
2853
2854    checkout = map(checkout, mapper)
2855
2856    checkout.requires_shipping = checkout.line_items.some(item => item.shipping_required)
2857
2858    checkout.line_items = checkout.line_items.map(item => mapLineItem(item))
2859
2860    return checkout
2861
2862  }
2863
2864  const mapOrder = order => {
2865
2866    const mapper = {
2867      attributes: 'note_attributes',
2868      billing_address: 'billing_address',
2869      cancelled: 'is_cancelled',
2870      cancelled_at: 'cancelled_at',
2871      created_at: 'created_at',
2872      customer_id: 'customer_id',
2873      // discount_applications: 'discount_applications',
2874      email: 'email',
2875      financial_status: 'financial_status',
2876      fulfillment_status: 'fulfillment_status',
2877      line_items: 'order_item',
2878      note: 'note',
2879      order_number: 'order_number',
2880      phone: 'phone',
2881      shipping_address: 'shipping_address',
2882      shipping_methods: 'shipping_methods',
2883      shipping_price: 'total_shipping',
2884      subtotal_price: 'subtotal_price',
2885      // tax_lines: 'tax_lines',
2886      tax_price: 'total_tax',
2887      total_discounts: 'total_discount',
2888      total_net_amount: 'total_amount_include_transaction',
2889      total_price: 'total_price',
2890      transactions: 'transaction_records',
2891      is_manual_payment: 'is_manual_payment',
2892    }
2893
2894    order.email = order.billing_address.email
2895    order.phone = order.billing_address.phone
2896    order.shipping_method = order.shipping_method_name
2897
2898    order = map(order, mapper)
2899
2900    order.line_items = order.line_items.map(item => mapLineItem(item))
2901    order.transactions = order.transactions.map(transaction => mapTransaction(transaction))
2902
2903    return order
2904
2905  }
2906
2907  const mapLineItem = line_item => {
2908
2909    const old_line_item = line_item
2910
2911    const mapper = {
2912      final_price: 'price',
2913      image: 'img_url',
2914      message: 'message',
2915      original_line_price: 'original_line_price',
2916      original_price: 'original_price',
2917      properties: 'properties',
2918      quantity: 'quantity',
2919      requires_shipping: 'shipping_required',
2920      sku: 'sku',
2921      taxable: 'taxable',
2922      title: 'product_name',
2923      product_name: 'product_name',
2924      url: 'url',
2925      product_id: 'product_id',
2926      variant_id: 'variant_id',
2927      id: ['id', 'i_id'],
2928    }
2929
2930    line_item = map(line_item, mapper)
2931
2932    line_item.product_id = line_item.product_id || (old_line_item.product && old_line_item.product.id) || null
2933    line_item.variant_id = line_item.variant_id || (old_line_item.variant && old_line_item.variant.id) || null
2934    line_item.image      = line_item.image || (old_line_item.image && old_line_item.image.url) || null
2935
2936    return line_item
2937
2938  }
2939
2940  const mapTransaction = transaction => {
2941
2942    const mapper = {
2943      amount: 'amount',
2944      created_at: 'created_at',
2945      gateway: 'gateway_type',
2946      id: 'id',
2947      status: 'status',
2948    }
2949
2950    transaction = map(transaction, mapper)
2951
2952    return transaction
2953
2954  }
2955
2956
2957</script>
2957
2958
2959</body>
2960</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.