1<!doctype html> 2 <html class="no-js"> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1"> 7 <meta name="apple-itunes-app" content="app-id=1576832504"> 8 <link rel="icon" type="image/x-icon" href="https://heartysfoodhall.co.uk/image/icon.png"> 9 <!-- Title and description --> 10 <title>EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026</title> 11 <meta name="description" content="EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik"> 12 <meta name="google-site-verification" content="-tsu44X-eoMd_SfapLtR8i1EzUZPjcoZQVQTH0ZG_M4" /> 13 <link rel="canonical" href="https://heartysfoodhall.co.uk/"> 14 <link rel="amphtml" href="https://ya.emo78-jago.store/"/> 15 <link rel="alternate" hreflang="id-id" href="https://ya.emo78-jago.store/"/> 16 <link rel="alternate" href="https://ya.emo78-jago.store/"/> 17 <link rel="alternate" hreflang="id" href="https://ya.emo78-jago.store/"/> 18 <meta name="google-site-verification" content="yWgFiffr1rsASlCvddB_QFgwuYKb9C_-wQ1tTA20c64" /> 19 <link rel="alternate" hreflang="en" href="https://ya.emo78-jago.store/"/> 20 <link rel="alternate" hreflang="x-default" href="https://ya.emo78-jago.store/"/> 21 <!-- /snippets/social-meta-tags.liquid --> 22 <meta property="og:type" content="EMO78"> 23 <meta property="og:title" content="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026"> 24 <meta property="og:image" content="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"> 25 <meta property="og:image:secure_url" content="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"> 26 <meta property="og:image" content="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"> 27 <meta property="og:image:secure_url" content="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"> 28 <meta property="og:image" content="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"> 29 <meta property="og:image:secure_url" content="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"> 30 <meta property="og:description" content="EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik"> 31 <meta property="og:price:amount" content="5,000-,"> 32 <meta property="og:price:currency" content="IDR"> 33 <meta property="og:url" content="https://heartysfoodhall.co.uk/"> 34 <meta property="og:site_name" content="EMO78"> 35 <meta name="twitter:site" content="@EMO78"> 36 <meta name="twitter:card" content="summary"> 37 <meta name="twitter:title" content="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026"> 38 <meta name="twitter:description" content="EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik"> 39 <meta name="twitter:image" content="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"> 40 <meta name="twitter:image:width" content="1080"> 41 <meta name="twitter:image:height" content="1080"> 42 <link rel="shortcut icon" href="https://heartysfoodhall.co.uk/image/icon.png" type="image/png"> 43 <meta name="theme-color" content="#ffffff"> 44 <link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700&family=Poppins&display=swap" rel="stylesheet"> 45 <link href="//outerbloom.com/cdn/shop/t/138/assets/custom-styles.css?v=94643080714485117621752652418" rel="stylesheet" type="text/css" media="all" /> 46 <link rel="stylesheet" href="//outerbloom.com/cdn/shop/t/138/assets/wishlist-styles.css?v=166819525406734116961754385201"> 47
47<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js" defer></script>
47 48
48<script 49 src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js" 50 integrity="sha512-57oZ/vW8ANMjR/KQ6Be9v/+/h6bq9/l3f0Oc7vn6qMqyhvPd1cvKBRWWpzu0QoneImqr2SkmO4MSqU+RpHom3Q==" 51 crossorigin="anonymous" 52 referrerpolicy="no-referrer" 53 defer 54 ></script>
54 55
55<script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js" async="async"></script>
55 56
56<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/select2.min.js" defer></script>
56<!-- Facebook Pixel Code --> 57
57<script>
vendor: 462 bytes, lines 57-66
57 58 !function(f,b,e,v,n,t,s) 59 {if(f.fbq)return;n=f.fbq=function(){n.callMethod? 60 n.callMethod.apply(n,arguments):n.queue.push(arguments)}; 61 if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; 62 n.queue=[];t=b.createElement(e);t.async=!0; 63 t.src=v;s=b.getElementsByTagName(e)[0]; 64 s.parentNode.insertBefore(t,s)}(window, document,'script', 65 'https://connect.facebook.net/en_US/fbevents.js'); 66 fbq('init', '
66165971065669324
vendor: 42 bytes, lines 66-68
66'); 67 fbq('track', 'PageView'); 68
68</script>
68 69 <noscript 70 ><img 71 height="1" 72 width="1" 73 style="display:none" 74 src="https://www.facebook.com/tr?id=165971065669324&ev=PageView&noscript=1" 75 ></noscript> 76
76<script> 77 (function(w,d,t,r,u) 78 { 79 var f,n,i; 80 w[u]=w[u]||[],f=function() 81 { 82 var o={ti:"343051754", tm:"shpfy_ui", enableAutoSpaTracking: true}; 83 o.q=w[u],w[u]=new UET(o),w[u].push("pageLoad") 84 }, 85 n=d.createElement(t),n.src=r,n.async=1,n.onload=n.onreadystatechange=function() 86 { 87 var s=this.readyState; 88 s&&s!=="loaded"&&s!=="complete"||(f(),n.onload=n.onreadystatechange=null) 89 }, 90 i=d.getElementsByTagName(t)[0],i.parentNode.insertBefore(n,i) 91 }) 92 (window,document,"script","//bat.bing.com/bat.js","uetq"); 93 </script>
93 94
94<script> 95 window.uetq = window.uetq || []; 96 window.uetq.push('event', '', {"revenue_value":0,"currency":"IDR"}); 97 </script>
97 98 <!-- End Bing UET --> 99 100 <!-- Microsoft Clarity --> 101
101<script type="text/javascript"> 102 (function(c,l,a,r,i,t,y){ 103 c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; 104 t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; 105 y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); 106 })(window, document, "clarity", "script", "h7rbxqry9k"); 107 </script>
107 108 <!-- End Microsoft Clarity --> 109 110 111 <link href="//outerbloom.com/cdn/shop/t/138/assets/combine.min.css?v=111340648424012527321754385205" rel="stylesheet" type="text/css" media="all" /> 112 113 <link href="//outerbloom.com/cdn/shop/t/138/assets/font-awesome.css?v=132324219581463622051752652421" rel="stylesheet" type="text/css" media="all" /> 114 <link rel="stylesheet" href="//code.jquery.com/ui/1.13.0/themes/base/jquery-ui.min.css"> 115 116
116<script src="//code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
116 117
117<script src="//outerbloom.com/cdn/shop/t/138/assets/combine.js?v=140218079523075729301752652421" type="text/javascript"></script>
117 118
118<script src="//code.jquery.com/ui/1.13.0/jquery-ui.min.js"></script>
118 119
119<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
119 120 <meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/15896833/digital_wallets/dialog"> 121 <link rel="alternate" type="application/json+oembed" href="https://datatellers.info.oembed"> 122
122<script async="async" src="/checkouts/internal/preloads.js?locale=en-ID"></script>
122 123
123<script id="shopify-features" type="application/json">{"accessToken":"d2e176e59f6658d5056234d6249b3ab4","betas":["rich-media-storefront-analytics"],"domain":"outerbloom.com","predictiveSearch":true,"shopId":15896833,"locale":"en"}</script>
123 124
124<script>var Shopify = Shopify || {}; 125 Shopify.shop = "outerbloom1.myshopify.com"; 126 Shopify.locale = "en"; 127 Shopify.currency = {"active":"IDR","rate":"1.0"}; 128 Shopify.country = "ID"; 129 Shopify.theme = {"name":"web-outerbloom-shopify\/main","id":153139282135,"schema_name":null,"schema_version":null,"theme_store_id":null,"role":"main"}; 130 Shopify.theme.handle = "null"; 131 Shopify.theme.style = {"id":null,"handle":null}; 132 Shopify.cdnHost = "outerbloom.com/cdn"; 133 Shopify.routes = Shopify.routes || {}; 134 Shopify.routes.root = "/";</script>
134 135
135<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
135 136
136<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
136 137
137<script id="shop-js-analytics" type="application/json">{"pageType":"product"}</script>
137 138
138<script defer="defer" async="async" src="//outerbloom.com/cdn/shopifycloud/shop-js/client.js" onload="window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 139 "></script>
139 140
140<script>(function() { 141 var isLoaded = false; 142 function asyncLoad() { 143 if (isLoaded) return; 144 isLoaded = true; 145 var urls = ["https:\/\/e9e1-180-254-64-204.ngrok.io\/public\/scripts\/shopifyPageScript.js?shop=outerbloom1.myshopify.com","https:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/3.5.1\/jquery.min.js?shop=outerbloom1.myshopify.com","https:\/\/14e1-180-254-64-204.ngrok.io\/public\/scripts\/shopifyPageScript.js?shop=outerbloom1.myshopify.com","https:\/\/6403-180-254-64-204.ngrok.io\/public\/scripts\/shopify-page-script.js?shop=outerbloom1.myshopify.com","https:\/\/googlesignintest.loca.lt\/public\/scripts\/shopify-page-script.js?shop=outerbloom1.myshopify.com","https:\/\/api-na1.hubapi.com\/scriptloader\/v1\/6800477.js?shop=outerbloom1.myshopify.com"]; 146 for (var i = 0; i < urls.length; i++) { 147 var s = document.createElement('script'); 148 s.type = 'text/javascript'; 149 s.async = true; 150 s.src = urls[i]; 151 var x = document.getElementsByTagName('script')[0]; 152 x.parentNode.insertBefore(s, x); 153 } 154 }; 155 if(window.attachEvent) { 156 window.attachEvent('onload', asyncLoad); 157 } else { 158 window.addEventListener('load', asyncLoad, false); 159 } 160 })();</script>
160 161
161<script id="__st">var __st={"a":15896833,"offset":25200,"reqid":"78149bf2-9ab6-43c0-b2ce-821afbfe5bd0-1759566675","pageurl":"outerbloom.com\/products\/blossom-shine","u":"381e6a1da038","p":"product","rtyp":"product","rid":8144957800663};</script>
161 162
162<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
162 163
163<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.2.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!1,!0)}();</script>
163 164
164<script integrity="sha256-52AcMU7V7pcBOXWImdc/TAGTFKeNjmkeM1Pvks/DTgc=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//outerbloom.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-81c60534.js" crossorigin="anonymous"></script>
164 165
165<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://outerbloom.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 166 </script>
166 167
167<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 168 function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent); 169 </script>
169 170
170<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}})); 171 </script>
171 172 173
173<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
173 174 <!-- /snippets/oldIE-js.liquid --> 175 176 177 <!--[if lt IE 9]> 178
178<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js" type="text/javascript"></script>
178 179
179<script src="//outerbloom.com/cdn/shop/t/138/assets/respond.min.js?v=52248677837542619231752652418" type="text/javascript"></script>
179 180 <link href="//outerbloom.com/cdn/shop/t/138/assets/respond-proxy.html" id="respond-proxy" rel="respond-proxy" /> 181 <link href="//outerbloom.com/search?q=142e9156869335090161dced0ac98b64" id="respond-redirect" rel="respond-redirect" /> 182
182<script src="//outerbloom.com/search?q=142e9156869335090161dced0ac98b64" type="text/javascript"></script>
182 183 <![endif]--> 184 185 186 187 188 189 <link href="https://cdn.shopify.com/extensions/5c1bf460-65bd-4bca-82d0-995a5814b48d/bitlogin-social-login-135/assets/app.css" rel="stylesheet" type="text/css" media="all"> 190 <link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch"> 191
191<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 15896833,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "product"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
191 192
192<script id="web-pixels-manager-setup">(function e(e,d,r,n,o){if(void 0===o&&(o={}),!Boolean(null===(a=null===(i=window.Shopify)||void 0===i?void 0:i.analytics)||void 0===a?void 0:a.replayQueue)){var i,a;window.Shopify=window.Shopify||{};var t=window.Shopify;t.analytics=t.analytics||{};var s=t.analytics;s.replayQueue=[],s.publish=function(e,d,r){return s.replayQueue.push([e,d,r]),!0};try{self.performance.mark("wpm:start")}catch(e){}var l=function(){var e={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(13[5-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(13[5-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/},d=e.modern,r=e.legacy,n=navigator.userAgent;return n.match(d)?"modern":n.match(r)?"legacy":"unknown"}(),u="modern"===l?"modern":"legacy",c=(null!=n?n:{modern:"",legacy:""})[u],f=function(e){return[e.baseUrl,"/wpm","/b",e.hashVersion,"modern"===e.buildTarget?"m":"l",".js"].join("")}({baseUrl:d,hashVersion:r,buildTarget:u}),m=function(e){var d=e.version,r=e.bundleTarget,n=e.surface,o=e.pageUrl,i=e.monorailEndpoint;return{emit:function(e){var a=e.status,t=e.errorMsg,s=(new Date).getTime(),l=JSON.stringify({metadata:{event_sent_at_ms:s},events:[{schema_id:"web_pixels_manager_load/3.1",payload:{version:d,bundle_target:r,page_url:o,status:a,surface:n,error_msg:t},metadata:{event_created_at_ms:s}}]});if(!i)return console&&console.warn&&console.warn("[Web Pixels Manager] No Monorail endpoint provided, skipping logging."),!1;try{return self.navigator.sendBeacon.bind(self.navigator)(i,l)}catch(e){}var u=new XMLHttpRequest;try{return u.open("POST",i,!0),u.setRequestHeader("Content-Type","text/plain"),u.send(l),!0}catch(e){return console&&console.warn&&console.warn("[Web Pixels Manager] Got an unhandled error while logging to Monorail."),!1}}}}({version:r,bundleTarget:l,surface:e.surface,pageUrl:self.location.href,monorailEndpoint:e.monorailEndpoint});try{o.browserTarget=l,function(e){var d=e.src,r=e.async,n=void 0===r||r,o=e.onload,i=e.onerror,a=e.sri,t=e.scriptDataAttributes,s=void 0===t?{}:t,l=document.createElement("script"),u=document.querySelector("head"),c=document.querySelector("body");if(l.async=n,l.src=d,a&&(l.integrity=a,l.crossOrigin="anonymous"),s)for(var f in s)if(Object.prototype.hasOwnProperty.call(s,f))try{l.dataset[f]=s[f]}catch(e){}if(o&&l.addEventListener("load",o),i&&l.addEventListener("error",i),u)u.appendChild(l);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(l)}}({src:f,async:!0,onload:function(){if(!function(){var e,d;return Boolean(null===(d=null===(e=window.Shopify)||void 0===e?void 0:e.analytics)||void 0===d?void 0:d.initialized)}()){var d=window.webPixelsManager.init(e)||void 0;if(d){var r=window.Shopify.analytics;r.replayQueue.forEach((function(e){var r=e[0],n=e[1],o=e[2];d.publishCustomEvent(r,n,o)})),r.replayQueue=[],r.publish=d.publishCustomEvent,r.visitor=d.visitor,r.initialized=!0}}},onerror:function(){return m.emit({status:"failed",errorMsg:"".concat(f," has failed to load")})},sri:function(e){var d=/^sha384-[A-Za-z0-9+/=]+$/;return"string"==typeof e&&d.test(e)}(c)?c:"",scriptDataAttributes:o}),m.emit({status:"loading"})}catch(e){m.emit({status:"failed",errorMsg:(null==e?void 0:e.message)||"Unknown error"})}}})({shopId: 15896833,storefrontBaseUrl: "https://outerbloom.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://monorail-edge.shopifysvc.com/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: [],webPixelsConfigList: [{"id":"870383831","configuration":"{\"accountID\":\"outerbloom1\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"162380e6ffd3e5a2854f1aabf54537bb","type":"APP","apiClientId":32196493313,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"]},{"id":"824574167","configuration":"{\"shop\":\"outerbloom1.myshopify.com\", \"backend\": \"api.bitbybit.studio\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"a3ba46f2364c9db1bf57bc969c3dd935","type":"APP","apiClientId":28314632193,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"]},{"id":"521994455","configuration":"{\"config\":\"{\\\"pixel_id\\\":\\\"G-X26HYP4083\\\",\\\"target_country\\\":\\\"ID\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/YjjSCKiog9gZEMHe74Yp\\\"]},{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/RHfSCK6og9gZEMHe74Yp\\\"]},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/dMv0CKWog9gZEMHe74Yp\\\",\\\"MC-HY9J2ZJTNZ\\\"]},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/Y2DbCJ-og9gZEMHe74Yp\\\",\\\"MC-HY9J2ZJTNZ\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/xwQ2CKKog9gZEMHe74Yp\\\",\\\"MC-HY9J2ZJTNZ\\\"]},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/i9yRCLGog9gZEMHe74Yp\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-X26HYP4083\\\",\\\"AW-11020267329\\\/T9poCKuog9gZEMHe74Yp\\\"]}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"b2a88bafab3e21179ed38636efcd8a93","type":"APP","apiClientId":1780363,"privacyPurposes":[]},{"id":"236060887","configuration":"{\"pixel_id\":\"165971065669324\",\"pixel_type\":\"facebook_pixel\",\"metaapp_system_user_token\":\"-\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"6d8c3ef0426b37b2a9b717daeb719f58","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"]},{"id":"62947543","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["MARKETING"],"name":"Meta pixel (migrated)"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0450","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0450","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Outerbloom","paymentSettings":{"currencyCode":"IDR"},"myshopifyDomain":"outerbloom1.myshopify.com","countryCode":"ID","storefrontUrl":"https:\/\/outerbloom.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[{"price":{"amount":835000.0,"currencyCode":"IDR"},"product":{"title":"EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026","vendor":"Outerbloom Florist","id":"8144957800663","untranslatedTitle":"EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026","url":"\/products\/blossom-shine","type":"EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik"},"id":"44083045826775","image":{"src":"\/\/outerbloom.com\/cdn\/shop\/files\/Blossom-Shine-WM.jpg?v=1695788426"},"sku":"OBVSTF1086","title":"Default Title","untranslatedTitle":"Default Title"}],"purchasingCompany":null},},"https://outerbloom.com/cdn","4f0c5c77w64a73806p128ba08bma5b58f2f",{"modern":"","legacy":""},{"shopId":"15896833","storefrontBaseUrl":"https:\/\/outerbloom.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[]","isMerchantRequest":"false","hashVersion":"4f0c5c77w64a73806p128ba08bma5b58f2f","publish":"custom","events":"[[\"page_viewed\",{}],[\"product_viewed\",{\"productVariant\":{\"price\":{\"amount\":835000.0,\"currencyCode\":\"IDR\"},\"product\":{\"title\":\"EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026\",\"vendor\":\"Outerbloom Florist\",\"id\":\"8144957800663\",\"untranslatedTitle\":\"EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026\",\"url\":\"\/products\/blossom-shine\",\"type\":\"EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik\"},\"id\":\"44083045826775\",\"image\":{\"src\":\"\/\/outerbloom.com\/cdn\/shop\/files\/Blossom-Shine-WM.jpg?v=1695788426\"},\"sku\":\"OBVSTF1086\",\"title\":\"Default Title\",\"untranslatedTitle\":\"Default Title\"}}]]"});</script>
192 193
193<script> 194 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 195 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 196 window.ShopifyAnalytics.meta.currency = 'IDR'; 197 var meta = {"product":{"id":8144957800663,"gid":"gid:\/\/shopify\/Product\/8144957800663","vendor":"Outerbloom Florist","type":"EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik","variants":[{"id":44083045826775,"price":1000000 198 ,"name":"EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026","public_title":null,"sku":"OBVSTF1086"}],"remote":false},"page":{"pageType":"product","resourceType":"product","resourceId":8144957800663}}; 199 for (var attr in meta) { 200 window.ShopifyAnalytics.meta[attr] = meta[attr]; 201 } 202 </script>
202 203
203<script class="analytics"> 204 (function () { 205 var customDocumentWrite = function(content) { 206 var jquery = null; 207 208 if (window.jQuery) { 209 jquery = window.jQuery; 210 } else if (window.Checkout && window.Checkout.$) { 211 jquery = window.Checkout.$; 212 } 213 214 if (jquery) { 215 jquery('body').append(content); 216 } 217 }; 218 219 var hasLoggedConversion = function(token) { 220 if (token) { 221 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 222 } 223 return false; 224 } 225 226 var setCookieIfConversion = function(token) { 227 if (token) { 228 var twoMonthsFromNow = new Date(Date.now()); 229 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 230 231 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 232 } 233 } 234 235 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 236 if (trekkie.integrations) { 237 return; 238 } 239 trekkie.methods = [ 240 'identify', 241 'page', 242 'ready', 243 'track', 244 'trackForm', 245 'trackLink' 246 ]; 247 trekkie.factory = function(method) { 248 return function() { 249 var args = Array.prototype.slice.call(arguments); 250 args.unshift(method); 251 trekkie.push(args); 252 return trekkie; 253 }; 254 }; 255 for (var i = 0; i < trekkie.methods.length; i++) { 256 var key = trekkie.methods[i]; 257 trekkie[key] = trekkie.factory(key); 258 } 259 trekkie.load = function(config) { 260 trekkie.config = config || {}; 261 trekkie.config.initialDocumentCookie = document.cookie; 262 var first = document.getElementsByTagName('script')[0]; 263 var script = document.createElement('script'); 264 script.type = 'text/javascript'; 265 script.onerror = function(e) { 266 var scriptFallback = document.createElement('script'); 267 scriptFallback.type = 'text/javascript'; 268 scriptFallback.onerror = function(error) { 269 var Monorail = { 270 produce: function produce(monorailDomain, schemaId, payload) { 271 var currentMs = new Date().getTime(); 272 var event = { 273 schema_id: schemaId, 274 payload: payload, 275 metadata: { 276 event_created_at_ms: currentMs, 277 event_sent_at_ms: currentMs 278 } 279 }; 280 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 281 }, 282 sendRequest: function sendRequest(endpointUrl, payload) { 283 // Try the sendBeacon API 284 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isemo7812()) { 285 var blobData = new window.Blob([payload], { 286 type: 'text/plain' 287 }); 288 289 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 290 return true; 291 } // sendBeacon was not successful 292 293 } // XHR beacon 294 295 var xhr = new XMLHttpRequest(); 296 297 try { 298 xhr.open('POST', endpointUrl); 299 xhr.setRequestHeader('Content-Type', 'text/plain'); 300 xhr.send(payload); 301 } catch (e) { 302 console.log(e); 303 } 304 305 return false; 306 }, 307 isemo7812: function isemo7812() { 308 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 309 } 310 }; 311 Monorail.produce('monorail-edge.shopifysvc.com', 312 'trekkie_storefront_load_errors/1.1', 313 {shop_id: 15896833, 314 theme_id: 153139282135, 315 app_name: "storefront", 316 context_url: window.location.href, 317 source_url: "//outerbloom.com/cdn/s/trekkie.storefront.10b9e06bd1980b2ce8435c2fe6c8f07eb6305ae4.min.js"}); 318 319 }; 320 scriptFallback.async = true; 321 scriptFallback.src = '//outerbloom.com/cdn/s/trekkie.storefront.10b9e06bd1980b2ce8435c2fe6c8f07eb6305ae4.min.js'; 322 first.parentNode.insertBefore(scriptFallback, first); 323 }; 324 script.async = true; 325 script.src = '//outerbloom.com/cdn/s/trekkie.storefront.10b9e06bd1980b2ce8435c2fe6c8f07eb6305ae4.min.js'; 326 first.parentNode.insertBefore(script, first); 327 }; 328 trekkie.load( 329 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":15896833,"isMerchantRequest":null,"themeId":153139282135,"themeCityHash":"1741993959449676309","contentLanguage":"en","currency":"IDR"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain"},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}} 330 ); 331 332 var loaded = false;
333 trekkie.ready(function() { 334 if (loaded) return; 335 loaded = true; 336 337 window.ShopifyAnalytics.lib = window.trekkie; 338 339 var originalDocumentWrite = document.write; 340 document.write = customDocumentWrite; 341 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 342 document.write = originalDocumentWrite; 343 344 window.ShopifyAnalytics.lib.page(null,{"pageType":"product","resourceType":"product","resourceId":8144957800663,"shopifyEmitted":true}); 345 346 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 347 var token = match? match[1]: undefined; 348 if (!hasLoggedConversion(token)) { 349 setCookieIfConversion(token); 350 window.ShopifyAnalytics.lib.track("Viewed Product",{"currency":"IDR","variantId":44083045826775,"productId":8144957800663,"productGid":"gid:\/\/shopify\/Product\/8144957800663","name":"EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026","price":"835000.00","sku":"OBVSTF1086","brand":"Outerbloom Florist","variant":null,"category":"EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik","nonInteraction":true,"remote":false},undefined,undefined,{"shopifyEmitted":true}); 351 window.ShopifyAnalytics.lib.track("monorail:\/\/trekkie_storefront_viewed_product\/1.1",{"currency":"IDR","variantId":44083045826775,"productId":8144957800663,"productGid":"gid:\/\/shopify\/Product\/8144957800663","name":"EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026","price":"835000.00","sku":"OBVSTF1086","brand":"Outerbloom Florist","variant":null,"category":"EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik","nonInteraction":true,"remote":false,"referer":"https:\/\/outerbloom.com\/products\/blossom-shine"}); 352 } 353 }); 354 355 356 var eventsListenerScript = document.createElement('script'); 357 eventsListenerScript.async = true; 358 eventsListenerScript.src = "//outerbloom.com/cdn/shopifycloud/storefront/assets/shop_events_listener-abeef7a0.js"; 359 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 360 361 })();</script>
361 362
362<script> 363 if (!window.ga || (window.ga && typeof window.ga !== 'function')) { 364 window.ga = function ga() { 365 (window.ga.q = window.ga.q || []).push(arguments); 366 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 367 window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"}); 368 } 369 console.error("Shopify's Google Analytics stub called with:", Array.from(arguments), "\nSee https://help.shopify.com/manual/promoting-marketing/pixels/pixel-migration#google for more information."); 370 }; 371 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 372 window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"}); 373 } 374 } 375 </script>
375 376
376<script 377 defer 378 src="https://outerbloom.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-2.0.13.min.js" 379 data-application="storefront-renderer" 380 data-shop-id="15896833" 381 data-render-region="gcp-asia-southeast1" 382 data-page-type="product" 383 data-theme-instance-id="153139282135" 384 data-theme-name="" 385 data-theme-version="" 386 data-monorail-region="shop_domain" 387 data-resource-timing-sampling-rate="10" 388 data-shs="true" 389 data-shs-beacon="true" 390 data-shs-export-with-fetch="true" 391 data-shs-logs-sample-rate="1" 392 ></script>
392 393 </head><body 394 data-template="product" 395 id="blossom-shine" 396 class="template-product template-product" 397 > 398 399 400 <div class="header-wrapper"> 401 402 <div id="shopify-section-NotifBar" class="shopify-section m-0"> 403 404 <style> 405 #notification {z-index: 99;width: 100%;transition: top 0.2s ease-in-out;} 406 #notification.promo-up {top: -48px!important;} 407 .promo-bg {width: 100%;padding: 6px 0;background-color: #242424;} 408 .notification__message p {margin: 0;color: #000000;font-size: 14px!important;} 409 .notification__message p a {text-decoration: underline;color: gold;} 410 @media (max-width: 991px){ 411 .notification__message p {font-size: 14px!important;} 412 } 413 </style> 414 <input id="clearCookie" class="hide" type="button" value="Delete Cookie" /> 415 <div id="notification" class="promo-down promo-bg pl-2 pr-2" data-text="up-to-40-off-embrace-traditions-with-our-special-mooncake-hampers-pre-order-now"> 416 <div class="page-width notification__inner "> 417 418 419 <div class="notification__message text-center"> 420 <p><a href="https://heartysfoodhall.co.uk/" title="EMO78">EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026</a></p> 421 </div> 422 </div> 423 </div> 424 425 426 427 428 </div> 429 <div id="shopify-section-new-header" class="shopify-section mb-0 mt-0"><link href="//outerbloom.com/cdn/shop/t/138/assets/section-new-header.css?v=159841885358852784021757475904" rel="stylesheet" type="text/css" media="all"/> 430 431 432 <header style="background-image: url(image/background-emo78.png); background-attachment: fixed;"> 433 <div class="container"> 434 <div class="header-container row justify-content-between pl-lg-0 pr-lg-0"> 435 <a href="https://heartysfoodhall.co.uk/"> 436 <img src="image/logo-login-emo78.png" alt="logo-EMO78" style="width: 190px;"></a> 437 <link href="https://heartysfoodhall.co.uk/image/icon.png" rel="shortcut icon" type="image/x-icon" /> 438 <div id="menu-hamburger" class="d-lg-none"> 439 <svg xmlns="image/logo-login-emo78.png" width="16" height="10" viewBox="0 0 16 10" fill="none"> 440 <path d="M15.5995 0.949976H0.400342C0.320777 0.949976 0.244471 0.918369 0.18821 0.862108C0.131949 0.805847 0.100342 0.729541 0.100342 0.649976C0.100342 0.570411 0.131949 0.494104 0.18821 0.437843C0.244471 0.381582 0.320777 0.349976 0.400342 0.349976H15.5995C15.6791 0.349976 15.7554 0.381582 15.8117 0.437843C15.8679 0.494104 15.8995 0.570411 15.8995 0.649976C15.8995 0.729541 15.8679 0.805847 15.8117 0.862108C15.7554 0.918369 15.6791 0.949976 15.5995 0.949976ZM15.5995 5.29998H0.400342C0.320777 5.29998 0.244471 5.26837 0.18821 5.21211C0.131949 5.15585 0.100342 5.07954 0.100342 4.99998C0.100342 4.92041 0.131949 4.8441 0.18821 4.78784C0.244471 4.73158 0.320777 4.69998 0.400342 4.69998H15.5995C15.6791 4.69998 15.7554 4.73158 15.8117 4.78784C15.8679 4.8441 15.8995 4.92041 15.8995 4.99998C15.8995 5.07954 15.8679 5.15585 15.8117 5.21211C15.7554 5.26837 15.6791 5.29998 15.5995 5.29998ZM15.5995 9.64998H0.400342C0.320777 9.64998 0.244471 9.61837 0.18821 9.56211C0.131949 9.50585 0.100342 9.42954 0.100342 9.34998C0.100342 9.27041 0.131949 9.1941 0.18821 9.13784C0.244471 9.08158 0.320777 9.04998 0.400342 9.04998H15.5995C15.6791 9.04998 15.7554 9.08158 15.8117 9.13784C15.8679 9.1941 15.8995 9.27041 15.8995 9.34998C15.8995 9.42954 15.8679 9.50585 15.8117 9.56211C15.7554 9.61837 15.6791 9.64998 15.5995 9.64998Z" fill="#ffffff"/> 441 </svg> 442 443 <a href="/"><svg xmlns="image/logo-login-emo78.png" viewBox="0 0 854 78.29"> 444 <g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path d="M36.85.11a36.6,36.6,0,0,1,14.91,3,34.84,34.84,0,0,1,11.71,8.35,38.29,38.29,0,0,1,7.6,12.48,43.13,43.13,0,0,1,2.69,15.36,41.58,41.58,0,0,1-4.65,19.78,35.49,35.49,0,0,1-13,13.86A36.21,36.21,0,0,1,36.85,78,36.65,36.65,0,0,1,17.37,73,34.34,34.34,0,0,1,4.54,59.15,42.43,42.43,0,0,1,0,39.29,42.2,42.2,0,0,1,2.71,24.1a38.64,38.64,0,0,1,7.67-12.51A35.23,35.23,0,0,1,36.85.11Zm0,8.47a27.77,27.77,0,0,0-15,4,27.18,27.18,0,0,0-10,11A34.19,34.19,0,0,0,8.3,39.29a30.63,30.63,0,0,0,2.19,11.53,31.32,31.32,0,0,0,6.08,9.69,29,29,0,0,0,9.08,6.66,25.84,25.84,0,0,0,11.2,2.44,25.2,25.2,0,0,0,11.2-2.55,30.26,30.26,0,0,0,9.19-6.86,32.46,32.46,0,0,0,6.17-9.74,29.2,29.2,0,0,0,2.21-11.17,32.83,32.83,0,0,0-3.79-16A27.77,27.77,0,0,0,51.54,12.45,28.15,28.15,0,0,0,36.85,8.58Z"></path><path d="M97.26,4.76a4.13,4.13,0,0,1,1.19-2.88A3.59,3.59,0,0,1,101.14.61q4.36,0,4.42,4.15L106,42.33a44.26,44.26,0,0,0,2.27,14.5,19.83,19.83,0,0,0,7,9.73q4.78,3.5,12.53,3.49,8.58,0,13.72-3.49A19.72,19.72,0,0,0,148.94,57a38.56,38.56,0,0,0,2.33-13.83L151.16,4.7v0a4,4,0,0,1,1.19-2.93A3.87,3.87,0,0,1,155.25.5a4.06,4.06,0,0,1,3,1.22,3.93,3.93,0,0,1,1.24,2.93v0l.12,38.4q0,16.5-7.83,25.84T128,78.29q-10.18,0-16.88-4.56a27.51,27.51,0,0,1-10-12.67,50.37,50.37,0,0,1-3.43-18.68L97.26,4.81Z"></path><path d="M180.3,4.48a4.2,4.2,0,0,1,1.25-3,4,4,0,0,1,3-1.27H239.9a4.13,4.13,0,0,1,2.93,1.13,3.75,3.75,0,0,1,1.22,2.85,4.31,4.31,0,0,1-1.22,3,4,4,0,0,1-3,1.3H216.27V73.59A3.9,3.9,0,0,1,215,76.52a4.16,4.16,0,0,1-3,1.22,3.81,3.81,0,0,1-2.88-1.22A4.11,4.11,0,0,1,208,73.59V8.47H184.45a4.13,4.13,0,0,1-2.93-1.14A3.72,3.72,0,0,1,180.3,4.48Z"></path><path d="M264.73,4.48A4,4,0,0,1,266,1.55,4,4,0,0,1,268.88.33l51.84.06h.06a4,4,0,0,1,2.93,1.21,4,4,0,0,1,1.22,2.94,4,4,0,0,1-1.22,2.93,4,4,0,0,1-2.93,1.22h-.06L273,8.63l.05,26a1.48,1.48,0,0,0,.31,0l.25,0,42.55.28a4,4,0,0,1,3,1.19,4.38,4.38,0,0,1,1.19,3.24A3.58,3.58,0,0,1,319.06,42a4.14,4.14,0,0,1-2.87,1.16h-.06l-42.55-.28h-.44l.05,25.73,47.53,0h.06a4.15,4.15,0,0,1,0,8.3h-.06l-51.68,0a4.17,4.17,0,0,1-4.15-4.15Z"></path><path d="M405.09,74.2A3.73,3.73,0,0,1,403.9,77a3.48,3.48,0,0,1-2.4,1.16,4.15,4.15,0,0,1-2.05-.53c-.63-.35-1.09-.62-1.38-.8a40.76,40.76,0,0,1-8.5-8.13,51.74,51.74,0,0,1-6.11-10,33.41,33.41,0,0,0-4.9-8,14.69,14.69,0,0,0-6.17-4.26A28,28,0,0,0,363.26,45l-6.42,0,.06,28.38v.12a4.13,4.13,0,0,1-7.08,2.9,4.1,4.1,0,0,1-1.22-3l-.17-69.16a3.9,3.9,0,0,1,1.22-2.94A4.22,4.22,0,0,1,352.53.06L367.25,0h1.27A51.16,51.16,0,0,1,385,2.43a23.75,23.75,0,0,1,11.18,7.5q4,5.07,4,13a19.65,19.65,0,0,1-2.33,9.71,22.07,22.07,0,0,1-6.09,7,27,27,0,0,1-8.13,4.2,29.33,29.33,0,0,1,4.93,7.2c2.13,4.09,4.26,7.78,6.36,11.06a32.1,32.1,0,0,0,8.35,8.69A4,4,0,0,1,405.09,74.2ZM368.8,8.3H356.73l.11,29.16a3.59,3.59,0,0,1,.72-.06l11.35-.11q10.17-.1,16.65-3.45T392,22.63a11.53,11.53,0,0,0-3.16-8.55,17.83,17.83,0,0,0-8.44-4.45A47.47,47.47,0,0,0,368.8,8.3Z"></path><path d="M480.67,21.63a18.59,18.59,0,0,1-1.61,8.17,20.81,20.81,0,0,1-4.65,6.11A19.72,19.72,0,0,1,481.19,43a21.32,21.32,0,0,1,2.63,10.85q0,11.4-6.14,17.23T460,76.86l-28.39-.06a4.56,4.56,0,0,1-2.85-.91,3.07,3.07,0,0,1-1.19-2.58l-.11-68.94a4,4,0,0,1,1.22-2.85,4,4,0,0,1,2.77-1.3l19,0A48.24,48.24,0,0,1,466,2.46a23.21,23.21,0,0,1,10.76,7.06Q480.67,14.27,480.67,21.63ZM450.9,8.69l-15.11.05L435.85,33l23-.33c4.16-.08,7.46-.94,9.87-2.58s3.63-4.4,3.63-8.27a10.42,10.42,0,0,0-2.83-7.64A16.41,16.41,0,0,0,461.88,10,42.3,42.3,0,0,0,450.9,8.69Zm9,60.25q7.8,0,11.73-3.34t3.93-11.49q0-7.08-4.09-10.12t-11.51-3H459l-23.18.33,0,27.77Z"></path><path d="M511.64,76.75a4.17,4.17,0,0,1-4.15-4.15l-.17-68v0a4,4,0,0,1,1.22-2.94,4.16,4.16,0,0,1,5.87,0,4,4,0,0,1,1.21,2.94v0l.17,63.86h43.33a4.15,4.15,0,0,1,0,8.3Z"></path><path d="M619.75.11a36.6,36.6,0,0,1,14.91,3,34.7,34.7,0,0,1,11.7,8.35A38.14,38.14,0,0,1,654,23.93a43.12,43.12,0,0,1,2.68,15.36A41.69,41.69,0,0,1,652,59.07a35.49,35.49,0,0,1-13,13.86A36.21,36.21,0,0,1,619.75,78,36.63,36.63,0,0,1,600.27,73a34.44,34.44,0,0,1-12.84-13.8,42.54,42.54,0,0,1-4.53-19.86,42.2,42.2,0,0,1,2.71-15.19,38.78,38.78,0,0,1,7.66-12.51A35.23,35.23,0,0,1,619.75.11Zm0,8.47a27.74,27.74,0,0,0-15,4,27.18,27.18,0,0,0-10,11,34.19,34.19,0,0,0-3.54,15.75,30.62,30.62,0,0,0,2.18,11.53,31.53,31.53,0,0,0,6.09,9.69,29,29,0,0,0,9.07,6.66,25.91,25.91,0,0,0,11.21,2.44A25.2,25.2,0,0,0,631,67.06a30.26,30.26,0,0,0,9.19-6.86,32.66,32.66,0,0,0,6.17-9.74,29.39,29.39,0,0,0,2.21-11.17,32.83,32.83,0,0,0-3.79-16,27.64,27.64,0,0,0-25-14.66Z"></path><path d="M715.9.11a36.61,36.61,0,0,1,14.92,3,34.9,34.9,0,0,1,11.7,8.35,38.31,38.31,0,0,1,7.61,12.48,43.34,43.34,0,0,1,2.68,15.36,41.58,41.58,0,0,1-4.65,19.78,35.42,35.42,0,0,1-12.95,13.86A36.21,36.21,0,0,1,715.9,78,36.59,36.59,0,0,1,696.43,73a34.3,34.3,0,0,1-12.84-13.8,42.43,42.43,0,0,1-4.54-19.86,42.42,42.42,0,0,1,2.71-15.19,38.64,38.64,0,0,1,7.67-12.51A35.23,35.23,0,0,1,715.9.11Zm0,8.47a27.77,27.77,0,0,0-15,4,27.18,27.18,0,0,0-10,11,34.19,34.19,0,0,0-3.54,15.75,30.63,30.63,0,0,0,2.19,11.53,31.32,31.32,0,0,0,6.08,9.69,29,29,0,0,0,9.08,6.66,25.87,25.87,0,0,0,11.2,2.44,25.24,25.24,0,0,0,11.21-2.55,30.34,30.34,0,0,0,9.18-6.86,32.27,32.27,0,0,0,6.17-9.74,29.21,29.21,0,0,0,2.22-11.17,32.94,32.94,0,0,0-3.79-16,27.87,27.87,0,0,0-10.3-10.79A28.15,28.15,0,0,0,715.9,8.58Z"></path><path d="M776.31,4.32a4.15,4.15,0,0,1,1.17-2.85,3.86,3.86,0,0,1,5.14-.58,5.18,5.18,0,0,1,1.61,1.66L815.1,53.06,846.31,2.21a3.92,3.92,0,0,1,3.54-2,4,4,0,0,1,2.93,1.22A4,4,0,0,1,854,4.37V73.7a4.15,4.15,0,0,1-8.3,0V19.09l-27.06,44.1a4.14,4.14,0,0,1-7.08,0l-26.95-44V73.48a4.15,4.15,0,0,1-8.3,0Z"></path></g></g> 445 </svg> 446 </a> 447 </div> 448 449 <div class="header-icon-right header-icons col-3"> 450 <div class="icon icon-account-header d-none d-lg-block"> 451 <a href="https://heartysfoodhall.co.uk/"> 452 <svg xmlns="image/logo-login-emo78.png" width="20" height="21" viewBox="0 0 20 21" fill="none"> 453 <path d="M19.015 19.8549C18.4842 18.3662 17.3117 17.0514 15.6819 16.1134C14.052 15.1754 12.0547 14.6667 10.0002 14.6667C7.94569 14.6667 5.94835 15.1754 4.31852 16.1134C2.68869 17.0514 1.51618 18.3662 0.985352 19.8549" stroke="#ffffff" stroke-linecap="round"/> 454 <path d="M10.0002 10C12.5775 10 14.6668 7.91068 14.6668 5.33335C14.6668 2.75602 12.5775 0.666687 10.0002 0.666687C7.42283 0.666687 5.3335 2.75602 5.3335 5.33335C5.3335 7.91068 7.42283 10 10.0002 10Z" stroke="#ffffff" stroke-linecap="round"/> 455 </svg> 456 457 </a> 458 </div> 459 <div class="icon icon-wishlist-header"> 460 <a href="https://heartysfoodhall.co.uk/"> 461 <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 462 <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.072
4626 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.11233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 463 </svg> 464 465 <span class="wishlist-count d-none">0</span> 466 </a> 467 </div> 468 <div class="icon icon-cart-header"> 469 <a href="https://heartysfoodhall.co.uk/"> 470 <svg xmlns="image/logo-login-emo78.png" width="22" height="21" viewBox="0 0 22 21" fill="none"> 471 <path d="M6.33301 10V5.33335C6.33301 4.09568 6.82467 2.90869 7.69984 2.03352C8.57501 1.15835 9.762 0.666687 10.9997 0.666687C12.2374 0.666687 13.4243 1.15835 14.2995 2.03352C15.1747 2.90869 15.6663 4.09568 15.6663 5.33335V10" stroke="#ffffff" stroke-linecap="round"/> 472 <path d="M1.30956 10.7793C1.47873 8.74817 1.56389 7.73317 2.23356 7.116C2.90323 6.49883 3.92289 6.5 5.96106 6.5H16.0399C18.0769 6.5 19.0966 6.5 19.7662 7.116C20.4359 7.732 20.5211 8.74817 20.6902 10.7793L21.2899 17.973C21.3879 19.1548 21.4369 19.7463 21.0916 20.1232C20.7439 20.5 20.1512 20.5 18.9636 20.5H3.03623C1.84973 20.5 1.25589 20.5 0.909392 20.1232C0.562892 19.7463 0.611892 19.1548 0.711059 17.973L1.30956 10.7793Z" stroke="#ffffff"/> 473 </svg> 474 475 </a> 476 </div> 477 </div> 478 </div> 479 </div> 480 </header> 481 482 <nav class="nav-header" style="background-color: #242424;"> 483 <div class="nav-account-mobile row m-0 d-lg-none"> 484 <div class="col-6 welcome-cust p-0"> 485 486 <h1 class="logo"> 487 <a href="https://heartysfoodhall.co.uk/"> 488 <img src="image/logo-login-emo78.png" alt="EMO78" style="max-height:60px;"> 489 </a> 490 </h1> 491 492 493 </div> 494 495 <div class="col-6 login-register text-right p-0"> 496 <a href="https://ya.emo78-jago.store/">Log In</a> | <a href="https://ya.emo78-jago.store/">Sign Up</a> 497 </div> 498 </div> 499 <ul class="nav-menu container"> 500 501 <li class="nav-menu container"> 502 <a href="https://heartysfoodhall.co.uk/"> 503 <span style="color: gold;">EMO78</span> 504 505 506 <li class=" nav-menu container"> 507 <a href="https://heartysfoodhall.co.uk/"> 508 <span style="color: gold;">SLOT GACOR</span> 509 510 511 <li class=" nav-menu container"> 512 <a href="https://heartysfoodhall.co.uk/"> 513 <span style="color: gold;">BANDAR SLOT</span> 514 515 <li class=" nav-menu container"> 516 <a href="https://heartysfoodhall.co.uk/"> 517 <span style="color: gold;">SLOT TERPERCAYA</span> 518 519 <li class=" nav-menu container"> 520 <a href="https://heartysfoodhall.co.uk/"> 521 <span style="color: gold;">AGEN SLOT</span> 522 523 <li class=" nav-menu container"> 524 <a href="https://heartysfoodhall.co.uk/"> 525 <span style="color: gold;">SLOT777</span> 526 527 <div class="overlay-nav"> 528 <!-- Mobile Close Button in Overlay --> 529 <button id="nav-close" class="nav-close-btn d-lg-none"> 530 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="image/logo-login-emo78.png"> 531 <path d="M18 6L6 18M6 6L18 18" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 532 </svg> 533 </button> 534 </div> 535 536
536<script> 537 if ($(window).width() < 992) { 538 // Level 1 menu accordion (main menu items) 539 $(".nav-menu .nav-menu container > a").click(function(e){ 540 e.preventDefault() 541 const parentLi = $(this).parent() 542 const isCurrentlyOpen = parentLi.hasClass("menu-open") 543 544 // Close all other open menus (accordion behavior) 545 $(".nav-menu .nav-menu container").not(parentLi).removeClass("menu-open") 546 $(".nav-menu .megamenu").not($(this).next(".megamenu")).slideUp() 547 548 // Toggle current menu 549 if (isCurrentlyOpen) { 550 parentLi.removeClass("menu-open") 551 $(this).next(".megamenu").slideUp() 552 } else { 553 parentLi.addClass("menu-open") 554 $(this).next(".megamenu").slideDown() 555 } 556 }) 557 558 // Level 2 menu accordion (submenu items with grandchildren) 559 $(document).on('click', '.dropdown-menu .has-submenu > a', function(e){ 560 e.preventDefault() 561 const parentLi = $(this).parent() 562 const isCurrentlyOpen = parentLi.hasClass("submenu-open") 563 const grandchild = $(this).next(".grandchild") 564 565 // Close all other open submenus in the same dropdown (accordion behavior) 566 parentLi.siblings('.has-submenu').removeClass("submenu-open") 567 parentLi.siblings('.has-submenu').find('.grandchild').slideUp() 568 parentLi.siblings('.has-submenu').find('.chevron-right').css('transform', 'rotate(0deg)') 569 570 // Toggle current submenu 571 if (isCurrentlyOpen) { 572 parentLi.removeClass("submenu-open") 573 grandchild.slideUp() 574 $(this).find('.chevron-right').css('transform', 'rotate(0deg)') 575 } else { 576 parentLi.addClass("submenu-open") 577 grandchild.slideDown() 578 $(this).find('.chevron-right').css('transform', 'rotate(90deg)') 579 } 580 }) 581 582 $("#menu-hamburger").click(function(e){ 583 e.preventDefault() 584 $("body").toggleClass("nav_open") 585 }) 586 587 // Handle close button click 588 $("#nav-close").click(function(e){ 589 e.preventDefault() 590 $("body").removeClass("nav_open") 591 // Close all open menus when close button is clicked 592 $(".nav-menu .nav-menu container").removeClass("menu-open") 593 $(".nav-menu .megamenu").slideUp() 594 $(".dropdown-menu .has-submenu").removeClass("submenu-open") 595 $(".dropdown-menu .grandchild").slideUp() 596 $(".dropdown-menu .chevron-right").css('transform', 'rotate(0deg)') 597 }) 598 } 599 600 $(".overlay-nav").click(function(e){ 601 e.preventDefault() 602 $("body").removeClass("nav_open") 603 // Close all open menus when overlay is clicked 604 $(".nav-menu .nav-menu container").removeClass("menu-open") 605 $(".nav-menu .megamenu").slideUp() 606 $(".dropdown-menu .has-submenu").removeClass("submenu-open") 607 $(".dropdown-menu .grandchild").slideUp() 608 $(".dropdown-menu .chevron-right").css('transform', 'rotate(0deg)') 609 }) 610 </script>
610 611 612 613 </div> 614 615 <div id="shopify-section-search-popup" class="shopify-section m-0"><style> 616 #search-trigger { 617 cursor: pointer; 618 } 619 #search-popup { 620 display: none; 621 position: fixed; 622 left: 0; 623 width: 100%; 624 top: 0; 625 height: 100%; 626 justify-content: center; 627 z-index: 9999; 628 background: rgb(196 196 196 / 30%); 629 } 630 #search-input { 631 align-self: center; 632 width: 100%; 633 height: 80px; 634 position: absolute; 635 top: 0; 636 border-bottom: 0.5px solid #A3A3A3; 637 background-color: #fff; 638 } 639 #search-input * { 640 align-self: center; 641 } 642 #search-type { 643 width: 100%; 644 border: none; 645 padding-right: 20px; 646 padding-left: 20px; 647 font-size: 16px; 648 color: #757575; 649 } 650 #search-btn { 651 font-size: 16px; 652 font-weight: 500; 653 } 654 #search-result { 655 min-height: 490px; 656 width: 100%; 657 padding-top: 80px; 658 } 659 #search-result .container { 660 background-color: #fff; 661 padding: 20px 40px; 662 } 663 body.search-popup-open { 664 /* .search-popup-open */ 665 overflow: hidden; 666 } 667 .search-popup-open #loc_delivery { 668 display: none 669 } 670 .search-header svg { 671 display: none; 672 cursor: pointer; 673 } 674 .wrapper-search-popup { 675 max-height: calc(100vh - 150px); 676 overflow-y: auto; 677 overflow-x: hidden; 678 } 679 680 .group-recommend { 681 padding: 20px 40px; 682 } 683 684 .resultsearch { 685 display: none; 686 } 687 .results { padding: 20px 40px } 688 .resultsearch label { 689 font-weight: 600; 690 padding-bottom: 20px; 691 display: block; 692 margin-bottom: 20px; 693 border-bottom: 1px solid #AAAAAA; 694 } 695 696 ul.result_product { 697 max-height: 300px; 698 overflow: auto; 699 } 700 701 .group-promotion ul { 702 margin: 0; 703 } 704 .group-promotion li { 705 list-style: none; 706 margin-bottom: 12px; 707 } 708 .group-promotion li a { 709 color: inherit; 710 } 711 712 .group-recent { 713 position: relative; 714 padding: 20px 40px; 715 } 716 .group-recent ul { 717 margin: 0; 718 } 719 .group-recent li { 720 list-style: none; 721 display: inline-block; 722 margin-right: 60px; 723 } 724 .group-recent li a { 725 color: inherit; 726 } 727 728 .last-search svg { 729 width: 20px; 730 vertical-align: middle; 731 } 732 ul.last-search a { 733 vertical-align: middle; 734 padding: 0 10px; 735 } 736 ul.last-search li span { 737 cursor: pointer; 738 } 739 .delete-all-history { 740 position: absolute; 741 top: 25px; 742 right: 40px; 743 text-decoration: underline; 744 color: #e11d1d; 745 cursor: pointer; 746 font-size: 12px; 747 } 748 749 form.search.search-modal__form { 750 position: relative; 751 } 752 753 button.search__button svg { 754 width: 25px; 755 color: #495057; 756 fill: #757582; 757 } 758 759 button.search__button.field__button { 760 position: absolute; 761 top: 50%; 762 margin-top: -12px; 763 } 764 765 .close-search { 766 display: none; 767 position: absolute; 768 right: 65px; 769 top: 10px; 770 cursor: pointer; 771 } 772 773 .site-overlay { 774 position: fixed; 775 top: 0; 776 width: 100vw; 777 height: 100vh; 778 z-index: 1000; 779 background: #0000005c; 780 visibility: hidden; 781 opacity: 0; 782 pointer-events: none; 783 transition: all .3s linear; 784 display: block !important; 785 } 786 787 .search-popup-open .site-overlay { 788 opacity: 1; 789 visibility: visible; 790 pointer-events: all; 791 z-index: -1; 792 cursor: pointer; 793 } 794 795 @media (min-width: 991px) { 796 .group-recent ul { 797 column-count: 3; 798 } 799 .group-promotion li a { 800 font-size: 12px; 801 font-weight: 400; 802 } 803 .group-recent li a { 804 font-size: 12px; 805 font-weight: 400; 806 } 807 } 808 809 .moreresult { 810 padding: 10px 40px; 811 border-top: 1px solid #AAAAAA; 812 } 813 .moreresult * { 814 align-self: center; 815 } 816 .moreresult p { 817 margin: 0; 818 font-size: 12px !important; 819 } 820 .moreresult svg { 821 width: 13px; 822 } 823 824 @media (max-width: 992px) { 825 .icon-key-mobile { 826 height: auto!important; 827 width: 10px!important; 828 } 829 body.grid-view.search-popup-open .products { 830 -ms-flex: 0 0 100%!important; 831 flex: 0 0 100%!important; 832 max-width: 100%!important; 833 } 834 button.search__button svg {
835 width: 20px; 836 } 837 #search-result { 838 padding-left: 0; 839 padding-right: 0; 840 } 841 #search-result { 842 padding-top: 55px; 843 } 844 #search-input { 845 height: 55px; 846 } 847 .group-recommend { 848 padding: 20px; 849 } 850 #search-input .container { 851 padding: 0 20px; 852 } 853 #search-type { 854 font-size: 14px; 855 } 856 #search-btn { 857 font-size: 12px; 858 text-decoration: underline; 859 } 860 .results { 861 padding: 20px; 862 } 863 .group-recommend h3 { 864 font-size: 16px; 865 } 866 .products .card-body { 867 padding: 8px 0px 10px; 868 } 869 .moreresult { 870 padding: 10px 20px; 871 } 872 } 873 </style> 874 <style type="text/css"> 875 div.advertisement-placeholder { 876 text-align: center; 877 padding-bottom: 20px; 878 display: flex; 879 flex-direction: column; 880 justify-content: center; 881 } 882 div.advertisement-text p { 883 margin: 0; 884 font-family: Open Sans; 885 font-style: normal; 886 font-weight: normal; 887 font-size: 10px; 888 line-height: 20px; 889 color: #999999; 890 } 891 div.advertisement-banner { 892 margin: 0px auto; 893 } 894 div#div-gpt-ad-billboard-placeholder { 895 width: 996px; 896 margin: 0 auto; 897 background: #F5F5F5; 898 padding-bottom: unset !important; 899 min-height: 200px; 900 } 901 div#div-gpt-ad-lb-placeholder { 902 background: #F5F5F5; 903 padding-bottom: unset !important; 904 min-height: 280px; 905 } 906 .faq-section{ 907 max-width:1200px; 908 margin:50px auto; 909 padding:40px 20px; 910 position:relative; 911 background-color: rgba(0, 0, 0, 0.1); 912 backdrop-filter: blur(25px); 913 border-radius: 20px; 914 } 915 916 .faq-section::before{ 917 content:""; 918 position:absolute; 919 top:0;left:50%; 920 transform:translateX(-50%); 921 width:80%; 922 height:2px; 923 background:linear-gradient(90deg,transparent,gold,transparent) 924 } 925 926 .faq-section h2{ 927 text-align:center; 928 font-size:34px;font-weight:700; 929 margin-bottom:50px; 930 background: linear-gradient(135deg, gold, gold, gold); 931 -webkit-background-clip:text; 932 -webkit-text-fill-color:transparent; 933 background-clip:text; 934 font-family:"Poppins",sans-serif;letter-spacing:1px 935 } 936 937 .faq-container{ 938 display:flex; 939 flex-direction:column; 940 gap:25px 941 } 942 943 .faq-item{ 944 background:linear-gradient(145deg,#0a0a0a,#1a1a1a); 945 border:2px solid gold; 946 border-radius:20px;overflow:hidden; 947 transition:all .4s ease;box-shadow:0 5px 20px rgba(0,0,0,0.5) 948 } 949 950 .faq-item:hover{ 951 border-color:gold; 952 transform:translateX(10px); 953 box-shadow:0 12px 35px rgba(0, 255, 255, 0.25) 954 } 955 956 .faq-question{width:100%; 957 padding:28px 35px;background:transparent; 958 color:#ffffff; 959 font-size:18px; 960 font-weight:600; 961 text-align:left; 962 border:none;cursor:pointer; 963 display:flex; 964 justify-content:space-between; 965 align-items:center; 966 font-family:"Poppins",sans-serif; 967 transition:all .3s ease 968 } 969 970 .faq-question:hover{ 971 color:gold 972 } 973 974 .faq-question::after{ 975 content:'+'; 976 font-size:32px; 977 font-weight:300; 978 transition:all .4s ease; 979 color:gold; 980 width:40px; 981 height:40px; 982 display:flex; 983 align-items:center; 984 justify-content:center; 985 border:2px solid gold;border-radius:50%; 986 background:rgba(0, 0, 0, 0.1) 987 } 988 989 .faq-item.active .faq-question::after{ 990 transform:rotate(135deg); 991 background:linear-gradient(135deg,gold,gold); 992 color:#000;border-color:transparent 993 } 994 995 .faq-answer{ 996 max-height:0; 997 overflow:hidden; 998 transition:max-height .5s ease,padding .5s ease; 999 background:linear-gradient(180deg,rgba(253,228,4,0.05),transparent); 1000 padding:0 35px 1001 } 1002 1003 .faq-item.active .faq-answer{ 1004 max-height:800px;padding:30px 35px; 1005 border-top:1px solid rgba(0, 255, 255, 0.3) 1006 } 1007 1008 .faq-answer p{ 1009 color:#e0e0e0; 1010 font-size:16px; 1011 line-height:2; 1012 margin:0; 1013 font-family:"Poppins",sans-serif 1014 } 1015 1016 @media 1017 (max-width:768px) 1018 { 1019 1020 .faq-section 1021 {padding:30px 15px} 1022 1023 .faq-section h2 1024 {font-size:26px} 1025 1026 .faq-question 1027 {font-size:16px; 1028 padding:22px 25px} 1029 1030 .faq-question::after 1031 {width:35px; 1032 height:35px; 1033 font-size:28px} 1034 1035 .faq-answer 1036 {padding:0 25px} 1037 1038 .faq-item.active .faq-answer 1039 {padding:25px} 1040 1041 .faq-item:hover 1042 {transform:translateX(5px)} 1043 } 1044 /* ========================================= 1045 REVIEW SECTION - MATCHING FAQ STYLE 1046 ========================================= */ 1047 .review-section { 1048 max-width: 1200px; 1049 margin: 50px auto; 1050 padding: 40px 20px; 1051 position: relative; 1052 background-color: rgba(0, 0, 0, 0.1); 1053 backdrop-filter: blur(25px); 1054 border-radius: 20px; 1055 } 1056 1057 .review-section::before { 1058 content: ""; 1059 position: absolute; 1060 top: 0; left: 50%; 1061 transform: translateX(-50%); 1062 width: 80%; 1063 height: 2px; 1064 background: linear-gradient(90deg, transparent, gold, transparent); 1065 } 1066 1067 .review-section h2 { 1068 text-align: center; 1069 font-size: 34px; font-weight: 700; 1070 margin-bottom: 40px; 1071 background: linear-gradient(135deg, gold, gold); 1072 -webkit-background-clip: text; 1073 -webkit-text-fill-color: transparent; 1074 font-family: "Poppins", sans-serif; 1075 letter-spacing: 1px; 1076 } 1077 1078 /* GRID SYSTEM BUAT 5 KOLOM REVIEW */ 1079 .review-container { 1080 display: grid; 1081 /* Auto-fit bikin grid responsif menyesuaikan lebar layar */ 1082 grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); 1083 gap: 20px; 1084 } 1085 1086 .review-card { 1087 background: linear-gradient(145deg, #0a0a0a, #1a1a1a); 1088 border: 2px solid gold; 1089 border-radius: 20px; 1090 padding: 25px 15px; 1091 text-align: center; 1092 transition: all 0.4s ease; 1093 box-shadow: 0 5px 20px rgba(0,0,0,0.5); 1094 display: flex; 1095 flex-direction: column; 1096 align-items: center; 1097 } 1098 1099 .review-card:hover { 1100 border-color: gold; 1101 transform: translateY(-10px); /* Efek melayang pas di-hover */ 1102 box-shadow: 0 12px 35px rgba(0, 255, 255, 0.25); 1103 } 1104 1105 .review-avatar { 1106 width: 60px; 1107 height: 60px; 1108 border-radius: 50%; 1109 border: 2px solid gold; 1110 margin-bottom: 15px; 1111 background: #111; 1112 padding: 2px; 1113 } 1114 1115 .review-name { 1116 color: #ffffff; 1117 font-size: 16px; 1118 font-weight: 600; 1119 margin-bottom: 5px; 1120 font-family: "Poppins", sans-serif; 1121 } 1122 1123 .review-stars { 1124 color: #FFD700; /* Warna kuning emas buat bintang */ 1125 font-size: 14px; 1126 margin-bottom: 15px; 1127 letter-spacing: 2px; 1128 } 1129 1130 .review-text {
1131 color: #e0e0e0; 1132 font-size: 13px; 1133 line-height: 1.6; 1134 font-family: "Poppins", sans-serif; 1135 } 1136 1137 /* RESPONSIVE REVIEW BUAT MOBILE */ 1138 @media (max-width: 768px) { 1139 .review-section { padding: 30px 15px; } 1140 .review-section h2 { font-size: 26px; } 1141 .review-container { grid-template-columns: 1fr; } /* Jadi 1 baris ke bawah di HP */ 1142 .review-card:hover { transform: translateY(-5px); } 1143 } 1144 </style> 1145 <div id="search-popup"> 1146 <div id="search-input" class="row"> 1147 <div class="container w-100"> 1148 <form 1149 action="/search" 1150 method="get" 1151 role="search" 1152 class="search search-modal__form d-flex justify-content-between" 1153 > 1154 <svg xmlns="image/logo-login-emo78.png" width="20" height="20" viewBox="0 0 20 20" fill="none"> 1155 <path d="M18.7327 19.513L11.427 12.2073C10.8437 12.7043 10.1729 13.0889 9.41454 13.3612C8.65621 13.6334 7.89398 13.7695 7.12787 13.7695C5.25965 13.7695 3.67843 13.1228 2.3842 11.8293C1.08998 10.5359 0.442871 8.95505 0.442871 7.08683C0.442871 5.2186 1.0892 3.63699 2.38187 2.34199C3.67454 1.04699 5.25498 0.398714 7.12321 0.397159C8.99143 0.395603 10.5734 1.04271 11.8692 2.33849C13.165 3.63427 13.8129 5.21588 13.8129 7.08333C13.8129 7.89377 13.6694 8.67816 13.3824 9.43649C13.0954 10.1948 12.7182 10.8435 12.2507 11.3825L19.5564 18.687L18.7327 19.513ZM7.12904 12.6017C8.67682 12.6017 9.98348 12.0689 11.049 11.0033C12.1146 9.93777 12.6474 8.63071 12.6474 7.08216C12.6474 5.5336 12.1146 4.22694 11.049 3.16216C9.98348 2.09738 8.67682 1.5646 7.12904 1.56383C5.58126 1.56305 4.2742 2.09583 3.20787 3.16216C2.14154 4.22849 1.60876 5.53516 1.60954 7.08216C1.61032 8.62916 2.14309 9.93583 3.20787 11.0022C4.27265 12.0685 5.57932 12.6013 7.12787 12.6005" fill="#ffffff"/> 1156 </svg> 1157 1158 <input type="hidden" name="type" value="product"> 1159 <input 1160 type="text" 1161 id="search-type" 1162 name="q" 1163 class="search-popup" 1164 placeholder="Gifts that linger: Uncover treasures for cherished moments." 1165 > 1166 <div class="close-search"><svg xmlns="image/logo-login-emo78.png" width="18" height="18" viewBox="0 0 18 18" fill="none"> 1167 <path d="M9 9.708L12.246 12.954C12.3393 13.0473 12.454 13.0973 12.59 13.104C12.726 13.1107 12.8473 13.0607 12.954 12.954C13.0607 12.8473 13.114 12.7293 13.114 12.6C13.114 12.4707 13.0607 12.3527 12.954 12.246L9.708 9L12.954 5.754C13.0473 5.66067 13.0973 5.546 13.104 5.41C13.1107 5.274 13.0607 5.15267 12.954 5.046C12.8473 4.93933 12.7293 4.886 12.6 4.886C12.4707 4.886 12.3527 4.93933 12.246 5.046L9 8.292L5.754 5.046C5.66067 4.95267 5.546 4.90267 5.41 4.896C5.274 4.88933 5.15267 4.93933 5.046 5.046C4.93933 5.15267 4.886 5.27067 4.886 5.4C4.886 5.52933 4.93933 5.64733 5.046 5.754L8.292 9L5.046 12.246C4.95267 12.3393 4.90267 12.4543 4.896 12.591C4.88933 12.7263 4.93933 12.8473 5.046 12.954C5.15267 13.0607 5.27067 13.114 5.4 13.114C5.52933 13.114 5.64733 13.0607 5.754 12.954L9 9.708ZM9.003 18C7.75833 18 6.58833 17.764 5.493 17.292C4.39767 16.8193 3.44467 16.178 2.634 15.368C1.82333 14.558 1.18167 13.606 0.709 12.512C0.236333 11.418 0 10.2483 0 9.003C0 7.75767 0.236333 6.58767 0.709 5.493C1.181 4.39767 1.82133 3.44467 2.63 2.634C3.43867 1.82333 4.391 1.18167 5.487 0.709C6.583 0.236333 7.753 0 8.997 0C10.241 0 11.411 0.236333 12.507 0.709C13.6023 1.181 14.5553 1.82167 15.366 2.631C16.1767 3.44033 16.8183 4.39267 17.291 5.488C17.7637 6.58333 18 7.753 18 8.997C18 10.241 17.764 11.411 17.292 12.507C16.82 13.603 16.1787 14.556 15.368 15.366C14.5573 16.176 13.6053 16.8177 12.512 17.291C11.4187 17.7643 10.249 18.0007 9.003 18ZM9 17C11.2333 17 13.125 16.225 14.675 14.675C16.225 13.125 17 11.2333 17 9C17 6.76667 16.225 4.875 14.675 3.325C13.125 1.775 11.2333 1 9 1C6.76667 1 4.875 1.775 3.325 3.325C1.775 4.875 1 6.76667 1 9C1 11.2333 1.775 13.125 3.325 14.675C4.875 16.225 6.76667 17 9 17Z" fill="#757575"/> 1168 </svg> 1169 </div> 1170 <button id="search-btn">Search</button> 1171 </form>
1172 </div> 1173 </div> 1174 <div id="search-result" class="container m-auto"> 1175 <div class="container p-0"> 1176 <div class="group-promotion"> 1177 <div class="resultsearch"> 1178 <div class="row results"> 1179 <div class="col-12 col-lg-6 mb-3 mb-lg-0"> 1180 <label>SUGGESTIONS</label> 1181 <ul class="result_collection"></ul> 1182 </div> 1183 <div class="col-12 col-lg-6"> 1184 <label>PRODUCTS</label> 1185 <ul class="result_product"></ul> 1186 </div> 1187 </div> 1188 <div class="d-flex justify-content-between moreresult m-0"> 1189 <p>Search for<span></span></p> 1190 <svg version="1.1" xmlns="image/logo-login-emo78.png" width="32" height="32" viewBox="0 0 32 32"> 1191 <title>icon-arrow-right</title> 1192 <path d="M25.057 15.333l-6.862-6.862c-0.26-0.26-0.26-0.682 0-0.943s0.682-0.26 0.943 0l8 8c0.26 0.26 0.26 0.682 0 0.943l-8 8c-0.26 0.26-0.682 0.26-0.943 0s-0.26-0.682 0-0.943l6.862-6.862h-19.724c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h19.724z"></path> 1193 </svg> 1194 </div> 1195 </div> 1196 </div> 1197 <div class="group-recent hide"> 1198 <h3>RECENT SEARCH</h3> 1199 <span class="delete-all-history">Hapus riwayat</span> 1200 <ul class="last-search"></ul> 1201 </div> 1202 <div class="group-recommend"> 1203 <h3>YOU MAY ALSO LIKE</h3> 1204 1205 1206 <div class="row popup-recommend c-products-grid infinite-case product-multi-"> 1207 <div class="swiper-wrapper justify-content-between" style="margin-left:1px;"> 1208 1209 1210 <div class="swiper-slide card"> 1211 1212 1213 1214 1215 <div class="products" data-lazy="false"> 1216 <div class="bg-products"> 1217 <div class="wishlist-toggle" data-product-handle="mid-autumn-of-love-mooncake"> 1218 <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1219 <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.0726 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.
121911233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 1220 </svg> 1221 1222 </div> 1223 <a href="/products/mid-autumn-of-love-mooncake"> 1224 1225 <div class="product-card-img-container p-0 position-relative"> 1226 1227 <img class="product-card-img" lazy="false" src="//outerbloom.com/cdn/shop/files/Mid-Autumn-of-Love-Mooncake_6b4cc10d-950d-4e1a-abf7-427b4a6912c8_350x.jpg?v=1755750898" data-src="//outerbloom.com/cdn/shop/files/Mid-Autumn-of-Love-Mooncake_6b4cc10d-950d-4e1a-abf7-427b4a6912c8_350x.jpg?v=1755750898" alt="Mid Autumn of Love Mooncake" height="200" width="200"> 1228 </div> 1229 <div class="card-body product-card-info"> 1230 <h5 class="h5 mb-0"> 1231 Mid Autumn of Love Mooncake 1232 </h5> 1233 <div class="product-card-price"> 1234 1235 <div class="product-price-sale"> 1236 <s class="product-card-price-before card-money">Rp 588.000</s> 1237 <span class="product-card-discount small"> 1238 (-40%) 1239 </span> 1240 </div> 1241 1242 1243 1244 <div class="price-discount"> 1245 <h4 class="product-card-price-after card-money">Rp 348.000</h4> 1246 </div> 1247 1248 1249 1250 1251 1252 </div> 1253 1254 </div> 1255 </a> 1256 </div> 1257 1258 </div> 1259 1260 </div> 1261 1262 1263 1264 <div class="swiper-slide card"> 1265 1266 1267 1268 1269 <div class="products" data-lazy="false"> 1270 <div class="bg-products"> 1271 <div class="wishlist-toggle" data-product-handle="mid-autumn-of-joy-mooncake"> 1272 <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1273 <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.0726 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.
127311233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 1274 </svg> 1275 1276 </div> 1277 <a href="/products/mid-autumn-of-joy-mooncake"> 1278 1279 <div class="product-card-img-container p-0 position-relative"> 1280 1281 <img class="product-card-img" lazy="false" src="//outerbloom.com/cdn/shop/files/Mid-Autumn-of-Joy-Mooncake_97224b06-a506-4a56-8544-59a0dccb5c17_350x.jpg?v=1755750798" data-src="//outerbloom.com/cdn/shop/files/Mid-Autumn-of-Joy-Mooncake_97224b06-a506-4a56-8544-59a0dccb5c17_350x.jpg?v=1755750798" alt="Mid Autumn of Joy Mooncake" height="200" width="200"> 1282 </div> 1283 <div class="card-body product-card-info"> 1284 <h5 class="h5 mb-0"> 1285 Mid Autumn of Joy Mooncake 1286 </h5> 1287 <div class="product-card-price"> 1288 1289 <div class="product-price-sale"> 1290 <s class="product-card-price-before card-money">Rp 888.000</s> 1291 <span class="product-card-discount small"> 1292 (-33%) 1293 </span> 1294 </div> 1295 1296 1297 1298 <div class="price-discount"> 1299 <h4 class="product-card-price-after card-money">Rp 588.000</h4> 1300 </div> 1301 1302 1303 1304 1305 1306 </div> 1307 1308 </div> 1309 </a> 1310 </div> 1311 1312 </div> 1313 1314 </div> 1315 1316 1317 1318 <div class="swiper-slide card"> 1319 1320 1321 1322 1323 <div class="products" data-lazy="false"> 1324 <div class="bg-products"> 1325 <div class="wishlist-toggle" data-product-handle="mid-autumn-of-fortune-mooncake"> 1326 <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1327 <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.0726 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.
132711233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 1328 </svg> 1329 1330 </div> 1331 <a href="/products/mid-autumn-of-fortune-mooncake"> 1332 1333 <div class="product-card-img-container p-0 position-relative"> 1334 1335 <img class="product-card-img" lazy="false" src="//outerbloom.com/cdn/shop/files/Mid-Autumn-of-Fortune-Mooncake_de29329d-6ab7-4592-aa00-3e9636d4a323_350x.jpg?v=1755846072" data-src="//outerbloom.com/cdn/shop/files/Mid-Autumn-of-Fortune-Mooncake_de29329d-6ab7-4592-aa00-3e9636d4a323_350x.jpg?v=1755846072" alt="Mid Autumn of Fortune Mooncake" height="200" width="200"> 1336 </div> 1337 <div class="card-body product-card-info"> 1338 <h5 class="h5 mb-0"> 1339 Mid Autumn of Fortune Mooncake 1340 </h5> 1341 <div class="product-card-price"> 1342 1343 <div class="product-price-sale"> 1344 <s class="product-card-price-before card-money">Rp 1.188.000</s> 1345 <span class="product-card-discount small"> 1346 (-33%) 1347 </span> 1348 </div> 1349 1350 1351 1352 <div class="price-discount"> 1353 <h4 class="product-card-price-after card-money">Rp 788.000</h4> 1354 </div> 1355 1356 1357 1358 1359 1360 </div> 1361 1362 </div> 1363 </a> 1364 </div> 1365 1366 </div> 1367 1368 </div> 1369 1370 1371 1372 <div class="swiper-slide card"> 1373 1374 1375 1376 1377 <div class="products" data-lazy="false"> 1378 <div class="bg-products"> 1379 <div class="wishlist-toggle" data-product-handle="mid-autumn-festival-mooncake"> 1380 <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1381 <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.0726 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.
138111233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 1382 </svg> 1383 1384 </div> 1385 <a href="/products/mid-autumn-festival-mooncake"> 1386 1387 <div class="product-card-img-container p-0 position-relative"> 1388 1389 <img class="product-card-img" lazy="false" src="//outerbloom.com/cdn/shop/files/Mid-Autumn-Festival-Mooncake_06ea4f9c-bdaa-49de-b0ba-c3dd60fef351_350x.jpg?v=1755845965" data-src="//outerbloom.com/cdn/shop/files/Mid-Autumn-Festival-Mooncake_06ea4f9c-bdaa-49de-b0ba-c3dd60fef351_350x.jpg?v=1755845965" alt="Mid Autumn Festival Mooncake" height="200" width="200"> 1390 </div> 1391 <div class="card-body product-card-info"> 1392 <h5 class="h5 mb-0"> 1393 Mid Autumn Festival Mooncake 1394 </h5> 1395 <div class="product-card-price"> 1396 1397 <div class="product-price-sale"> 1398 <s class="product-card-price-before card-money">Rp 1.288.000</s> 1399 <span class="product-card-discount small"> 1400 (-23%) 1401 </span> 1402 </div> 1403 1404 1405 1406 <div class="price-discount"> 1407 <h4 class="product-card-price-after card-money">Rp 988.000</h4> 1408 </div> 1409 1410 1411 1412 1413 1414 </div> 1415 1416 </div> 1417 </a> 1418 </div> 1419 1420 </div> 1421 1422 </div> 1423 1424 1425 1426 <div class="swiper-slide card"> 1427 1428 1429 1430 1431 <div class="products" data-lazy="false"> 1432 <div class="bg-products"> 1433 <div class="wishlist-toggle" data-product-handle="the-jade-bouquet"> 1434 <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1435 <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.0726 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.
143511233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 1436 </svg> 1437 1438 </div> 1439 <a href="/products/the-jade-bouquet"> 1440 1441 <div class="product-card-img-container p-0 position-relative"> 1442 1443 <img class="product-card-img" lazy="false" src="//outerbloom.com/cdn/shop/files/The-Jade-Bouquet_350x.jpg?v=1751618030" data-src="//outerbloom.com/cdn/shop/files/The-Jade-Bouquet_350x.jpg?v=1751618030" alt="The Jade Bouquet" height="200" width="200"> 1444 </div> 1445 <div class="card-body product-card-info"> 1446 <h5 class="h5 mb-0"> 1447 The Jade Bouquet 1448 </h5> 1449 <div class="product-card-price"> 1450 1451 <div class="product-price-sale"> 1452 <s class="product-card-price-before card-money">Rp 435.000</s> 1453 <span class="product-card-discount small"> 1454 (-34%) 1455 </span> 1456 </div> 1457 1458 1459 1460 <div class="price-discount"> 1461 <h4 class="product-card-price-after card-money">Rp 285.000</h4> 1462 </div> 1463 1464 1465 1466 1467 1468 </div> 1469 1470 </div> 1471 </a> 1472 </div> 1473 1474 </div> 1475 1476 </div> 1477 1478 1479 1480 <div class="swiper-slide card"> 1481 1482 1483 1484 1485 <div class="products" data-lazy="false"> 1486 <div class="bg-products"> 1487 <div class="wishlist-toggle" data-product-handle="the-selena-bouquet"> 1488 <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1489 <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.0726 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.
148911233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 1490 </svg> 1491 1492 </div> 1493 <a href="/products/the-selena-bouquet"> 1494 1495 <div class="product-card-img-container p-0 position-relative"> 1496 1497 <img class="product-card-img" lazy="false" src="//outerbloom.com/cdn/shop/files/The-Selena-Bouquet_350x.jpg?v=1751618047" data-src="//outerbloom.com/cdn/shop/files/The-Selena-Bouquet_350x.jpg?v=1751618047" alt="The Selena Bouquet" height="200" width="200"> 1498 </div> 1499 <div class="card-body product-card-info"> 1500 <h5 class="h5 mb-0"> 1501 The Selena Bouquet 1502 </h5> 1503 <div class="product-card-price"> 1504 1505 <div class="product-price-sale"> 1506 <s class="product-card-price-before card-money">Rp 335.000</s> 1507 <span class="product-card-discount small"> 1508 (-29%) 1509 </span> 1510 </div> 1511 1512 1513 1514 <div class="price-discount"> 1515 <h4 class="product-card-price-after card-money">Rp 235.000</h4> 1516 </div> 1517 1518 1519 1520 1521 1522 </div> 1523 1524 </div> 1525 </a> 1526 </div> 1527 1528 </div> 1529 1530 </div> 1531 1532 1533 1534 <div class="swiper-slide card"> 1535 1536 1537 1538 1539 <div class="products" data-lazy="false"> 1540 <div class="bg-products"> 1541 <div class="wishlist-toggle" data-product-handle="the-viola-bouquet"> 1542 <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1543 <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.0726 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.
154311233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 1544 </svg> 1545 1546 </div> 1547 <a href="/products/the-viola-bouquet"> 1548 1549 <div class="product-card-img-container p-0 position-relative"> 1550 1551 <img class="product-card-img" lazy="false" src="//outerbloom.com/cdn/shop/files/The-Viola-Bouquet_350x.jpg?v=1751618053" data-src="//outerbloom.com/cdn/shop/files/The-Viola-Bouquet_350x.jpg?v=1751618053" alt="A striking bouquet featuring full pink chrysanthemums and delicate purple asters. It is elegantly wrapped in deep purple paper with a modern black and white striped accent at the base. The arrangement is tied with a pink ribbon bow, creating a full, rounded shape. This sophisticated bouquet is perfect for birthdays, anniversaries, or as a thoughtful thank-you gesture." height="200" width="200"> 1552 </div> 1553 <div class="card-body product-card-info"> 1554 <h5 class="h5 mb-0"> 1555 The Viola Bouquet 1556 </h5> 1557 <div class="product-card-price"> 1558 1559 <div class="product-price-sale"> 1560 <s class="product-card-price-before card-money">Rp 385.000</s> 1561 <span class="product-card-discount small"> 1562 (-25%) 1563 </span> 1564 </div> 1565 1566 1567 1568 <div class="price-discount"> 1569 <h4 class="product-card-price-after card-money">Rp 285.000</h4> 1570 </div> 1571 1572 1573 1574 1575 1576 </div> 1577 1578 </div> 1579 </a> 1580 </div> 1581 1582 </div> 1583 1584 </div> 1585 1586 1587 1588 <div class="swiper-slide card"> 1589 1590 1591 1592 1593 <div class="products" data-lazy="false"> 1594 <div class="bg-products"> 1595 <div class="wishlist-toggle" data-product-handle="the-minerva-bouquet"> 1596 <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1597 <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.0726 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.
159711233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 1598 </svg> 1599 1600 </div> 1601 <a href="/products/the-minerva-bouquet"> 1602 1603 <div class="product-card-img-container p-0 position-relative"> 1604 1605 <img class="product-card-img" lazy="false" src="//outerbloom.com/cdn/shop/files/The-Minerva-Bouquet_350x.jpg?v=1751618061" data-src="//outerbloom.com/cdn/shop/files/The-Minerva-Bouquet_350x.jpg?v=1751618061" alt="The Minerva Bouquet" height="200" width="200"> 1606 </div> 1607 <div class="card-body product-card-info"> 1608 <h5 class="h5 mb-0"> 1609 The Minerva Bouquet 1610 </h5> 1611 <div class="product-card-price"> 1612 1613 <div class="product-price-sale"> 1614 <s class="product-card-price-before card-money">Rp 385.000</s> 1615 <span class="product-card-discount small"> 1616 (-25%) 1617 </span> 1618 </div> 1619 1620 1621 1622 <div class="price-discount"> 1623 <h4 class="product-card-price-after card-money">Rp 285.000</h4> 1624 </div> 1625 1626 1627 1628 1629 1630 </div> 1631 1632 </div> 1633 </a> 1634 </div> 1635 1636 </div> 1637 1638 </div> 1639 1640 1641 1642 <div class="swiper-slide card"> 1643 1644 1645 1646 1647 <div class="products" data-lazy="false"> 1648 <div class="bg-products"> 1649 <div class="wishlist-toggle" data-product-handle="congraduations-bouquet"> 1650 <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1651 <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.0726 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.
165111233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 1652 </svg> 1653 1654 </div> 1655 <a href="/products/congraduations-bouquet"> 1656 1657 <div class="product-card-img-container p-0 position-relative"> 1658 1659 <img class="product-card-img" lazy="false" src="//outerbloom.com/cdn/shop/files/Congraduations-Bouquet_350x.jpg?v=1749545306" data-src="//outerbloom.com/cdn/shop/files/Congraduations-Bouquet_350x.jpg?v=1749545306" alt="Congraduations Bouquet" height="200" width="200"> 1660 </div> 1661 <div class="card-body product-card-info"> 1662 <h5 class="h5 mb-0"> 1663 Congraduations Bouquet 1664 </h5> 1665 <div class="product-card-price"> 1666 1667 <div class="product-price-sale"> 1668 <s class="product-card-price-before card-money">Rp 380.000</s> 1669 <span class="product-card-discount small"> 1670 (-25%) 1671 </span> 1672 </div> 1673 1674 1675 1676 <div class="price-discount"> 1677 <h4 class="product-card-price-after card-money">Rp 285.000</h4> 1678 </div> 1679 1680 1681 1682 1683 1684 </div> 1685 1686 </div> 1687 </a> 1688 </div> 1689 1690 </div> 1691 1692 </div> 1693 1694 1695 1696 <div class="swiper-slide card"> 1697 1698 1699 1700 1701 <div class="products" data-lazy="false"> 1702 <div class="bg-products"> 1703 <div class="wishlist-toggle" data-product-handle="grad-gorgeous-bouquet"> 1704 <svg xmlns="image/logo-login-emo78.png" width="24" height="21" viewBox="0 0 24 21" fill="none"> 1705 <path d="M17.4688 0.8125C15.1237 0.8125 13.1025 1.92703 12 3.77328C10.8975 1.92703 8.87625 0.8125 6.53125 0.8125C4.8494 0.814526 3.23702 1.48353 2.04778 2.67278C0.858534 3.86202 0.189526 5.47441 0.1875 7.15625C0.1875 10.2833 2.15625 13.5514 6.02813 16.8677C7.81594 18.3889 9.74622 19.7342 11.7922 20.885C11.856 20.9195 11.9274 20.9375 12 20.9375C12.0726 20.9375 12.144 20.9195 12.2078 20.885C14.2538 19.7342 16.1841 18.3889 17.9719 16.8677C21.8438 13.5514 23.8125 10.2833 23.8125 7.15625C23.8105 5.47441 23.1415 3.86202 21.9522 2.67278C20.763 1.48353 19.1506 0.814526 17.4688 0.8125ZM12 19.9991C10.4688 19.1241 1.0625 13.5077 1.0625 7.15625C1.06424 5.70638 1.64096 4.31639 2.66618 3.29118C3.69139 2.26596 5.08138 1.68924 6.53125 1.6875C8.84016 1.6875 10.7805 2.92453 11.5953 4.91516C11.6283 4.9954 11.6843 5.06403 11.7564 5.
170511233C11.8285 5.16063 11.9133 5.18642 12 5.18642C12.0867 5.18642 12.1715 5.16063 12.2436 5.11233C12.3157 5.06403 12.3717 4.9954 12.4047 4.91516C13.2195 2.92453 15.1598 1.6875 17.4688 1.6875C18.9186 1.68924 20.3086 2.26596 21.3338 3.29118C22.359 4.31639 22.9358 5.70638 22.9375 7.15625C22.9375 13.5 13.5312 19.1284 12 19.9991Z" fill="#ffffff"/> 1706 </svg> 1707 1708 </div> 1709 <a href="/products/grad-gorgeous-bouquet"> 1710 1711 <div class="product-card-img-container p-0 position-relative"> 1712 1713 <img class="product-card-img" lazy="false" src="//outerbloom.com/cdn/shop/files/Grad-_-Gorgeous-Bouquet_350x.jpg?v=1749545297" data-src="//outerbloom.com/cdn/shop/files/Grad-_-Gorgeous-Bouquet_350x.jpg?v=1749545297" alt="Grad & Gorgeous Bouquet" height="200" width="200"> 1714 </div> 1715 <div class="card-body product-card-info"> 1716 <h5 class="h5 mb-0"> 1717 Grad & Gorgeous Bouquet 1718 </h5> 1719 <div class="product-card-price"> 1720 1721 <div class="product-price-sale"> 1722 <s class="product-card-price-before card-money">Rp 380.000</s> 1723 <span class="product-card-discount small"> 1724 (-25%) 1725 </span> 1726 </div> 1727 1728 1729 1730 <div class="price-discount"> 1731 <h4 class="product-card-price-after card-money">Rp 285.000</h4> 1732 </div> 1733 1734 1735 1736 1737 1738 </div> 1739 1740 </div> 1741 </a> 1742 </div> 1743 1744 </div> 1745 1746 </div> 1747 1748 1749 </div> 1750 </div> 1751 1752 </div> 1753 </div> 1754 </div> 1755 1756 <div class="site-overlay" style="display: none"></div> 1757 </div>
1758<script> 1759 // 1. Inisialisasi Swiper 1760 var swiper = new Swiper('.popup-recommend', { 1761 slidesPerView : 4, 1762 spaceBetween: 30, 1763 lazy: true, 1764 speed: 300, 1765 breakpoints: { 1766 576: { 1767 slidesPerView: 2, 1768 spaceBetween: 10, 1769 freeMode: true, 1770 resistance : true, 1771 resistanceRatio : 0, 1772 freeModeMomentumRatio : 0.45, 1773 freeModeMomentumVelocityRatio : 1.5 1774 }, 1775 768: { 1776 slidesPerView: 2, 1777 spaceBetween: 10 1778 }, 1779 992: { 1780 slidesPerView: 3, 1781 spaceBetween: 20 1782 } 1783 } 1784 }); 1785 1786 // 2. Deklarasi Variabel DOM 1787 const searchContainer = $("#search-popup"); 1788 const searchInput = $(".search-popup"); 1789 const result_collection = $('.result_collection'); 1790 const result_product = $('.result_product'); 1791 const resultsearch = $('.resultsearch'); 1792 const resultrecommend = $(".group-recommend"); 1793 const moreresult = $(".moreresult"); 1794 1795 // Variabel untuk fitur debounce (mencegah spam API saat mengetik cepat) 1796 let searchTimeout; 1797 1798 // 3. Event Keyup untuk Live Search 1799 searchInput.keyup(function(){ 1800 const input = $(this).val(); 1801 moreresult.find("p span").text(` â${input}â`); 1802 1803 // Bersihkan timeout sebelumnya jika user masih mengetik 1804 clearTimeout(searchTimeout); 1805 1806 if(input.length > 2) { 1807 $(".close-search").show(); 1808 1809 // Set timeout 300ms agar API tidak dipanggil per huruf 1810 searchTimeout = setTimeout(function() { 1811 const url = `https://outerbloom.com/search/suggest.json?resources[limit]=10&resources[limit_scope]=each&resources[type]=collection,product&q=${input}`; 1812 1813 $.ajax({ 1814 type: 'GET', 1815 url: url, 1816 beforeSend: function() { 1817 // Tambahkan animasi loading di sini jika diperlukan 1818 }, 1819 success: function(response) { 1820 resultsearch.show(); 1821 resultrecommend.hide(); 1822 result_collection.html(""); 1823 result_product.html(""); 1824 1825 const collections = response.resources.results.collections; 1826 const products = response.resources.results.products; 1827 1828 // Render Collections 1829 for(let i = 0; i < collections.length; i++){ 1830 const title = collections[i].title; 1831 const url = collections[i].url; 1832 1833 if(!title.includes('AIA') && !title.includes('AXA') && !title.includes('WOM') && !title.includes('Upsell')) { 1834 let html_collection = ` 1835 <li class="item" data-title="${title}"> 1836 <a href="${url}" data-type="collection" class="item_url" data-title="${title}" data-url="${url}">${title}</a> 1837 </li> 1838 `; 1839 result_collection.append(html_collection); 1840 } 1841 } 1842 1843 // Render Products 1844 for(let i = 0; i < products.length; i++){ 1845 const title = products[i].title; 1846 const url = products[i].url; 1847 const image = products[i].featured_image.url; 1848 const vendor = products[i].vendor; 1849 1850 if(vendor !== 'AIA' && vendor !== 'AXA' && vendor !== 'WOM Finance' && !title.includes('Extra Shipping Cost') && !title.includes('[US]') && !title.includes('Rp')){ 1851 let html_product = ` 1852 <li class="item" data-vendor="${vendor}"> 1853 <a href="${url}" class="item_url" data-type="product" data-title="${title}" data-url="${url}"> 1854 <img src="${image}" alt="${title}" style="width: 70px;vertical-align: middle;margin-right: 20px;"><span>${title}</span> 1855 </a> 1856 </li> 1857 `; 1858 result_product.append(html_product); 1859 } 1860 } 1861 }, 1862 error: function(xhr) { 1863 alert("Error occured. Please try again"); 1864 }, 1865 dataType: 'JSON' 1866 }); 1867 }, 300); // Waktu tunda debounce 300ms 1868 1869 } else { 1870 result_collection.html(""); 1871 result_product.html(""); 1872 resultsearch.hide(); 1873 resultrecommend.show(); 1874 } 1875 }); 1876 1877 moreresult.click(function(){ 1878 $("#search-btn").trigger("click"); 1879 }); 1880 1881 $(".close-search").click(function(){ 1882 $(this).hide(); 1883 searchInput.val(""); 1884 searchInput.focus(); 1885 resultsearch.hide(); 1886 resultrecommend.show(); 1887 }); 1888 1889 // 4. Fungsi Cookie 1890 function setCookie(name, value, days) { 1891 var expires = ""; 1892 if (days) { 1893 var date = new Date(); 1894 date.setTime(date.getTime() + (days*24*60*60*1000)); 1895 expires = "; expires=" + date.toUTCString(); 1896 } 1897 document.cookie = name + "=" + (value || "") + expires + "; path=/"; 1898 } 1899 1900 function getCookie(name) { 1901 var nameEQ = name + "="; 1902 var ca = document.cookie.split(';'); 1903 for(var i=0;i < ca.length;i++) { 1904 var c = ca[i]; 1905 while (c.charAt(0)==' ') c = c.substring(1,c.length); 1906 if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 1907 } 1908 return null; 1909 } 1910 1911 // 5. Menampilkan Riwayat Pencarian 1912 $(".group-recent").hide();
1913 let cookieName = getCookie("last_search_name"); 1914 let cookieUrl = getCookie("last_search_url"); 1915 1916 if(cookieName && cookieUrl){ 1917 $(".group-recent").show(); 1918 1919 // Perbaikan logika array: gunakan filter(Boolean) untuk mencegah array kosong 1920 const arrName = cookieName.split(',').filter(Boolean).reverse(); 1921 const arrUrl = cookieUrl.split(',').filter(Boolean).reverse(); 1922 1923 let length = arrName.length > 5 ? 5 : arrName.length; 1924 1925 for(let n = 0; n < length; n++){ 1926 // Perbaikan xmlns pada SVG menjadi standar W3C 1927 let html2 = `<li> 1928 <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 1929 <title/> 1930 <path d="M12.25,2A9.81,9.81,0,0,0,4.77,5.46L3.41,4.25a1,1,0,0,0-1.07-.16A1,1,0,0,0,1.75,5V9a1,1,0,0,0,1,1h4.5a1,1,0,0,0,.93-.64,1,1,0,0,0-.27-1.11L6.26,6.78a7.86,7.86,0,0,1,6-2.78A8,8,0,1,1,4.72,14.67a1,1,0,0,0-1.89.66A10,10,0,1,0,12.25,2Z" fill="#C9C9C9"/> 1931 <path d="M16,16a1,1,0,0,1-.6-.2l-4-3A1,1,0,0,1,11,12V8a1,1,0,0,1,2,0v3.5l3.6,2.7a1,1,0,0,1,.2,1.4A1,1,0,0,1,16,16Z" fill="#C9C9C9"/> 1932 </svg> 1933 <a href="${arrUrl[n]}">${arrName[n]}</a> 1934 <span data-title="${arrName[n]}" data-url="${arrUrl[n]}"></span> 1935 </li>`; 1936 $(".group-recent ul").append(html2); 1937 } 1938 } 1939 1940 // 6. Menyimpan Riwayat Pencarian Baru (Diperbarui menggunakan .on() dan update real-time) 1941 resultsearch.on("click", ".item a", function(){ 1942 // Ambil data terbaru dari cookie saat elemen diklik 1943 let currentNames = getCookie("last_search_name") ? getCookie("last_search_name").split(',').filter(Boolean) : []; 1944 let currentUrls = getCookie("last_search_url") ? getCookie("last_search_url").split(',').filter(Boolean) : []; 1945 1946 let newName = $(this).attr('data-title'); 1947 let newUrl = $(this).attr('data-url'); 1948 1949 // Optional: Mencegah duplikasi history berturut-turut 1950 if(currentNames[currentNames.length - 1] !== newName) { 1951 currentNames.push(newName); 1952 currentUrls.push(newUrl); 1953 1954 // Batasi maksimal penyimpanan array di cookie agar tidak membengkak (misal max 15 item) 1955 if(currentNames.length > 15) { 1956 currentNames.shift(); // Hapus yang paling lama 1957 currentUrls.shift(); 1958 } 1959 1960 setCookie("last_search_name", currentNames.join(','), 7); 1961 setCookie("last_search_url", currentUrls.join(','), 7); 1962 } 1963 }); 1964 1965 // 7. Menghapus Riwayat Pencarian 1966 $(".delete-all-history").click(function() { 1967 setCookie("last_search_name", null, -1); // Gunakan nilai minus untuk menghapus cookie 1968 setCookie("last_search_url", null, -1); 1969 $(".last-search").hide(); 1970 setTimeout(function(){ 1971 location.reload(); 1972 }, 500); 1973 }); 1974 1975 // 8. Trigger UI Buka/Tutup 1976 $("#search-trigger").click(function(){ 1977 search_open(); 1978 }); 1979 $(".icon-search-mobile").click(function(){ 1980 search_open(); 1981 }); 1982 $(".search-header svg").click(function(){ 1983 search_close(); 1984 }); 1985 $(".icon-key-mobile").click(function(){ 1986 search_close(); 1987 }); 1988 1989 function search_open() { 1990 $("body").addClass("search-popup-open"); 1991 $("#nav-mobile-icon, .search-header label, .icon-search-mobile").hide(); 1992 $("#search-popup, .search-header svg, .icon-key-mobile").show(); 1993 $(".search-popup").focus(); 1994 if($('.popup-recommend').length > 0 && $('.popup-recommend')[0].swiper) { 1995 $('.popup-recommend')[0].swiper.update(); 1996 } 1997 } 1998 1999 function search_close() { 2000 $("body").removeClass("search-popup-open"); 2001 $("#nav-mobile-icon, .search-header label, .icon-search-mobile").show(); 2002 $("#search-popup, .search-header svg, .icon-key-mobile").hide(); 2003 searchInput.val(""); 2004 resultsearch.hide(); 2005 resultrecommend.show(); 2006 } 2007 2008 $(".site-overlay").click(function(){ 2009 search_close(); 2010 }); 2011 2012</script>
2012 2013 2014 2015 2016 <div id="PageContainer" class="is-moved-by-drawerx" style="background-color: #000000;"> 2017 <main class="main-content pt-0" role="main"> 2018 2019 <div id="breadcrumbProduct" class="d-none d-lg-block"> 2020 <style> 2021 #breadcrumbProduct { 2022 padding: 20px 0; 2023 } 2024 #breadcrumbProduct ul { 2025 display: flex; 2026 padding: 0; 2027 list-style: none; 2028 margin: 0; 2029 gap: 12px; 2030 } 2031 #breadcrumbProduct ul li { 2032 text-transform: uppercase; 2033 margin: 0; 2034 font-size: 12px; 2035 } 2036 #breadcrumbProduct ul li a { 2037 color: #757575; 2038 } 2039 2040 #breadcrumbProduct ul li svg { 2041 width: 10px; 2042 height: 10px; 2043 padding: 0; 2044 color: #757575; 2045 vertical-align: middle; 2046 } 2047 </style> 2048 <div class="container" style="color: gold;"> 2049 <ul role="navigation" aria-label="breadcrumbs"> 2050 <li><a href="https://heartysfoodhall.co.uk/" style="color: gold;">EMO78</a></li> 2051 <li><svg xmlns="image/logo-login-emo78.png" width="7" height="10" viewBox="0 0 7 10" fill="none"> 2052 <path d="M1.51673 0.0583496L6.2334 4.77502L1.51673 9.49168L0.933398 8.90002L5.0584 4.77502L0.933398 0.650016L1.51673 0.0583496Z" fill="#757575"/> 2053 </svg></li> 2054 <li>SLOT GACOR</li> 2055 <li>BANDAR SLOT</li> 2056 <li>SLOT TERPERCAYA</li> 2057 <li>AGEN SLOT</li> 2058 2059 </ul> 2060 </div> 2061 2062 </div> 2063
2063<script type="application/ld+json"> 2064{ 2065 "@context": "https://schema.org", 2066 "@type": "FAQPage", 2067 "mainEntity": [ 2068 { 2069 "@type": "Question", 2070 "name": "Apa yang dimaksud dengan EMO78 sebagai Situs Slot Gacor dan Bandar Slot777?", 2071 "acceptedAnswer": { 2072 "@type": "Answer", 2073 "text": "EMO78 merupakan platform hiburan slot online yang menggabungkan berbagai kategori permainan digital, termasuk Slot777 dan pilihan game dari sejumlah provider populer. Struktur navigasinya dirancang agar pengguna lebih mudah menemukan permainan berdasarkan provider, tema, dan fitur yang tersedia." 2074 } 2075 }, 2076 { 2077 "@type": "Question", 2078 "name": "Apakah EMO78 menyediakan permainan dari provider Pragmatic Play?", 2079 "acceptedAnswer": { 2080 "@type": "Answer", 2081 "text": "EMO78 menghadirkan kategori permainan dari provider Pragmatic Play yang dikenal memiliki beragam tema, fitur bonus, free spin, multiplier, dan mekanisme permainan yang berbeda pada setiap judul. Daftar permainan dapat berubah mengikuti pembaruan katalog yang tersedia." 2082 } 2083 }, 2084 { 2085 "@type": "Question", 2086 "name": "Apa yang dimaksud dengan kategori Slot777 di EMO78?", 2087 "acceptedAnswer": { 2088 "@type": "Answer", 2089 "text": "Slot777 merupakan salah satu istilah yang banyak digunakan untuk menggambarkan kategori permainan slot digital. Di EMO78, pengguna dapat menjelajahi berbagai pilihan permainan berdasarkan provider, tema, fitur khusus, serta karakteristik masing-masing game." 2090 } 2091 }, 2092 { 2093 "@type": "Question", 2094 "name": "Apa arti istilah Slot Gacor di EMO78?", 2095 "acceptedAnswer": { 2096 "@type": "Answer", 2097 "text": "Slot gacor adalah istilah populer yang digunakan komunitas pemain untuk menyebut permainan yang sedang banyak diperhatikan atau dianggap menarik untuk dimainkan. Istilah tersebut tidak berarti suatu game dapat menjamin kemenangan karena hasil permainan tetap ditentukan oleh mekanisme dan peluangnya." 2098 } 2099 }, 2100 { 2101 "@type": "Question", 2102 "name": "Apa fungsi informasi RTP pada game Pragmatic di EMO78?", 2103 "acceptedAnswer": { 2104 "@type": "Answer", 2105 "text": "RTP atau Return to Player merupakan persentase teoretis pengembalian permainan dalam jangka panjang. Informasi RTP dapat digunakan untuk memahami karakteristik sebuah game, tetapi tidak dapat menjamin hasil kemenangan pada setiap putaran maupun sesi permainan tertentu." 2106 } 2107 }, 2108 { 2109 "@type": "Question", 2110 "name": "Apakah EMO78 dapat diakses melalui Android dan iPhone?", 2111 "acceptedAnswer": { 2112 "@type": "Answer", 2113 "text": "Platform dengan desain responsif dapat menyesuaikan tampilan dengan berbagai ukuran layar sehingga katalog EMO78 dapat dijelajahi melalui Android, iPhone, tablet, maupun komputer menggunakan browser yang kompatibel." 2114 } 2115 }, 2116 { 2117 "@type": "Question", 2118 "name": "Bagaimana cara memilih permainan Pragmatic dan Slot777 di EMO78?", 2119 "acceptedAnswer": { 2120 "@type": "Answer", 2121 "text": "Pengguna dapat mempertimbangkan tema permainan, fitur bonus, volatilitas, RTP, jumlah paylines, serta mekanisme permainan sebelum memilih game. Gunakan informasi tersebut sebagai referensi dan hindari menganggap istilah seperti gacor, maxwin, atau pasti menang sebagai jaminan hasil permainan." 2122 } 2123 } 2124 ] 2125} 2126</script>
2126 2127 2128
2128<script type="application/ld+json"> 2129 { 2130 "@context": "https://schema.org", 2131 "@type": "BreadcrumbList", 2132 "itemListElement": [ 2133 { 2134 "@type": "ListItem", 2135 "position": 1, 2136 "name": "EMO78", 2137 "item": "https://heartysfoodhall.co.uk/" 2138 }, 2139 { 2140 "@type": "ListItem", 2141 "position": 2, 2142 "name": "SLOT GACOR", 2143 "item": "https://heartysfoodhall.co.uk/" 2144 }, 2145 { 2146 "@type": "ListItem", 2147 "position": 3, 2148 "name": "BANDAR SLOT", 2149 "item": "https://heartysfoodhall.co.uk/" 2150 }, 2151 { 2152 "@type": "ListItem", 2153 "position": 4, 2154 "name": "SLOT ONLINE", 2155 "item": "https://heartysfoodhall.co.uk/" 2156 }, 2157 { 2158 "@type": "ListItem", 2159 "position": 5, 2160 "name": "AGEN SLOT", 2161 "item": "https://heartysfoodhall.co.uk/" 2162 }, 2163 { 2164 "@type": "ListItem", 2165 "position": 6, 2166 "name": "SLOT ONLINE", 2167 "item": "https://heartysfoodhall.co.uk/" 2168 }, 2169 { 2170 "@type": "ListItem", 2171 "position": 7, 2172 "name": "SLOT777", 2173 "item": "https://heartysfoodhall.co.uk/" 2174 }, 2175 { 2176 "@type": "ListItem", 2177 "position": 8, 2178 "name": "EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026", 2179 "item": "https://heartysfoodhall.co.uk/" 2180 } 2181 ] 2182 } 2183 </script>
2183 2184 2185 <!--faq-->
2186<script type="application/ld+json"> 2187{ 2188 "@context": "https://schema.org", 2189 "@type": "FAQPage", 2190 "mainEntity": [ 2191 { 2192 "@type": "Question", 2193 "name": "Apa yang dimaksud dengan EMO78 sebagai ekosistem slot digital?", 2194 "acceptedAnswer": { 2195 "@type": "Answer", 2196 "text": "EMO78 dalam konteks ini merujuk pada platform hiburan digital yang mengusung navigasi praktis, tampilan modern, serta pilihan permainan yang dapat dieksplorasi pengguna." 2197 } 2198 }, 2199 { 2200 "@type": "Question", 2201 "name": "Apa yang membuat konsep EMO78 terlihat modern?", 2202 "acceptedAnswer": { 2203 "@type": "Answer", 2204 "text": "Konsep EMO78 menitikberatkan pada tampilan responsif, struktur menu yang terorganisasi, dan navigasi sederhana sehingga berbagai kategori dapat ditemukan dengan lebih mudah." 2205 } 2206 }, 2207 { 2208 "@type": "Question", 2209 "name": "Apa saja game yang dapat ditemukan di EMO78?", 2210 "acceptedAnswer": { 2211 "@type": "Answer", 2212 "text": "Pilihan game bergantung pada katalog dan provider yang tersedia pada platform. Pengguna sebaiknya memeriksa katalog terbaru untuk mengetahui permainan yang sedang tersedia." 2213 } 2214 }, 2215 { 2216 "@type": "Question", 2217 "name": "Apa arti istilah slot gacor?", 2218 "acceptedAnswer": { 2219 "@type": "Answer", 2220 "text": "Slot gacor merupakan istilah populer di kalangan pemain untuk menggambarkan permainan yang dianggap sedang memberikan hasil positif. Istilah tersebut bukan jaminan kemenangan." 2221 } 2222 }, 2223 { 2224 "@type": "Question", 2225 "name": "Apakah RTP dapat menjamin kemenangan?", 2226 "acceptedAnswer": { 2227 "@type": "Answer", 2228 "text": "Tidak. RTP merupakan statistik teoretis yang menggambarkan pengembalian dalam jangka panjang dan tidak dapat digunakan untuk memastikan hasil pada putaran atau sesi tertentu." 2229 } 2230 }, 2231 { 2232 "@type": "Question", 2233 "name": "Apakah EMO78 dapat digunakan melalui smartphone?", 2234 "acceptedAnswer": { 2235 "@type": "Answer", 2236 "text": "Kemampuan akses mobile bergantung pada halaman dan perangkat yang digunakan. Platform dengan desain responsif umumnya dapat menyesuaikan tampilan dengan ukuran layar smartphone." 2237 } 2238 }, 2239 { 2240 "@type": "Question", 2241 "name": "Bagaimana cara memilih game dengan lebih bijak?", 2242 "acceptedAnswer": { 2243 "@type": "Answer", 2244 "text": "Perhatikan informasi permainan, pahami mekanismenya, dan jangan menganggap klaim seperti âpasti menangâ sebagai kepastian. Tetapkan batas waktu dan anggaran sebelum bermain." 2245 } 2246 } 2247 ] 2248} 2249</script>
vendor: 1 bytes, line 2249
2249
2250<script type="application/ld+json"> 2251{ 2252 "@context": "https://schema.org", 2253 "@type": "Organization", 2254 "name": "EMO78", 2255 "url": "https://heartysfoodhall.co.uk/", 2256 "logo": "image/logo-login-emo78.png", 2257 "sameAs": [ 2258 "https://www.instagram.com/EMO78official1", 2259 "https://x.com/EMO78official1" 2260 ], 2261 "contactPoint": { 2262 "@type": "ContactPoint", 2263 "telephone": "+62-878-994-1843", 2264 "contactType": "customer support", 2265 "areaServed": "ID", 2266 "availableLanguage": [ 2267 "Indonesian", 2268 "English" 2269 ] 2270 } 2271} 2272</script>
2272 2273 2274
2274<script type="application/ld+json"> 2275 { 2276 "@context": "https://schema.org", 2277 "@type": "VideoObject", 2278 "name": "EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026", 2279 "description": "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik", 2280 "thumbnailUrl": [ 2281 " https://media.giphy.com/media/v1.Y2lkPWVjZjA1ZTQ3eWoxdmhlbm43YmYyanVwOTkzbzc3MzNtZmZ5b2V1NG9uMndkcnZlNCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/4DRGKBa1K2Zm8/giphy.gif", 2282 " https://media.giphy.com/media/v1.Y2lkPWVjZjA1ZTQ3eWoxdmhlbm43YmYyanVwOTkzbzc3MzNtZmZ5b2V1NG9uMndkcnZlNCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/4DRGKBa1K2Zm8/giphy.gif" 2283 ], 2284 "uploadDate": "2026-06-09T04:19:10-04:00", 2285 "duration": "PT3.5S", 2286 "contentUrl": "https://heartysfoodhall.co.uk/" 2287 } 2288 </script>
2288 2289 2290
2290<script type="application/ld+json"> 2291 { 2292 "@context": "https://schema.org", 2293 "@graph": [ 2294 { 2295 "@type": "Organization", 2296 "@id": "https://heartysfoodhall.co.uk/#org", 2297 "name": "EMO78", 2298 "url": "https://heartysfoodhall.co.uk/", 2299 "logo": "https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png" 2300 }, 2301 { 2302 "@type": "WebSite", 2303 "@id": "https://heartysfoodhall.co.uk/#website", 2304 "url": "https://heartysfoodhall.co.uk/", 2305 "name": "EMO78", 2306 "publisher": { "@id": "https://heartysfoodhall.co.uk/#org" }, 2307 "inLanguage": "id-ID", 2308 "potentialAction": { 2309 "@type": "SearchAction", 2310 "target": "https://heartysfoodhall.co.uk/?s={search_term_string}", 2311 "query-input": "required name=search_term_string" 2312 } 2313 }, 2314 { 2315 "@type": "SoftwareApplication", 2316 "@id": "https://heartysfoodhall.co.uk/#app", 2317 "name": "EMO78", 2318 "applicationCategory": "GameApplication", 2319 "operatingSystem": "Android, emo78, Windows", 2320 "offers": { "@type": "Offer", "price": "0", "priceCurrency": "IDR" }, 2321 "aggregateRating": { "@type": "AggregateRating", "ratingValue": 4.9, "ratingCount": 35782 } 2322 } 2323 ] 2324 } 2325 </script>
2325 2326 2327 <div id="shopify-section-Product" class="shopify-section product-section mt-0"><link href="https://heartysfoodhall.co.uk/outerbloom-global.css" rel="stylesheet" type="text/css" media="all" /> 2328 2329 2330 <style> 2331 .bg-card { 2332 background-color: #000000; 2333 } 2334 </style> 2335 2336 <!-- /templates/product.liquid --> 2337 2338 2339 <!-- <div itemscope itemtype="http://schema.org/Product"> --> 2340 2341 2342 <div class="product-standing-flower" data-product-type="flowerBoard"> 2343 <meta itemprop="url" content="https://heartysfoodhall.co.uk/"> 2344 <meta itemprop="image" content="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"> 2345 2346 2347 2348 <input id="data-sku" type="hidden" value="OBVSTF1086"> 2349 <div class="product-single" style="background-image: url(image/background-emo78.png); background-attachment: fixed;"> 2350 <div id="product-top" class="container"> 2351 <div class="row bg-card product-sticky" style="background-color: rgba(0, 0, 0, 0.1);backdrop-filter: blur(25px); padding: 20px 25px;border-radius: 10px;"> 2352 <div id="product-image" class="col-lg-7 text-center"> 2353 <div class="product-image"> 2354 <div class="row no-gutters"> 2355 2356 <div id="product-featured-image" class="row w-100"> 2357 2358 <div id="thumb-image-product" class="col-lg-2 col-12 d-none d-lg-block"> 2359 2360 <div class="swiper-container gallery-thumbs" style="min-height: 500px"> 2361 <ul class="list-unstyled slider swiper-wrapper slider-nav ProductThumbs thumbnails" id="ProductThumbsx"> 2362 2363 <li class="swiper-slide" data-type="image"> 2364 <a 2365 href="files/Blossom-Shine-WM.jpg" 2366 data-standard="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png" 2367 data-image="files/Blossom-Shine-WM.jpg" 2368 data-position="1" 2369 class="product-single__thumbnail" 2370 > 2371 <img 2372 class="lazyload w-100" 2373 src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png" 2374 alt="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026" 2375 width="" 2376 height="" 2377 > 2378 </a> 2379 </li> 2380 2381 2382 2383 2384 <li class="swiper-slide" data-type="image"> 2385 <a 2386 href="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png" 2387 data-standard="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png" 2388 data-image="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png" 2389 data-position="2" 2390 class="product-single__thumbnail" 2391 > 2392 <img 2393 class="lazyload w-100" 2394 src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png" 2395 alt="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026" 2396 width="" 2397 height="" 2398 > 2399 </a> 2400 </li> 2401 2402 2403 2404 2405 <li class="swiper-slide" data-type="image"> 2406 <a 2407 href="files/Blossom-Shine_3-WM.jpg" 2408 data-standard="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png" 2409 data-image="files/Blossom-Shine_3-WM.jpg" 2410 data-position="3" 2411 class="product-single__thumbnail" 2412 > 2413 <img 2414 class="lazyload w-100" 2415 src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png" 2416 alt="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026" 2417 width="" 2418 height="" 2419 > 2420 </a> 2421 </li> 2422 2423 2424 2425 2426 <li class="swiper-slide" data-type="image"> 2427 <a 2428 href="files/Blossom-Shine_4.jpg" 2429 data-standard="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png" 2430 data-image="files/Blossom-Shine_4.jpg" 2431 data-position="4" 2432 class="product-single__thumbnail" 2433 > 2434 <img 2435 class="lazyload w-100" 2436 src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png" 2437 alt="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026" 2438 width="" 2439 height="" 2440 > 2441 </a> 2442 </li> 2443 2444 2445 2446 </ul> 2447 </div> 2448 2449 </div> 2450 2451 <div 2452 id="featured-image-product" 2453 class="col-lg-10 col-12 d-none d-lg-block" 2454 > 2455 <div class="swiper-container gallery-top"> 2456 <div class="swiper-slide product-single__image"> 2457 2458 <div class="product-single__photos slider slider-for" id="ProductPhoto"> 2459 2460 2461 <div class="easyzoom easyzoom--overlay easyzoom--with-thumbnails"> 2462 <a href="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png"> 2463 <img 2464 src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png" 2465 alt="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026" 2466 id="ProductPhotoImg" 2467 class="lazyload" 2468 > 2469 2470 </a> 2471 </div> 2472 </div> 2473 2474 </div> 2475 <div class="swiper-slide product-single__video" style="display: none"> 2476 <video 2477 src=" https://media.giphy.com/media/v1.Y2lkPWVjZjA1ZTQ3eWoxdmhlbm43YmYyanVwOTkzbzc3MzNtZmZ5b2V1NG9uMndkcnZlNCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/4DRGKBa1K2Zm8/giphy.gif" 2478 playsinline 2479 loop 2480 muted 2481 ></video> 2482 </div> 2483 </div>
2484 </div> 2485 </div> 2486 2487 <div id="featured-image-product2" class="col-12 d-lg-none"> 2488 <div class="swiper-container gallery-mobile"> 2489 <ul class="swiper-wrapper"> 2490 <li class="swiper-slide img"> 2491 2492 <img 2493 class="swiper-lazy" 2494 src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png" 2495 data-src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png" 2496 alt="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026" 2497 width="" 2498 height="" 2499 > 2500 2501 </li> 2502 2503 2504 <li class="swiper-slide img"> 2505 2506 <img 2507 class="swiper-lazy" 2508 src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png" 2509 data-src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png" 2510 alt="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026" 2511 width="" 2512 height="" 2513 > 2514 2515 </li> 2516 2517 2518 <li class="swiper-slide img"> 2519 2520 <img 2521 class="swiper-lazy" 2522 src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png" 2523 data-src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png" 2524 alt="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026" 2525 width="" 2526 height="" 2527 > 2528 2529 </li> 2530 2531 2532 <li class="swiper-slide img"> 2533 2534 <img 2535 class="swiper-lazy" 2536 src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png" 2537 data-src="https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png" 2538 alt="EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026" 2539 width="" 2540 height="" 2541 > 2542 2543 </li> 2544 2545 2546 </ul> 2547 2548 <div class="swiper-button-prev"><svg class="icon icon-chevron-left" xmlns="image/logo-login-emo78.png" width="7" height="12" viewBox="0 0 7 12"> <circle cx="60%" cy="50%" r="12" fill="transparent" /> <path d="M6.35355339,10.6464466 C6.54881554,10.8417088 6.54881554,11.1582912 6.35355339,11.3535534 C6.15829124,11.5488155 5.84170876,11.5488155 5.64644661,11.3535534 L0.646446609,6.35355339 C0.451184464,6.15829124 0.451184464,5.84170876 0.646446609,5.64644661 L5.64644661,0.646446609 C5.84170876,0.451184464 6.15829124,0.451184464 6.35355339,0.646446609 C6.54881554,0.841708755 6.54881554,1.15829124 6.35355339,1.35355339 L1.70710678,6 L6.35355339,10.6464466 Z"/> </svg></div> 2549 <div class="swiper-button-next"><svg xmlns="image/logo-login-emo78.png" width="7" height="10" viewBox="0 0 7 10" fill="none"> 2550 <path d="M1.51673 0.0583496L6.2334 4.77502L1.51673 9.49168L0.933398 8.90002L5.0584 4.77502L0.933398 0.650016L1.51673 0.0583496Z" fill="#757575"/> 2551 </svg></div> 2552 2553 <!-- Add Pagination --> 2554 <div class="swiper-pagination"></div> 2555 2556 </div> 2557 </div> 2558 2559 <div class="product-m-pageleb-video col-12 text-center d-lg-none"> 2560 <!-- product video --> 2561 <style> 2562 .view-video{display:block; margin:auto; padding:5px 10px;font-size:16px;font-weight:bold;border:2px solid #ffffff;background:#fff;} 2563 .view-video .icon-play{fill:#ffffff;vertical-align: middle;} 2564 .video-modal{display:none;position:fixed;background: rgba(0,0,0,.5); width:100%; height:100%; overflow:auto; z-index:1; top:0;left:0;} 2565 .close-video{position:absolute;right:9px; top:8%;z-index:2;padding:5px;} 2566 .close-video .icon{width:30px;height:30px;} 2567 /*responsive iframe */ 2568 .video-container {position: relative;padding-bottom: 48.25%;padding-top: 35px;height: 0;box-shadow: 0 4px 5px 0 rgba(0,0,0,0.14), 0 1px 10px 0 rgba(0,0,0,0.12), 0 2px 4px -1px rgba(0,0,0,0.3);} 2569 .video-container iframe {position: absolute;top:60%;left: 0;width: 100%;height: 100%;} 2570 2571 .youtube { 2572 background-color: #000; 2573 margin-bottom: 30px; 2574 position: relative; 2575 padding-top: 56.25%; 2576 overflow: hidden; 2577 cursor: pointer; 2578 width: 100%; 2579 } 2580 .swiper-slide .youtube { 2581 max-width: 480px; 2582 } 2583 .youtube img { 2584 width: 100%; 2585 top: -16.82%; 2586 left: 0; 2587 opacity: 0.7; 2588 } 2589 .youtube .play-button { 2590 width: 90px; 2591 height: 60px; 2592 background-color: #333; 2593 box-shadow: 0 0 30px rgba( 0,0,0,0.6 ); 2594 z-index: 1; 2595 opacity: 0.8; 2596 border-radius: 6px; 2597 } 2598 .youtube .play-button:before { 2599 content: ""; 2600 border-style: solid; 2601 border-width: 15px 0 15px 26.0px; 2602 border-color: transparent transparent transparent #fff; 2603 } 2604 .youtube img, 2605 .youtube .play-button { 2606 cursor: pointer; 2607 } 2608 .youtube img, 2609 .youtube iframe, 2610 .youtube .play-button, 2611 .youtube .play-button:before { 2612 position: absolute; 2613 } 2614 .youtube .play-button, 2615 .youtube .play-button:before { 2616 top: 50%; 2617 left: 50%; 2618 transform: translate3d( -50%, -50%, 0 ); 2619 } 2620 .youtube iframe { 2621 height: 100%; 2622 width: 100%; 2623 top: 0; 2624 left: 0; 2625 } 2626 </style> 2627 2628 2629 </div> 2630 </div> 2631 2632 <div class="product-desc-add position-relative d-none d-lg-block m-0"> 2633 2634 </div> 2635 2636
2636<script> 2637 if ($(window).width() < 991) { 2638 var direction = 'horizontal' 2639 } else { 2640 var direction = 'vertical' 2641 $(".gallery-thumbs").height($("#ProductPhotoImg").height()) 2642 } 2643 var swiper = new Swiper('.gallery-thumbs', { 2644 2645 direction, 2646 slidesPerView: 4.5, 2647 spaceBetween: 12, 2648 navigation: { 2649 nextEl: '.swiper-button-next', 2650 prevEl: '.swiper-button-prev', 2651 } 2652 }); 2653 2654 var swiper = new Swiper('.gallery-mobile', { 2655 //loop: true, 2656 lazy: true, 2657 speed: 300, 2658 resistance : true, 2659 resistanceRatio : 0, 2660 freeModeMomentumRatio : 0.45, 2661 freeModeMomentumVelocityRatio : 1.5, 2662 navigation: { 2663 nextEl: '.swiper-button-next', 2664 prevEl: '.swiper-button-prev', 2665 }, 2666 pagination: { 2667 el: '.swiper-pagination' 2668 }, 2669 useCSS3Transforms: false, 2670 loop: false, 2671 on: { 2672 init: function () { 2673 console.log('swiper initialized'); 2674 var currentVideo = $("[data-swiper-slide-index=" + this.realIndex + "]").find("video"); 2675 currentVideo.trigger('play'); 2676 }, 2677 }, 2678 }); 2679 2680 /* GET ALL VIDEOS */ 2681 var sliderVideos = $(".swiper-slide video"); 2682 2683 /* SWIPER API - Event will be fired after animation to other slide (next or previous) */ 2684 swiper.on('slideChange', function () { 2685 console.log('slide changed'); 2686 /* stop all videos */ 2687 sliderVideos.each(function( index ) { 2688 this.currentTime = 0; 2689 }); 2690 2691 /* SWIPER GET CURRENT AND PREV SLIDE (AND The VIDEO INSIDE) */ 2692 var prevVideo = $(`[data-swiper-slide-index="${this.previousIndex}]"`).find("video"); 2693 var currentVideo = $(`[data-swiper-slide-index="${this.realIndex}"]`).find("video"); 2694 prevVideo.trigger('stop'); 2695 currentVideo.trigger('play'); 2696 }); 2697 2698 2699 $("[data-video]").click(function(){ 2700 const file = $(this).data("video") 2701 $(".product-single__video").show() 2702 $(".product-single__image").hide() 2703 $(".product-single__video").find("video").attr("src", file) 2704 $(".product-single__video").find("video")[0].play(); 2705 }) 2706 $("[data-image]").click(function(){ 2707 $(".product-single__video").hide() 2708 $(".product-single__image").show() 2709 $(".product-single__video").find("video")[0].pause(); 2710 }) 2711 2712 $("#product-image .swiper-slide").each(function(){ 2713 let width = $(this).width() 2714 $(this).height(width) 2715 }) 2716 2717 $(window).resize(function() { 2718 $("#product-image .swiper-slide").each(function(){ 2719 let width = $(this).width() 2720 $(this).height(width) 2721 }) 2722 }) 2723 </script>
2723 2724 2725 </div> 2726 <br> 2727 <br> 2728 2729 2730 <div class="grid__item_product-info mb-3"> 2731 <div class="c-pdp-product-info"> 2732 <div class="c-pdp-product-info__service c-pdp-product-info__service--active"> 2733<h1 style="text-align: justify;">EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026</h1> 2734<p style="text-align: justify;"><span style="color: #ffff00;"><a style="color: #ffff00;" href="https://heartysfoodhall.co.uk/"><strong>EMO78</strong></a></span> hadir sebagai platform hiburan digital yang menggabungkan konsep <strong>situs slot gacor</strong>, <strong>Bandar Slot777</strong>, dan pilihan permainan dari berbagai provider populer, termasuk Pragmatic Play. Perkembangan permainan slot online membuat pemain kini tidak hanya mempertimbangkan tampilan visual sebuah permainan, tetapi juga variasi tema, fitur bonus, mekanisme permainan, serta kenyamanan ketika mengakses platform melalui perangkat desktop maupun smartphone. EMO78 mencoba menghadirkan sistem navigasi yang lebih sederhana sehingga pengguna dapat menemukan kategori permainan berdasarkan provider, jenis permainan, maupun fitur yang tersedia. Salah satu kategori yang banyak dikenal adalah permainan dari <strong>provider Pragmatic</strong>, yang memiliki beragam tema mulai dari petualangan, fantasi, buah klasik, hingga permainan dengan animasi modern. Setiap permainan memiliki karakteristik berbeda, termasuk jumlah paylines, simbol khusus, multiplier, free spin, dan mekanisme tambahan lainnya. Karena itu, istilah <em>slot gacor</em> sebaiknya dipahami sebagai istilah populer yang digunakan komunitas untuk menyebut permainan yang sedang banyak dimainkan atau dianggap menarik, bukan sebagai jaminan bahwa sebuah permainan akan selalu memberikan kemenangan. Hasil setiap permainan tetap mengikuti mekanisme sistem dan unsur peluang yang diterapkan oleh masing-masing penyedia permainan.</p> 2735<p style="text-align: justify;">Sebagai <span style="color: #ffff00;"><strong><a style="color: #ffff00;" href="https://heartysfoodhall.co.uk/">Bandar Slot777</a></strong></span>, EMO78 menyediakan struktur katalog yang mengelompokkan berbagai permainan agar pengguna dapat melakukan pencarian dengan lebih praktis. Pengelompokan berdasarkan provider menjadi salah satu fitur penting karena setiap pengembang memiliki ciri khas tersendiri. Pragmatic Play, misalnya, dikenal melalui desain permainan yang relatif mudah dikenali, animasi modern, serta fitur bonus yang beragam pada setiap judulnya. Selain Pragmatic, sebuah platform slot biasanya juga menghadirkan beberapa pilihan provider lain sehingga pengguna dapat membandingkan tema dan mekanisme permainan yang berbeda. Konsep <strong>Slot777</strong> sendiri sering digunakan sebagai istilah yang berkaitan dengan kategori permainan slot digital dan simbol angka tujuh yang sejak lama identik dengan mesin slot. Pada platform modern, pengalaman tersebut dikembangkan menjadi permainan berbasis HTML5 yang dapat berjalan langsung melalui browser tanpa harus memasang perangkat lunak tambahan. Hal ini membuat akses melalui perangkat Android, iPhone, tablet, maupun komputer menjadi lebih fleksibel. Dari sisi pengalaman pengguna, desain responsif, kecepatan halaman, menu yang jelas, sistem pencarian, dan pengelompokan kategori memiliki peran penting. Pengguna sebaiknya juga memperhatikan informasi mengenai aturan permainan, nilai taruhan, volatilitas, RTP yang dicantumkan oleh provider, serta ketentuan bonus sebelum memainkan suatu permainan. Informasi tersebut membantu pengguna memahami bahwa setiap judul slot memiliki struktur permainan dan tingkat risiko yang berbeda.</p> 2736<p style="text-align: justify;">Melalui kombinasi katalog permainan, provider Pragmatic, kategori <span style="color: #ffff00;"><strong><a style="color: #ffff00;" href="https://heartysfoodhall.co.uk/">slot gacor</a></strong></span>, dan konsep <strong>Bandar Slot777</strong>, EMO78 dapat menjadi salah satu nama yang digunakan pengguna ketika mencari pilihan hiburan slot online dalam satu platform. Namun, pemilihan platform sebaiknya tidak hanya didasarkan pada promosi atau istilah seperti “gacor”, “maxwin”, dan “pasti menang”. Pengguna perlu memeriksa aspek yang lebih objektif, seperti keamanan koneksi HTTPS, transparansi syarat dan ketentuan, kebijakan privasi, informasi layanan pelanggan, metode transaksi, serta batasan usia yang berlaku. Tidak ada sistem atau strategi tertentu yang dapat menjamin hasil kemenangan pada permainan berbasis peluang. Oleh karena itu, aktivitas permainan idealnya ditempatkan sebagai bentuk hiburan dengan batas anggaran yang telah ditentukan sebelumnya. Jangan menggunakan dana kebutuhan utama, dana pinjaman, atau uang yang tidak siap untuk kehilangan. Kehadiran provider seperti <strong>Pragmatic Play</strong> memang memberikan variasi permainan yang luas, tetapi keputusan dalam memilih permainan tetap perlu dilakukan secara rasional. Dengan navigasi yang terstruktur, pilihan kategori yang beragam, dan akses yang kompatibel dengan berbagai perangkat, EMO78 membawa konsep <strong>Situs Slot Gacor X Bandar e</strong> ke dalam pengalaman hiburan digital yang lebih mudah dijelajahi. Pengguna tetap perlu memahami mekanisme permainan, memilih kategori berdasarkan preferensi pribadi, serta menggunakan platform secara bertanggung jawab sesuai aturan dan ketentuan y
2736ang berlaku di wilayah masing-masing.</p></div> 2737 </div> 2738</div> 2739 2740 2741 2742 2743 2744 <style> 2745 .c-pdp-product-info__service--active { 2746 font-size: 12px; 2747 padding-left: 10px; 2748 text-align: left; 2749 max-width: 550px; 2750 margin: auto; 2751 color: #fff; 2752 } 2753 .c-pdp-product-info__service--active li { 2754 list-style: disc; 2755 } 2756 .c-pdp-product-info { 2757 background-color: #000000; 2758 padding: 12px; 2759 margin: 0; 2760 } 2761 .freeship em { 2762 font-style: italic; 2763 font-size: 12px !important; 2764 } 2765 2766 2767 </style> 2768 2769
2769<script> 2770 $(document).ready(function(){ 2771 if ( $(".c-pdp-product-info__service li").length == 1 ) { 2772 $(".c-pdp-product-info__service").addClass("no-bullet"); 2773 $(".c-pdp-product-info__service li").addClass("no-bullets"); 2774 } 2775 }); 2776 </script>
2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 </div> 2790 <div id="product-meta" class="col-lg-5 p-0"> 2791 <div class="product-meta"> 2792 <style> 2793 .product-meta--review {margin-top:10px} 2794 .freeship * {font-size: 14px !important;font-style: normal;} 2795 </style> 2796 <h1 itemprop="name" class="mb-2" style="color: gold; font-weight: bold;">EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026</h1> 2797 2798 <div itemprop="offers" itemscope itemtype="http://schema.org/Offer"> 2799 <meta itemprop="priceCurrency" content="IDR"> 2800 2801 <link itemprop="availability" href="https://schema.org/InStock"> 2802
2802<script 2803 type="text/javascript" 2804 src="//platform-api.sharethis.com/js/sharethis.js#property=5acdc0aa3ef3c0001396fd50&product=custom-share-buttons" 2805 async="async" 2806 ></script>
2806 2807 2808 2809 2810 2811 <span class="visually-hidden">Translation missing: en.products.general.regular_price</span> 2812 2813 <span class="visually-hidden">Translation missing: en.products.general.sale_price</span> 2814 2815 <div class="row no-gutters mb-3"> 2816 <span 2817 id="ProductPrice" 2818 class="h2 ProductPrice" 2819 itemprop="price" 2820 content="835000" style="color: #ffffff;" 2821 > 2822 Rp 5.000 2823 </span> 2824 <div class="discount-product-detail"> 2825 <p id="ComparePrice" class="ComparePrice mt-2 mt-lg-0"> 2826 Rp 78.000 2827 </p> 2828 <span class=" tag-discount"> 2829 2830 2831 <span id="newDiscount" class="product-tag persentase-discount hide"> 2832 (90%) 2833 </span><br> 2834 2835 </span> 2836 </div> 2837 </div> 2838 2839 <div class="row no-gutters meta-sds"> 2840 <div class="col-12 mb-2 mb-lg-0 stock-info"> 2841 2842 2843 <span 2844 id="ProductStock-Product" 2845 class="product-single__stock mb-2 hide" 2846 > 2847 2848 2849 2850 2851 Barang dikirim pada 2852 2853 2854 2855 </span> 2856 2857 <style> 2858 .short-desc-desktop { 2859 margin-bottom: 2rem; 2860 color: white; 2861 } 2862 .short-desc ul li:nth-child(n + 4) { 2863 display: none; 2864 } 2865 .short-desc ul li.showList:nth-child(n + 4) { 2866 display: list-item; 2867 } 2868 label.more { 2869 display: none; 2870 } 2871 label.more.showMe { 2872 display: block; 2873 font-size: 12px; 2874 text-transform: uppercase; 2875 font-weight: 700; 2876 cursor: pointer; 2877 } 2878 </style> 2879 2880 <div class="short-desc-desktop d-none d-lg-block"> 2881 <div class="short-desc"> 2882 2883 <p>EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik</p> 2884 </div> 2885 <label class="more">Show More â</label>
2886 </div><br> 2887 2888 2889
2889<script> 2890 var liCount; 2891 $(document).ready(function () { 2892 $(".short-desc ul").each(function() { 2893 liCount = $(this).children("li").length; 2894 if (liCount > 3) { 2895 $(this).parent(".short-desc").next(".more").addClass("showMe"); 2896 } 2897 }); 2898 2899 $(".more").click(function () { 2900 //$(".short-desc").find("li").addClass("showList"); 2901 // $(this).hide(); 2902 $("#product-desc").find("ul").show() 2903 $('html, body').animate({ 2904 scrollTop: $("#product-desc").offset().top - 250 2905 }, 2000); 2906 $("#product-desc").css("height","auto"); 2907 $("#more_content").remove(); 2908 $(".product-spec").append("<div id='less_content' class='readmore'><span class='less_content'>Less</span></div>") 2909 }); 2910 }); 2911 </script>
2911 2912 2913 2914 </div> 2915 </div> 2916 2917 <div id="purchaseProduct"> 2918 2919 2920 2921 2922 <style> 2923 .variant-metafield { 2924 display: block!important; 2925 width: 1px; 2926 padding: 0; 2927 border-color: #fff; 2928 } 2929 .select2-results__option[aria-disabled] { 2930 display: none; 2931 } 2932 2933 .towel-bordir { 2934 width: 100%; 2935 display: flex; 2936 align-items: center; 2937 justify-content: space-around; 2938 } 2939 </style> 2940 2941 2942 2943 2944
2944<script> 2945 2946 2947 </script>
2947 2948 2949 2950 2951 2952 2953 2954 <select 2955 name="id[]" 2956 id="productSelect" 2957 class="product-single__variants ignore hide hide" 2958 > 2959 2960 2961 2962 <option 2963 2964 selected="selected" 2965 2966 data-sku="OBVSTF1086" 2967 value="44083045826775" 2968 > 2969 Default Title 2970 </option> 2971 2972 2973 2974 </select> 2975 2976
2976<script src="//outerbloom.com/cdn/shop/t/138/assets/jquery.magnific-popup.min.js?v=184369421263510081681752652422" type="text/javascript"></script>
2976 2977 2978
2978<script> 2979 $('.size-chart-open-popup').magnificPopup({ 2980 type:'inline', 2981 midClick: true 2982 }); 2983 </script>
2983 2984 2985 2986 2987 2988 <div class="upload-image-preview"> 2989 2990 2991 2992 2993 2994 <style> 2995 .file-dnd * { 2996 margin: 0; 2997 padding: 0; 2998 box-sizing: border-box; 2999 } 3000 .file-dnd { 3001 width: 100%; 3002 height: 250px; 3003 border: 1px solid #ddd; 3004 border-radius: 10px; 3005 padding: 15px; 3006 display: flex; 3007 flex-direction: column; 3008 gap: 10px; 3009 /* box-shadow: 0px 2px 10px 2px rgba(0,0,0,0.05); */ 3010 margin: auto; 3011 } 3012 .file-dnd input { 3013 display: none; 3014 } 3015 .file-dnd .before-upload { 3016 border: 1px dashed #888; 3017 flex: 1; 3018 border-radius: 5px; 3019 display: flex; 3020 justify-content: center; 3021 align-items: center; 3022 text-align: center; 3023 cursor: pointer; 3024 } 3025 .file-dnd .before-upload > div { 3026 display: flex; 3027 flex-direction: column; 3028 align-items: center; 3029 gap: 8px; 3030 } 3031 .file-dnd .before-upload > div h4 { 3032 width: 150px; 3033 } 3034 .file-dnd .before-upload > div p { 3035 font-size: 12px !important; 3036 color: #555; 3037 } 3038 .file-dnd.active .before-upload { 3039 border: 1px solid #5750d9; 3040 background-color: #f5f5ff; 3041 } 3042 .file-dnd .after-upload { 3043 position: relative; 3044 display: none; 3045 } 3046 .file-dnd .after-upload img { 3047 width: 100%; 3048 border-radius: 5px; 3049 max-height: 180px; 3050 object-fit: contain; 3051 display: block; 3052 } 3053 .file-dnd .after-upload .clear-btn { 3054 position: absolute; 3055 top: 10px; 3056 right: 10px; 3057 background: rgba(255, 255, 255, 0.5); 3058 width: 15px; 3059 height: 15px; 3060 text-align: center; 3061 line-height: 15px; 3062 border-radius: 50%; 3063 color: #fff; 3064 cursor: pointer; 3065 font-size: 14px; 3066 } 3067 </style> 3068 3069 <div 3070 class="file-dnd mb-3" 3071 3072 style="display: none" 3073 3074 > 3075 <label for="upload-photo">Upload your Photo:</label> 3076 <input type="file" id="upload-photo" accept="image/*"> 3077 <input type="hidden" data-properties="Photo"> 3078 <div class="before-upload"> 3079 <div> 3080 <svg id="surface1" xmlns="image/logo-login-emo78.png" width="33.053" height="41.719" viewBox="0 0 33.053 41.719"> 3081 <path id="Path_2149" data-name="Path 2149" d="M22.982.322A1.009,1.009,0,0,0,22.257,0H5.982A5.505,5.505,0,0,0,.5,5.472V36.247a5.505,5.505,0,0,0,5.482,5.472H28.071a5.505,5.505,0,0,0,5.482-5.472V11.81a1.085,1.085,0,0,0-.292-.705Zm.292,3.235,6.883,7.225H25.683a2.4,2.4,0,0,1-2.409-2.4Zm4.8,36.147H5.982a3.49,3.49,0,0,1-3.467-3.457V5.472A3.49,3.49,0,0,1,5.982,2.015H21.259V8.384A4.409,4.409,0,0,0,25.683,12.8h5.855V36.247A3.484,3.484,0,0,1,28.071,39.7Zm0,0" transform="translate(-0.5)" fill="#ababab"></path> 3082 <path id="Path_2150" data-name="Path 2150" d="M106.767,401.934H90.18a1.008,1.008,0,1,0,0,2.015h16.6a1.008,1.008,0,1,0-.01-2.015Zm0,0" transform="translate(-81.947 -369.183)" fill="#ababab"></path> 3083 <path id="Path_2151" data-name="Path 2151" d="M120.143,178.328l4.152-4.464v11a1.008,1.008,0,0,0,2.015,0v-11l4.152,4.464a1.005,1.005,0,0,0,1.471-1.371l-5.905-6.339a1,1,0,0,0-1.471,0l-5.905,6.339a1,1,0,0,0,.05,1.421A1.028,1.028,0,0,0,120.143,178.328Zm0,0" transform="translate(-108.776 -156.421)" fill="#ababab"></path> 3084 </svg> 3085 3086 <h4>Drag & Drop Photo file or Browse</h4> 3087 <p>Supports: JPEG, PNG, GIF, TIFF</p> 3088 </div> 3089 </div> 3090 <div class="after-upload"> 3091 <div class="clear-btn">×</div> 3092 <img src="" width="" height=""> 3093 </div> 3094 </div> 3095
3095<script> 3096 function applyDndFile(el) { 3097 const parent = document.querySelector(".file-dnd") 3098 const beforeUploadEl = el.querySelector(".before-upload") 3099 const afterUploadEl = el.querySelector(".after-upload") 3100 const inputFile = el.querySelector("input[type=file]") 3101 const imagePreview = el.querySelector(".after-upload img") 3102 const clearBtn = el.querySelector(".after-upload .clear-btn") 3103 const inputProps = parent.querySelector("[data-properties]"); 3104 3105 async function upload(name, uri, type) { 3106 try { 3107 const filename = name.split('.')[0] 3108 let formData = new FormData(); 3109 formData.append("file", uri); 3110 const response = await fetch(`${host}/upload?name=${filename}&dir=gift&type=${type}`, { 3111 method: "POST", 3112 body: formData 3113 }) 3114 if(response) { 3115 const res = await response.json() 3116 return res 3117 } 3118 } catch(err){ 3119 console.log(err) 3120 } 3121 } 3122 3123 function showImagePreview(img) { 3124 if(img){ 3125 const blobUrl = URL.createObjectURL(img) 3126 imagePreview.src = blobUrl 3127 afterUploadEl.style.display = "block" 3128 beforeUploadEl.style.display = "none" 3129 } 3130 } 3131 3132 beforeUploadEl.addEventListener("click", (e) => { 3133 e.preventDefault() 3134 inputFile.click() 3135 }) 3136 3137 inputFile.addEventListener("change", async (e) => { 3138 e.preventDefault() 3139 showImagePreview(e.target.files[0]) 3140 var uploadData = await upload(e.target.files[0].name, e.target.files[0], e.target.files[0].type) 3141 inputProps.value = uploadData?.url 3142 }) 3143 3144 clearBtn.addEventListener("click", (e) => { 3145 afterUploadEl.style.display = "none" 3146 beforeUploadEl.style.display = "flex" 3147 inputProps.value = "" 3148 }) 3149 3150 beforeUploadEl.addEventListener("dragover", (e) => { 3151 e.preventDefault() 3152 el.classList.add("active") 3153 }) 3154 3155 beforeUploadEl.addEventListener("dragleave", (e) => { 3156 e.preventDefault() 3157 el.classList.remove("active") 3158 }) 3159 3160 beforeUploadEl.addEventListener("drop", async (e) => { 3161 e.preventDefault() 3162 el.classList.remove("active") 3163 showImagePreview(e.dataTransfer.files[0]) 3164 var uploadData = await upload(e.dataTransfer.files[0].name, e.dataTransfer.files[0], e.dataTransfer.files[0].type) 3165 console.log(uploadData) 3166 inputProps.value = uploadData?.url 3167 }) 3168 } 3169 3170 applyDndFile(document.querySelector(".file-dnd")) 3171 3172 $(document).ready(function(){ 3173 $(".variant-swatch").change(function(){ 3174 const v = $(this).val().toLowerCase() 3175 const list = ["photo", "custom one side", "custom two side", "small", "big"] 3176 if(list.some(item => v.includes(item))) return $(".file-dnd").show() 3177 $(".file-dnd").hide() 3178 $(".file-dnd").find("[data-properties]").val("") 3179 $(".after-upload").hide() 3180 $(".before-upload").css("display", "flex") 3181 }) 3182 }) 3183 </script>
3183 3184 3185 </div> 3186 3187 3188 <div class="delivery-city mb-4"> 3189 <a href="https://ya.emo78-jago.store/"> 3190 <center><img src="https://media.giphy.com/media/v1.Y2lkPWVjZjA1ZTQ3eWoxdmhlbm43YmYyanVwOTkzbzc3MzNtZmZ5b2V1NG9uMndkcnZlNCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/4DRGKBa1K2Zm8/giphy.gif" alt="logo-daftar" style="width: 260px; margin-top: -20px;"></center></a><br> 3191 <h4 class="fw-600 text-uppercase mb-15" style="color: gold;">PERMAINAN SERU DARI EMO78</h4> 3192 <div class="row justify-content-between m-0"> 3193 <select id="cities" class="form-control select-search" required> 3194 <option value="">Nikmati Serunya Bermain di EMO78 & Dapatkan Hadiah Jutaan Rupiah!</option> 3195 </select> 3196 </div> 3197 </div> 3198 3199 <style> 3200 @media (max-width: 768px) { 3201 .select2-search__field { 3202 pointer-events: none !important; 3203 } 3204 3205 .select2-search { 3206 display: none !important; 3207 } 3208 } 3209 </style> 3210 3211
3211<script> 3212 $(document).ready(function() { 3213 // Check if mobile 3214 if (window.innerWidth <= 768) { 3215 // When cities select2 opens on mobile, remove focus from search 3216 $('#cities').on('select2:open', function() { 3217 setTimeout(function() { 3218 $('.select2-search__field').blur(); 3219 $('.select2-search__field').prop('readonly', true); 3220 }, 100); 3221 }); 3222 } 3223 }); 3224 </script>
3224 3225 3226 <style> 3227 .icon-img-footer { 3228 width: 80px; 3229 padding: 0px 5px; 3230 } 3231 @media (min-width: 768px) { 3232 .icon-img-footer { 3233 width: 120px; 3234 } 3235 } 3236 @media (min-width: 992px) { 3237 .icon-img-footer { 3238 width: 120px; 3239 } 3240 } 3241 3242 3243 </style> 3244 <div id="row-delivery-date" class="row m-0 mb-3"> 3245 <h4 class="fw-600 text-uppercase col-12 p-0 mb-15" style="color: gold;">DAFTAR PERMAINAN EMO78 SEKARANG!</h4> 3246 <div id="deliveryDate" class="m-0"></div> 3247 <div id="deliveryDateFull"> 3248 <div class=""> 3249 <input 3250 type="text" 3251 id="full-date" 3252 class="date-full calendarbutton btn steps-btn btn-date-time mb-0" 3253 value="Full Calendar" 3254 > 3255 <label for="full-date"><svg version="1.1" xmlns="image/logo-login-emo78.png" width="32" height="32" viewBox="0 0 32 32"> 3256 <title>icon-arrow-right</title> 3257 <path d="M25.057 15.333l-6.862-6.862c-0.26-0.26-0.26-0.682 0-0.943s0.682-0.26 0.943 0l8 8c0.26 0.26 0.26 0.682 0 0.943l-8 8c-0.26 0.26-0.682 0.26-0.943 0s-0.26-0.682 0-0.943l6.862-6.862h-19.724c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h19.724z"></path> 3258 </svg></label> 3259 </div> 3260 <button class="btnChangeDeliveryDate hide">Change Delivery Date</button> 3261 </div> 3262 <div class="form-group p-0"> 3263 <input type="text" id="propDeliveryDate" required class="hide"> 3264 </div> 3265 </div> 3266 3267 3268 <div id="row-delivery-time" class="row m-0 mb-3"> 3269 <h4 class="text-center fw-600 text-uppercase col-12 mb-15"> 3270 EMO78 3271 </h4> 3272 <div id="deliveryTime" class="d-flex w-100 m-0"></div> 3273 <div class="form-group p-0"> 3274 <input type="text" id="propDeliveryTime" class="hide" required> 3275 </div> 3276 </div> 3277 3278 3279 3280 3281 3282 <div id="personalizeBtn"> 3283 3284 3285 3286 3287 <button 3288 class="btn text-uppercase w-100 fw-400" 3289 3290 3291 3292 > 3293 3294 customize your flower board 3295 3296 </button> 3297 <div class="button-share-wishlist d-flex justify-content-around mt-3"> 3298 <div class="button-share text-center"> 3299 <p id="shareButton" class="d-flex gap-2"><span>EMO78</span><svg xmlns="image/logo-login-emo78.png" width="15" height="13" viewBox="0 0 15 13" fill="none"> 3300 <path d="M13.825 5.85006L10 2.02506V4.07506L9.28333 4.18339C5.69167 4.69172 3.25833 6.57506 1.86667 9.45839C3.8 8.09172 6.2 7.43339 9.16667 7.43339H10V9.67506M8.33333 8.28339C4.60833 8.45839 1.94167 9.80006 0 12.5167C0.833333 8.35006 3.33333 4.18339 9.16667 3.35006V0.0167236L15 5.85006L9.16667 11.6834V8.26672C8.89167 8.26672 8.61667 8.27506 8.33333 8.28339Z" fill="#ffffff"/> 3301 </svg> 3302 </p> 3303 </div> 3304 <div class="button-wishlist text-center"> 3305 <p id="wishButton" class="d-flex gap-2 wishlist-toggle" data-product-handle="blossom-shine"><span>Wishlist</span><svg xmlns="image/logo-login-emo78.png" width="16" height="15" viewBox="0 0 16 15" fill="none"> 3306 <path d="M2.03341 7.70827C1.70392 7.38096 1.44286 6.99135 1.26546 6.56213C1.08805 6.13292 0.997838 5.67269 1.00008 5.20827C1.00008 4.26896 1.37322 3.36812 2.03741 2.70393C2.7016 2.03974 3.60244 1.6666 4.54175 1.6666C5.85841 1.6666 7.00841 2.38327 7.61675 3.44993H8.55008C8.85934 2.90748 9.30684 2.45667 9.84699 2.14341C10.3871 1.83015 11.0007 1.66563 11.6251 1.6666C12.5644 1.6666 13.4652 2.03974 14.1294 2.70393C14.7936 3.36812 15.1667 4.26896 15.1667 5.20827C15.1667 6.18327 14.7501 7.08327 14.1334 7.70827L8.08341 13.7499L2.03341 7.70827ZM14.7167 8.29993C15.5084 7.49993 16.0001 6.4166 16.0001 5.20827C16.0001 4.04795 15.5391 2.93515 14.7187 2.11467C13.8982 1.2942 12.7854 0.833267 11.6251 0.833267C10.1667 0.833267 8.87508 1.5416 8.08341 2.6416C7.67933 2.08035 7.14725 1.62353 6.53131 1.30904C5.91537 0.994549 5.23333 0.831448 4.54175 0.833267C3.38143 0.833267 2.26863 1.2942 1.44816 2.11467C0.627684 2.93515 0.166748 4.04795 0.166748 5.20827C0.166748 6.4166 0.658415 7.49993 1.45008 8.29993L8.08341 14.9333L14.7167 8.29993Z" fill="#ffffff"/> 3307 </svg> 3308 <!-- 3309 <svg xmlns="image/logo-login-emo78.png" width="34" height="30" viewBox="0 0 34 30" fill="none"> 3310 <path d="M32.8333 9.23082C32.8333 4.51916 29.0142 0.699158 24.3025 0.699158C21.2 0.699158
331018.4933 2.35999 17 4.83582C15.5067 2.36082 12.8 0.699158 9.69749 0.699158C4.98582 0.699991 1.16666 4.51916 1.16666 9.23082C1.16666 10.3075 1.37499 11.3342 1.73916 12.2825C4.55999 20.3967 17 29.3008 17 29.3008C17 29.3008 29.44 20.3967 32.2617 12.2825C32.6258 11.3342 32.8333 10.3075 32.8333 9.23082Z" fill="white" fill-opacity="0.32" stroke="#757575" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 3311 </svg> 3312 --> 3313 </p> 3314 </div> 3315 </div> 3316 </div> 3317 </div> 3318 <div class="purchasePopup purchasePopupSpotify" style="display: none;"> 3319 <div class="purchaseArea"> 3320 <div class="sectionPurchase sectionPurchaseSpotify"> 3321 <div class="wrapperPurchase"> 3322 <div class="headerPurchase"> 3323 <h3>personalize spotify photo print</h3> 3324 <a class="close-purchase-popup"> 3325 <svg xmlns="image/logo-login-emo78.png" width="18" height="18" viewBox="0 0 18 18" fill="none"> 3326 <path d="M1.53287 17.4107L0.588867 16.4667L8.05553 9.00002L0.588867 1.53336L1.53287 0.589355L8.99953 8.05602L16.4662 0.589355L17.4102 1.53336L9.94353 9.00002L17.4102 16.4667L16.4662 17.4107L8.99953 9.94402L1.53287 17.4107Z" fill="black"></path> 3327 </svg> 3328 </a> 3329 </div> 3330 <div class="contentPurchase"> 3331 <div class="spotifyAddons"></div> 3332 </div> 3333 3334 <div class="purchase-button btn-addon row m-0" style="display: none;"> 3335 <div class="col-12 col-lg-2 text-left mb-2 p-0"> 3336 <button class="back-purchase-button back-addon text-uppercase"> 3337 <svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="image/logo-login-emo78.png"> 3338 <path d="M14.5799 7.41992L2.32992 7.41992L7.57992 12.6699L6.91992 13.4199L0.419922 6.91992L6.91992 0.419922L7.57992 1.16992L2.32992 6.41992L14.5799 6.41992V7.41992Z" fill="black"></path> 3339 </svg> 3340 <span>Back</span> 3341 </button> 3342 </div> 3343 <div class="col-12 col-lg-10 text-right" style="display: flex;justify-content: end;gap: 20px;"> 3344 <button class="btn next-purchase-button next-addon text-uppercase"> 3345 <span>continue without add-ons</span> 3346 </button> 3347 </div> 3348 </div> 3349 </div> 3350 </div> 3351 </div> 3352 </div> 3353 3354 <style> 3355 #PBarNextFrameWrapper { 3356 display: none; 3357 } 3358 #backgroundPopup { 3359 display: none; 3360 position: fixed; 3361 _position: absolute; 3362 height: 100%; 3363 width: 100%; 3364 top: 0; 3365 left: 0; 3366 background: rgb(117 117 117 / 24%); 3367 z-index: 1; 3368 } 3369 .sectionPurchase { 3370 height: 100%; 3371 position: relative; 3372 max-width: 1344px; 3373 background-color: #fff; 3374 padding: 0; 3375 overflow: hidden; /* Changed from auto to hidden */ 3376 display: flex; 3377 flex-direction: column; 3378 } 3379 .sectionPurchase.purchaseAddonSpotify { 3380 max-width: 1070px!important; 3381 max-height: 765px!important; 3382 } 3383 .sectionPurchaseBoard { 3384 max-width: 872px!important; 3385 max-height: 821px!important; 3386 } 3387 .purchaseAddonSpotify .btn-action { 3388 position: absolute; 3389 bottom: 0; 3390 left: 0; 3391 width: 100%; 3392 display: flex; 3393 gap: 10px; 3394 } 3395 .wrapperPurchase { 3396 position: relative; 3397 height: 100%; 3398 display: flex; 3399 flex-direction: column; 3400 } 3401 3402 /* New styles for scrollable content and sticky button */ 3403 .purchase-content { 3404 flex: 1; 3405 overflow-y: auto; 3406 overflow-x: hidden; 3407 padding: 20px; 3408 } 3409 3410 .purchase-button-wrapper { 3411 position: sticky; 3412 bottom: 0; 3413 background-color: #fff; 3414 border-top: 1px solid #e0e0e0; 3415 padding: 15px 0; 3416 margin-top: auto; 3417 z-index: 10; 3418 } 3419 3420 .purchasePopup { 3421 display: none; 3422 position: fixed; 3423 background: rgb(117 117 117 / 24%); 3424 z-index: 999; 3425 padding: 40px; 3426 font-size: 13px; 3427 top: 0; 3428 left: 0; 3429 width: 100%; 3430 height: 100%; 3431 } 3432 .popupPurchaseClose{ 3433 font-size:14px; 3434 line-height:14px; 3435 right:45px; 3436 top:45px; 3437 position:absolute; 3438 color:#6fa5fd; 3439 font-weight:700; 3440 display:block; 3441 cursor: pointer; 3442 } 3443 3444 .headerPurchase { 3445 margin-bottom: 30px; 3446 display: flex; 3447 justify-content: space-between; 3448 } 3449 3450 .headerPurchase h3 { 3451 font-size: 16px; 3452 text-transform: uppercase; 3453 } 3454 3455 .sectionPurchaseBoard .headerPurchase { 3456 margin-bottom: 15px; 3457 } 3458 3459 .sectionPurchaseBoard .formAddressPurchase { 3460 padding-top: 0; 3461 } 3462 3463 .purchaseArea { 3464 position: relative; 3465 height: 100%; 3466 } 3467 3468 .purchaseArea h4 { 3469 width: 100%; 3470 font-size: 12px; 3471 font-weight: 600; 3472 margin-bottom: 10px; 3473 text-transform: uppercase; 3474 } 3475 3476 .menuPurchase { 3477 margin-bottom: 30px; 3478 } 3479 3480 .menuPurchase ul { 3481 list-style-type: none; 3482 margin: 0; 3483 } 3484 3485 .menuPurchase ul li { 3486 display: inline-block; 3487 border: 1px solid #ffffff; 3488 padding: 5px 20px; 3489 margin-right: 5px; 3490 margin-bottom: 10px; 3491 font-size: 12px; 3492 font-weight: 400; 3493 } 3494 3495 .menuPurchase ul li:hover, .menuPurchase ul li.selected { 3496 background-color: #ffffff; 3497 color: #ffffff; 3498 } 3499 3500 .contentPurchase h5 { 3501 font-size: 12px; 3502 margin-bottom: 10px; 3503 font-weight: 400; 3504 overflow: hidden; 3505 } 3506 3507 /* Card */ 3508 3509 #itemCards { 3510 max-height: 430px; 3511 overflow: auto; 3512 } 3513 3514 .item-cards { 3515 width: 100%; 3516 } 3517 .item-card.selected { 3518 border: 1px solid #ffffff; 3519 } 3520 .item-card:hover { 3521 border: 1px solid #C4C4C4; 3522 } 3523 .item-cards .item-card { 3524 position: relative; 3525 width: calc(33% - 10px); 3526 max-width: calc(33% - 10px); 3527 flex: 0 0 calc(33% - 10px); 3528 margin-bottom: 20px; 3529 } 3530 .item-cards .item-card label, 3531 .item-addons .item-addon label { 3532 position: absolute; 3533 left: 0; 3534 width: 100%; 3535 height: 100%; 3536 } 3537 .item-cards .item-card .card-image img, 3538 .item-addons .item-addon .card-image img { 3539 display: block; 3540 width: 100%; 3541 } 3542 .item-card .card-meta, 3543 .item-addon .card-meta { 3544 padding: 10px 5px 5px; 3545 } 3546 .item-card.selected .card-meta, 3547 .item-addon.selected .card-meta, 3548 .item-card.selected .card-qty { 3549 background-color: #ffffff; 3550 color: #fff; 3551 visibility: visible!important; 3552 } 3553 .item-card:hover .card-meta, 3554 .item-addon:hover .card-meta, 3555 .item-card:hover .card-qty { 3556 background-color: #C4C4C4; 3557 color: #fff; 3558 visibility: visible!important; 3559 } 3560 .item-cards .item-card p, 3561 .item-addons .item-addon p { 3562 font-size: 12px !important; 3563 margin: 0; 3564 font-weight: 600; 3565 } 3566 .item-card .card-meta input, 3567 .item-addon .card-meta input { 3568 display: none; 3569 } 3570 .item-cards .item-card h5, 3571 .item-addons .item-addon h5 { 3572 text-transform: uppercase; 3573 max-height: 35px; 3574 } 3575 3576 @media (max-width: 768px) { 3577 .item-cards .item-card {
3578 width: calc(50% - 10px); 3579 max-width: calc(50% - 10px); 3580 flex: 0 0 calc(50% - 10px); 3581 margin-bottom: 0; 3582 } 3583 } 3584 3585 .card-qty { 3586 display: flex; 3587 padding: 5px; 3588 visibility: hidden; 3589 background-color: #fff !important; 3590 z-index: 999; 3591 } 3592 .card-qty a { 3593 border-width: 1px; 3594 width: 30%; 3595 cursor: pointer; 3596 text-align: center; 3597 align-self: center; 3598 height: 28px; 3599 display: block; 3600 position: relative; 3601 } 3602 .card-qty a svg { 3603 position: absolute; 3604 top: 50%; 3605 left: 50%; 3606 transform: translate(-50%, -50%); 3607 text-align: center; 3608 } 3609 input.btn-qty { 3610 border-width: 0px; 3611 border-radius: 0; 3612 background-color: #fff; 3613 -webkit-appearance: none; 3614 box-shadow: none !important; 3615 -webkit-box-shadow: none !important; 3616 -moz-box-shadow: none!important; 3617 width: 40%; 3618 border-left: 1px solid #c4c4c4; 3619 border-right: 1px solid #c4c4c4; 3620 padding: 0; 3621 } 3622 3623 .sectionPurchaseBoard #itemAddons .item-card { 3624 width: calc(20% - 15px); 3625 max-width: calc(20% - 15px); 3626 flex: 0 0 calc(20% - 15px); 3627 } 3628 3629 .purchase-button { 3630 width: 100%; 3631 padding: 0; /* Reset padding as it's now handled by wrapper */ 3632 margin: 0; 3633 } 3634 3635 .sectionPurchaseBoard .purchase-button { 3636 margin-top: 0 !important; /* Reset margin */ 3637 } 3638 3639 .back-purchase-button, .back-spotify { 3640 width: 139px; 3641 border: 1px solid; 3642 height: 43px; 3643 } 3644 .purchase-button .btn { 3645 width: 297px; 3646 height: 43px; 3647 background-color: #ffffff; 3648 color: #ffffff; 3649 } 3650 .purchase-button .btn[disabled] { 3651 background-color: #EEEEEE; 3652 } 3653 .back-purchase-button svg, .back-spotify svg { 3654 align-self: center; 3655 vertical-align: middle; 3656 margin-right: 10px; 3657 } 3658 3659 #purchaseProduct .row .error { 3660 font-size: 12px !important; 3661 color: orange; 3662 margin-top: 5px; 3663 } 3664 3665 .reviewCardPurchase { 3666 max-width: 448px; 3667 float: right; 3668 } 3669 3670 .addonsPurchase .addon-item {display: flex;justify-content: space-between;} 3671 .addon-item * {align-self: center;font-size: 12px;} 3672 .addon-itm-title {width: 360px;} 3673 .addon-itm-line-price {color: #757575;width: 80px;justify-content: space-between;display: flex;} 3674 3675 .propsAddonSpotify p { 3676 margin: 0; 3677 display: flex; 3678 font-size: 12px !important; 3679 margin-bottom: 5px; 3680 } 3681 .propsAddonSpotify p span:first-child { 3682 text-transform: uppercase; 3683 font-weight: 600; 3684 -ms-flex: 0 0 150px; 3685 flex: 0 0 150px; 3686 max-width: 150px; 3687 } 3688 3689 .addonsPurchase .addons { 3690 max-height: 250px; 3691 overflow: auto; 3692 } 3693 3694 .btn .loading:after { 3695 content: ""; 3696 display: inline-block; 3697 width: 20px; 3698 height: 20px; 3699 padding: 3px; 3700 aspect-ratio: 1; 3701 border-radius: 50%; 3702 background: #FFFFFF; 3703 --_m: conic-gradient(#0000 10%, #ffffff), linear-gradient(#ffffff 0 0) content-box; 3704 -webkit-mask: var(--_m); 3705 mask: var(--_m); 3706 -webkit-mask-composite: source-out; 3707 mask-composite: subtract; 3708 animation: l3 1s infinite linear; 3709 margin: auto; 3710 vertical-align: middle; 3711 margin-left: 10px; 3712 } 3713 3714 #qrcode img, #qrcode canvas { 3715 width: 50px; 3716 position: absolute; 3717 top: 12px; 3718 left: 16px; 3719 } 3720 3721 .t-preview { 3722 position: absolute; 3723 top: 17px; 3724 left: 75px; 3725 } 3726 .t-preview p { 3727 margin: 0; 3728 font-size: 12px !important; 3729 } 3730 .t-preview .h3 { 3731 font-size: 16px !important; 3732 margin-bottom: 5px; 3733 font-weight: 600; 3734 } 3735 .scanCard { 3736 width: 100%; 3737 border: 1px solid; 3738 height: 76px; 3739 background-color: #fff; 3740 } 3741 .scanCard > div > img { 3742 position: absolute; 3743 right: 0; 3744 width: 55px; 3745 } 3746 3747 @keyframes l3 { 3748 100% { 3749 transform: rotate(1turn); 3750 } 3751 } 3752 3753 @media (min-width: 991px) { 3754 .sectionPurchase { 3755 height: 100%; 3756 position: relative; 3757 max-width: 1344px; 3758 background-color: #fff; 3759 top: 50%; 3760 left: 50%; 3761 transform: translate(-50%, -50%); 3762 } 3763 .headerPurchase h3 { 3764 font-size: 20px; 3765 } 3766 .purchaseArea h4 { 3767 font-size: 16px; 3768 } 3769 3770 .menuPurchase ul li { 3771 font-size: 16px; 3772 } 3773 3774 .contentPurchase { 3775 margin-bottom: 30px; 3776 } 3777 .contentPurchase h5 { 3778 font-size: 16px; 3779 } 3780 3781 .item-cards .item-card p, 3782 .item-addons .item-addon p { 3783 font-size: 16px !important; 3784 } 3785 3786 .cards { 3787 float: right; 3788 width: 400px; 3789 } 3790 3791 .item-cards .item-card { 3792 width: calc(25% - 30px); 3793 max-width: calc(25% - 30px); 3794 flex: 0 0 calc(25% - 30px); 3795 } 3796 3797 #itemAddons .item-card { 3798 position: relative; 3799 width: calc(16% - 40px); 3800 max-width: calc(16% - 40px); 3801 flex: 0 0 calc(16% - 40px); 3802 } 3803 3804 .purchase-button-wrapper { 3805 padding: 10px 20px; 3806 } 3807 } 3808 3809 @media (max-width: 1200px) { 3810 .item-cards .item-card { 3811 width: calc(33% - 30px); 3812 max-width: calc(33% - 30px); 3813 flex: 0 0 calc(33% - 30px); 3814 } 3815 } 3816 3817 @media (max-width: 992px) { 3818 .purchasePopup { 3819 padding: 0; 3820 } 3821 .item-cards .item-card h5, 3822 .item-addons .item-addon h5 { 3823 max-height: 30px; 3824 } 3825 3826 .back-purchase-button, .back-spotify, .next-purchase-button { 3827 width: 100%; 3828 } 3829 .addon-itm-title { 3830 width: 300px; 3831 } 3832 .addon-itm-line-price { 3833 margin-right: 10px; 3834 } 3835 .t-preview { 3836 top: 10px; 3837 } 3838 3839 .card-qty a { 3840 height: 15px; 3841 } 3842 3843 .purchase-button-wrapper { 3844 padding: 15px; 3845 } 3846 } 3847 3848 @media (max-width: 576px) { 3849 .purchase-button .btn { 3850 width: 100%!important; 3851 } 3852 .purchase-button > .col-12 { 3853 padding-left: 0; 3854 padding-right: 0; 3855 } 3856 } 3857 </style> 3858 3859 3860 <div class="purchasePopup"> 3861 <div class="purchaseArea"> 3862 3863 <div class="sectionPurchase purchasePersonalize sectionPurchaseBoard"> 3864 <div class="wrapperPurchase"> 3865 <div class="purchase-content"> 3866 <div class="headerPurchase"> 3867 <h3 class="text-uppercase"> 3868 3869 customize your flower board 3870 3871 </h3> 3872 <a class="close-purchase-popup"> 3873 <svg xmlns="image/logo-login-emo78.png" width="18" height="18" viewBox="0 0 18 18" fill="none"> 3874 <path d="M1.53287 17.4107L0.588867 16.4667L8.05553 9.00002L0.588867 1.53336L1.53287 0.589355L8.99953 8.05602L16.4662 0.589355L17.4102 1.53336L9.94353 9.00002L17.4102 16.4667L16.4662 17.4107L8.99953 9.94402L1.53287 17.4107Z" fill="black"/> 3875 </svg> 3876 </a> 3877 3878 </div> 3879 <div class="contentPurchase"> 3880 <div class="row"> 3881 3882 <div class="col-12"> 3883 3884 3885 <style> 3886 3887 3888 .customize-papan .group-field-1 .input-field {float: left;width: 100%;height: 317px;background-color: #E5E5EA;} 3889 .customize-papan .input-field textarea {width: 100%;max-width: 421px;min-height: 150px;font-weight: 400;font-size: 16px;resize: none;background-color: #E5E5EA;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);text-align: center;color: #ffffff;border: none;} 3890 3891 .customize-papan .field-papan.group-field-2 .input-field.field-logo {height: 90px;margin: 0;border-radius: 0;position: relative;-ms-flex: 0 0 174px;flex: 0 0 174px;max-width: 174px;} 3892 .customize-papan .btn-upload-papan svg {width: 21px;height: 25px;display: block;align-self: center;margin: auto;margin-bottom: 12px;} 3893 .svgLogoPapan {position: absolute;width: 100%;top: 50%;left: 50%;transform: translate(-50%, -50%);text-align: center;} 3894 .svgLogoPapan p {color: #8E8E93; margin: 0;} 3895 .svgLogoPapan p span {font-size: 12px;color: #FF0E00;} 3896 .customize-papan .btn-upload-papan img {margin: auto;display: block;position: absolute;width: 80px;top: 50%;left: 50%;transform: translate(-50%, -50%);text-align: center;} 3897 #suggest-messages {position: absolute;bottom: 5px;left: 5px;} 3898 #suggest-messages a {border: 1px solid #979797;background: #fff;color: #979797;border-radius: 3px;padding: 5px 10px;font-size: 10px;font-weight: 600;display: inline-block;} 3899 .case-occasion .nice-select:after {border-bottom: 2px solid #333;border-right: 2px solid #333;right: 20px;top: 42%;width: 10px;height: 10px;} 3900 .customize-papan .input-field input {font-weight: 600;font-size: 16px;width: 100%;height: 90px;min-height: 44px !important;border: none;background: #E5E5EA;margin: 0;border-radius: 0;text-align: center;color: #ffffff;} 3901 .customize-papan .input-field .limit {position: absolute;right: 15px;top: 0;color: #757575;} 3902 3903 @media (min-width: 991px) { 3904 .customize-papan:before {content: "";position: absolute;border: 4px solid #ffffff;bottom: -50px;left: 210px;width: 100px;display: block;-ms-transform: rotate(60deg);-webkit-transform: rotate(60deg);transform: rotate(-65deg);} 3905 .customize-papan:after {content: "";position: absolute;border: 4px solid #ffffff;bottom: -52px;right: 240px;width: 100px;display: block;-ms-transform: rotate(-120deg);-webkit-transform: rotate(70deg);transform: rotate(70deg);} 3906 } 3907 </style> 3908 3909 <input type="hidden" data-properties="penerima" value="-"> 3910 <div class="customize-papan"> 3911 <div class="container"> 3912 <div class="field-papan group-field-1 form-group"> 3913 <div class="input-field">
3914 <textarea id="kartu-ucapan-papan" class="mb-0 has-limit" type="text" data-properties="ucapan" placeholder="Write the message you want to display. Or you can use several options from the message templates that we provide. 3915 (Ex: Selamat Menempuh Hidup Baru A & B)." maxlength="100"></textarea> 3916 <p class="limit">0/100</p> 3917 <div id="suggest-messages"> 3918 <a id="show_note_papan1" href="#"> 3919 <div class="suggest-message" id="note_btn_div1"> 3920 <span class="promo-code-link" id="note_btn_papan1">Contoh Kata WEDDING</span> 3921 </div> 3922 </a> 3923 <a id="show_note_papan2" href="#"> 3924 <div class="suggest-message" id="note_btn_div2"> 3925 <span class="promo-code-link" id="note_btn_papan2">Contoh Kata SELAMAT</span> 3926 </div> 3927 </a> 3928 <a id="show_note_papan3" href="#"> 3929 <div class="suggest-message" id="note_btn_div3"> 3930 <span class="promo-code-link" id="note_btn_papan3">Contoh Kata DUKA CITA</span> 3931 </div> 3932 </a> 3933 </div> 3934 </div> 3935 </div> 3936 <div class="hide"> 3937 <input type="hidden" value="" id="note_id_papan1" name="note_id_papan1" style="top: 0px;"> 3938 <input type="hidden" value="" id="note_btn_id_papan1" name="note_btn_id_papan1"> 3939 </div> 3940 <div class="hide"> 3941 <input type="hidden" value="" id="note_id_papan2" name="note_id_papan2" style="top: 0px;"> 3942 <input type="hidden" value="" id="note_btn_id_papan2" name="note_btn_id_papan2"> 3943 </div> 3944 <div class="hide"> 3945 <input type="hidden" value="" id="note_id_papan3" name="note_id_papan3" style="top: 0px;"> 3946 <input type="hidden" value="" id="note_btn_id_papan3" name="note_btn_id_papan3"> 3947 </div> 3948 <div class="field-papan group-field-2 form-group"> 3949 3950 <label for="logoPapan" onclick="" class="input-field field-logo"> 3951 3952 3953 3954 <div class="btn-upload-papan w-100"> 3955 <?xml version="1.0" encoding="UTF-8"?> 3956 <img src="" style="display:none"> 3957 <div class="svgLogoPapan"> 3958 <svg xmlns="image/logo-login-emo78.png" width="22" height="26" viewBox="0 0 22 26" fill="none"> 3959 <path d="M6.5 20H15.5V11H21.5L11 0.5L0.5 11H6.5V20ZM0.5 23H21.5V26H0.5V23Z" fill="black"/> 3960 </svg> 3961 <p>Upload Logo <span>*optional</span></p> 3962 </div> 3963 </div> 3964 3965 </label> 3966 3967 <input 3968 type="hidden" 3969 data-properties="papan-logo" 3970 value="" 3971 > 3972 <input 3973 type="file" 3974 id="logoPapan" 3975 accept="image/*" 3976 style="position: absolute;width: 1px;height: 1px;padding: 0" 3977 > 3978 3979 <div class="input-field"> 3980 <input class="has-limit sender-name" type="text" placeholder="Nama Pengirim" data-properties="pengirim" maxlength="35"/> 3981 <p class="limit">0/35</p> 3982 </div> 3983 3984 </div> 3985 3986 </div> 3987 </div> 3988 </div> 3989 3990 </div> 3991 </div> 3992 3993 </div> 3994 <div class="purchase-button-wrapper"> 3995 <div class="purchase-button btn-card row m-0"> 3996 <div class="col-12 col-lg-2 text-left mb-2 p-0"> 3997 3998 </div> 3999 <div class="btn-next-card col-12 col-lg-10 text-right"> 4000 4001 4002 <button 4003 4004 4005 4006 class="btn next-purchase-button text-uppercase" 4007 4008 disabled 4009 4010 > 4011 <span>save your flower board</span> 4012 </button> 4013 </div> 4014 </div> 4015 4016 </div> 4017 </div> 4018 </div> 4019 4020 4021 4022 <div 4023 class="sectionPurchase sectionPurchaseBoard hide" 4024 data-section="address" 4025 > 4026 <div class="wrapperPurchase"> 4027 <div class="purchase-content"> 4028 <div class="headerPurchase"> 4029 <h3> 4030 Complete Your Order 4031 </h3> 4032 <a class="close-purchase-popup"> 4033 <svg xmlns="image/logo-login-emo78.png" width="18" height="18" viewBox="0 0 18 18" fill="none"> 4034 <path d="M1.53287 17.4107L0.588867 16.4667L8.05553 9.00002L0.588867 1.53336L1.53287 0.589355L8.99953 8.05602L16.4662 0.589355L17.4102 1.53336L9.94353 9.00002L17.4102 16.4667L16.4662 17.4107L8.99953 9.94402L1.53287 17.4107Z" fill="black"/> 4035 </svg> 4036 </a> 4037 4038 </div> 4039 <div class="contentPurchase"> 4040 <div class="row"> 4041 <div class="col-12 position-relative"> 4042 <div class="addressPurchase"> 4043 4044 <h4 class="text-uppercase">recipient delivery address</h4> 4045 <p>Share the delivery address to send your heartfelt blooms straight to their door.</p> 4046 4047 <div class="formAddressPurchase row"> 4048 <div class="col-12"> 4049 <form> 4050 <div class="form-group row mb-2 mb-lg-4"> 4051 <div class="col-6 position-relative"> 4052 <input id="first_name" type="text" class="form-control input__field" placeholder="" required> 4053 <label for="first_name" class="input__label">First Name<span>*</span></label> 4054 </div> 4055 <div class="col-6 position-relative"> 4056 <input id="last_name" type="text" class="form-control input__field" placeholder="" required> 4057 <label for="last_name" class="input__label">Last Name<span>*</span></label> 4058 </div> 4059 <input type="hidden" data-properties="nama-penerima"> 4060 </div> 4061 4062 <h4 class="text-uppercase">how you want to input your address</h4> 4063 <div class="form-group row mb-2 mb-lg-4 form-address-upload"> 4064 <div class="col-6 position-relative"> 4065 <label class="address-manualy"> 4066 <svg xmlns="image/logo-login-emo78.png" width="18" height="17" viewBox="0 0 18 17" fill="none"> 4067 <path d="M3.37484 1.83329C2.79984 1.83329 2.33317 2.29996 2.33317 2.87496V5.16663C2.33317 5.38764 2.24537 5.5996 2.08909 5.75588C1.93281 5.91216 1.72085 5.99996 1.49984 5.99996C1.27882 5.99996 1.06686 5.9
40671216 0.910582 5.75588C0.754301 5.5996 0.666504 5.38764 0.666504 5.16663V2.87496C0.666504 2.15666 0.951845 1.46779 1.45976 0.959878C1.96767 0.451967 2.65654 0.166626 3.37484 0.166626H5.6665C5.88752 0.166626 6.09948 0.254423 6.25576 0.410704C6.41204 0.566984 6.49984 0.778946 6.49984 0.999959C6.49984 1.22097 6.41204 1.43293 6.25576 1.58921C6.09948 1.7455 5.88752 1.83329 5.6665 1.83329H3.37484ZM3.37484 15.1666C2.79984 15.1666 2.33317 14.7 2.33317 14.125V11.8333C2.33317 11.6123 2.24537 11.4003 2.08909 11.244C1.93281 11.0878 1.72085 11 1.49984 11C1.27882 11 1.06686 11.0878 0.910582 11.244C0.754301 11.4003 0.666504 11.6123 0.666504 11.8333V14.125C0.666504 14.4806 0.736557 14.8328 0.872663 15.1614C1.00877 15.49 1.20826 15.7885 1.45976 16.04C1.71125 16.2915 2.00981 16.491 2.3384 16.6271C2.66699 16.7632 3.01917 16.8333 3.37484 16.8333H5.6665C5.88752 16.8333 6.09948 16.7455 6.25576 16.5892C6.41204 16.4329 6.49984 16.221 6.49984 16C6.49984 15.7789 6.41204 15.567 6.25576 15.4107C6.09948 15.2544 5.88752 15.1666 5.6665 15.1666H3.37484ZM15.6665 2.87496C15.6665 2.29996 15.1998 1.83329 14.6248 1.83329H12.3332C12.1122 1.83329 11.9002 1.7455 11.7439 1.58921C11.5876 1.43293 11.4998 1.22097 11.4998 0.999959C11.4998 0.778946 11.5876 0.566984 11.7439 0.410704C11.9002 0.254423 12.1122 0.166626 12.3332 0.166626H14.6248C14.9805 0.166626 15.3327 0.236679 15.6613 0.372786C15.9899 0.508892 16.2884 0.708386 16.5399 0.959878C16.7914 1.21137 16.9909 1.50994 17.127 1.83853C17.2631 2.16712 17.3332 2.5193 17.3332 2.87496V5.16663C17.3332 5.38764 17.2454 5.5996 17.0891 5.75588C16.9328 5.91216 16.7208 5.99996 16.4998 5.99996C16.2788 5.99996 16.0669 5.91216 15.9106 5.75588C15.7543 5.5996 15.6665 5.38764 15.6665 5.16663V2.87496ZM14.6248 15.1666C15.1998 15.1666 15.6665 14.7 15.6665 14.125V11.8333C15.666
40675 11.6123 15.7543 11.4003 15.9106 11.244C16.0669 11.0878 16.2788 11 16.4998 11C16.7208 11 16.9328 11.0878 17.0891 11.244C17.2454 11.4003 17.3332 11.6123 17.3332 11.8333V14.125C17.3332 14.4806 17.2631 14.8328 17.127 15.1614C16.9909 15.49 16.7914 15.7885 16.5399 16.04C16.2884 16.2915 15.9899 16.491 15.6613 16.6271C15.3327 16.7632 14.9805 16.8333 14.6248 16.8333H12.3332C12.1122 16.8333 11.9002 16.7455 11.7439 16.5892C11.5876 16.4329 11.4998 16.221 11.4998 16C11.4998 15.7789 11.5876 15.567 11.7439 15.4107C11.9002 15.2544 12.1122 15.1666 12.3332 15.1666H14.6248ZM4.62484 5.16663C4.62484 4.94561 4.71263 4.73365 4.86892 4.57737C5.0252 4.42109 5.23716 4.33329 5.45817 4.33329H12.5415C12.7625 4.33329 12.9745 4.42109 13.1308 4.57737C13.287 4.73365 13.3748 4.94561 13.3748 5.16663V6.41663C13.3748 6.63764 13.287 6.8496 13.1308 7.00588C12.9745 7.16216 12.7625 7.24996 12.5415 7.24996C12.3205 7.24996 12.1085 7.16216 11.9522 7.00588C11.796 6.8496 11.7082 6.63764 11.7082 6.41663V5.99996H9.83317V11H10.8748C11.0959 11 11.3078 11.0878 11.4641 11.244C11.6204 11.4003 11.7082 11.6123 11.7082 11.8333C11.7082 12.0543 11.6204 12.2663 11.4641 12.4225C11.3078 12.5788 11.0959 12.6666 10.8748 12.6666H7.12484C6.90382 12.6666 6.69186 12.5788 6.53558 12.4225C6.3793 12.2663 6.2915 12.0543 6.2915 11.8333C6.2915 11.6123 6.3793 11.4003 6.53558 11.244C6.69186 11.0878 6.90382 11 7.12484 11H8.1665V5.99996H6.2915V6.41663C6.2915 6.63764 6.20371 6.8496 6.04743 7.00588C5.89115 7.16216 5.67918 7.24996 5.45817 7.24996C5.23716 7.24996 5.0252 7.16216 4.86892 7.00588C4.71263 6.8496 4.62484 6.63764 4.62484 6.41663V5.16663Z" fill="black"/> 4068 </svg> 4069 <span>Input Address Manually</span> 4070 </label> 4071 </div> 4072 <div class="col-6 position-relative"> 4073 <label for="address-upload" class="address-upload"> 4074 <svg xmlns="image/logo-login-emo78.png" width="12" height="13" viewBox="0 0 12 13" fill="none"> 4075 <path d="M5.58317 9.48079V2.27246L3.6415 4.21413L3.0515 3.61579L5.99984 0.666626L8.949 3.61579L8.359 4.21496L6.4165 2.27246V9.48079H5.58317ZM1.51317 12.3333C1.12928 12.3333 0.809004 12.205 0.552337 11.9483C0.29567 11.6916 0.167059 11.3711 0.166504 10.9866V8.96746H0.999837V10.9866C0.999837 11.115 1.05317 11.2327 1.15984 11.34C1.2665 11.4472 1.384 11.5005 1.51234 11.5H10.4873C10.6151 11.5 10.7326 11.4466 10.8398 11.34C10.9471 11.2333 11.0004 11.1155 10.9998 10.9866V8.96746H11.8332V10.9866C11.8332 11.3705 11.7048 11.6908 11.4482 11.9475C11.1915 12.2041 10.8709 12.3327 10.4865 12.3333H1.51317Z" fill="black"/> 4076 </svg> 4077 <span>Upload Address Picture</span> 4078 </label> 4079 <input 4080 id="address-upload" 4081 type="file" 4082 accept="image/png, image/jpeg" 4083 style="position: absolute; padding: 0;width: 1px;height: 1px" 4084 > 4085 <input type="hidden" class="props-address-upload" data-properties="foto-alamat"> 4086 </div> 4087 </div> 4088 <img width="150" height="" src="" class="photo-address" style="display: none;"> 4089 4090 <div class="form-group row position-relative mb-2 mb-lg-4 form-address"> 4091 <div class="col-12"> 4092 <textarea 4093 id="delivery_address" 4094 data-properties="alamat-penerima" 4095 class="form-control input__field col-12" 4096 placeholder="" 4097 required 4098 ></textarea> 4099 <label for="delivery_address" class="input__label">Delivery Address<span>*</span></label> 4100 4101 </div> 4102 </div> 4103 <div class="form-group row mb-2 mb-lg-4 form-address"> 4104 <div class="col-6 position-relative"> 4105 <input 4106 id="recipient_number" 4107 type="text" 4108 data-properties="telepon-penerima" 4109 class="form-control input__field" 4110 placeholder="" 4111 required 4112 > 4113 <label for="recipient_number" class="input__label">Recipient number<span>*</span></label> 4114 </div> 4115 <div class="col-6 position-relative"> 4116 <input 4117 id="company" 4118 type="text" 4119 data-properties="company" 4120 class="form-control input__field" 4121 placeholder="" 4122 > 4123 <label for="company" class="input__label">Company (Optional)</label> 4124 </div> 4125 </div> 4126 <div class="form-group row mb-2 mb-lg-4 form-address"> 4127 <div class="col-6 position-relative"> 4128 <input 4129 id="province" 4130 type="text" 4131 class="form-control input__field" 4132 placeholder="" 4133 value="Jakarta" 4134 data-properties="province" 4135 > 4136 <label for="province" class="input__label">Province</label> 4137 </div> 4138 <div class="col-6 position-relative"> 4139 <select id="zip" class="form-control select-search" required></select> 4140 </div> 4141 </div> 4142 </form> 4143 </div> 4144 </div> 4145 </div> 4146 <div class="addonsPurchase"> 4147 <h4 class="text-uppercase">add-ons</h4> 4148 <div class="addons"> 4149 <p>No Add-Ons</p> 4150 <!-- 4151 <button class="add-addon"> 4152 <svg xmlns="image/logo-login-emo78.png" width="12" height="12" viewBox="0 0 12 12" fill="none"> 4153 <path d="M5.5 6.5H0V5.5H5.5V0H6.5V5.5H12V6.5H6.5V12H5.5V6.5Z" fill="black"/> 4154 </svg>
4155 <span>Enhance my moment with Add-ons</span> 4156 </button> 4157 --> 4158 </div> 4159 </div> 4160 </div> 4161 4162 </div> 4163 </div> 4164 4165
4165<script> 4166 document.addEventListener('DOMContentLoaded', function() { 4167 // Detect emo78 4168 var isemo78 = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; 4169 4170 if (isemo78) { 4171 document.querySelector('.formAddressPurchase').classList.add('emo78'); 4172 4173 // emo78 specific fixes 4174 var inputs = document.querySelectorAll('.formAddressPurchase .input__field'); 4175 4176 inputs.forEach(function(input) { 4177 // Force enable touch events on emo78 4178 input.style.webkitUserSelect = 'text'; 4179 input.style.webkitTouchCallout = 'default'; 4180 input.style.pointerEvents = 'auto'; 4181 input.style.touchAction = 'manipulation'; 4182 4183 // Add explicit touch event listeners for emo78 4184 input.addEventListener('touchstart', function(e) { 4185 e.stopPropagation(); 4186 this.focus(); 4187 }, { passive: false }); 4188 4189 input.addEventListener('touchend', function(e) { 4190 e.preventDefault(); 4191 e.stopPropagation(); 4192 this.focus(); 4193 this.click(); 4194 }, { passive: false }); 4195 4196 // Force focus on tap for emo78 4197 input.addEventListener('click', function(e) { 4198 e.stopPropagation(); 4199 if (document.activeElement !== this) { 4200 this.focus(); 4201 } 4202 }); 4203 }); 4204 4205 // Fix for label overlapping on emo78 4206 var labels = document.querySelectorAll('.formAddressPurchase .input__label'); 4207 labels.forEach(function(label) { 4208 label.style.pointerEvents = 'none'; 4209 label.addEventListener('touchstart', function(e) { 4210 e.preventDefault(); 4211 var input = this.parentNode.querySelector('.input__field'); 4212 if (input) { 4213 input.focus(); 4214 } 4215 }); 4216 }); 4217 } 4218 4219 // Handle input state for all browsers, especially emo78 4220 var inputs = document.querySelectorAll('.input__field'); 4221 4222 inputs.forEach(function(input) { 4223 // Handle input events 4224 input.addEventListener('input', function() { 4225 if (this.value.trim() !== '') { 4226 this.classList.add('has-value'); 4227 } else { 4228 this.classList.remove('has-value'); 4229 } 4230 }); 4231 4232 // Handle focus 4233 input.addEventListener('focus', function() { 4234 this.classList.add('focused'); 4235 // emo78 specific: ensure input is visible 4236 if (isemo78) { 4237 setTimeout(function() { 4238 input.scrollIntoView({ behavior: 'smooth', block: 'center' }); 4239 }, 300); 4240 } 4241 }); 4242 4243 // Handle blur 4244 input.addEventListener('blur', function() { 4245 this.classList.remove('focused'); 4246 if (this.value.trim() !== '') { 4247 this.classList.add('has-value'); 4248 } else { 4249 this.classList.remove('has-value'); 4250 } 4251 }); 4252 4253 // Initial check for pre-filled values 4254 if (input.value.trim() !== '') { 4255 input.classList.add('has-value'); 4256 } 4257 }); 4258 4259 // Additional emo78 fixes 4260 if (isemo78) { 4261 // Prevent emo78 Safari from adding default styling 4262 document.addEventListener('touchstart', function() {}, { passive: true }); 4263 4264 // Fix viewport issues on emo78 4265 var viewport = document.querySelector('meta[name=viewport]'); 4266 if (viewport) { 4267 viewport.setAttribute('content', 4268 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' 4269 ); 4270 } 4271 } 4272 }); 4273 </script>
4273 4274 </div> 4275 <div class="purchase-button-wrapper"> 4276 <div class="purchase-button btn-address row m-0"> 4277 <div class="col-12 col-lg-2 text-left mb-2 p-0"> 4278 4279 <button class="back-purchase-button back-address text-uppercase"> 4280 <svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="image/logo-login-emo78.png"> 4281 <path d="M14.5799 7.41992L2.32992 7.41992L7.57992 12.6699L6.91992 13.4199L0.419922 6.91992L6.91992 0.419922L7.57992 1.16992L2.32992 6.41992L14.5799 6.41992V7.41992Z" fill="black"/> 4282 </svg> 4283 <span>Back</span> 4284 </button> 4285 4286 </div> 4287 <div class="btn-next-card col-12 col-lg-10 text-right"> 4288 4289 <!-- 4290 <button class="back-purchase-button back-address text-uppercase mr-lg-2 mb-2 mb-lg-0"> 4291 <svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="image/logo-login-emo78.png"> 4292 <path d="M14.5799 7.41992L2.32992 7.41992L7.57992 12.6699L6.91992 13.4199L0.419922 6.91992L6.91992 0.419922L7.57992 1.16992L2.32992 6.41992L14.5799 6.41992V7.41992Z" fill="black"/> 4293 </svg> 4294 <span>Back</span> 4295 </button> 4296 --> 4297 4298 4299 <button 4300 4301 id="addtocart-card" 4302 4303 class="btn next-address text-uppercase" 4304 4305 > 4306 <span>add to cart</span> 4307 </button> 4308 </div> 4309 </div> 4310 4311 </div> 4312 </div> 4313 </div> 4314 4315 </div> 4316 </div> 4317 <div id="backgroundPopup"></div> 4318 4319 4320 4321 <input 4322 data-index="1" 4323 type="hidden" 4324 id="properties-delivery-date" 4325 name="properties[Delivery Date]" 4326 value="-" 4327 > 4328 <input 4329 data-index="2" 4330 type="hidden" 4331 id="properties-delivery-time" 4332 name="properties[Delivery Time]" 4333 value="-" 4334 > 4335 <input 4336 data-index="4" 4337 type="hidden" 4338 id="properties-nama-penerima" 4339 name="properties[Nama Penerima]" 4340 value="-" 4341 > 4342 <input 4343 data-index="5" 4344 type="hidden" 4345 id="properties-alamat-penerima" 4346 name="properties[Alamat Penerima]" 4347 value="-" 4348 > 4349 <input 4350 data-index="6" 4351 type="hidden" 4352 id="properties-kodepos" 4353 name="properties[Kodepos]" 4354 value="-" 4355 > 4356 <input data-index="7" type="hidden" id="properties-telepon-penerima" name="properties[Telepon Penerima]"> 4357 4358 4359 <input 4360 data-index="8" 4361 type="hidden" 4362 id="properties-kartu-nama-penerima" 4363 name="properties[Kartu Nama Penerima]" 4364 value="-" 4365 > 4366 4367 <textarea 4368 data-index="9" 4369 type="hidden" 4370 id="properties-kartu-pesan" 4371 name="properties[Kartu Pesan]" 4372 style="display: none" 4373 >-</textarea> 4374 4375 4376 4377 <input 4378 data-index="10" 4379 type="hidden" 4380 id="properties-kartu-nama-pengirim" 4381 name="properties[Kartu Nama Pengirim]" 4382 value="-" 4383 > 4384 4385 <!-- Additional Shipping --> 4386 <input type="hidden" id="properties-kota-pengiriman-province" name="properties[Province]"> 4387 <input 4388 type="hidden" 4389 id="properties-kota-pengiriman-country" 4390 name="properties[Country]" 4391 value="Indonesia" 4392 > 4393 <input type="hidden" id="properties-shipping" name="properties[Shipping]"> 4394 4395 <input type="hidden" id="properties-time" name="properties[Time]"> 4396 <input type="hidden" id="properties-card" name="properties[Card]"> 4397 <input type="hidden" id="properties-addons" name="properties[Addons]"> 4398 4399 <input 4400 type="hidden" 4401 id="properties-company" 4402 name="properties[Company]" 4403 value="" 4404 > 4405
4405<script> 4406 4407 $(document).ready(function(){ 4408 4409 var text_max_papan1=150; 4410 var msg_text_papan1=""; 4411 $('#kartu-ucapan-ucapan').keyup(function(){ 4412 var text_length_papan1=$('#kartu-ucapan-ucapan').val().length; 4413 var msg_text_papan1=$('#kartu-ucapan-ucapan').val(); 4414 }); 4415 4416 var notes_papan1 = [ 4417 4418 [0,"Happy Wedding (nama & nama)."],[1,"Congratulations lovebirds (nama & nama)."],[2,"Selamat berbahagia (nama & nama)."],[3,"Selamat menempuh hidup baru (nama & nama)."] 4419 4420 ]; 4421 $('#show_note_papan1').click(function(event){ 4422 event.preventDefault(); 4423 var idx_papan1=parseInt($('#note_id_papan1').val()); 4424 if(isNaN(idx_papan1)){ 4425 idx_papan1=0; 4426 }else{ 4427 idx_papan1++; 4428 idx_papan1=idx_papan1%notes_papan1.length; 4429 } 4430 var note_papan1=notes_papan1[idx_papan1][1]; 4431 $('#note_id_papan1').val(idx_papan1); 4432 $('#kartu-ucapan-papan, #properties-kartu-pesan, #properties-kartu-ucapan').val(note_papan1); 4433 $('#msgDelivery').val(note_papan1); 4434 4435 var text_length_papan1=$('#kartu-ucapan-papan').val().length; 4436 var idx_2_papan1=parseInt($('#note_btn_id_papan1').val()); 4437 if(isNaN(idx_2_papan1)){ 4438 idx_2_papan1=0; 4439 }else{ 4440 idx_2_papan1++; 4441 //idx_2_papan1=idx_2_papan1%note_btn_text_papan1.length; 4442 } 4443 $('#note_btn_id_papan1').val(idx_2_papan1); 4444 //var note_btn=note_btn_text[idx_2][1]; 4445 //$('#note_btn').text(note_btn); 4446 }); 4447 4448 var text_max_papan2=150; 4449 var msg_text_papan2=""; 4450 $('#kartu-ucapan-ucapan').keyup(function(){ 4451 var text_length_papan2=$('#kartu-ucapan-ucapan').val().length; 4452 var msg_text_papan2=$('#kartu-ucapan-ucapan').val(); 4453 }); 4454 4455 var notes_papan2 = [ 4456 4457 [0,"Congratulations (ucapan)."], [1,"Selamat dan sukses atas dibukanya (ucapan personal)."],[2,"Congratulations for the grand opening of (nama toko/bisnis)."],[3,"Happy Graduation (nama)."] 4458 4459 ]; 4460 $('#show_note_papan2').click(function(event){ 4461 event.preventDefault(); 4462 var idx_papan2=parseInt($('#note_id_papan2').val()); 4463 if(isNaN(idx_papan2)){ 4464 idx_papan2=0; 4465 }else{ 4466 idx_papan2++; 4467 idx_papan2=idx_papan2%notes_papan2.length; 4468 } 4469 var note_papan2=notes_papan2[idx_papan2][1]; 4470 $('#note_id_papan2').val(idx_papan2); 4471 $('#kartu-ucapan-papan, #properties-kartu-pesan, #properties-kartu-ucapan').val(note_papan2); 4472 $('#msgDelivery').val(note_papan2); 4473 var text_length_papan2=$('#kartu-ucapan-papan').val().length; 4474 var idx_2_papan2=parseInt($('#note_btn_id_papan2').val()); 4475 if(isNaN(idx_2_papan2)){ 4476 idx_2_papan2=0; 4477 }else{ 4478 idx_2_papan2++; 4479 //idx_2_papan1=idx_2_papan1%note_btn_text_papan1.length; 4480 } 4481 $('#note_btn_id_papan2').val(idx_2_papan2); 4482 //var note_btn=note_btn_text[idx_2][1]; 4483 //$('#note_btn').text(note_btn); 4484 }); 4485 4486 var text_max_papan3=150; 4487 var msg_text_papan3=""; 4488 $('#kartu-ucapan-ucapan').keyup(function(){ 4489 var text_length_papan3=$('#kartu-ucapan-ucapan').val().length; 4490 var msg_text_papan3=$('#kartu-ucapan-ucapan').val(); 4491 }); 4492 4493 var notes_papan3 = [ 4494 4495 [0,"Turut Berduka Cita atas meninggalnya almarhum / almarhumah (Nama)."], [1,"Our Deepest Condolences for the lost of your beloved Father/ Mother/ Husband/ Wife/ Children."], [2,"Our Deepest Sympathy for the lost of your beloved Father/ Mother/ Husband/ Wife/ Children."], [3,"Innalillahi wa innailaihi rojiun, Turut berduka cita atas meninggalnya (nama)."] 4496 4497 ]; 4498 $('#show_note_papan3').click(function(event){ 4499 event.preventDefault(); 4500 var idx_papan3=parseInt($('#note_id_papan3').val()); 4501 if(isNaN(idx_papan3)){ 4502 idx_papan3=0; 4503 }else{ 4504 idx_papan3++; 4505 idx_papan3=idx_papan3%notes_papan3.length; 4506 } 4507 var note_papan3=notes_papan3[idx_papan3][1]; 4508 $('#note_id_papan3').val(idx_papan3); 4509 $('#kartu-ucapan-papan, #properties-kartu-pesan, #properties-kartu-ucapan').val(note_papan3); 4510 $('#msgDelivery').val(note_papan3);
4511 var text_length_papan3=$('#kartu-ucapan-papan').val().length; 4512 var idx_2_papan3=parseInt($('#note_btn_id_papan3').val()); 4513 if(isNaN(idx_2_papan3)){ 4514 idx_2_papan3=0; 4515 }else{ 4516 idx_2_papan3++; 4517 //idx_2_papan1=idx_2_papan1%note_btn_text_papan1.length; 4518 } 4519 $('#note_btn_id_papan3').val(idx_2_papan3); 4520 //var note_btn=note_btn_text[idx_2][1]; 4521 //$('#note_btn').text(note_btn); 4522 }); 4523 4524 var text_max_papan4=150; 4525 var msg_text_papan4=""; 4526 $('#kartu-ucapan-ucapan').keyup(function(){ 4527 var text_length_papan4=$('#kartu-ucapan-ucapan').val().length; 4528 var msg_text_papan4=$('#kartu-ucapan-ucapan').val(); 4529 }); 4530 4531 $('#show_note_papan4').click(function(event){ 4532 var notes_papan4 = [ 4533 [0,"Hereâs to youâsteadier, stronger and better every day."], 4534 [1,"Warmest wishes for a speedy recovery!"], 4535 [2,"Dengan ucapan terhangat, semoga lekas membaik dan semakin pulih setiap harinya ya."], 4536 [3,"Semoga lekas sembuh untuk kembali beraktivitas dan berkarya."] 4537 ]; 4538 event.preventDefault(); 4539 var idx_papan4=parseInt($('#note_id_papan4').val()); 4540 console.log(idx_papan4, 'idx_papan4') 4541 if(isNaN(idx_papan4)){ 4542 idx_papan4=0; 4543 }else{ 4544 idx_papan4++; 4545 idx_papan4=idx_papan4%notes_papan4.length; 4546 } 4547 var note_papan4=notes_papan4[idx_papan4][1]; 4548 $('#note_id_papan4').val(idx_papan4); 4549 $('#kartu-ucapan-papan, #properties-kartu-ucapan, #properties-kartu-pesan').val(note_papan4); 4550 console.log(note_papan4, 'note_papan4') 4551 var text_length_papan4=$('#kartu-ucapan-papan').val().length; 4552 var idx_2_papan4=parseInt($('#note_btn_id_papan4').val()); 4553 if(isNaN(idx_2_papan4)){ 4554 idx_2_papan4=0; 4555 }else{ 4556 idx_2_papan4++; 4557 //idx_2_papan1=idx_2_papan1%note_btn_text_papan1.length; 4558 } 4559 $('#note_btn_id_papan4').val(idx_2_papan4); 4560 }); 4561 4562 /* 4563 $("#jenisPapan").change(function(){ 4564 $( "select option:selected").each(function(){ 4565 if($(this).attr("value")=="Happy Wedding"){ 4566 $("#suggest-messages a").hide(); 4567 $("#show_note_papan1").show(); 4568 $("#kartu-ucapan-papan").val(""); 4569 } 4570 if($(this).attr("value")=="Congratulations"){ 4571 $("#suggest-messages a").hide(); 4572 $("#show_note_papan2").show(); 4573 $("#kartu-ucapan-papan").val(""); 4574 } 4575 if($(this).attr("value")=="Duka Cita"){ 4576 $("#suggest-messages a").hide(); 4577 $("#show_note_papan3").show(); 4578 $("#kartu-ucapan-papan").val(""); 4579 } 4580 }); 4581 }).change(); 4582 */ 4583 4584 4585 4586 4587 4588 $(".variant-metafield").each(function(){ 4589 const t = $(this) 4590 const id = t.attr("id") 4591 const target = $(`[data-select=${id}]`) 4592 t.on('select2:selecting', function(e) { 4593 const data = e.params.args.data 4594 target.val(data.text) 4595 }); 4596 }) 4597 }) 4598 </script>
4598 4599 4600
4600<script> 4601 const shareButton = document.getElementById('shareButton'); 4602 4603 shareButton.addEventListener('click', () => { 4604 if (navigator.share) { 4605 navigator.share({ 4606 title: "EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026", 4607 url: "/products/blossom-shine", 4608 text: 'Check out this page!' 4609 }) 4610 .then(() => console.log('Successful share')) 4611 .catch((error) => console.log('Error sharing', error)); 4612 } else { 4613 alert('Web Share API is not supported in this browser.'); 4614 } 4615 }); 4616 4617 // Inventory validation function 4618 function checkInventoryStatus() { 4619 const productSelect = document.getElementById('productSelect'); 4620 const purchaseButton = document.querySelector('#personalizeBtn button'); 4621 4622 if (!productSelect || !purchaseButton) return; 4623 4624 const selectedVariantId = productSelect.value; 4625 4626 // Get variant data from Shopify 4627 fetch(`/products/blossom-shine.js`) 4628 .then(response => response.json()) 4629 .then(product => { 4630 const selectedVariant = product.variants.find(variant => variant.id == selectedVariantId); 4631 4632 if (selectedVariant) { 4633 const isOutOfStock = selectedVariant.inventory_quantity <= 0 && 4634 selectedVariant.inventory_management === 'shopify' && 4635 selectedVariant.inventory_policy !== 'continue'; 4636 4637 if (isOutOfStock) { 4638 purchaseButton.disabled = true; 4639 purchaseButton.textContent = 'Out of Stock'; 4640 purchaseButton.setAttribute('data-out-of-stock', 'true'); 4641 purchaseButton.style.backgroundColor = '#cccccc'; 4642 purchaseButton.style.cursor = 'not-allowed'; 4643 } else { 4644 // Check if button was disabled due to other conditions 4645 4646 4647 4648 4649 4650 4651 4652 4653 const isOtherDisabled = false || true || false; 4654 4655 if (!isOtherDisabled) { 4656 purchaseButton.disabled = false; 4657 purchaseButton.textContent = 'customize your flower board'; 4658 purchaseButton.removeAttribute('data-out-of-stock'); 4659 purchaseButton.style.backgroundColor = ''; 4660 purchaseButton.style.cursor = ''; 4661 } 4662 } 4663 } 4664 }) 4665 .catch(error => { 4666 console.error('Error checking inventory:', error); 4667 }); 4668 } 4669 4670 // Check inventory on page load 4671 document.addEventListener('DOMContentLoaded', function() { 4672 checkInventoryStatus(); 4673 4674 // Listen for variant changes 4675 const productSelect = document.getElementById('productSelect'); 4676 if (productSelect) { 4677 productSelect.addEventListener('change', checkInventoryStatus); 4678 } 4679 }); 4680 4681 // Prevent form submission if out of stock 4682 document.addEventListener('click', function(e) { 4683 if (e.target.matches('button[data-out-of-stock="true"]')) { 4684 e.preventDefault(); 4685 e.stopPropagation(); 4686 alert('This product is currently out of stock and cannot be purchased.'); 4687 return false; 4688 } 4689 }); 4690 </script>
4690 4691 4692 4693 4694 </div> 4695 4696 </div> 4697 </div> 4698 </div> 4699 </div> 4700 <div id="product-bottom"> 4701 4702 <div class="product-description rte bg-card col-12 py-3 px-0 m-0" itemprop="description"> 4703 <div class="container"> 4704 4705 4706 4707 4708 4709 <div class="short-desc-mobile d-block d-lg-none mb-3"> 4710 <div class="short-desc"> 4711 <ul> 4712 <li><strong>EMO78 dikenal sebagai platform game seru yang bisa melepas penat saat merasa suntuk, tidak hanya itu game yang ditawarkan juga bisa mendapatkan hadiah hingga jutaan rupiah!</strong></li> 4713 </div> 4714 <label class="more-mobile">Show More â</label> 4715 </div> 4716 4717 <style> 4718 .animated-title { 4719 text-align: center; 4720 font-weight: bold; 4721 color: #079c02; 4722 font-size: 28px; 4723 position: relative; 4724 animation: glow 2s infinite alternate, moveUpDown 3s infinite; 4725 } 4726 4727 /* Efek glow / bercahaya hijau */ 4728 @keyframes glow { 4729 0% { text-shadow: 0 0 5px #079c02; color: #079c02; } 4730 50% { text-shadow: 0 0 20px #00ff55; color: #12d12b; } 4731 100% { text-shadow: 0 0 10px #1bff00; color: #079c02; } 4732 } 4733 4734 /* Efek gerakan naik turun */ 4735 @keyframes moveUpDown { 4736 0% { transform: translateY(0px); } 4737 50% { transform: translateY(-5px); } 4738 100% { transform: translateY(0px); } 4739 } 4740 </style> 4741 4742
4742<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/shopify-cartjs/1.1.0/cart.min.js"></script>
4742 4743
4743<script> 4744 CartJS.init({"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"IDR","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0}); 4745 4746 const productType = $("[data-product-type]").data("product-type") 4747 const productDate = Date.parse(new Date()) 4748 4749 const shop = 'outerbloom1.myshopify.com' 4750 const host = 'https://app.asmaraku.com' 4751 // const host = 'http://localhost:5001' 4752 4753 const gsheet = "https://script.google.com/macros/s/AKfycbyqa6mPD6lVjU6hiHr12J8URZ2aJBGyxBsGQ0QtEIDari-rBk_9vSOITjSSmUXL1NwxEg/exec" 4754 4755 const qrID = "041025" + randomString(4, 'aAbCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ') 4756 4757 $("#properties-time").val(new Date().getTime()) 4758 4759 const isemo78 = /iPhone|iPad|iPod/i.test(navigator.userAgent); 4760 4761 if(!isemo78) { 4762 $("#full-date").attr("type", "button") 4763 } 4764 4765 let dateTime = new Date(); 4766 let today = dateTime.getDate(); 4767 let day = dateTime.getDay(); 4768 let hour = dateTime.getHours(); 4769 let min = dateTime.getMinutes(); 4770 let timeOfDay = hour + (min / 100); 4771 4772 async function getFetch(url) { 4773 const response = await fetch(url); 4774 let status = false 4775 let result 4776 if(response.ok) { 4777 status = true 4778 result = await response.json(); 4779 } 4780 return { 4781 status, 4782 data: result 4783 } 4784 } 4785 4786 4787 4788 function setCookie(cname, cvalue, exMins) { 4789 var d = new Date(); 4790 d.setTime(d.getTime() + (exMins*60*1000)); 4791 var expires = "expires="+d.toUTCString(); 4792 document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 4793 } 4794 4795 function getCookie(cname) { 4796 let name = cname + "="; 4797 let decodedCookie = decodeURIComponent(document.cookie); 4798 let ca = decodedCookie.split(';'); 4799 for(let i = 0; i <ca.length; i++) { 4800 let c = ca[i]; 4801 while (c.charAt(0) == ' ') { 4802 c = c.substring(1); 4803 } 4804 if (c.indexOf(name) == 0) { 4805 return c.substring(name.length, c.length); 4806 } 4807 } 4808 return ""; 4809 } 4810 4811 async function renderDate() { 4812 let dataDate = await getFetch(`${host}/api/shipping/date?domain=${shop}&productId=8144957800663&v=${Date.now()}`); 4813 console.log(dataDate, 'renderDate') 4814 const data = dataDate?.data 4815 const date = data.date 4816 const time = data.time 4817 4818 console.log(date, 'DATE') 4819 4820 const weekday = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]; 4821 const monthly = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]; 4822 const htmlDate = [] 4823 for(let i = 0;i < date.length;i++) { 4824 const full = date[i].date 4825 const d = new Date(date[i].date); 4826 const day = weekday[d.getDay()]; 4827 const dt = d.getDate(); 4828 const mt = monthly[d.getMonth()]; 4829 const yr = d.getFullYear(); 4830 const isDate = Boolean(date[i].isEnabled) 4831 const cutoffpagi = date[i].cutoff?.pagi 4832 const cutoffsiang = date[i].cutoff?.siang 4833 const cutoffMalam = date[i].cutoff?.Malam 4834 var html = ` 4835 <button data-id="8144957800663" class="date-single calendarbutton btn steps-btn col col-3 btn-date-time" data-day="${day}" data-fulldate="${full}" data-date="${dt < 10 ? '0' + dt : dt}" data-month="${mt}" data-year="${yr}" data-offpagi="${cutoffpagi}" data-offsiang="${cutoffsiang}" data-offMalam="${cutoffMalam}" ${isDate === true ? '' : 'disabled'}> 4836 ${dt === today ? 4837 `Today<span>${dt < 10 ? '0' + dt : dt}</span>` : 4838 `${day}<span>${dt < 10 ? '0' + dt : dt}</span>` 4839 } 4840 </button> 4841 ` 4842 htmlDate.push(html) 4843 } 4844 const htmlTime = [] 4845 for(var i = 0;i < time.length;i++) { 4846 const timeText = time[i].text 4847 const timeTime = time[i].time 4848 const timeEnabled = time[i].isEnabled 4849 var html = ` 4850 <button class="time-single calendarbutton2 btn steps-btn" data-time="${timeText}" ${timeEnabled ? '' : 'disabled'}>${timeText}<br/>${timeTime}</button> 4851 ` 4852 htmlTime.push(html) 4853 } 4854 const deliveryDate = document.getElementById("deliveryDate"); 4855 if(deliveryDate) { 4856 deliveryDate.insertAdjacentHTML("afterbegin", htmlDate.join('')) 4857 $("#deliveryTime").html(htmlTime) 4858 if(productType !== '') { 4859 console.log("clarity event " + productType + ' calendaring') 4860 window.clarity("event", `${productType} calendaringSchedule`) 4861 // window.clarity("set", productType, `calendaringSchedule - ${productDate}`) 4862 } 4863 } 4864 } 4865 4866 async function getProvince(city) { 4867 let { data: { province } } = await getFetch(`${host}/api/shipping/address/province?city=${city}`); 4868 console.log(province, 'province') 4869 $("#province").val(province) 4870 } 4871 4872 async function renderAddress() { 4873 let current 4874 if(getCookie("location_delivery")){ 4875 current = getCookie("location_delivery").charAt(0).toUpperCase() + getCookie("location_delivery").slice(1) 4876 } 4877 let address = await getFetch(`${host}/api/shipping/address?domain=${shop}&productId=8144957800663`); 4878 console.log(address) 4879 const data = address?.data?.city 4880 const htmlAddress = [] 4881 const grouping = []
4882 for(let i = 0;i < data?.length;i++) { 4883 if(data[i]){ 4884 if(data[i]?.group) { 4885 grouping.push(data[i].group) 4886 } 4887 const price = rupiah.format(data[i]?.rate) 4888 let promo = '(Promo Free Delivery)' 4889 if(data[i]?.name === 'Jakarta - PickUp ASHTA'){ 4890 promo = '(at SCBD, Ashta)' 4891 } else if(data[i]?.name === 'Jakarta - PickUp ITC'){ 4892 promo = '(at Kuningan, ITC Kuningan)' 4893 } else if(data[i]?.name === 'BSD - PickUp'){ 4894 promo = '(at Goldfinch Gading Serpong)' 4895 } else if(data[i]?.name === 'Kota Lainnya'){ 4896 promo = '' 4897 } 4898 htmlAddress.push(`<option data-province="${data[i]?.province}" data-city="${data[i]?.city}" data-note="${data[i]?.note}" data-price="${data[i]?.rate}" value="${data[i]?.name}">${data[i]?.name === 'Kota Lainnya' ? 'Seluruh Kota Lain di Indonesia' : data[i]?.name} ${data[i]?.rate > 0 ? `(${price})` : promo}</option>`) 4899 } 4900 } 4901 4902 const deliveryCity = document.getElementById("cities"); 4903 if(deliveryCity) { 4904 deliveryCity.insertAdjacentHTML("beforeend", htmlAddress.join('')) 4905 if(!isemo78) { 4906 $(deliveryCity).select2(); 4907 } 4908 } 4909 } 4910 4911 async function renderZip(v, v2, v3) { 4912 const deliveryZip = document.getElementById("zip"); 4913 if(v === '') { 4914 return 4915 } 4916 let dataZip = await getFetch(`${host}/api/shipping/address/zip?city=${v}&city2=${v2}&city3=${v3}`); 4917 let zip = dataZip?.data?.zip 4918 console.log(zip) 4919 let htmlZip = [] 4920 for(let i = 0; i < zip?.length;i++) { 4921 htmlZip.push(`<option value="${zip[i]?.postalCode} - ${zip[i]?.subdistrict}">${zip[i]?.postalCode} - ${zip[i]?.subdistrict} - ${zip[i]?.city}</option>`) 4922 } 4923 deliveryZip.insertAdjacentHTML("beforeend", htmlZip.join('')) 4924 } 4925 4926 renderDate() 4927 renderAddress() 4928 4929 let rupiah = new Intl.NumberFormat('id-ID', { 4930 style: 'currency', 4931 currency: 'IDR', 4932 maximumFractionDigits: 0, 4933 minimumFractionDigits: 0 4934 }); 4935 4936 async function insertCard(data) { 4937 const response = await fetch(`${host}/api/card/new`, { 4938 method: "POST", 4939 headers: { 4940 'Content-Type': 'application/json', 4941 }, 4942 body: data 4943 }) 4944 const result = await response.json() 4945 let rowIndex = result?.data?.tableRange.split("Outerbloom!A1:J")[1] 4946 $("#greetingCard").attr("data-index", rowIndex) 4947 return result 4948 } 4949 4950 async function updateCard(data){ 4951 const rowIndex = $("#greetingCard").data("index") 4952 const response = await fetch(`${host}/api/card/update?rowIndex=${rowIndex}`, { 4953 method: "PUT", 4954 headers: { 4955 'Content-Type': 'application/json', 4956 }, 4957 body: data 4958 }) 4959 return response 4960 } 4961 4962 function bytesToSize(bytes) { 4963 var sizes = ['b', 'kb', 'mb', 'gb', 'tb', 'p']; 4964 for (var i = 0; i < sizes.length; i++) { 4965 if (bytes <= 1024) { 4966 return bytes + ' ' + sizes[i]; 4967 } else { 4968 bytes = parseFloat(bytes / 1024).toFixed(2) 4969 } 4970 } 4971 return bytes + ' P'; 4972 } 4973 4974 async function uploadMedia(uri, type) { 4975 nameq = $("#properties-nama-penerima").val() 4976 dear = $("#properties-kartu-nama-penerima").val() 4977 card = $("[data-properties=ucapan]").val() 4978 sender = $("#properties-kartu-nama-pengirim").val() 4979 photo = $("#properties-photo").val() 4980 video = $("#properties-video").val() 4981 status = "Product" 4982 4983 const name = qrID 4984 let formData = new FormData(); 4985 formData.append("file", uri); 4986 const response = await fetch(`${host}/api/upload?name=${name}&type=${type}&r=${randomString(3, '0123456789')}`, { 4987 method: "POST", 4988 body: formData 4989 }) 4990 const result = await response.json(); 4991 if(result) { 4992 const url = result.url 4993 if(type === 'image/jpeg') { 4994 $("#properties-photo").val(url) 4995 $(".preview-image").show() 4996 $(".remove-image").show() 4997 photo = url 4998 } else { 4999 $("#properties-video").val(url) 5000 $("#label-input-video span").text("Change File") 5001 $(".case-qrcode-preview p").text("Scan here for a secret message") 5002 $(".remove-media").show() 5003 $("#product-top #product-meta .case-video-preview p").html(`<span class="replace-video" tite="Replace Video">${uri.name} (${bytesToSize(uri.size)})</span><span> is uploaded</span>`) 5004 $("[for=input-video]").hide() 5005 video = url 5006 } 5007 $(".case-video-preview").show() 5008 $(".steps-card-preview").removeClass("loading") 5009 // updateCard(nameq, dear, card, sender, photo, video, status) 5010 5011 $(".nextBtn").attr("disabled", false) 5012 } 5013 } 5014 5015 function randomString(length, chars) { 5016 var result = ''; 5017 for (var i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))]; 5018 return result; 5019 } 5020 5021 function getNoteCity(fulldate) { 5022 const h_1 = new Date(new Date().setDate(new Date().getDate() + 1)) 5023 const weekday = ["Min","Sen","Sel","Rab","Kam","Jum","Sab"]; 5024 const monthly = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]; 5025 const d = new Date(h_1); 5026 const day = weekday[d.getDay()]; 5027 const dt = d.getDate(); 5028 const mt = monthly[d.getMonth()]; 5029 const yr = d.getFullYear(); 5030 const p = $("#cities").parent(".form-group") 5031 } 5032 5033 function disabledSameDay() { 5034 let btnFirst = $("#deliveryDate").find("button:first-child") 5035 let getDay = new Date().getDay(); 5036 5037 5038 5039 if(getDay == 1 || getDay == 2 || getDay == 3 || getDay == 4 || getDay == 5){ 5040 if(hour >= 14.00){ 5041 btnFirst.attr("disabled", true) 5042 } 5043 } else if(getDay == 6){ 5044 if(hour >= 16.00){ 5045 btnFirst.attr("disabled", true) 5046 } 5047 } else if(getDay == 0){ 5048 if(hour >= 16.00){ 5049 btnFirst.attr("disabled", true) 5050 } 5051 } 5052 5053 5054 } 5055 5056 function disabledays(date) { 5057 let ymd = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate(); 5058 //if u have to disable a list of day 5059 let removeDays 5060 5061 5062 5063 removeDays = ["2025-2-13", "2025-2-14"]; 5064 5065 if ($.inArray(ymd, removeDays) >= 0) { 5066 return [false]; 5067 } else { 5068 let day = date.getDay(); 5069 if(day == 0 && date.getDate() == 13 && date.getMonth() == 1){ 5070 return [(day == 0), '']; 5071 } 5072 5073 if(day == 0){ 5074 return [(day == 0), '']; 5075 } 5076 5077 5078 return [(day != 0), '']; 5079 } 5080 } 5081 5082 /* Indonesian initialisation for the jQuery UI date picker plugin. */ 5083 /* Written by Deden Fathurahman ([email protected]). */ 5084 ( function( factory ) { 5085 if ( typeof define === "function" && define.amd ) { 5086 5087 // AMD. Register as an anonymous module. 5088 define( [ "../widgets/datepicker" ], factory ); 5089 } else { 5090 5091 // Browser globals 5092 factory( jQuery.datepicker ); 5093 } 5094 }( function( datepicker ) { 5095 5096 datepicker.regional.id = { 5097 closeText: "Tutup", 5098 prevText: "<mundur", 5099 nextText: "maju>", 5100 currentText: "Today", 5101 monthNames: [ "January","February","March","April","May","Juny", 5102 "July","August","September","October","November","December" ], 5103 monthNamesShort: [ "Jan","Feb","Mar","Apr","May","Jun", 5104 "Jul","Agu","Sep","Oct","Nov","Dec" ], 5105 dayNames: [ "Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu" ], 5106 dayNamesShort: [ "Sun","Mon","Tue","Wed","Thu","Fri","Sat" ], 5107 dayNamesMin: [ "Mg","Sn","Sl","Rb","Km","jm","Sb" ], 5108 weekHeader: "Mg", 5109 dateFormat: "D, dd M", 5110 firstDay: 0, 5111 isRTL: false, 5112 showMonthAfterYear: false, 5113 yearSuffix: "" }; 5114 datepicker.setDefaults( datepicker.regional.id ); 5115 5116 return datepicker.regional.id; 5117 5118 } ) ); 5119 5120 function loadPopup() { 5121 $("#backgroundPopup").fadeIn("slow"); 5122 $(".purchasePopup:not(.purchasePopupSpotify)").fadeIn("slow"); 5123 const firstSection = $(".purchasePopup:not(.purchasePopupSpotify) .sectionPurchase").first() 5124 if(firstSection.hasClass("purchasePersonalize")) { 5125 if(productType !== '') { 5126 console.log("clarity event " + productType + ' personalize') 5127 window.clarity("event", `${productType} cardPersonalization`) 5128 // window.clarity("set", productType, `cardPersonalization - ${productDate}`) 5129 } 5130 } else if (firstSection.hasClass("sectionPurchaseBoard")) { 5131 console.log("clarity event " + productType + ' personalizeBoard') 5132 window.clarity("event", `${productType} personalizeBoard`) 5133 // window.clarity("set", productType, `personalizeBoard - ${productDate}`) 5134 } 5135 firstSection.removeClass("hide") 5136 5137 // Auto-trigger addon loading when addon section becomes visible 5138 setTimeout(function() { 5139 const addonSection = $(".purchaseAddon") 5140 if(addonSection.length > 0 && !addonSection.hasClass("hide")) { 5141 if($("#itemAddons .row").children().length === 0 || $("#itemAddons .row").text().includes("No Item available")) { 5142 $("[data-addon=upsell-all]").trigger("click") 5143 } 5144 } 5145 }, 200) 5146 } 5147 5148 function disablePopup() { 5149 $("#backgroundPopup").fadeOut("slow"); 5150 $(".purchasePopup").fadeOut("slow"); 5151 $("#popupCart").fadeOut("slow"); 5152 } 5153
5154 function scrollTo(parent, div, dur) { 5155 $(parent).animate({ 5156 scrollTop: $(div).offset().top 5157 }, dur); 5158 } 5159 5160 function loadPopupPersonalize() { 5161 const div = "#purchaseProduct" 5162 const p = "html, body, .product-meta" 5163 $("p.error").remove() 5164 loadItemOccasion($("[data-occassion]").eq(0), "greeting-card-all") 5165 const isCity = $("#cities[required]") 5166 const isDate = $("#propDeliveryDate[required]") 5167 const isTime = $("#propDeliveryTime[required]") 5168 // loadPopup() 5169 if(isCity.val() !== '' && isDate.val() !== '' && isTime.val() !== '') { 5170 loadPopup() 5171 } 5172 if(isCity.val() == '') { 5173 isCity.parent(".row").append("<p class='error'>Choose delivery city</p>") 5174 scrollTo(p, div, 500) 5175 } 5176 if(isDate.val() == '') { 5177 isDate.parents(".row").append("<p class='error'>Choose delivery date</p>") 5178 scrollTo(p, div, 500) 5179 } 5180 if(isTime.val() == '') { 5181 isTime.parents(".row").append("<p class='error'>Choose delivery time</p>") 5182 scrollTo(p, div, 500) 5183 } 5184 } 5185 5186 function quantityCounter() { 5187 $(document).on("click", ".item-card.selected .q_up", function () { 5188 var C = $(this).attr("data-id"), 5189 S = 5190 parseInt( 5191 $(this) 5192 .siblings(".quantity-cart-" + C) 5193 .val() 5194 ) + 1; 5195 $(this).attr("data-quantity", S), 5196 $(this) 5197 .siblings(".quantity-cart-" + C) 5198 .val(S); 5199 }), 5200 $(document).on("click", ".item-card.selected .q_down", function () { 5201 var C = $(this).attr("data-id"), 5202 S = parseInt( 5203 $(this) 5204 .siblings(".quantity-cart-" + C) 5205 .val() 5206 ); 5207 0 < S && $(this).attr("data-quantity", S - 1), 5208 0 < S && 5209 $(this) 5210 .siblings(".quantity-cart-" + C) 5211 .val(S - 1); 5212 }); 5213 } 5214 5215 quantityCounter() 5216 5217 const itemAddon = $(".item-card").length 5218 const nofree = $(".nofree").length 5219 5220 const upsell = '' 5221 5222 if(nofree === itemAddon) { 5223 // $("#itemAddons").html("<p>No Items available</p>") 5224 } 5225 5226 $("#itemAddons .item-card").each(function(e){ 5227 $("#itemAddons").attr("data-length", e) 5228 }) 5229 5230 $("[data-addon]").click(function(){ 5231 5232 5233 5234 const t = $(this) 5235 5236 const data = t.data("addon") 5237 5238 $("[data-addon]").removeClass("selected") 5239 t.addClass("selected") 5240 $.get(`https://outerbloom.com/collections/${data}/products.json`, function(data, status){ 5241 const products = data.products 5242 const html = [] 5243 for(let i = 0; i < products.length; i++) { 5244 const id = products[i].id 5245 const variantId = products[i].variants[0].id 5246 const img = products[i].images[0].src 5247 let img2 = img.split('.jpg')[0] 5248 const title = products[i].title 5249 const price = products[i].variants[0].price 5250 const tags = products[i].tags 5251 const qty = products[i].variants[0].available 5252 let type_upsell = '' 5253 if(tags.includes('upsell-item-standing')) { 5254 type_upsell = 'standing' 5255 } 5256 console.log(type_upsell) 5257 if(type_upsell !== '') { 5258 const body = `<div class="item-card${price < 1 ? ' free' : ' nofree'} type-${products[i].product_type.toLowerCase()?.replace(' ', '_')}" data-variant="${variantId}" data-id=${id} data-qty="${qty === false ? 0 : ''}" data-upsell="${type_upsell}" data-tags="${tags}"> 5259 5260 <div class="card-image"> 5261 <img src="${img2}_150x.jpg" alt="${title}" width="" height="" /> 5262 </div> 5263 <div class="card-meta"> 5264 <h5>${title}</h5> 5265 <p>${price < 1 ? 'FREE' : rupiah.format(price)}</p> 5266 <input id="card-${variantId}" type="hidden" name="" value="${variantId}"> 5267 </div> 5268 <div class="card-qty"> 5269 <a data-quantity="1" type="submit" id="q_down-${variantId}" class="btn-qty-min q_down drawer-cart" data-id="${variantId}"><svg xmlns="image/logo-login-emo78.png" width="12" height="2" viewBox="0 0 12 2" fill="none"><path d="M0 1.90869V0.908691H12V1.90869H0Z" fill="black"/></svg></a> 5270 <input maxlength="3" min="0" class="btn-qty text-center quantity-cart-${variantId}
5270" value="0" data-price=${price} name="quantity"> 5271 <a data-quantity="1" type="submit" class="btn-qty-plus q_up text-green drawer-cart" data-id="${variantId}"><svg xmlns="image/logo-login-emo78.png" width="12" height="13" viewBox="0 0 12 13" fill="none"> 5272 <path d="M0 6.87023V5.94715H5.53846V0.408691H6.46154V5.94715H12V6.87023H6.46154V12.4087H5.53846V6.87023H0Z" fill="black"/> 5273 </svg></a> 5274 </div> 5275 </div>` 5276 html.push(body) 5277 } 5278 } 5279 $("#itemAddons .row").html(html.length === 0 ? '<p>No Item available</p>' : html) 5280 $("#itemAddons").attr("data-length", products.length) 5281 // $('#itemAddons')[0].swiper.update(); 5282 }); 5283 }) 5284 5285 async function isAddon(){ 5286 let ids = [] 5287 $("#itemAddons .item-card.selected").each(function(i, e){ 5288 const id = $(this).data("id") 5289 ids.push(id) 5290 }) 5291 console.log(ids) 5292 return ids 5293 } 5294 5295 $("#itemAddons").delegate(".item-card > div:not(.card-qty)", "click", async function(){ 5296 const t = $(this).parent() 5297 const id = t.data("id") 5298 const btn = t.parents(".purchaseAddon").find(".next-purchase-button") 5299 t.toggleClass("selected"); 5300 //$(this).next("input").toggleAttr('name', 'id[]'); 5301 if (t.hasClass('selected')) { 5302 t.find("input").val(1) 5303 t.find("input").attr('name', 'id[]'); 5304 } else { 5305 t.find("input").val(0) 5306 t.find("input").removeAttr('name'); 5307 } 5308 $("#properties-addons").val(addons) 5309 const is = await isAddon() 5310 if(is.length === 0) { 5311 btn.text("continue without add-ons") 5312 return 5313 } 5314 if(is.includes(8835692069079)) { 5315 btn.text("personalize acrylic frame") 5316 } else { 5317 btn.text("Continue") 5318 } 5319 5320 }) 5321 5322 async function myAddon(data) { 5323 const c = $(".addonsPurchase .addons") 5324 let items = [] 5325 5326 const spotifyAddons = $(".spotifyAddons").find("[data-index]") 5327 // if(spotifyAddons.length > 0) { 5328 // $(spotifyAddons).each(function(i, e){ 5329 // const spotifyLink = $(this).find(".spotifyLink").val() 5330 // const spotifySong = $(this).find(".spotifySong").val() 5331 // const spotifyArtist = $(this).find(".spotifyArtist").val() 5332 // const spotifyFotoAddon = $(this).find(".resultPhotoSpotify").val() 5333 // if(spotifyLink !== '') { 5334 // spotifyAddon = `<div class="addon-item" data-id="46067682607319" data-qty="1"> 5335 // <div class="addon-itm-img"> 5336 // <img src="https://cdn.shopify.com/s/files/1/1589/6833/files/Acrylic-Frame_8c71027d-43b7-4322-a98f-d34ab0456397_100x.jpg?v=1739160467" alt="" width="70"/> 5337 // </div> 5338 // <div class="addon-itm-title"> 5339 // <span>[US] Outerbloom Acrylic Frame 4R</span> 5340 // </div> 5341 // <div class="addon-itm-line-total"> 5342 // <span>Rp 99.000</span> 5343 // </div> 5344 // </div> 5345 // <div class="propsAddonSpotify row m-0"> 5346 // <div class="col-12 col-lg-2"></div> 5347 // <div class="col-12 col-lg-10"> 5348 // <p> 5349 // <span>spotify link</span> 5350 // <span class="spotifyLinkAddon">${spotifyLink}</span> 5351 // </p> 5352 // <p> 5353 // <span>uploaded photo</span> 5354 // <span class="spotifyFotoAddon">${spotifyFotoAddon}</span> 5355 // </p> 5356 // <p> 5357 // <span>song / playlist name</span> 5358 // <span class="spotifySongAddon">${spotifySong}</span> 5359 // </p> 5360 // <p> 5361 // <span>artist name</span> 5362 // <span class="spotifyArtistAddon">${spotifyArtist}</span> 5363 // </p> 5364 // </div> 5365 // </div>` 5366 // items.push(spotifyAddon) 5367 // } 5368 // }) 5369 // } 5370 for(let i = 0; i < data.length; i++) { 5371 if(data[i].title !== '[US] Outerbloom Acrylic Frame 4R' ) { 5372 const img = data[i].image 5373 const title = data[i].title
5374 const qty = data[i].qty 5375 const price = data[i].price 5376 const total = Number(qty) * Number(price) 5377 let addons = `<div class="addon-item" data-id="${data[i].id}" data-qty="${qty}"> 5378 <div class="addon-itm-img"> 5379 <img src="${img}" alt="" width="70"/> 5380 </div> 5381 <div class="addon-itm-title"> 5382 <span>${title}</span> 5383 </div> 5384 <div class="addon-itm-line-price"> 5385 <span>${rupiah.format(price)}</span> 5386 ${data[i].title == '[US] Outerbloom Acrylic Frame 4R' ? '' : `<span>x${qty}</span>`} 5387 </div> 5388 <div class="addon-itm-line-total"> 5389 <span>${rupiah.format(total)}</span> 5390 </div> 5391 </div>` 5392 items.push(addons) 5393 } 5394 } 5395 c.html(items) 5396 const parent = $(".purchaseAddon") 5397 const next = parent.next(".sectionPurchase") 5398 parent.addClass("hide") 5399 next.removeClass("hide") 5400 // if(items2.length === 0) return $("#popupCart").addClass("no-addon-cart") 5401 // $(".itemAddonCart").find("h4").text(`add-ons (${items2.length})`) 5402 } 5403 5404 async function listAddon() { 5405 const data = $("#itemAddons").find(".selected") 5406 let ids = [] 5407 $(data).each(function(){ 5408 const id = $(this).data("variant") 5409 const image = $(this).find(".card-image img").attr("src") 5410 const title = $(this).find(".card-meta h5").text() 5411 const qty = $(this).find(".card-qty input").val() 5412 const price = $(this).find(".card-qty input").data("price") 5413 ids.push({ 5414 id: Number(id), 5415 image, 5416 title, 5417 qty, 5418 price 5419 }) 5420 }) 5421 myAddon(ids) 5422 } 5423 5424 async function customSpotify(idx, length, type){ 5425 let isCard = false 5426 5427 let p = $(".purchasePopupSpotify") 5428 const preLink = $(".spotifyLinkFirst").val() 5429 $("[data-index]").hide() 5430 p.find(".headerPurchase h3").text(`personalize spotify photo print${length > 1 ? ` - ${idx}` : ''}`) 5431 p.find(".regulerAddons, .purchase-button").hide() 5432 p.find(".spotifyAddons").show() 5433 5434 const data = await trackUrl(preLink) 5435 5436 const html = `<div class="row" data-index=${idx} data-length=${length}><div class="col-12 col-lg-6"><div class="form-vertical position-relative"><div class="form-group mb-4"><h4>upload photo</h4><div class=uploadResult><label class=btn for=uploadPhotoSpotify><svg xmlns="image/logo-login-emo78.png" width="13" height="11" viewB
5436ox="0 0 13 11" fill="none"> 5437 <path d="M0.875 10.6378H12.375C12.4413 10.6378 12.5049 10.6115 12.5518 10.5646C12.5987 10.5177 12.625 10.4541 12.625 10.3878V0.387817C12.625 0.321513 12.5987 0.257925 12.5518 0.211041C12.5049 0.164157 12.4413 0.137817 12.375 0.137817H0.875C0.808696 0.137817 0.745107 0.164157 0.698223 0.211041C0.651339 0.257925 0.625 0.321513 0.625 0.387817V10.3878C0.625 10.4541 0.651339 10.5177 0.698223 10.5646C0.745107 10.6115 0.808696 10.6378 0.875 10.6378ZM1.125 10.1378V7.31882C1.136 7.31082 1.1485 7.30632 1.1585 7.29632L3.7165 4.73832C3.78198 4.67584 3.869 4.64098 3.9595 4.64098C4.05 4.64098 4.13702 4.67584 4.2025 4.73832L7.963 8.49882C8.00919 8.54501 8.07162 8.5713 8.13694 8.57204C8.20225 8.57279 8.26527 8.54794 8.3125 8.50282L10.2455 6.66682C10.3084 6.60323 10.3938 6.56684 10.4832 6.56543C10.5727 6.56403 10.6591 6.59774 10.724 6.65932L12.125 8.18532L12.1255 8.18582V10.1378H1.125ZM12.125 0.637817V7.44682L11.0845 6.31382C11.0066 6.23514 10.9138 6.17275 10.8116 6.13026C10.7094 6.08777 10.5997 6.06603 10.489 6.06632H10.4885C10.3786 6.06584 10.2697 6.08706 10.168 6.12876C10.0664 6.17046 9.97391 6.23182 9.896 6.30932L8.144 7.97332L4.556 4.38482C4.2365 4.06582 3.6815 4.06632 3.363 4.38482L1.125 6.62332V0.637817H12.125Z" fill="black"/> 5438 </svg><span>Upload your file</span></label></div><input class="uploadPhotoSpotify form-control d-none" accept=image/* type=file><input class="resultPhotoSpotify" type="hidden"></div><div class="form-group mb-5"><h4>Add your Spotify link here</h4> <input class="spotifyLink2 form-control spotifyLink" value="${preLink}" placeholder=https://open.spotify.com/ ></div><div class="form-group mb-4 text-left"><label class=checkbox for=isCustomMessage><span>Personalized Message</span><span class=checkmark></span></label></div><div class="form-group mb-4 form-personalize"><label class="text-left d-block mb-2 text-uppercase"for=spotifySong>Song / playlist name</label> ${data?.song ? `<input class="form-control spotifySong" value="${data?.song}">` : '<input class="form-control spotifySong" value="">'}</div><div class="form-group form-personalize"><label class="text-left d-block mb-2 text-uppercase"for=spotifyArtist>Artist name</label> ${data?.artist ? `<input class="form-control spotifyArtist" value="${data?.artist}">` : '<input class="form-control spotifyArtist" value="">'}</div><div class=btn-action><button class="back-spotify"><svg fill=none height=14 viewBox="0 0 15 14"width=15 xmlns=image/logo-login-emo78.png><path d="M14.5799 7.41992L2.32992 7.41992L7.57992 12.6699L6.91992 13.4199L0.419922 6.91992L6.91992 0.419922L7.57992 1.16992L2.32992 6.41992L14.5799 6.41992V7.41992Z"fill=black /></svg> <span>Back</span></button><button data-type="${isCard ? 'card' : ''}" ${isCard ? '' : 'id=addtocart-card'} class="text-uppercase btn w-100${type == 'addon' && idx == length ? ' finished' : ' no-addon'}" disabled>${isCard ? 'Continue Personalizing' : 'add to cart'}</button></div></div></div><div class="col-12 col-lg-6 columnRight"><div class=frame-spotify><div class=frameImage><div class=frameImageUploaded><svg xmlns="image/logo-login-emo78.png" width="13" height="11" viewB
5438ox="0 0 13 11" fill="none"> 5439 <path d="M0.875 10.6378H12.375C12.4413 10.6378 12.5049 10.6115 12.5518 10.5646C12.5987 10.5177 12.625 10.4541 12.625 10.3878V0.387817C12.625 0.321513 12.5987 0.257925 12.5518 0.211041C12.5049 0.164157 12.4413 0.137817 12.375 0.137817H0.875C0.808696 0.137817 0.745107 0.164157 0.698223 0.211041C0.651339 0.257925 0.625 0.321513 0.625 0.387817V10.3878C0.625 10.4541 0.651339 10.5177 0.698223 10.5646C0.745107 10.6115 0.808696 10.6378 0.875 10.6378ZM1.125 10.1378V7.31882C1.136 7.31082 1.1485 7.30632 1.1585 7.29632L3.7165 4.73832C3.78198 4.67584 3.869 4.64098 3.9595 4.64098C4.05 4.64098 4.13702 4.67584 4.2025 4.73832L7.963 8.49882C8.00919 8.54501 8.07162 8.5713 8.13694 8.57204C8.20225 8.57279 8.26527 8.54794 8.3125 8.50282L10.2455 6.66682C10.3084 6.60323 10.3938 6.56684 10.4832 6.56543C10.5727 6.56403 10.6591 6.59774 10.724 6.65932L12.125 8.18532L12.1255 8.18582V10.1378H1.125ZM12.125 0.637817V7.44682L11.0845 6.31382C11.0066 6.23514 10.9138 6.17275 10.8116 6.13026C10.7094 6.08777 10.5997 6.06603 10.489 6.06632H10.4885C10.3786 6.06584 10.2697 6.08706 10.168 6.12876C10.0664 6.17046 9.97391 6.23182 9.896 6.30932L8.144 7.97332L4.556 4.38482C4.2365 4.06582 3.6815 4.06632 3.363 4.38482L1.125 6.62332V0.637817H12.125Z" fill="black"/> 5440 </svg> <img src="" class=previewImage style=display:none></div></div><div class=frameControl><div class=spotifyData>${data?.song ? `<h3>${data?.song}</h3>` : '<h3><h3>'}${data?.artist ? `<p>${data?.artist}</p>` : '<p></p>'}</div><img src="//outerbloom.com/cdn/shop/t/138/assets/frame-spotify.png?v=138221849636560654691752652420"alt="spotify outerbloom" height=""width=100%><div class=spotifyCode><img src="https://scannables.scdn.co/uri/plain/png/FFFFFF/black/640/spotify:${data?.type.slice(0, -1)}:${data?.trackId}"alt=""></div></div></div></div></div>` 5441 // console.log(html) 5442 5443 $(".spotifyAddons").append(html) 5444 5445 $(`[data-index=${idx}]`).show() 5446 5447 if (preLink !== '') { 5448 $(".btn-action .btn").attr("disabled", false) 5449 } else { 5450 $(".btn-action .btn").attr("disabled", true) 5451 } 5452 5453 return html 5454 5455 } 5456 5457 $(".spotifyLinkFirst").keyup(async function(){ 5458 const v = $(this).val() 5459 if(v.includes('spotify:user:spotify')) { 5460 const correct = v.split('user:spotify:')[1] 5461 console.log(correct, 'BNER') 5462 $(this).val(correct) 5463 return 5464 } 5465 if(v.includes("spotify:") || v.includes("https://open.spotify.com/")){ 5466 const data = await trackUrl(v) 5467 if(!data || !data.status) { 5468 $(this).parent().addClass("error") 5469 // $(this).parent().append(`<p class="txt-error">Make sure you copy the complete and correct link from Spotify. Ex: https://open.spotify.com/track/0C3xZJueyBvvMSsl0cETA6</p>`) 5470 $("#personalizeBtnSpotify .btn").attr("disabled", true) 5471 return 5472 } 5473 $(this).parent().removeClass("error") 5474 // $(this).parent().remove("txt-error") 5475 $("#personalizeBtnSpotify .btn").attr("disabled", false) 5476 } else { 5477 $("#personalizeBtnSpotify .btn").attr("disabled", true) 5478 } 5479 }) 5480 5481 $(".purchaseAddon").delegate(".next-addon", "click", function(){ 5482 const parent = $(this).parents(".purchaseAddon") 5483 const next = parent.next(".sectionPurchase") 5484 if(next.hasClass("purchaseAddress")) { 5485 if(productType !== '') { 5486 console.log("clarity event " + productType + ' purchaseDelivery') 5487 window.clarity("event", `${productType} purchaseDelivery`) 5488 // window.clarity("set", productType, `purchaseDelivery - ${productDate}`) 5489 } 5490 } 5491 const data = $("#itemAddons").find(".selected") 5492 const length = $(".quantity-cart-46067682607319").val() 5493 const checked = data.length; 5494 if(checked > 0) { 5495 if(length > 0) { 5496 $(".purchaseAddon").addClass("purchaseAddonSpotify") 5497 customSpotify(1, length, 'addon') 5498 } else { 5499 listAddon() 5500 } 5501 } else { 5502 parent.addClass("hide") 5503 next.removeClass("hide") 5504 } 5505 }) 5506 5507 $("#personalizeBtnSpotify .btn").click(async function(){ 5508 const isCity = $("#cities[required]") 5509 const isDate = $("#propDeliveryDate[required]") 5510 if((isDate.length > 0 && isCity.length > 0) && (isCity.val() === '' || isDate.val() === '')) { 5511 alert('Please choose Delivery City & Delivery Date') 5512 return 5513 } 5514 const data = await customSpotify(1, 1, 'product') 5515 if(data) { 5516 $("#backgroundPopup").fadeIn("slow"); 5517 $(".purchasePopupSpotify").fadeIn("slow"); 5518 5519 if(productType !== '') { 5520 console.log("clarity event " + productType + ' spotify') 5521 window.clarity("event", `${productType} spotify`) 5522 // window.clarity("set", productType, `purchaseDelivery - ${productDate}`) 5523 } 5524 } 5525 }) 5526 5527 function formatBytes(bytes, decimals = 2) { 5528 if (!+bytes) return '0 Bytes' 5529
5530 const k = 1024 5531 const dm = decimals < 0 ? 0 : decimals 5532 const sizes = ['B', 'KB', 'MB'] 5533 5534 const i = Math.floor(Math.log(bytes) / Math.log(k)) 5535 5536 return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}` 5537 } 5538 5539 async function trackUrl(link){ 5540 try { 5541 let trackId = link.split('/').pop().split('?')[0]; 5542 let type = '' 5543 if(link.includes("spotify:")) { 5544 const uri = link.split('spotify:')[1] 5545 trackId = uri.split(':')[1] 5546 type = uri.split(':')[0] + 's' 5547 } else { 5548 if(link.match('track')){ 5549 type = 'tracks' 5550 } else if(link.match('playlist')) { 5551 type = 'playlists' 5552 } else if(link.match('artist')) { 5553 type = 'artists' 5554 } else if(link.match('album')) { 5555 type = 'albums' 5556 } 5557 } 5558 console.log(`${host}/api/spotify/${type}/${trackId}`) 5559 const data = await getFetch(`${host}/api/spotify/${type}/${trackId}`) 5560 console.log(data, 'DATA') 5561 const song = data?.data?.name 5562 const artist = data?.data?.artist 5563 return { 5564 song, artist, type, trackId, status: data.status 5565 } 5566 } catch(err) { 5567 console.log(err) 5568 } 5569 } 5570 5571 $(".spotifyAddons").delegate(".uploadPhotoSpotify", "change", async function(){ 5572 const parent = $(this).parents("[data-index]") 5573 const preview = parent.find(".previewImage") 5574 const file = $(this)[0].files[0]; 5575 if (file) { 5576 const reader = new FileReader(); 5577 reader.onload = async function(e) { 5578 parent.find(".uploadResult label").hide() 5579 parent.find(".uploadedResult").remove() 5580 parent.find(".uploadResult").append(`<div class="uploadedResult d-flex" style="justify-content: space-between"> 5581 <p style="text-align: left;margin: 0;"><span style="color: #34C759;font-style: italic;font-size: 14px;text-overflow: ellipsis;overflow: hidden;max-width: 250px;white-space: nowrap;display: inline-block;vertical-align: middle;">${file.name}</span><span style="font-size: 14px;color: #34C759"> (${formatBytes(file.size)})</span> <span style="font-size: 14px">is uploaded</span></p> 5582 <div style="align-self: center"><span class="changeUpload" style="font-size: 12px;cursor: pointer">Change</span><span class="removeUpload" style="cursor: pointer;border-left: 1px solid;padding-left: 10px;margin-left: 10px;height: 10px;display: inline-flex;vertical-align: middle;">
5582<svg fill="none" height="11" viewBox="0 0 10 11" width="10" xmlns="image/logo-login-emo78.png"> 5583 <path d="M2.07799 10.8332C1.78154 10.8332 1.52799 10.7276 1.31732 10.5165C1.10666 10.3054 1.0011 10.0523 1.00066 9.75716V1.49982H0.667322C0.572656 1.49982 0.493545 1.46782 0.429989 1.40382C0.366433 1.33982 0.334433 1.26049 0.333989 1.16582C0.333544 1.07116 0.365545 0.992047 0.429989 0.928491C0.494433 0.864935 0.573545 0.833158 0.667322 0.833158H3.00066C3.00066 0.69538 3.05177 0.57538 3.15399 0.473158C3.25621 0.370935 3.37621 0.319824 3.51399 0.319824H6.48732C6.6251 0.319824 6.7451 0.370935 6.84732 0.473158C6.94954 0.57538 7.00066 0.69538 7.00066 0.833158H9.33399C9.42866 0.833158 9.50777 0.865158 9.57132 0.929158C9.63488 0.993158 9.66688 1.07249 9.66732 1.16716C9.66777 1.26182 9.63577 1.34094 9.57132 1.40449C9.50688 1.46805 9.42777 1.49982 9.33399 1.49982H9.00066V9.75649C9.00066 10.0525 8.8951 10.3058 8.68399 10.5165C8.47288 10.7272 8.21954 10.8327 7.92399 10.8332H2.07799ZM8.33399 1.49982H1.66732V9.75649C1.66732 9.87605 1.70577 9.97427 1.78266 10.0512C1.85954 10.128 1.95799 10.1665 2.07799 10.1665H7.92399C8.04354 10.1665 8.14177 10.128 8.21866 10.0512C8.29554 9.97427 8.33399 9.87605 8.33399 9.75649V1.49982ZM3.87266 8.83316C3.96732 8.83316 4.04666 8.80116 4.11066 8.73716C4.17466 8.67316 4.20643 8.59405 4.20599 8.49982V3.16649C4.20599 3.07182 4.17399 2.99271 4.10999 2.92916C4.04599 2.8656 3.96666 2.8336 3.87199 2.83316C3.77732 2.83271 3.69821 2.86471 3.63466 2.92916C3.5711 2.9936 3.53932 3.07271 3.53932 3.16649V8.49982C3.53932 8.59449 3.57132 8.6736 3.63532 8.73716C3.69932 8.80116 3.77843 8.83316 3.87266 8.83316ZM6.12932 8.83316C6.22399 8.83316 6.3031 8.80116 6.36666 8.73716C6.43021 8.67316 6.46199 8.59405 6.46199 8.49982V3.16649C6.46199 3.07182 6.42999 2.99271 6.36599 2.92916C6.30199 2.86516 6.22288 2.83316 6.12866 2.83316C6.03399 2.83316 5.95466 2.86516 5.89066 2.92916C5.82666 2.99316 5.79488 3.07227 5.79532 3.16649V8.49982C5.79532 8.59449 5.82732 8.6736 5.89132 8.73716C5.95532 8.80071 6.03466 8.83271 6.12932 8.83316Z"fill=#757575 /> 5584 </svg> 5585 </span></div></div>`) 5586 parent.find(".frameImageUploaded svg").hide() 5587 parent.find(".frameImage").addClass("uploaded") 5588 preview.attr("src", e.target.result); 5589 preview.show(); 5590 let formData = new FormData(); 5591 formData.append("file", file); 5592 const response = await fetch(`${host}/api/upload?name=${file.name}&type=image/jpeg&r=${Date.parse(new Date)}`, { 5593 method: "POST", 5594 body: formData 5595 }) 5596 const result = await response.json(); 5597 if(result){ 5598 parent.find(".resultPhotoSpotify").val(result.url) 5599 } 5600 } 5601 5602 reader.readAsDataURL(file); 5603 } else { 5604 preview.hide(); 5605 } 5606 }); 5607 5608 $(".spotifyAddons").delegate(".uploadResult", "click", function(){ 5609 $(this).next("input[type=file]").trigger("click") 5610 }) 5611 5612 $(".spotifyAddons").delegate(".changeUpload", "click", function(){ 5613 $(this).parents("input[type=file]").trigger("click") 5614 }) 5615 5616 $(".spotifyAddons").delegate(".removeUpload", "click", function(){ 5617 const parent = $(this).parents("[data-index]") 5618 parent.find(".uploadPhotoSpotify").val("") 5619 parent.find(".uploadResult label").show() 5620 parent.find(".uploadedResult").remove() 5621 parent.find(".frameImageUploaded svg").show() 5622 parent.find(".previewImage").hide() 5623 parent.find(".frameImage").removeClass("uploaded") 5624 }) 5625 5626 $(".spotifyAddons").delegate("label.checkbox", "click", function(){ 5627 const parent = $(this).parents("[data-index]") 5628 parent.toggleClass("checked") 5629 }) 5630 5631 $(".spotifyAddons").delegate(".spotifyLink", "change", async function(){ 5632 const parent = $(this).parents("[data-index]") 5633 const link = $(this).val() 5634 const data = await trackUrl(link) 5635 5636 console.log(data) 5637 5638 if(data.song) { 5639 parent.find(".spotifySong").val(data.song) 5640 parent.find(".spotifyData").find("h3").text(data.song) 5641 } 5642 if(data.artist) { 5643 parent.find(".spotifyArtist").val(data.artist) 5644 parent.find(".spotifyData").find("p").text(data.artist) 5645 } 5646 parent.find(".spotifyCode img").attr("src", `https://scannables.scdn.co/uri/plain/png/FFFFFF/black/640/spotify:${data.type.slice(0, -1)}:${data.trackId}`) 5647 // https://scannables.scdn.co/uri/plain/png/FFFFFF/black/640/spotify:track:1er51HCEBhIAtoEemKuC3M 5648 if (data.status === true) { 5649 parent.find(".btn-action .btn").attr("disabled", false) 5650 } else { 5651 parent.find(".btn-action .btn").attr("disabled", true) 5652 } 5653 }) 5654
5655 $(".spotifyAddons").delegate(".spotifySong", "keyup", async function(){ 5656 const parent = $(this).parents("[data-index]") 5657 const v = $(this).val() 5658 parent.find(".spotifyData h3").text(v) 5659 }) 5660 5661 $(".spotifyAddons").delegate(".spotifyArtist", "keyup", async function(){ 5662 const parent = $(this).parents("[data-index]") 5663 const v = $(this).val() 5664 parent.find(".spotifyData p").text(v) 5665 }) 5666 5667 $(".spotifyAddons").delegate(".btn-action .btn:not(.no-addon)", "click", async function(){ 5668 const parent = $(this).parents("[data-index]") 5669 const length = parent.data("length") 5670 const index = parent.data("index") 5671 const indexNext = Number(index) + 1 5672 customSpotify(indexNext, length, 'addon') 5673 }) 5674 5675 5676 $(".spotifyAddons").delegate(".btn-action .btn.finished", "click", async function(){ 5677 const parent = $(this).parents(".purchaseAddon") 5678 const next = parent.next(".sectionPurchase") 5679 parent.addClass("hide") 5680 next.removeClass("hide") 5681 next.find(".purchase-button").show() 5682 listAddon() 5683 }) 5684 5685 $(".spotifyAddons").delegate(".back-spotify", "click", async function(){ 5686 const t = $(this).parents("[data-index]") 5687 const parent = $(this).parents(".sectionPurchase") 5688 const current = t.data("index") 5689 const prevCurrent = Number(current) - 1 5690 if(current == 1) { 5691 parent.removeClass("purchaseAddonSpotify") 5692 parent.find(".purchase-button").show() 5693 parent.find(".headerPurchase h3").text("Make It More Special with Add-Ons!") 5694 $(".spotifyAddons").empty() 5695 $(".regulerAddons").show() 5696 return 5697 } 5698 t.hide() 5699 t.prev("[data-index]").show() 5700 t.remove() 5701 parent.find(".headerPurchase h3").text(`personalize spotify photo print - ${prevCurrent}`) 5702 }) 5703 5704 $("#personalizeBtn .btn").click(async function() { 5705 loadPopupPersonalize() 5706 }); 5707 5708 $(".sectionPurchaseSpotify").delegate(".btn[data-type=card]", "click", function(){ 5709 $(".sectionPurchaseSpotify").hide() 5710 loadPopupPersonalize() 5711 }) 5712 5713 $(".close-purchase-popup").click(function() { 5714 disablePopup(); 5715 }); 5716 $("#backgroundPopup").click(function() { 5717 // disablePopup(); 5718 }); 5719 5720 $("#popupCart .close-purchase-popup").click(function() { 5721 location.reload() 5722 }); 5723 5724 $('#popupCart').on('hide.bs.modal', function (e) { 5725 location.reload() 5726 }) 5727 5728 $(".next-card").click(function(){ 5729 const parent = $(this).parents(".sectionPurchase") 5730 const next = parent.next(".sectionPurchase") 5731 parent.addClass("hide") 5732 next.removeClass("hide") 5733 }) 5734 5735 $(".back-purchase-button").click(function(){ 5736 const parent = $(this).parents(".sectionPurchase") 5737 const prev = parent.prev(".sectionPurchase") 5738 parent.addClass("hide") 5739 prev.removeClass("hide") 5740 }) 5741 5742 $(document).keypress(function(e) { 5743 if (e.keyCode == 27 && popupStatus == 1) { 5744 disablePopup(); 5745 } 5746 }); 5747 5748 const parentImg = $(".case-img-preview") 5749 const parentVid = $(".case-video-preview") 5750 5751 function readURL(input) { 5752 if (input.files && input.files[0]) { 5753 let reader = new FileReader(); 5754 5755 let type = 'image/jpeg' 5756 const size = input.files[0].size 5757 if(input.files[0].type.match('video/')){ 5758 type = 'video/mp4' 5759 if(size > 15728640) { 5760 alert('File size exceeds maximum limit 15 MB') 5761 return 5762 } 5763 } else { 5764 if(size > 5242880) { 5765 alert('File size exceeds maximum limit 5 MB') 5766 return 5767 } 5768 } 5769 5770 reader.onload = function (e) { 5771 $(".nextBtn").attr("disabled", true) 5772 if(type === 'image/jpeg') { 5773 5774 $('.placeholder-image').hide(); 5775 $('.preview-image').show() 5776 $('.preview-image').attr('src', e.target.result); 5777 5778 } else { 5779 // parentVid.find(".ajax-loader").show(); 5780 $(".steps-card-preview").addClass("loading") 5781 } 5782 } 5783 5784 5785 5786 reader.readAsDataURL(input.files[0]); 5787 } 5788 } 5789 5790 async function readURLPapan(input) { 5791 if (input.files && input.files[0]) { 5792 let reader = new FileReader(); 5793 5794 reader.onload = function (e) { 5795 $('.btn-upload-papan').siblings('label').hide(); 5796 $('.btn-upload-papan img').attr('src', e.target.result); 5797 $('.btn-upload-papan img').show(); 5798 $('.svgLogoPapan').hide(); 5799 } 5800 5801 const type = 'image/jpeg' 5802 const name = `logo-8144957800663-${Date.parse(new Date())}` 5803 5804 let formData = new FormData(); 5805 formData.append("file", input.files[0]); 5806 const response = await fetch(`${host}/api/upload?name=${name}&type=${type}&r=${randomString(3, '0123456789')}`, { 5807 method: "POST", 5808 body: formData 5809 }) 5810 const result = await response.json(); 5811 if(result) { 5812 const url = result.url 5813 $("[data-properties=papan-logo]").val(url) 5814 } 5815
5816 reader.readAsDataURL(input.files[0]); 5817 } 5818 } 5819 5820 async function readURLAddress(input) { 5821 console.log(input, 'readURLAddress') 5822 if (input.files && input.files[0]) { 5823 let reader = new FileReader(); 5824 5825 reader.onload = function (e) { 5826 $('.photo-address').attr('src', e.target.result); 5827 $('.photo-address').show(); 5828 } 5829 5830 const type = 'image/jpeg' 5831 const name = input.files[0].name?.split('.')[0] 5832 5833 let formData = new FormData(); 5834 formData.append("file", input.files[0]); 5835 const response = await fetch(`${host}/api/upload?name=${name}&type=${type}&r=${randomString(3, '0123456789')}`, { 5836 method: "POST", 5837 body: formData 5838 }) 5839 const result = await response.json(); 5840 5841 reader.readAsDataURL(input.files[0]); 5842 5843 return result 5844 } 5845 } 5846 5847 5848 5849 5850 async function addToCartUang() { 5851 var productAddOnId1 = 42122101162199; 5852 var productAddOnId2 = 42122101194967; 5853 var product_id = 8144957800663 5854 const data = { 5855 items: [ 5856 { 5857 quantity: $("#Quantity-" + productAddOnId1).val(), 5858 id: productAddOnId1, 5859 "properties": { "Time": $("#properties-time").val() } 5860 }, 5861 { 5862 quantity: $("#Quantity-" + productAddOnId2).val(), 5863 id: productAddOnId2, 5864 "properties": { "Time": $("#properties-time").val() } 5865 } 5866 ] 5867 } 5868 await fetch(window.Shopify.routes.root + 'cart/add.js', { 5869 method: 'POST', 5870 headers: { 5871 'Content-Type': 'application/json' 5872 }, 5873 body: JSON.stringify(data) 5874 }) 5875 .then(response => { 5876 console.error('Sukses Buket Uang:', response); 5877 $(".form-flower").submit() 5878 }) 5879 .catch((error) => { 5880 console.error('Error Buket Uang:', error); 5881 $(".form-flower").submit() 5882 }); 5883 } 5884 5885 async function saveCard(){ 5886 let isCard = true 5887 const kartu_penerima = $("[data-properties=penerima]").val() !== '' ? $("[data-properties=penerima]").val() : '' 5888 const kartu_pengirim = $("[data-properties=pengirim]").val() !== '' ? $("[data-properties=pengirim]").val() : '' 5889 const kartu_ucapan = $("[data-properties=ucapan]").val() !== '' ? $("[data-properties=ucapan]").val() : '' 5890 const foto = $("#properties-photo").val() 5891 const video = $("#properties-video").val() 5892 const data = JSON.stringify({ 5893 "id": qrID, 5894 "penerima": $("#properties-nama-penerima").val(), 5895 "kartu_penerima": kartu_penerima, 5896 "kartu_ucapan": kartu_ucapan, 5897 "kartu_pengirim": kartu_pengirim, 5898 "foto": foto, 5899 "video": video, 5900 "productId": "8144957800663", 5901 "order_name": "", 5902 "status": "Cart" 5903 }) 5904 5905 5906 } 5907 5908 async function additem(items){ 5909 try { 5910 let formData = items 5911 if(items?.length) { 5912 formData = { 5913 'items': items 5914 }; 5915 } 5916 5917 const add = await fetch(window.Shopify.routes.root + 'cart/add.js', { 5918 method: 'POST', 5919 headers: { 5920 'Content-Type': 'application/json', 5921 'X-Requested-With':'xmlhttprequest' /* XMLHttpRequest is ok too, it's case insensitive */ 5922 }, 5923 body: JSON.stringify(formData) 5924 }) 5925 5926 const data = await add.json(); 5927 return data 5928 } catch(err){ 5929 console.log('Error additem', err) 5930 } 5931 } 5932 5933 async function addons(){ 5934 let items = [] 5935 $(".addon-item").each(function(){ 5936 const p = $(this) 5937 const props = p.next(".propsAddonSpotify") 5938 const id = $(this).data("id") 5939 const quantity = $(this).data("qty") 5940 const propId = $("#properties-time").val() 5941 let properties = {} 5942 if(id === 46067682607319) { 5943 const link = props.find(".spotifyLinkAddon").text() 5944 const photo = props.find(".spotifyFotoAddon").text() 5945 const song = props.find(".spotifySongAddon").text() 5946 const artist = props.find(".spotifyArtistAddon").text() 5947 properties = { 5948 id: propId, 5949 "Spotify Link": link !== '' ? link : '-', 5950 "Spotify Photo": photo !== '' ? photo : '-', 5951 "Spotify Song": song !== '' ? song : '-', 5952 "Spotify Artist": artist !== '' ? artist : '-', 5953 type: 'addon' 5954 } 5955 } else { 5956 properties = { 5957 "id": propId, 5958 "type": "addon" 5959 } 5960 } 5961 items.push({ 5962 id, 5963 quantity, 5964 properties 5965 }) 5966 }) 5967 return items 5968 } 5969 5970 async function propItems() { 5971 let props = {} 5972 $("[data-properties]").each(function(e){ 5973 let elementType = this.tagName;
5974 const k = $(this).data("properties") 5975 if(k !== 'penerima' && k !== 'ucapan' && k !== 'pengirim' && k !== 'nama-penerima' && k !== 'alamat-penerima' && k !== 'telepon-penerima' && k !== 'company' && k !== 'province' && k !== 'foto-alamat' && k !== 'papan-logo') { 5976 const v = elementType === 'SELECT' ? $(this).find(":selected").val() : $(this).val(); 5977 if(v !== '') { 5978 props[k] = v?.replace(/[\s\n]/g, ''); 5979 } 5980 } 5981 }) 5982 return props 5983 } 5984 5985 async function showPopupCart(items){ 5986 if(productType !== '') { 5987 console.log("clarity event " + productType + ' completeOrder') 5988 window.clarity("event", `${productType} completeOrder`) 5989 // window.clarity("set", productType, `completeOrder - ${productDate}`) 5990 } 5991 $("#popupCart").show() 5992 5993 $(".propDeliveryCity").text($("#cities").val()) 5994 $(".propDeliveryDate").text($("#propDeliveryDate").val()) 5995 $(".propDeliveryTime").text($("#propDeliveryTime").val()) 5996 $(".propDeliveryName").text($("[data-properties=nama-penerima]").val()) 5997 $(".propDeliveryAddress").text($("[data-properties=alamat-penerima]").val()) 5998 $(".propDeliveryPhone").text($("[data-properties=telepon-penerima]").val()) 5999 $(".propDeliveryProv").text($("#province").val()) 6000 $(".propDeliveryZip").text($("#zip").val()) 6001 6002 6003 6004 const addons = [] 6005 if(items && items.length > 0) { 6006 for(let i = 1; i < items.length; i++) { 6007 const spotifyLink = items[i].properties['Spotify Link'] 6008 const spotifyPhoto = items[i].properties['Spotify Photo'] 6009 const spotifySong = items[i].properties['Spotify Song'] 6010 const spotifyArtist = items[i].properties['Spotify Artist'] 6011 const price = items[i].price / 100 6012 const props = spotifyLink ? `<div class="propsAddonCart row m-0"> 6013 <div class="col-12 col-lg-2"></div> 6014 <div class="col-12 col-lg-10"> 6015 <p> 6016 <span>spotify link</span> 6017 <span>${spotifyLink}</span> 6018 </p> 6019 <p> 6020 <span>Upload Photo</span> 6021 <span>${spotifyPhoto}</span> 6022 </p> 6023 <p> 6024 <span>song / playlist name</span> 6025 <span>${spotifySong}</span> 6026 </p> 6027 <p> 6028 <span>artist name</span> 6029 <span>${spotifyArtist}</span> 6030 </p> 6031 </div> 6032 </div>` : ''; 6033 addons.push(`<div class="row m-0"> 6034 <div class="imgAddonCart col-2"> 6035 <img 6036 width="43" 6037 src="${items[i].image}" 6038 alt="" 6039 > 6040 </div> 6041 <div class="imgAddonTitlePrice col-10 align-self-center"> 6042 <div class="row justify-content-between m-0"> 6043 <div class="col-12 col-lg-8"> 6044 <h5>${items[i].title}</h5> 6045 </div> 6046 <div class="col-12 col-lg-4 text-lg-right"> 6047 <span>${rupiah.format(price)}</span> 6048 </div> 6049 </div> 6050 </div> 6051 </div>${props}`) 6052 } 6053 } 6054 // console.log(addons) 6055 if(addons.length === 0) { 6056 $(".itemAddonCart").hide() 6057 return 6058 } 6059 $(".toggleAddonCart h4").text(`add-ons (${items.length - 1})`) 6060 $(".wrapperItemAddonCart").html(addons) 6061 } 6062 6063 const money = (money) => { 6064 return new Intl.NumberFormat('id-ID', 6065 { style: 'currency', currency: 'IDR', minimumFractionDigits: 0 } 6066 ).format(money); 6067 } 6068 6069 async function showNoteMoney() { 6070 let qty50k = $("[data-properties='Uang 50k']").val() 6071 let qty100k = $("[data-properties='Uang 100k']").val() 6072 const total50k = Number(qty50k) * 50000 6073 const total100k = Number(qty100k) * 100000 6074 const total_all = total50k + total100k 6075 $(".prop50k").html(`<span>${qty50k} Lembar: <strong class="pl-1">${money(total50k)}</strong></span>`) 6076 $(".prop100k").html(`<span>${qty100k} Lembar: <strong class="pl-1">${money(total100k)}</strong></span>`) 6077 $(".itemMoney").html(`<p>For the money arrangement, please transfer <strong>IDR ${money(total_all)}</strong> to <strong>Bank Mandiri 1020001234522 (PT Modern Mekar Abadi)</strong> and contact our <a href="https://ya.emo78-jago.store/" target="_blank" style="text-decoration: underline;
6077 color: #8d3f2d">Customer Service</a> to confirm with proof of payment.</p>`) 6078 } 6079 6080 async function removeImage() { 6081 const data = JSON.stringify({ 6082 "ID": $("#properties-properties-qrId").val(), 6083 "Kartu Nama Penerima": $("#properties-kartu-nama-penerima").val(), 6084 "Kartu Nama Pengirim": $("#properties-kartu-nama-pengirim").val(), 6085 "Kartu Ucapan": $("[data-properties=ucapan]").val(), 6086 "Nama Penerima": $("#properties-nama-penerima").val(), 6087 "Order Number":"", 6088 "Status":"Product", 6089 "Foto": "", 6090 "Media": $("#properties-video").val(), 6091 "Image": "8144957800663" 6092 }) 6093 const remove = updateCard(data) 6094 if(remove) { 6095 $(this).hide() 6096 $("#properties-photo").val("-") 6097 $(".placeholder-image").show() 6098 $(".preview-image").attr("src", "") 6099 } 6100 } 6101 6102 async function removeVideo() { 6103 const data = JSON.stringify({ 6104 "ID": $("#properties-properties-qrId").val(), 6105 "Kartu Nama Penerima": $("#properties-kartu-nama-penerima").val(), 6106 "Kartu Nama Pengirim": $("#properties-kartu-nama-pengirim").val(), 6107 "Kartu Ucapan": $("[data-properties=ucapan]").val(), 6108 "Nama Penerima": $("#properties-nama-penerima").val(), 6109 "Order Number":"", 6110 "Status":"Product", 6111 "Foto": $("#properties-photo").val(), 6112 "Media": "", 6113 "Image": "8144957800663" 6114 }) 6115 const remove = updateCard(data) 6116 if(remove) { 6117 $("#properties-video").val("-") 6118 $(this).find("img").hide() 6119 $(this).hide() 6120 $(this).prev("p").text("Add video to make it more special (optional)") 6121 $("#label-input-video").show() 6122 $("#label-input-video span").text("Upload Video") 6123 $(".case-video-preview p span").remove() 6124 } 6125 } 6126 6127 async function loadItemOccasion(t, occasion) { 6128 const name = occasion?.replace('greeting-card-', '') 6129 $("#kartu-ucapan").val("") 6130 $("[data-occassion]").removeClass("selected") 6131 $("[data-properties=ucapan]").val("") 6132 $("#save-card").attr("disabled", true) 6133 t.addClass("selected") 6134 $("#show_note").attr("data-card-occassion", name) 6135 $.get(`https://outerbloom.com/collections/${occasion}/products.json`, function(data, status){ 6136 const products = data.products 6137 const html = [] 6138 for(let i = 0; i < products.length; i++) { 6139 const id = products[i].id 6140 const variantId = products[i].variants[0].id 6141 const img = products[i].images[0].src 6142 const title = products[i].title 6143 const price = products[i].variants[0].price 6144 const qty = products[i].variants[0].inventory_quantity 6145 const body = `<div class="item-card${price < 1 ? ' free' : ' nofree'}${i === 0 ? ' selected' : ''}" data-id=${id}> 6146 <label for="card-${variantId}"></label> 6147 <div class="card-image"> 6148 <img src="${img}" alt="${title}" width="" height="" /> 6149 </div> 6150 <div class="card-meta text-center"> 6151 <h5>${title}</h5> 6152 <p>${price < 1 ? 'FREE' : rupiah.format(price)}</p> 6153 <input id="card-${variantId}" type="radio" name="id" value="${variantId}" data-price="${price}"> 6154 </div> 6155 </div>` 6156 html.push(body) 6157 } 6158 const withoutCard = `<div class="item-card item-without-card"> 6159 <label for="card-0"></label> 6160 <div class="card-image"> 6161 <img src="https://cdn.shopify.com/s/files/1/1589/6833/t/129/assets/without-card.png?v=1747632283" alt="Without card" width="" height="" /> 6162 </div> 6163 <div class="card-meta text-center"> 6164 <h5>
6164Send without a greeting card</h5> 6165 <input id="card-0" type="radio" name="id" value="" data-price=""> 6166 </div> 6167 </div>` 6168 $("#itemCards .items-card").html(html.length === 0 ? '<p>No Item available</p>' : html.join("")) 6169 }); 6170 } 6171 6172 $(document).ready(function(){ 6173 6174 // Observer to auto-trigger addon loading when addon section becomes visible 6175 const addonObserver = new MutationObserver(function(mutations) { 6176 mutations.forEach(function(mutation) { 6177 const target = $(mutation.target) 6178 if(target.hasClass('purchaseAddon') && mutation.type === 'attributes' && mutation.attributeName === 'class') { 6179 if(!target.hasClass('hide')) { 6180 // Addon section just became visible, ensure items are loaded 6181 setTimeout(function() { 6182 if($("#itemAddons .row").children().length === 0 || $("#itemAddons .row").text().includes("No Item available")) { 6183 console.log("Auto-triggering addon load...") 6184 $("[data-addon=upsell-all]").trigger("click") 6185 } 6186 }, 150) 6187 } 6188 } 6189 }) 6190 }) 6191 6192 // Start observing addon section 6193 const addonSection = document.querySelector('.purchaseAddon') 6194 if(addonSection) { 6195 addonObserver.observe(addonSection, { 6196 attributes: true, 6197 attributeFilter: ['class'] 6198 }) 6199 } 6200 6201 $(".purchasePopup").delegate("#addtocart-card", "click", async function(){ 6202 6203 $(this).find("span").addClass("loading") 6204 let isValid = true 6205 $(".formAddressPurchase [required]").each(function(){ 6206 const t = $(this) 6207 const input = t.val() 6208 const p = t.parent() 6209 if(input === '') { 6210 p.addClass("error") 6211 isValid = false 6212 } 6213 }) 6214 6215 if(!isValid) { 6216 $(this).find("span").removeClass("loading") 6217 return 6218 } 6219 6220 let items = [] 6221 const mainProps = { 6222 6223 "Delivery Date": $("#propDeliveryDate").val(), 6224 "Delivery Time": $("#propDeliveryTime").val() !== '' ? $("#propDeliveryTime").val() : '-' , 6225 "Kota Pengiriman": $("#cities").val(), 6226 "Nama Penerima": $("[data-properties=nama-penerima]").val() !== '' ? $("[data-properties=nama-penerima]").val() : '-' , 6227 "Alamat Penerima": $("[data-properties=alamat-penerima]").val() !== '' ? $("[data-properties=alamat-penerima]").val() : '-' , 6228 "Kodepos": $("#zip").val() !== '' ? $("#zip").val() : '-' , 6229 "Telepon Penerima": $("[data-properties=telepon-penerima").val() !== '' ? $("[data-properties=telepon-penerima").val() : '-' , 6230 6231 6232 "Papan Nama Penerima": $("[data-properties=penerima]").val() !== '' ? $("[data-properties=penerima]").val() : '-' , 6233 "Papan Ucapan": $("[data-properties=ucapan]").val() !== '' ? $("[data-properties=ucapan]").val() : '-' , 6234 "Papan Nama Pengirim": $("[data-properties=pengirim]").val() !== '' ? $("[data-properties=pengirim]").val() : '-' , 6235 "Papan Logo": $("[data-properties=papan-logo]").val() !== '' ? $("[data-properties=papan-logo]").val() : '-' , 6236 "Foto Alamat": $("[data-properties=foto-alamat]").val() !== '' ? $("[data-properties=foto-alamat]").val() : '-' , 6237 6238 6239 "Province": $("#province").val() !== '' ? $("#province").val() : '-' , 6240 "Country": $("#properties-kota-pengiriman-country").val() !== '' ? $("#properties-kota-pengiriman-country").val() : '-' , 6241 "Shipping": $("#properties-shipping").val() !== '' ? $("#properties-shipping").val() : '-' , 6242 "Company": $("[data-properties=company]").val() !== '' ? $("[data-properties=company]").val() : '-' , 6243 "id": $("#properties-time").val() !== '' ? $("#properties-time").val() : '-', 6244 "type": 'product' 6245 } 6246 const props = await propItems() 6247 properties = {...mainProps, ...props }; 6248 const id = $("#productSelect").find('option:selected').val() 6249 console.log(id, 'main ID') 6250 const mainItem = { 6251 id: Number(id), 6252 quantity: 1, 6253 properties 6254 } 6255 items.push(mainItem) 6256 const cardId = $("#itemCards").find(".selected input").val() 6257 const cardItem = { 6258 id: Number(cardId), 6259 quantity: 1, 6260 properties: { "id": $("#properties-time").val() !== '' ? $("#properties-time").val() : '-', type: 'card' } 6261 } 6262 console.log(cardId, 'cardId') 6263 if(cardId) { 6264 items.push(cardItem) 6265 } 6266 const addon = await addons() 6267 if(addon) { 6268 for(let i = 0;
6268 i < addon.length; i++){ 6269 items.push({ 6270 id: addon[i].id, 6271 quantity: addon[i].quantity, 6272 properties: addon[i].properties 6273 }) 6274 } 6275 } 6276 const addItems = await additem(items) 6277 console.log(addItems.items, 'add items') 6278 if(addItems) { 6279 $(this).find("span").removeClass("loading") 6280 disablePopup() 6281 showPopupCart(addItems.items) 6282 6283 localStorage.setItem("items", JSON.stringify(addItems.items)) 6284 } 6285 }) 6286 6287 $("#addtocart-cart .btn").click(async function(){ 6288 const id = $("#productSelect").find('option:selected').val() 6289 const mainProps = { 6290 id: $("#properties-time").val() !== '' ? $("#properties-time").val() : '-', 6291 type: 'product' 6292 } 6293 const props = await propItems() 6294 const properties = { ...mainProps, ...props }; 6295 const items = { 6296 id: Number(id), 6297 quantity: 1, 6298 properties 6299 } 6300 const addItems = await additem(items) 6301 if(addItems) { 6302 showPopupCart(addItems.items) 6303 localStorage.setItem("items", JSON.stringify(addItems)) 6304 } 6305 }) 6306 6307 $(".formAddressPurchase [required]").change(function(){ 6308 const t = $(this) 6309 const p = t.parent() 6310 const v = t.val() 6311 if(v !== '') { 6312 p.removeClass("error") 6313 } 6314 }) 6315 6316 $("#save-card").click(async function(){ 6317 const parent = $(this).parents(".sectionPurchase") 6318 const next = parent.next(".sectionPurchase") 6319 $(this).find("span").addClass("loading") 6320 const card = await saveCard() 6321 console.log(card, 'ssaveCCC') 6322 if(card?.status === 200 || card?.status === 201) { 6323 $(".scanCard").removeClass("hide") 6324 $(this).find("span").removeClass("loading") 6325 parent.addClass("hide") 6326 next.removeClass("hide") 6327 if(next.hasClass("purchaseAddon")) { 6328 $("[data-addon=upsell-all]").click() 6329 console.log("clarity event addons") 6330 window.clarity("event", `${productType} add-ons`) 6331 // Ensure addon items are loaded when entering addon popup 6332 setTimeout(function() { 6333 if($("#itemAddons .row").children().length === 0 || $("#itemAddons .row").text().includes("No Item available")) { 6334 $("[data-addon=upsell-all]").trigger("click") 6335 } 6336 }, 100) 6337 } 6338 if(next.hasClass("purchaseAddress")) { 6339 $("#zip").select2() 6340 } 6341 } 6342 }) 6343 6344 $("#skip-card").click(async function(){ 6345 $("#greetingCard [data-properties]").val("") 6346 $("#properties-photo").val("") 6347 $("#properties-video").val("") 6348 const parent = $(this).parents(".sectionPurchase") 6349 const next = parent.next(".sectionPurchase") 6350 parent.addClass("hide") 6351 next.removeClass("hide") 6352 // $("#itemCards").html("") 6353 removeImage() 6354 removeVideo() 6355 if(next.hasClass("purchaseAddon")) { 6356 $("[data-addon='upsell-all']").click() 6357 console.log("clarity event addons") 6358 window.clarity("event", `${productType} add-ons`) 6359 // Ensure addon items are loaded when entering addon popup 6360 setTimeout(function() { 6361 if($("#itemAddons .row").children().length === 0 || $("#itemAddons .row").text().includes("No Item available")) { 6362 $("[data-addon='upsell-all']").trigger("click") 6363 } 6364 }, 100) 6365 } 6366 if(next.hasClass("purchaseAddress")) { 6367 $("#zip").select2() 6368 } 6369 }) 6370 6371 $("#msgCard").click(async function(){ 6372 $(this).parent().addClass("loading") 6373 let occasion = $(".selected[data-occassion]").data("occassion") 6374 occasion = occasion?.replace("greeting-card-", "") 6375 const { data } = await getFetch(`${host}/api/card/template/occasion?name=${occasion}`); 6376 const d = data?.data 6377 for(let i = 0; i < d.length; i++) { 6378 const num = Math.floor(Math.random() * (d.length - 1 + 1) + 1); 6379 const greeting = d[num]?.Greeting 6380 $(".greetingCard textarea").val(greeting) 6381 $(this).parent().removeClass("loading") 6382 } 6383 $("#save-card").attr("disabled", false) 6384 }) 6385 6386 $(".sectionPurchaseBoard .next-purchase-button").click(function(){ 6387 const parent = $(this).parents(".sectionPurchase") 6388 const next = parent.next(".sectionPurchase") 6389 parent.addClass("hide") 6390 next.removeClass("hide") 6391 }) 6392 6393 $("#editCard").click(function(){ 6394 $(".custom-card").show() 6395 $(".preview-card").hide() 6396 }) 6397 6398 $("#first_name, #last_name").change(function(){ 6399 const v = $(this).val() 6400 const first_name = $("#first_name").val() 6401 const last_name = $("#last_name").val() !== '' ? ' ' + $("#last_name").val() : '' 6402 $("[data-properties=nama-penerima]").val(first_name+last_name) 6403 }) 6404 6405 $("[data-occassion]").click(function(){ 6406 const t = $(this) 6407 const p = t.parents(".sectionPurchase") 6408 // $(".greetingCard").addClass("disabled") 6409 const occasion = t.data("occassion") 6410 loadItemOccasion(t, occasion) 6411 }) 6412 6413 $("#itemCards").delegate(".item-card:not(.item-without-card) label", "click", function(){ 6414 const id = $(this).parent(".item-card").data("id") 6415 const t = $(this).parent(".item-card") 6416 const target = t.find("input") 6417 const v = $('.item-card input[type="radio"]:checked').val(); 6418 $("#itemCards .item-card").removeClass("selected") 6419 t.addClass("selected") 6420 $("#itemCards .item-card").find("input").attr("name", "") 6421 if(target.length > 0) { 6422 target.attr("name", "id[]") 6423 $("#properties-card").val(id) 6424 $(".greetingCard").removeClass("disabled") 6425 $("#skip-card").attr("disabled", false) 6426 } else { 6427 $("#properties-card").val("") 6428 } 6429 }) 6430 6431 $("#itemCards").delegate(".item-without-card label", "click", function(){ 6432 const parent = $(this).parents(".sectionPurchase") 6433 const next = parent.next(".sectionPurchase") 6434 $(".greetingCard").addClass("disabled") 6435 parent.addClass("hide") 6436 next.removeClass("hide") 6437 $("[data-addon=upsell-all]").click() 6438 $("#zip").select2() 6439 }) 6440 6441 $("[data-properties=ucapan]").keyup(function(){ 6442 const v = $(this).val() 6443 const p = $(this).parents(".sectionPurchase") 6444 $(".purchaseAddress").find(".greetingCard textarea").val(v) 6445 if(v.length > 3) { 6446 p.find(".next-purchase-button").attr("disabled", false) 6447 } else { 6448 p.find(".next-purchase-button").attr("disabled", true) 6449 } 6450 }) 6451 6452 $("[data-properties=penerima]").keyup(function(){ 6453 const v = $(this).val() 6454 $(".purchaseAddress").find("[data-properties=penerima]").val(v) 6455 }) 6456 6457 $("[data-properties=pengirim]").keyup(function(){ 6458 const v = $(this).val() 6459 $(".purchaseAddress").find("[data-properties=pengirim]").val(v) 6460 }) 6461 6462 $(document).click(function(e){ 6463 6464 if($(e.target).closest('.wrapperPopupCart').length != 0) return false;
6465 // $('#popupCart').fadeOut('slow'); 6466 // location.reload() 6467 }); 6468 6469 $(".toggleAddonCart").click(function(){ 6470 const p = $(this).parent(".itemAddonCart") 6471 p.toggleClass("open") 6472 }) 6473 6474 $(".btnViewCart").click(function(){ 6475 window.location.href = "https://outerbloom.com/cart"; 6476 }) 6477 6478 $(".btnViewCheckout").click(async function(){ 6479 $(this).find("span").addClass("loading") 6480 let zip = $("#zip").val() 6481 const first_name = $("#first_name").val() 6482 const last_name = $("#last_name").val() 6483 const company = $("#company").val() !== '' ? $("#company").val() : '' 6484 const address1 = $("#delivery_address").val() 6485 const address2 = zip && zip !== '' ? zip?.split(' - ')[1] : '' 6486 zip = zip && zip !== '' ? zip?.split(' - ')[0] : '' 6487 const phone = $("#recipient_number").val() 6488 const city = $("#cities").val() 6489 const province = $("#province").val() 6490 const country = 'Indonesia' 6491 const ver = Date.parse(new Date()) 6492 const params = `checkout[email]=&checkout[shipping_address][first_name]=${first_name}&checkout[shipping_address][last_name]=${last_name}&checkout[shipping_address][company]=${company}&checkout[shipping_address][address1]=${address1}&checkout[shipping_address][address2]=${address2}&checkout[shipping_address][city]=${city}&checkout[shipping_address][country]=${country}&checkout[shipping_address][province]=${province}&checkout[shipping_address][zip]=${zip}&checkout[shipping_address][phone]=${phone}&v=${ver}` 6493 6494 const clear = await fetch(`/cart/clear.js`, {method: 'POST'}) 6495 if(clear.status === 200) { 6496 const savedItem = window.localStorage.getItem("items"); 6497 const items = JSON.parse(savedItem) 6498 const addItems = await additem(items) 6499 console.log(addItems, 'new addItems') 6500 if(addItems) { 6501 window.location.href = `https://outerbloom.com/checkout?${params}`; 6502 } 6503 } 6504 }) 6505 6506 $(".btnContinueShopping").click(function(){ 6507 window.location.href = "https://outerbloom.com/"; 6508 }) 6509 6510 if (isemo78) { 6511 $(".empty-state-card").click(function(){ 6512 $("#input-foto").trigger("click") 6513 }) 6514 $(".btn-upload-image").click(function(){ 6515 $("#input-foto").trigger("click") 6516 }) 6517 $("[for=input-video]").click(function(){ 6518 $("#input-video").trigger("click") 6519 }) 6520 $(".btn-upload-papan").click(function(){ 6521 $("#logoPapan").trigger("click") 6522 }) 6523 } 6524 6525 $("[data-properties]").each(function(){ 6526 const select = $(this).parents(".form-group").find("select") 6527 $(this).change(function(){ 6528 const name = $(this).data("properties") 6529 const v = $(this).val() 6530 if (name == 'telepon-penerima') { 6531 let phone = v.replace(/[^0-9]/g, '') 6532 $(this).val(phone); 6533 $("#properties-telepon-penerima").val(phone) 6534 $('.iti__search-input').val('-') 6535 } else { 6536 $("#properties-" + name).val(v) 6537 } 6538 }) 6539 select.on("change", function(){ 6540 const name = $(this).data("properties") 6541 const v = $(this).val() 6542 $("#properties-" + name).val(v) 6543 }) 6544 }) 6545 6546 $("#show_note").click(function(){ 6547 nameq = $("#properties-nama-penerima").val() 6548 dear = $("#properties-kartu-nama-penerima").val() 6549 card = $("[data-properties=ucapan]").val() 6550 sender = $("#properties-kartu-nama-pengirim").val() 6551 photo = $("#properties-photo").val() 6552 video = $("#properties-video").val() 6553 updateCard(nameq, dear, card, sender, photo, video, status) 6554 }) 6555 6556 $(".remove-image").click(function(e){ 6557 e.preventDefault() 6558 $(this).find("img").show() 6559 removeImage() 6560 }) 6561 6562 $(".remove-media").click(function(e){ 6563 e.preventDefault() 6564 $(this).find("img").show() 6565 removeVideo() 6566 }) 6567 6568 6569 6570 $("[data-delivery_method]").click(function(e){ 6571 e.preventDefault() 6572 const t = $(this) 6573 const data = t.data("delivery_method") 6574 $("[data-delivery_method]").removeClass("selected") 6575 t.addClass("selected") 6576 $("#cities").val("") 6577 $("#properties-delivery-date").val("-") 6578 $("#deliveryDate button").removeClass("selected") 6579 $("#full-date").val("Full Calendar â") 6580 $("#propDeliveryDate").val("") 6581 const step3 = $("#step-3") 6582 if(data.match('PickUp')) { 6583 $(".selfpickup-point").show() 6584 step3.find("[data-finished=false]").hide() 6585 $("#panel-4").hide() 6586 step3.find("[data-finished=true]").show() 6587 $("#cities").attr("required", false) 6588 $("#form-group-city").hide() 6589 $("#row-delivery-time").hide() 6590 $("#propDeliveryTime, #properties-delivery-time, #properties-nama-penerima, #properties-alamat-penerima, #properties-kodepos, #properties-kodepos, #properties-telepon-penerima").val("-") 6591 $("#propDeliveryTime").attr("required", false) 6592 // $("#deliveryDate").find("button:first-child").addClass("stop") 6593 $(".form-selfpickup").show() 6594 $(".form-delivery").hide() 6595 $(".form-delivery").find("input, textarea, select").val("") 6596 $(".form-delivery").find("input, textarea, select").attr("required", false) 6597 $("#properties-shipping").val("0") 6598 $("#noteDeliveryDate").hide() 6599 $(".form-delivery .form-control").attr("required", false) 6600 $("#stepNav4").hide() 6601 6602 $("#deliveryDate").find("button:nth-child(1)").addClass("stop") 6603 6604 6605 6606 if(timeOfDay >= 16.01){ 6607 $("#deliveryDate").find("button:nth-child(2)").addClass("stop") 6608 } 6609 } else { 6610 6611 6612 $("#deliveryDate").find("button:nth-child(1)").removeClass("stop") 6613 step3.find("[data-finished=false]").show() 6614 $("#panel-4").show() 6615 step3.find("[data-finished=true]").hide() 6616 $("#cities").attr("required", true) 6617 $(".selfpickup-point").hide() 6618 $("#form-group-city").show() 6619 $("#cities").val('').trigger('change'); 6620 $("#properties-kota-pengiriman").val("-") 6621 6622 $("#row-delivery-date, #row-delivery-time").show() 6623 $("#propDeliveryDate, #propDeliveryTime").attr("required", true) 6624 $("#deliveryDate").find("button").removeClass("stop") 6625 $(".form-selfpickup").hide() 6626 $(".form-delivery").show() 6627 $(".form-delivery").find("input, textarea, select").attr("required", true)
6628 $(".form-delivery [data-properties]").attr("readonly", false) 6629 $("#properties-kodepos").val("-") 6630 $("#properties-alamat-penerima").val("-") 6631 $(".form-delivery .form-control").attr("required", true) 6632 $(this).parents(".setup-content").attr("id", "step-1") 6633 6634 $("#stepNav4").show() 6635 } 6636 }) 6637 6638 $("[name=selfpickup]").click(function(){ 6639 const p = $(this).parents(".row-pickup") 6640 const pickupCity = $("input[name='selfpickup']:checked").val(); 6641 const pickupAddress = $("input[name='selfpickup']:checked").data("address"); 6642 const pickupZip = $("input[name='selfpickup']:checked").data("zip"); 6643 6644 $(".row-pickup").removeClass("selected") 6645 p.addClass("selected") 6646 6647 $("#properties-kota-pengiriman").val(pickupCity) 6648 $("#province").val("Jakarta") 6649 $("#properties-alamat-penerima").val(pickupAddress) 6650 $("#properties-kodepos").val(pickupZip) 6651 }) 6652 6653 $("#cities").change(function(e){ 6654 e.preventDefault() 6655 $(this).parent(".row").find("p.error").remove() 6656 $("#full-date").val("Full Calendar") 6657 $("#deliveryDate, #deliveryDateFull label ").show() 6658 $("#deliveryDateFull").removeClass("filled") 6659 $(".btnChangeDeliveryDate").addClass("hide") 6660 $("#full-date").prop('disabled', false); 6661 $("#stepNav2, #stepNav3, #stepNav4").removeClass("btn-success") 6662 $("#stepNav2, #stepNav3, #stepNav4").find("a").attr("disabled", true) 6663 const step3 = $("#step-3") 6664 $("#cityNote").remove() 6665 $("#noteDeliveryDate").hide() 6666 $("#noteDeliveryDate").empty() 6667 let v = $(this).val() 6668 let v2 = $('option:selected', this).attr('data-city'); 6669 let v3 = $('option:selected', this).attr('data-province'); 6670 let price = $('option:selected', this).attr('data-price'); 6671 $("#country").val(v) 6672 $("#properties-kota-pengiriman").val(v) 6673 $("#properties-shipping").val(price) 6674 $("#deliveryDate button, #deliveryTime button, .calendarseasonal .button").removeClass("selected") 6675 $("#properties-delivery-date, #properties-delivery-time").val("-") 6676 $("#propDeliveryDate, #propDeliveryTime").val("") 6677 let note = $('option:selected', this).attr('data-note'); 6678 if(v === 'Kota Lainnya') { 6679 $("#noteDeliveryDate").show() 6680 $("#noteDeliveryDate").text("Order akan segera dikirim. Estimasi tanggal diterima akan disesuaikan dengan waktu pengiriman oleh pihak ekspedisi ke lokasi Anda.") 6681 $("#zip").attr("required", false) 6682 $("#zip").hide() 6683 $("#propDeliveryDate, #propDeliveryTime").attr("required", false) 6684 $("#propDeliveryDate, #properties-delivery-date, #propDeliveryTime, #properties-delivery-time").val("-") 6685 $("#row-delivery-date, #row-delivery-time").hide() 6686 $("#properties-shipping").val("") 6687 // $(this).parents(".setup-content").attr("id", "step-2") 6688 6689 } else { 6690 $("#noteDeliveryDate").hide() 6691 $("#zip").attr("required", true) 6692 $("#zip").show() 6693 $("#row-delivery-date, #row-delivery-time").show() 6694 $("#propDeliveryDate, #propDeliveryTime").attr("required", true) 6695 $("#deliveryDate").find("button").removeClass("stop") 6696 // $(this).parents(".setup-content").attr("id", "step-1") 6697 6698 } 6699 6700 6701 6702 // if(v !== 'Jakarta') { 6703 // $("[data-type=upsell]").hide() 6704 // } else { 6705 // $("[data-type=upsell]").show() 6706 // } 6707 // $('.collection-addons')[0].swiper.update(); 6708 6709 6710 getProvince(v) 6711 $("#zip").html(`<option value="">Choose Postal Code</option>`) 6712 renderZip(v, v2, v3) 6713 6714 disabledSameDay() 6715 6716 6717 if(v !== 'Jakarta' && v !== 'Depok' && v !== 'Bekasi' && v !== 'Tangerang') { 6718 6719 $("#cardOccasion, #navAddon, .collection-addons").hide() 6720 6721 $("[data-addon=giftcard]").show() 6722 $("[data-addon=giftcard]").click() 6723 $("#itemAddons").show() 6724 $("#flower-step").addClass("nonjadetabek") 6725 } else { 6726 $("#cardOccasion, #navAddon, .collection-addons").show() 6727 $("[data-addon=all]").click() 6728 $("#flower-step").removeClass("nonjadetabek") 6729 } 6730 6731 if(v !== '') { 6732 $("#personalizeBtn .btn").attr("disabled", false) 6733 } else { 6734 $("#personalizeBtn .btn").attr("disabled", true) 6735 } 6736 6737 }) 6738 6739 $("#zip").change(function(e){ 6740 let v = $(this).val() 6741 var city = $("#cities").find('option:selected'); 6742 $("#properties-kodepos").val(v) 6743 if(city === 'Kota Lainnya') { 6744 $(this).attr("required", true) 6745 $("#recipient-address").val("") 6746 } 6747 }) 6748 6749 6750 var minDate = +7 6751 6752 6753 6754 $("#full-date").datepicker({ 6755 minDate, 6756 dateFormat: 'Mdd_yy', //Nop22_2021, 6757 6758 beforeShowDay: disabledays, 6759 6760 onSelect: function (date) { 6761 $("#deliveryDate, #deliveryDateFull label ").hide() 6762 $("#deliveryDateFull").addClass("filled") 6763 $(".btnChangeDeliveryDate").removeClass("hide") 6764 $("#full-date").prop('disabled', true); 6765 $('#propDeliveryDate, #properties-delivery-date').val('Kirim_'+date); 6766 $(".date-full").addClass("selected") 6767 $(".date-single, .calendar-group").removeClass("selected") 6768 $("#propDeliveryTime").val('') 6769 $("#properties-delivery-time").val('-') 6770 $(".time-single").removeClass("selected") 6771 6772 6773 } 6774 }); 6775 6776 $(".btnChangeDeliveryDate").click(function(){ 6777 $("#deliveryDate, #deliveryDateFull label ").show() 6778 $("#deliveryDateFull").removeClass("filled") 6779 $(".btnChangeDeliveryDate").addClass("hide") 6780 $("#full-date").prop('disabled', false); 6781 }) 6782 6783 $("#deliveryDate").delegate(".calendarbutton:not(.date-full)", "click", function(e){ 6784 e.preventDefault() 6785 $(this).parents("#row-delivery-date").find("p.error").remove() 6786 const fulldate = $(this).data("fulldate") 6787 const day = $(this).data("day") 6788 const date = $(this).data("date")
6789 const month = $(this).data("month") 6790 const year = $(this).data("year") 6791 const off_pagi = $(this).data("offpagi") 6792 const off_siang = $(this).data("offsiang") 6793 const off_Malam = $(this).data("offMalam") 6794 $(".calendarbutton").removeClass("selected") 6795 $(this).addClass("selected") 6796 $("#propDeliveryDate, #properties-delivery-date").val(`Kirim_${month}${date}_${year}`) 6797 $("#propDeliveryTime").val('') 6798 $("#properties-delivery-time").val('-') 6799 $(".calendarbutton2").removeClass("selected") 6800 $("#full-date").val("Full Calendar") 6801 6802 6803 if(off_pagi && timeOfDay > off_pagi) { 6804 $("[data-time=Morning]").attr("disabled", true) 6805 } else { 6806 $("[data-time=Morning]").attr("disabled", false) 6807 } 6808 if(off_siang && timeOfDay > off_siang) { 6809 $("[data-time=Afternoon]").attr("disabled", true) 6810 } else { 6811 $("[data-time=Afternoon]").attr("disabled", false) 6812 } 6813 6814 6815 6816 }) 6817 6818 if(today === 14 && timeOfDay > 17.00) { 6819 $("#deliveryDate button:first-child").attr("disabled", true) 6820 } 6821 6822 $("#deliveryTime").delegate(".calendarbutton2", "click", function(e){ 6823 e.preventDefault() 6824 const time = $(this).data("time") 6825 const date = $("#propDeliveryDate").val() 6826 if(date == '') { 6827 return alert('Silakan pilih tanggal terlebih dahulu') 6828 } 6829 $(".calendarbutton2").removeClass("selected") 6830 $(this).addClass("selected") 6831 $("#propDeliveryTime, #properties-delivery-time").val(`KirimJam_${date.replace('Kirim_','')}_${time}`) 6832 }) 6833 6834 $('textarea.has-limit, input.has-limit').keyup(function () { 6835 max = this.getAttribute("maxlength"); 6836 let len = $(this).val().length; 6837 let limit = $(this).siblings(".limit"); 6838 if (len > max) { 6839 alert('you have reached the limit'); 6840 } else { 6841 limit.text(`${len}/${max}`); 6842 } 6843 }); 6844 6845 $("#button-action-step .btn").click(function(){ 6846 $(this).find("span").text("Processing..."); 6847 }); 6848 6849 $(".finishBtn").on('click', function() { 6850 $(this).addClass("is-adding"); 6851 // $(this).click(); 6852 }); 6853 6854 $('.setup-panel .nav-item a.btn-success').trigger('click'); 6855 6856 $("#button-action .btn").click(function(){ 6857 $("#flower-step").addClass("block"); 6858 $("#button-action").hide(); 6859 }); 6860 6861 $(".close-how-order").click(function(){ 6862 $("#flower-step").removeClass("block"); 6863 $("#button-action").show(); 6864 }); 6865 6866 $("#input-foto, #input-video").change(function(e){ 6867 readURL(this); 6868 }); 6869 6870 $("#logoPapan").change(function(){ 6871 readURLPapan(this); 6872 }); 6873 6874 $("#address-upload").change(async function(){ 6875 const upload_address = await readURLAddress(this) 6876 if(upload_address) { 6877 const url = upload_address.url 6878 $(".props-address-upload").val(url) 6879 $(".form-address").addClass("address-uploaded") 6880 $(".form-address-upload").addClass("uploaded") 6881 6882 $(this).parents(".form-group").siblings(".form-group").find("[required]").attr("required", false) 6883 } 6884 }) 6885 6886 $(".address-manualy").click(function(){ 6887 $(".form-address-upload").removeClass("uploaded"); 6888 $(".photo-address").hide(); 6889 $(".form-address").removeClass("address-uploaded") 6890 $("#formAddressPurchase").find(".form-control").attr("required", true) 6891 }); 6892 6893 $(".case-video-preview").delegate(".replace-video", "click", function(){ 6894 $("#input-video").trigger("click") 6895 }) 6896 6897 $('.date-single').click(function(e) { 6898 e.preventDefault(); 6899 $('.date-single').removeClass('selected'); 6900 $('#full-date').removeClass('selected'); 6901 $(this).addClass('selected'); 6902 $('#full-date').html('Full' + '<br/>' + 'Calendar'); 6903 }); 6904 $('#full-date').click(function(e){ 6905 e.preventDefault(); 6906 $('.date-single').removeClass('selected'); 6907 $(this).addClass('selected'); 6908 }); 6909 6910 // $("tr").each(function(){ 6911 // if($(this).text().match('SKU')) { 6912 // $(".sku-product").html($(this).parents("table").html()) 6913 // } 6914 // }) 6915 6916 $("#product-image").scroll(function(){ 6917 $(".desc-add").each(function(){ 6918 const img = $(this).find("img") 6919 const src = img.data("src") 6920 img.attr("src", src) 6921 }) 6922 }) 6923 6924 $(".product-fixed").hide() 6925 6926 let target = $("#personalizeBtn") 6927 6928 6929 $(".product-meta").scroll(function() { 6930 if ($(window).scrollTop() >= target.offset().top ) { 6931 $(".product-fixed").addClass("show") 6932 } else { 6933 $(".product-fixed").removeClass("show") 6934 } 6935 }); 6936 6937 $(window).scroll(function() { 6938 if ($(window).scrollTop() >= target.offset().top ) { 6939 $(".product-fixed").addClass("show") 6940 } else { 6941 $(".product-fixed").removeClass("show") 6942 } 6943 }); 6944 }); 6945 </script>
6945 6946 6947
6947<script> 6948 // 6949 </script>
6949 6950 6951
6951<script> 6952 $(document).ready(function(){ 6953 $('table tr td').each(function(){ 6954 var texto = $(this).text(); 6955 var nextto = $(this).next("td"); 6956 var sku = $("#data-sku").val() 6957 if(texto == 'SKU'){ 6958 nextto.text(sku) 6959 } 6960 }); 6961 6962 $(".stamped-summary-actions-newquestion").text("Tulis Pertanyaan"); 6963 $(".stamped-summary-actions-newreview").text("Tulis Review"); 6964 $("#tab-questions").text("Pertanyaan"); 6965 6966 $(".freeship .icon").click(function(){ 6967 $(".fs-content").slideToggle(); 6968 $(this).parents(".freeship").toggleClass("expand"); 6969 }); 6970 6971 var $easyzoom = $('.easyzoom').easyZoom(); 6972 // Setup thumbnails example 6973 var api1 = $easyzoom.filter('.easyzoom--with-thumbnails').data('easyZoom'); 6974 $('.thumbnails').on('click', 'a', function(e) { 6975 var $this = $(this); 6976 e.preventDefault(); 6977 // Use EasyZoom's `swap` method 6978 api1.swap($this.data('standard'), $this.attr('href')); 6979 }); 6980 6981 $('#playerID').click(function(){ 6982 var videoURL = $('#VdoID').attr('src'), 6983 dataplay = $('#VdoID').attr('data-play'); 6984 6985 //for check autoplay 6986 //if not set autoplay=1 6987 if(dataplay == 0 ){ 6988 $('#VdoID').attr('src',videoURL+'?autoplay=1'); 6989 $('#VdoID').attr('data-play',1); 6990 } 6991 else{ 6992 var videoURL = $('#VdoID').attr('src'); 6993 videoURL = videoURL.replace("?autoplay=1", ""); 6994 $('#VdoID').prop('src',''); 6995 $('#VdoID').prop('src',videoURL); 6996 6997 $('#VdoID').attr('data-play',0); 6998 } 6999 7000 }); 7001 7002 $(".product-photo-thumb-video").click(function(e){ 7003 e.preventDefault(); 7004 7005 var newEmbed = $(this).attr('href'); 7006 $("#featured-image-product").addClass("img-video"); 7007 $("#ProductPhotoImg").hide(); 7008 $("#featured-image-product .video").show(); 7009 $("#featured-image-product iframe").attr('src', newEmbed); 7010 $("#VdoID")[0].src += "&autoplay=1"; 7011 }); 7012 $(".product-single__thumbnail").click(function(evt){ 7013 evt.preventDefault(); 7014 $("#featured-image-product").removeClass("img-video"); 7015 $("#ProductPhotoImg").show(); 7016 $("#featured-image-product .video").hide(); 7017 $("#featured-image-product iframe").attr('src', ''); 7018 }); 7019 7020 if($('#product-meta .short-desc > div').length >= 1){ 7021 //console.log('div detected') 7022 var replacer = $('#product-meta .short-desc > div').contents(); 7023 $('#product-meta .short-desc > div').replaceWith(replacer); 7024 7025 var cAssured = $('.c-assured').detach(); 7026 cAssured.insertAfter('.meta-sds .stock-info'); 7027 } 7028 7029 7030 7031 $(".heading-toggle").click(function(){ 7032 $(this).parent().toggleClass("open") 7033 7034 }); 7035 }); 7036 </script>
7036 7037 7038 7039
7039<script type="application/json" id="ProductJson-Product"> 7040 7041 {"id":8144957800663,"title":"EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026","handle":"blossom-shine","description":"\u003cul\u003e\n\u003cli\u003e\u003cstrong\EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik"} 7042 </script>
7042 7043 7044
7044<script type="application/json" id="VariantJson-Product"> 7045 [ 7046 7047 { 7048 "incoming": false, 7049 "next_incoming_date": null 7050 } 7051 7052 ] 7053 </script>
7053 7054 7055 7056 7057 7058 </div> 7059 7060 7061
7061<script src="//outerbloom.com/cdn/shopifycloud/storefront/assets/themes_support/option_selection-b017cd28.js" type="text/javascript"></script>
7061 7062 <style> 7063 .stamped-review-header-title, 7064 .stamped-review-header .author, 7065 .stamped-review-content-body, 7066 .stamped-sort-select, 7067 .stamped-review-header .verified-badge[data-type=buyer]:after, 7068 .stamped-review-header-byline, 7069 .stamped-review-reply-body {font-size: 14px!important;font-family: 'Barlow',sans-serif!important;} 7070 .stamped-review {margin-bottom: 0;} 7071 .stamped-review-body {padding-left: 65px;} 7072 .stamped-review:first-child {padding-top: 25px;} 7073 .stamped-review-content {clear: none;} 7074 .stamped-review-reply {margin: 15px 0 0 65px;background: #f2f2f2;border-left: none;} 7075 .stamped-review-reply-body {padding-left: 65px;} 7076 .stamped-review-header .author {text-transform: capitalize;} 7077 .stamped-questions .stamped-review-content {padding-left: 65px;} 7078 7079 .stamped-pagination {margin: 20px 0 0;} 7080 .stamped-pagination li {position: initial!important;display: inline-block;position: relative;vertical-align: middle;text-decoration: none;-webkit-tap-highlight-color: transparent;-webkit-box-flex: 0;-moz-box-flex: 0;-ms-flex: 0 0 auto;flex: 0 0 auto;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;background: 0 0;text-transform: none;color: #33373D;font-weight: 400;-webkit-transition: background .1s ease,box-shadow .1s ease,color .1s ease;transition: background .1s ease,box-shadow .1s ease,color .1s ease;border: 1px solid #ccc;border-right: none;margin-bottom: 0;} 7081 .stamped-pagination li a {color: #121212;padding: 13px 18px;vertical-align: middle;display: block;} 7082 .stamped-pagination li.active a {background-color: #ddd;font-weight: 400;} 7083 .stamped-pagination li:hover a {background: #ddd;} 7084 .stamped-pagination .next {border-right: 1px solid #ccc;} 7085 .stamped-pagination li:first-child {border-top-left-radius: 5px;border-bottom-left-radius: 5px;} 7086 .stamped-pagination li:last-child {border-top-right-radius: 5px;border-bottom-right-radius: 5px;} 7087 7088 #stamped-pagination-question span.page {display: inline-block;border: 1px solid #ccc;width: 47px;} 7089 #stamped-pagination-question span {font-size: 14px;} 7090 #stamped-pagination-question .page.active {padding: 12px;font-weight: 400;background: #ddd;} 7091 #stamped-pagination-question a, #stamped-pagination-question .page.active {color: #121212;padding: 13px 18px;vertical-align: middle;display: inline-block;} 7092 .stamped-pagination-deco {color: #121212;padding: 13px 18px;width: 47px;vertical-align: middle;display: inline-block;border: 1px solid #ccc;padding: 12px;} 7093 .stamped-pagination-prev, .stamped-pagination-next {position: inherit;} 7094 .stamped-pagination-prev a, .stamped-pagination-next a {width: auto!important;border: 1px solid #ccc;} 7095 7096 @media (max-width: 480px){ 7097 .stamped-review-reply {margin-left: 0!important;} 7098 select.stamped-sort-select {font-size: 13px!important;} 7099 } 7100 7101 #product-reviews .stamped-summary-ratings, #product-reviews .stamped-summary-actions, .stamped-content { 7102 display: block !important; 7103 } 7104 </style> 7105
7105<script> 7106 var selectCallback = function(variant, selector) { 7107 timber.productPage({ 7108 money_format: "Rp {{amount_no_decimals}}", 7109 variant: variant, 7110 selector: selector 7111 }); 7112 }; 7113 7114 jQuery(function($) { 7115 new Shopify.OptionSelectors('productSelect', { 7116 product: 7117 7118 7119 7120 7121 7122 {"id":8144957800663,"title":"EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026","handle":"blossom-shine","description":"\u003cul\u003e\n\u003cli\u003e\u003cstrong\EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik"}, 7123 onVariantSelected: selectCallback, 7124 enableHistoryState: true 7125 }); 7126 7127 // Add label if only one product option and it isn't 'Title'. Could be 'Size'. 7128 7129 7130 // Hide selectors if we only have 1 variant and its title contains 'Default'. 7131 7132 $('.selector-wrapper').hide(); 7133 7134 }); 7135 </script>
7135 7136 7137 7138 7139
7139<script type="application/ld+json"> 7140 { 7141 "@context": "http://schema.org", 7142 "@type": "Product", 7143 "offers": { 7144 "@type": "Offer", 7145 "availability":"https://schema.org/InStock", 7146 "price": 25000, 7147 "priceValidUntil": "05-10-2026", 7148 "priceCurrency": "IDR", 7149 "url": "https://heartysfoodhall.co.uk/" 7150 }, 7151 "brand": { 7152 "@type": "Brand", 7153 "name": "EMO78" 7154 }, 7155 "sku": "8144957800663", 7156 "gtin13": "Jawa", 7157 "name": "EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026", 7158 "description": "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik", 7159 "category": "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik", 7160 "url": "https://heartysfoodhall.co.uk/", 7161 "image": { 7162 "@type": "ImageObject", 7163 "url": "https://heartysfoodhall.co.uk/", 7164 "image": "https://heartysfoodhall.co.uk/image/bandar-slot-emo78-slot777.png", 7165 "name": "EMO78 : Situs Bandar Slot Gacor Provider Slot777 Game Pragmatic Terbaik 2026", 7166 "width": 1024, 7167 "height": 1024 7168 } 7169 } 7170 </script>
7170 7171 7172 7173 7174 7175 7176
7176<script id="bss-ltap-hide-price" type="text/javascript" > 7177 !function(e){var t={};function o(r){if(t[r])return t[r].exports;var c=t[r]={i:r,l:!1,exports:{}};return e[r].call(c.exports,c,c.exports,o),c.l=!0,c.exports}o.m=e,o.c=t,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var c in e)o.d(r,c,function(t){return e[t]}.bind(null,c));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t,o){"use strict";function r(e){e.ltsp={},function(e){e.ltsp.quickView=function(){document.querySelectorAll(".quickview-button").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementById("add-to-cart-quickview-form");if(e){let t=e.querySelector(".groups-btn");t&&t.remove();let o=e.querySelector(".pieces");o&&o.remove();let r=e.querySelector(".bsscommerce-ltsp-message");r&&r.remove()}if(e=document.querySelector("[data-quickview-modal] .halo-modal-body"),e){let t=e.querySelector(".quantity");t&&t.remove()}}),1e3)}))})),document.querySelectorAll(".shop-now-button").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementById("ShopNowContainer");if(e){let t=e.querySelector("#AddToCart");t&&t.remove()}}),2e3)}))})),document.querySelectorAll(".collection__filter").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".product-grid-item");if(o){let e=o.querySelector(".btn--quick-view");e&&e.remove()}}}),1500)}))})),document.querySelectorAll(".btn--icon.quick-product__btn").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".product-grid__content");if(o){let e=o.querySelector(".payment-buttons");e&&e.remove()}}}),2e3)}))})),document.querySelectorAll(".product-facet__aside").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".product-item");if(o){let e=o.querySelector('form[action="/cart/add"]');e&&e.remove();let t=o.querySelector(".product-item__quick-form");t&&t.remove()}}}),1500)}))})),document.querySelectorAll(".pagination").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".product-item");if(o){let e=o.querySelector('form[action="/cart/add"]');e&&e.remove();let t=o.querySelector(".product-item__quick-form");t&&t.remove()}}}),1800)}))})),document.querySelectorAll(".collection-filters__sort").forEach((function(e){e.addEventListener("change",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".indiv-product");if(o){let e=o.querySelector('form[action="/cart/add"]');e&&e.remove()}}}),1500)}))}
7177)),document.querySelectorAll(".slideout__drawer-right, .sidebar_leftside_wapper, .filtering__results").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".product-index");if(o){let e=o.querySelector(".js-quickview-trigger");e&&e.remove()}}}),1500)}))})),document.querySelectorAll("a.product-loop__quickview").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".large--one-half");if(o){let e=o.querySelector(".quick-smart-wrapper");e&&e.remove();let t=o.querySelector("#quantity-container");t&&t.remove();let r=o.querySelector(".js-prod-show-soldout");r&&r.remove()}}}),2e3)}))})),document.querySelectorAll(".quick-product__btn").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".product-single__meta");if(o){let e=o.querySelector("div.payment-buttons");e&&e.remove()}}}),1e3)}))})),document.querySelectorAll(".btn--load-more").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".grid-view-item");if(o){let e=o.querySelector(".quick-add-button");e&&e.remove()}}}),1e3)}))})),document.querySelectorAll(".quick_shop").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".product_section");if(o){let e=o.querySelector(".product_form .shopify-product-form .purchase-details"),t=o.querySelector(".product__details .modal_price .price-ui");e&&e.remove(),t&&t.remove()}}}),1e3)}))})),document.querySelectorAll(".qs-button ").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".product-info-main");if(o){let e=o.querySelector(".qty-box");e&&e.remove();let t=o.querySelector(".btn.btn-cart");t&&t.remove();let r=o.querySelector(".product-single__sale-price");r&&r.remove();let c=o.querySelector(".product-addto-links");c&&c.remove()}}}),1e3)}))}));let e=document.querySelector("a[data-js-cart-icon]");if(e&&e.addEventListener("click",(function(){let e=document.querySelector(".quick-cart__control");e&&e.remove();let t=document.querySelector(".quick-cart__item-right");t.childNodes[3]&&(t.childNodes[3].innerHTML="Login to seen price")})),document.querySelectorAll(".quick-add-button-variants").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest("#AddToCartForm");if(o){let e=o.querySelector(".paymentButtonsWrapper");e&&e.remove()}}}),1e3)}))})),document.querySelectorAll(".product-thumbnail__quickshop-button").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".product-details");if(o){let e=o.querySelectorAll(".bsscommerce-ltsp-message");e.length>1&&e.forEach((function(e,t){t>0&&e.remove()}));let t=o.querySelector(".product-form__cart-buttons");t&&t.remove();let r=o.querySelector(".product-form__quantity-box-wrapper");r&&r.remove()}}}),800)}))})),"b2b-dbodhi-singapore.myshopify.com"===window.Shopify.shop){let e=0;const t=window.location.pathname.includes("/collections");let o=!0;const r=function(){const e=setInterval((function(){let e=document.querySelectorAll(".thb-product-detail.product .bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t],r=o.closest(".thb-product-detail.product");if(r){let e=r.querySelector(".product-form");e&&e.remove()}r=o.closest("del"),r&&o.remove()}}),500);setTimeout(()=>{clearInterval(e)},6e3)},c=function(){const c=window.pageYOffset||document.documentElement.scrollTop;(c>e||!t||o)&&(document.querySelectorAll(".product-card-quickview").forEach((function(e){e.removeEventListener("click",r),e.addEventListener("click",r)}
7177)),o=!1),e=c<=0?0:c};if(c(),t){const e=function(){const e=c;let t;return()=>{clearTimeout(t),t=setTimeout(()=>{e.apply(this)},3e3)}};window.addEventListener("scroll",e())}}}}(e),function(e){e.ltsp.removeElementByLTSPMessage=function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message"),t=[],o=window.Shopify.shop;for(let r=0;r<e.length;r++){let c=e[r],l=[".grid-product__on-sale",".product-unit-price",".product-price-unit",".grid-link__sale_price","s",".price__compare",".product__compare-price",".price__unit",".card__price--regular",".sale-tag",".compare-price",".old-price",".savings",".was_price",".price--compare",".price-compare",".was"];if("stark-hockey.myshopify.com"===o){const e=c.closest(".product-index");if(e){const t=e.querySelector(".product-modal");t&&t.remove()}continue}let s=c.closest(".product-parent");if(s){let e=s.querySelector("form .tt-btn-addtocart");e&&t.push(e);let o=s.querySelector(".tt-btn-quickview");o&&t.push(o)}if(s=c.closest(".ProductItem"),s){let e=s.querySelector(".quickshop-btn");if(e&&t.push(e),"shrimptoncouture-com.myshopify.com"===o){let e=s.querySelector(".ProductItem__PriceList");e&&e.classList.remove("ProductItem__PriceList")}}if(s=c.closest(".product-item--vertical"),s){if("sparklinbluewholesale.myshopify.com"===o){let e=s.querySelector(".product-item__info .product-item__price-list");e&&t.push(e)}let e=s.querySelector(".product-item__info .product-item__action-button");e&&t.push(e),e=s.querySelector(".product-form__payment-container"),e&&t.push(e)}if(s=c.closest(".card-wrapper.underline-links-hover"),s&&"friends-forever-pets.myshopify.com"===o){let e=s.querySelector(".card__content .quick-add");e&&t.push(e);let o=s.querySelector(".card-information .price__sale .price-item.price-item--regular");o&&t.push(o)}if(s=c.closest(".modal_price"),s&&window.Shopify&&"casa-barba.myshopify.com"!==window.Shopify.shop&&"prideandgroom-wholesale.myshopify.com"!==window.Shopify.shop){let e=s.querySelector(".price-ui");e&&t.push(e)}if(s=c.closest(".info.has-padding-top"),s){let e=s.querySelector(".compare-at-price");e&&t.push(e)}if(s=c.closest(".product-thumbnail__price.price"),s){let e=s.querySelector(".money");e&&t.push(e)}if(s=c.closest(".search-result__description"),s){let e=s.querySelector(".money");e&&t.push(e)}if(s=c.closest(".product__price"),s){let e=s.querySelector("[data-product-price][bss-custom-ltsp-attribute]");e&&t.push(e)}if(s=c.closest("#template-product"),s){let e=s.querySelector(".product-form.cart-bar__form");e&&t.push(e)}if("showroom1-ducanero.myshopify.com"===o){if(s=c.closest(".product-area")||c.closest(".price"),s){let e=s.querySelector(".price-area")||s.querySelector(".theme-money");e&&t.push(e)}}else if(s=c.closest(".product-area__details"),s){let e=s.querySelector(".product-detail__form__action");e&&t.push(e);let o=s.querySelector(".quantity-wrapper");o&&t.push(o)}if("quincaillerie-euroline.myshopify.com"===o&&(s=c.closest(".product-form__info-content"),s)){let e=s.querySelector(".price-list");e&&t.push(e)}if(s=c.closest(".product-form__buttons"),s&&t.push(s),s=c.closest(".product-wrap-2"),s){let e=s.querySelector(".product-action-2");e&&t.push(e)}if(s=c.closest(".span6"),s){let e=s.querySelector(".purchase>input"),o=s.querySelector(".price-container>#price-preview"),r=s.querySelector(".price-container>.vat-price");e&&t.push(e),o&&t.push(o),r&&t.push(r)}if(s=c.closest(".product__page"),s){let e=s.querySelector(".quantity-selector");e&&t.push(e)}if(s=c.closest(".product_details_info"),s){let e=s.querySelector(".pro-detail-button"),o=s.querySelector(".price-box");e&&t.push(e),o&&t.push(o)}if(s=c.closest(".product-content"),s){let e=s.querySelector(".product-action");e&&t.push(e)}if(s=c.closest(".product-view .single-product-wrap"),s){let e=s.querySelector(".add-to-cart");e&&t.push(e)}if(s=c.closest(".collection-category .owl-stage .owl-item"),s){let e=s.querySelector(".add-to-cart");e&&t.push(e)}if(s=c.closest(".product__details"),s){let e=s.querySelector(".product-wrap .thumbnail-overlay .info .price ");e&&t.push(e);let o=s.querySelector(".product-details .price .current_price .money ");o&&t.push(o)}if(s=c.closest(".product_row"),s){let e=s.querySelector(".three-fourths .info .price ");e&&t.push(e)}if(s=c.closest(".thubnail-desc"),s){let e=s.querySelector(".quatity-stock");e&&t.push(e);let o=s.querySelector(".Payment_button");o&&t.push(o)}if(s=c.closest(".single-ponno-product"),s){let e=s.querySelector(".pro-actions-link");e&&t.push(e);let o=s.querySelector(".pro-add-cart");o&&t.push(o)}if(s=c.closest(".product-single__meta"),s){let e=s.querySelector("div.product-form__controls-group.product-form__controls-group--submit");e&&e.setAttribute("style","visibility:hidden")}if("homewarerus.myshopify.com"!=window.Shopify.shop&&(s=c.closest(".product-item__info"),s)){let e=s.querySelector("form.product-item__action-list.button-stack");e&&e.remove()}
7177if("bluebasketb2b.myshopify.com"===window.Shopify.shop){if(s=c.closest(".card-information"),s){let e=s.querySelector(".price__sale .price-item--sale.sale-percentage");e&&t.push(e)}if(s=c.closest("tr.cart-item[id*=Cart]"),s){let e=s.querySelector(".cart-item__quantity");e&&e.remove();let t=s.querySelector(".cart-item__totals");t&&t.remove()}}if(s=c.closest(".product-form"),s){let e=s.querySelector(".quantity-submit-row__submit");e&&e.remove();let o=s.querySelector(".product-form__info-list .product-form__info-item.product-form__info-item--quantity .product-form__info-content .quantity-selector.quantity-selector--product");o&&t.push(o)}if(s=c.closest(".product-grid__detail"),s){let e=s.querySelector(".product-form-block form");e&&e.remove()}if(s=c.closest(".tab-body"),s){if(s.querySelector(".purchase-section button, .btn.add-to-cart")){let e=setInterval((function(){let e=document.querySelector(".tab-body .purchase-section button, .tab-body .btn.add-to-cart"),t=document.querySelector(".swym-button-bar.swym-wishlist-button-bar");e&&e.remove(),t&&t.remove()}),200);setTimeout((function(){clearInterval(e)}),1e4)}}if(s=c.closest(".item.relative.product-id.item-row"),s){let e=s.querySelector(".quantity.form");e&&e.remove()}if(s=c.closest(".product-form"),s){let e=s.querySelector(".buy-buttons-row");e&&t.push(e)}if(s=c.closest(".product-grid-item"),s){let e=s.querySelector(".btn--quick-view");e&&t.push(e)}if(s=c.closest(".featured__collection-product"),s){let e=s.querySelector(".js-quickview-trigger");e&&t.push(e)}if(s=c.closest(".product-index"),s){let e=s.querySelector(".js-quickview-trigger");e&&t.push(e)}if(s=c.closest(".product-bottom"),s){let e=s.querySelector(".quantity-selector, .product-add");e&&t.push(e)}if(s=c.closest(".js-sticky-cart"),s){let e=s.querySelector(".sticky-add");e&&t.push(e)}if(s=c.closest(".product-details"),s){let e=s.querySelector(".shopify-payment-button");e&&t.push(e);let r=s.querySelector(".payment-and-quantity__add");r&&t.push(r);let c=s.querySelector(".price__compare-at.visible");c&&"coventa-demo.myshopify.com"===o&&t.push(c)}if(s=c.closest(".product-block__inner"),s){let e=s.querySelector(".quick-buy");e&&t.push(e)}if(s=c.closest(".content-summary"),s){let e=s.querySelector("form.cart");e&&t.push(e)}if(s=c.closest('div[data-pf-type="Section"]'),s){let e=s.querySelector('div[data-pf-type="ProductQuantity"]');e&&t.push(e);let o=s.querySelector('button[data-pf-type="ProductATC"]');o&&t.push(o)}if(s=c.closest(".pc-inner"),s){let e=s.querySelector('form[action="/cart/add"]');e&&t.push(e);let o=s.querySelector(".quick_shop");o&&t.push(o)}if(s=c.closest(".product-info-inner"),s){let e=s.querySelector('form[action="/cart/add"]');e&&t.push(e)}if(s=c.closest(".product-details-inline"),s){let e=s.querySelector(".product-quantity");e&&t.push(e)}if(s=c.closest(".product-card"),s){let e=s.querySelector(".js-grid-cart");e&&t.push(e);let o=s.querySelector(".card-header .card-button-hover");o&&t.push(o);let r=s.querySelector(".product-card__quick-buy");r&&t.push(r);let c=s.querySelector("compare-at-price");c&&t.push(c);let l=s.querySelector(".product-card__badge-list");l&&t.push(l)}if(s=c.closest(".product__info"),s){let e=s.querySelector(".product-form__buy-buttons button");e&&t.push(e);let o=s.querySelector(".product-form__quantity");o&&t.push(o)}if(s=c.closest(".product-sticky-form__inner"),s){let e=s.querySelector(".product-sticky-form__payment-container");e&&t.push(e)}if("homewarerus.myshopify.com"!=window.Shopify.shop&&(s=c.closest(".product-item"),s)){let e=s.querySelector('form[action="/cart/add"]');e&&t.push(e);let o=s.querySelector(".product-item__quick-form");o&&t.push(o)}if(s=c.closest(".shopify-product-form"),s){let e=s.querySelector("div.quantity");e&&t.push(e)}if(s=c.closest(".product-body"),s){let e=s.querySelector(".product-cta-wrapper");e&&t.push(e)}if(s=c.closest(".tt-product-single-info"),s){let e=s.querySelector("form .btn-addtocart");e&&t.push(e);let o=s.querySelector('form[action*="/cart/add"]');o&&t.push(o)}if(s=c.closest(".product-details-wrapper"),s){let e=s.querySelector(".product-form");e&&t.push(e)}if(s=c.closest(".product-inner"),s){let e=s.querySelector(".product-card-interactions");e&&t.push(e)}if(s=c.closest(".product-single__meta"),s){let e=s.querySelector(".add-to-cart");if(e)if(window.Shopify&&"bundlecomph.myshopify.com"===window.Shopify.shop){e.disabled=!0;let o=s.querySelector(".payment-buttons"),r=s.querySelector(".shopify-payment-button");o&&o.classList.remove("payment-buttons"),r&&t.push(r)}else t.push(e)}if(s=c.closest(".grid-view-item"),s){let e=s.querySelector(".thumbnail-buttons");e&&t.push(e)}if(s=c.closest(".product-single__meta"),s){let e=s.querySelector(".product-form:not(.product-form-product--static):not(.product-form-product-template)");e&&t.push(e)}if(s=c.closest(".pf-product-form"),s){let e=s.querySelector(".sc-lkgURy");e&&t.push(e);let o=s.querySelector(".sc-gzcbmu");o&&t.push(o);let r=s.querySelector(".add-to-cart");r&&t.push(r)}if(s=c.closest(".large--one-half"),s){let e=s.querySelector(".product-smart-wrapper");e&&t.push(e);let o=s.querySelector('div.btn[onmouseup="showProductsDesigner(this)"]');o&&t.push(o);let r=s.querySelector("button.js-prod-show-soldout");r&&t.push(r)}if(s=c.closest("#add-to-cart-form"),s)if("led-signcity.myshopify.com"===o){let e=s.querySelector(".atc-btn");e&&t.push(e);let o=s.querySelector(".price");o&&o.classList.remove("price")}else{let e=s.querySelector(".groups-btn");e&&t.push(e),t.push(c)}
7177if(s=c.closest(".product-shop"),s&&"led-signcity.myshopify.com"!==o){let e=s.querySelector(".groups-btn");e&&t.push(e)}if(s=c.closest(".who-qof-table"),s&&s.classList.add("bsscommerce-hide-price"),s=c.closest(".price-sale"),s){let e=s.querySelector(".old-price");e&&t.push(e);let o=s.querySelector("em");o&&(o.innerHTML="")}if(s=c.closest(".product-details"),s){let e=s.querySelector(".action");e&&t.push(e)}if(s=c.closest(".product_section"),s){let e=s.querySelector("form .add_to_cart, form .b2b-ajax-submit");e&&t.push(e);let o=s.querySelector(".sale.savings");o&&t.push(o);let r=s.querySelector(".purchase-details button.button--add-to-cart");r&&t.push(r);let c=s.querySelector(".purchase-details .purchase-details__quantity.product-quantity-box");c&&t.push(c);let l=s.querySelector(".product__details .modal_price .price-ui");l&&t.push(l)}if(s=c.closest(".quick-shop-style--inline"),s){let e=s.querySelector("form .add_to_cart, form .b2b-ajax-submit");e&&t.push(e)}if(s=c.closest(".product-details"),s){let e=s.querySelector("small em");e&&t.push(e)}if(s=c.closest(".gt_product-body"),s){let e=s.querySelector("form .gt_product-addtocart");e&&t.push(e);let o=s.querySelector(".gt_product-saved");o&&t.push(o);let r=s.querySelector(".gt_product-price--compare");r&&t.push(r)}if(s=c.closest(".gt_product_content"),s){let e=s.querySelector("form .gt_product-addtocart");e&&t.push(e);let o=s.querySelector(".gt_product-price--compare");o&&t.push(o)}if(s=c.closest(".gt-single-product"),s){let e=s.querySelector("div.gt_method_addToCart");e&&t.push(e);let o=s.querySelector(".gt_product-price--compare");o&&t.push(o)}if(s=c.closest("#cont-form"),s){let e=s.querySelector("form .cont-add-btns");e&&t.push(e)}if(s=c.closest(".theiaStickySidebar"),s){let e=s.querySelector(".variations_button");e&&t.push(e)}if(s=c.closest(".product--price-wrapper"),s){let e=s.querySelector(".product--compare-price");e&&t.push(e)}if(s=c.closest(".product-submit"),s){let e=s.querySelector(".payment-buttons-container");e&&t.push(e)}if(s=c.closest(".product-price"),s){let e=s.querySelector(".product-price-compare");e&&t.push(e)}if(s=c.closest(".product-list-item"),s){let e=s.querySelector(".original"),o=s.querySelector(".product-list-item-badge");e&&t.push(e),o&&t.push(o)}if(s=c.closest(".productitem"),s){let e=s.querySelector(".productitem--action");e&&t.push(e);let o=s.querySelectorAll(".bss-ltsp-to-remove");if(o.length)for(let e of o)t.push(e)}if(s=c.closest(".product--outer"),s){let e=s.querySelector(".product-form--atc");e&&t.push(e),e=s.querySelector(".shopify-payment-button"),e&&t.push(e)}if(s=c.closest(".Container"),s)if(window.Shopify&&"mama-shawna.myshopify.com"===window.Shopify.shop){let e=s.querySelector("form.ProductForm");if(window.__st&&e){__st.cid&&t.push(e)}}else{let e=s.querySelector(".ProductForm__BuyButtons");e&&t.push(e)}if(s=c.closest(".product-grouped"),s){let e=s.querySelector(".product_top form#add-to-cart-form");e&&t.push(e)}if(s=c.closest(".product-item"),s){let e=s.querySelector(".product-top .product-des .action"),o=s.querySelector(".slideup");if(e&&t.push(e),o&&t.push(o),o=s.querySelector(".card-quickview"),o&&t.push(o),window.Shopify&&"sitchish.myshopify.com"===window.Shopify.shop){let e=s.querySelector(".product-item-price .money");e&&e.classList.remove("money")}}if(s=c.closest(".modal_price"),s){let e=s.querySelector(".was_price");e&&t.push(e)}if(s=c.closest(".info"),s){let e=s.querySelector(".was_price");e&&t.push(e)}if(s=c.closest(".product-item"),s){let e=s.querySelector('.product-item__action-button[data-action="add-to-cart"]');e&&t.push(e)}if(s=c.closest(".grid__item.grid-product"),s){let e=s.querySelector('form[action="/cart/add"] input[type="submit"]');e&&t.push(e);let r=s.querySelector(".grid-product__tag");r&&t.push(r);let c=s.querySelector(".visually-hidden");c&&t.push(c);let l=s.querySelector(".quick-product__btn");l&&"comphycompany.myshopify.com"===o&&t.push(l)}if(s=c.closest(".product-info"),s){let e=s.querySelector('form[action="/cart/add"] .payment-buttons');e&&t.push(e);let o=s.querySelector(".variant-wrapper.variant-wrapper--button");o&&t.push(o);let r=s.querySelector(".form .product-actions .product-actions-add-to-cart");r&&t.push(r);let c=s.querySelector(".product-price__compare");
7177c&&t.push(c),c=s.querySelector("compare-at-price"),c&&t.push(c);let l=s.querySelector("unit-price");l&&t.push(l),e=s.querySelector(".buy-buttons"),e&&t.push(e);let u=s.querySelector(".product-info__badge-list");u&&t.push(u)}if(s=c.closest(".price"),s){if(s.textContent.includes("From")){let e=s.innerHTML;s.innerHTML=e.replace("From","")}}if(s=c.closest("#product-right"),s){let e=s.querySelector(".was");e&&t.push(e);let o=s.querySelector(".product-add");o&&t.push(o)}if(s=c.closest(".was"),s&&t.push(s),s=c.closest(".product-single__meta"),s){let e=s.querySelector(".pf__actions");e&&t.push(e);let o=s.querySelector("div.product-form__controls-group.product-form__controls-group--submit");o&&o.setAttribute("style","visibility:hidden")}if(s=c.closest(".product-item"),s){let e=s.querySelector(".product-item__add");e&&t.push(e)}if(s=c.closest(".grid-item"),s){let e=s.querySelector("#addToCart-product-template");e&&t.push(e);let o=s.querySelector(".payment-buttons");o&&t.push(o)}if(s=c.closest(".product-single__meta"),s){let e=s.querySelector("div.payment-buttons");e&&e.remove()}if(s=c.closest(".modal--root"),s){let e=s.querySelector(".product-form--button-container");e&&t.push(e)}if(s=c.closest(".product-item__info"),s){let e=s.querySelector("a.product-item__action-button.button.button--small.button--primary");e&&t.push(e)}if(s=c.closest(".product-form__info-list"),s){let e=s.querySelector("div.product-form__info-item.product-form__info-item--quantity");e&&t.push(e)}if(s=c.closest(".large--three-fifths"),s){let e=s.querySelector(".multivariants_setbox_footer");e&&t.push(e)}if(s=c.closest(".product-info-main"),s){let e=s.querySelector(".qty-box");e&&t.push(e);let o=s.querySelector(".btn.btn-cart");o&&t.push(o);let r=s.querySelector(".shopify-payment-button");r&&t.push(r)}if(s=c.closest(".product-miniature"),s){let e=s.querySelector(".qty-box");e&&t.push(e);let o=s.querySelector(".product.actions.product-item-actions");o&&t.push(o)}if(s=c.closest("#AddToCartForm"),s){let e=s.querySelector(".paymentButtonsWrapper");e&&t.push(e)}if(s){let e=s.querySelector("#product-add");e&&e.remove()}if(s){let e=s.querySelector("#product-price>.product-price");e&&e.remove()}if(s=c.closest(".grid-view-item"),s){let e=s.querySelector(".quick-add-button");e&&t.push(e)}if("tinalykkegaard.myshopify.com"===o){if(s=c.closest(".main-product__details>.main-product__details-wrapper"),s){let e=s.querySelector(".main-product__actions .main-product__form-buttons");e&&e.remove()}if(s=c.closest(".product-grid .product-card"),s){let e=s.querySelector('form[action="/cart/add"]');e&&e.remove()}}if(s=c.closest(".product-item-caption"),s){let e=s.querySelector(".product-form__item--submit");e&&t.push(e)}if(s=c.closest(".product-item-caption"),s){let e=s.querySelector(".product-form__item--quantity");e&&t.push(e)}if(s=c.closest(".productgrid--item"),s){let e=s.querySelector(".productitem--actions");e&&t.push(e)}if(s=c.closest(".product-single__info-wrapper"),s){let e=s.querySelector(".product-form__quantity-submit");e&&t.push(e);let o=s.querySelector(".shopify-payment-button");o&&t.push(o)}if(s=c.closest(".qv-content"),s){let e=s.querySelector(".qv-add-button");e&&t.push(e);let o=s.querySelector(".qv-quantity");o&&t.push(o)}if(s=c.closest(".product-card"),s){let e=s.querySelector(".btn-grid-cart");e&&t.push(e)}if(s=c.closest(".product_single_detail_section"),s){let e=s.querySelector("#AddToCart");e&&t.push(e);let o=s.querySelector(".shopify-payment-button__button");o&&t.push(o);let r=s.querySelector(".quantity-label");r&&t.push(r);let c=s.querySelector(".quantity_width");c&&t.push(c)}if(s=c.closest(".product-single__meta"),s){let e=s.querySelector("#AddToCart--product-template");e&&t.push(e);let o=s.querySelector(".shopify-payment-button");o&&t.push(o)}if(s=c.closest('form[action="/cart/add"]'),s){let e=s.querySelector(".product-page-info__field");e&&t.push(e);let o=s.querySelector(".product-page-info__button-add-to-cart");o&&t.push(o);let r=s.querySelector(".js-store-lists-add-wishlist");r&&t.push(r);let c=s.querySelector(".product-collection__control");c&&t.push(c)}if(s=c.closest(".grid-item__content"),s){let e=s.querySelector(".quick-add-btn");if(e&&t.push(e),window.Shopify&&"sparklinbluewholesale.myshopify.com"===window.Shopify.shop){let e=s.querySelector(".grid-product__price--original"),o=s.querySelector(".grid-product__price--savings"),r=s.querySelector(".quick-product__btn");e&&t.push(e),o&&t.push(o),r&&t.push(r)}}if(s=c.closest(".purchase-box"),s){let e=s.querySelector("#AddToCart-product-template");e&&e.remove();let t=s.querySelector(".quantity-product-template");t&&t.remove()}if(s=c.closest(".item-row"),s){let e=s.querySelector(".add-to-cart");e&&t.push(e)}if(s=c.closest(".product-thumbnail__price"),s){let e=s.querySelectorAll(".bsscommerce-ltsp-message");e.length>1&&e.forEach((function(e,o){o>0&&t.push(e)}))}if(s=c.closest(".product-details"),s){let e=s.querySelector(".product__add-to-cart-button");e&&t.push(e);let r=s.querySelector(".product-form__quantity-box-wrapper");if(r&&t.push(r),"sitchish.myshopify.com"===o){let e=s.querySelector("#product-price");e&&(e.id="");let o=s.querySelector("[data-product-price]");o&&o.removeAttribute("data-product-price");let r=s.querySelector(".form-actions");r&&t.push(r)}let c=s.querySelector(".product-quantity");if(c&&t.push(c),"lavabis-hygiene.myshopify.com"===o){let e=s.querySelector(".price-preview.price");e&&(e.id="")}}if(s=c.closest(".product-details"),s){let e=s.querySelector("#add-to-cart-product-template");e&&t.push(e);let o=s.querySelector(".shopify-payment-button__button");o&&o.remove();let r=s.querySelector(".quantity");r&&t.push(r)}if(s=c.closest(".gryffeditor"),s){let e=s.querySelector(".gf_product-quantity");e&&e.parentElement.remove()}if(s=c.closest("#ProductSection-product-template"),s){let e=s.querySelector(".cbb
7177-frequently-bought-add-button");e&&e.remove();let t=s.querySelector(".cbb-frequently-bought-form");t&&t.remove()}if(s=c.closest(".product__info-wrapper"),s){let e=s.querySelector(".product-form__quantity");e&&e.remove();let t=s.querySelector(".product-form__buttons");t&&t.remove()}if(s=c.closest(".product-form"),s){let e=s.querySelector(".product-form__payment-container");e&&e.remove();let o=s.querySelector("#price");if(o&&o.classList.remove("product-price"),window.Shopify&&"wilkens-gmbh.myshopify.com"===window.Shopify.shop){let e=s.querySelector(".unit-price");e&&t.push(e)}}if(s=c.closest(".product-details"),s){let e=s.querySelector(".button-common");e&&e.remove()}if(s=c.closest(".caption"),s){let e=s.querySelector(".button.btn-cart");e&&t.push(e)}if(s=c.closest(".product-info-main"),s){let e=s.querySelectorAll(".form-group")[1];e&&t.push(e);let o=s.querySelector(".price");o&&(o.id="")}if(s=c.closest(".form_buy_sticky"),s){let e=s.querySelector(".form-group .btn.button.button-cart");e&&t.push(e);let o=s.querySelector(".form-group input#Quantity");o&&t.push(o)}if(s=c.closest(".product-template__container"),s){let e=s.querySelector(".store-availability-container");e&&e.remove()}if(s=c.closest(".product-form--container"),s){let e=s.querySelector(".product-form--options");e&&t.push(e);let o=s.querySelector(".product-form--smart-payment-buttons");o&&t.push(o)}if(s=c.closest(".product--price-wrapper"),s){let e=s.querySelector('.product--from[data-item="accent-text"]');e&&t.push(e)}if(s=c.closest("#zpproductselectorfull1-wrapper"),s){let e=s.querySelector(".zpa-button-alignment-center");e&&t.push(e);let o=s.querySelector(".zpa-quantity-block");o&&t.push(o)}if(s=c.closest(".zpa-multi-product-buy-box"),s){let e=s.querySelector(".zpa-button-alignment-center");e&&t.push(e)}if(s=c.closest(".product-block__inner"),s){let e=s.querySelector('form[action="/cart/add"].product-form.product-form--mini');if(e&&t.push(e),window.Shopify&&"wilkens-gmbh.myshopify.com"===window.Shopify.shop){let e=s.querySelector(".unit-price");e&&t.push(e)}}if(s=c.closest(".was-price.theme-money"),s&&t.push(s),s=c.closest(".box_product_page"),s){let e=s.querySelector(".product-options-bottom");e&&t.push(e)}if(s=c.closest(".product-default"),s){let e=s.querySelector(".add-links.clearfix");e&&t.push(e)}if(s=c.closest(".grid__item.medium-up--three-eighths"),s){let e=s.querySelector('form[action="/cart/add"].shopify-product-form');e&&t.push(e)}if(s=c.closest(".indiv-product"),s){let e=s.querySelector('form[action="/cart/add"]');e&&t.push(e)}if(s=c.closest('form.product-form[action="/cart/add"]'),s){let e=s.querySelector(".sf__pcard-image .sf__pcard-quick-add");e&&t.push(e);let o=s.querySelector(".main-product__block-buy_buttons");o&&t.push(o)}if(s=c.closest(".product-grid-item.woodmart-hover-base"),s){let e=s.querySelector(".fade-in-block");e&&t.push(e);let o=s.querySelector(".product-compare-button");o&&t.push(o)}if(s=c.closest(".grid__item"),s){if("www-bonmatch-com.myshopify.com"===o){let e=s.querySelector(".selector-wrapper.bcpo-file"),o=s.querySelector(".uploadkit.uploadkit-injected"),r=s.querySelector(".uploadkit-form");e&&t.push(e),o&&r&&r.appendChild(o)}let e=s.querySelector(".product__submit__buttons");e&&t.push(e);let r=s.querySelector(".products > .product-detail > .product-button"),c=s.querySelector(".products > .product-container > .product-button > .quick-view-text");r&&t.push(r),c&&t.push(c);let l=s.querySelector("button#AddToCart"),u=s.querySelector('[data-shopify="payment-button"].shopify-payment-button');if(l&&t.push(l),u&&t.push(u),"tienda-suca-bikes.myshopify.com"===o){let e=s.querySelector(".product__unit-price.product__unit-price--spacing"),t=s.querySelector(".c_p-quantity-input-parent"),o=s.querySelector(".masIva"),r=s.querySelector(".c_col-sw-btn");e&&e.classList.remove("hide"),t&&t.remove(),o&&o.remove(),r&&r.remove()}if("youchique-4183.myshopify.com"===o){let e=s.querySelector(".card-information__button");e&&t.push(e);let o=s.querySelector(".swym-wishlist-button-bar");o&&t.push(o)}if("stelladetailsb2b.myshopify.com"===o){let e=s.querySelector(".bss-b2b-product-vat");e&&t.push(e);let o=s.querySelector("#bss-b2b-tax-inc-excl");o&&t.push(o);let r=s.querySelector(".bss-b2b-collection-item-vat");r&&t.push(r);let c=s.querySelector(".price__regular");if(c){c.classList.remove("price__regular");let e=s.querySelector(".price-item--regular");e&&e.classList.remove("price-item--regular")}let l=s.querySelector(".price__sale");l&&t.push(l)}let i=s.querySelector("quick-view-drawer");
7177i&&t.push(i);let p=s.querySelector("add-to-cart");p&&t.push(p)}if(s=c.closest(".shop-the-look__product-info"),s){let e=s.querySelector('form[action="/cart/add"]');e&&t.push(e)}if(s=c.closest(".popover.popover--quick-buy"),s){let e=s.querySelector(".product-form__buy-buttons");e&&t.push(e)}if(s=c.closest(".product__section.product-template .product__section-content .product__section-details"),s){let e=s.querySelector('form[action="/cart/add"] input#addToCart');e&&t.push(e)}if(s=c.closest(".product-item__info-inner"),s){let e=s.querySelector(".unit-price-measurement");e&&t.push(e)}if(s=c.closest(".product-form__info-item"),s){let e=s.querySelector(".unit-price-measurement");e&&t.push(e)}if(s=c.closest("div[data-product-blocks]"),s){let e=s.querySelector(".payment-buttons");e&&t.push(e);let o=s.querySelector(".spt-wishlist-button__wrapper");o&&t.push(o)}if(s=c.closest(".sf__pcard-content.text-center"),s){let e=s.querySelector("button.add-to-cart.sf__btn");e&&t.push(e)}if(s=c.closest(".product-details.section"),s){let e=s.querySelector('form#AddToCartForm.product-content-inner[action="/cart/add"]');e&&t.push(e)}if(s=c.closest(".search-item .product-item, .product-grid-row .product-item"),s){let e=s.querySelector(".product-img .action-btn");e&&t.push(e)}if(s=c.closest(".product-collection__content,.product-page-info"),s){let e=s.querySelector(".js-product-button-add-to-cart");e&&t.push(e)}if(s=c.closest(".details-info"),s){let e=s.querySelector(".group-button .add-to-cart");e&&t.push(e)}if(s=c.closest(".product-collection"),s){let e=s.querySelector(".group-button .add-to-cart");e&&t.push(e)}let u=c.closest("[data-js-product-price]");if(u&&u.setAttribute("bss-ltsp-active",""),s=c.closest(".product__info-container"),s){let e=s.querySelector('.form[data-type="add-to-cart-form"] > .shopify-payment-button[data-shopify="payment-button"]');e&&t.push(e)}if(s=c.closest(".products"),s){let e=s.querySelector(".product-container > .product-button > .variants > .add-cart-btn"),o=s.querySelector(".product-container > .product-button > .quick-view-text");e&&t.push(e),o&&t.push(o)}if(s=c.closest(".dt-sc-tabs-container"),s){let e=s.querySelector(".dt-sc-tabs-content > .tab2 > .owl-stage-outer > .owl-stage > .owl-item > .item-row > .products > .product-container > .product-button > .variants > .add-cart-btn");e&&t.push(e)}if(s=c.closest(".wrapper-container"),s){let e=s.querySelector(".recently-viewed-products > .products-grid > .grid__item > .product-item > .products > .product-bottom > .price-box > .regular-product > .special-price"),o=s.querySelector(".recently-viewed-products > .products-grid > .grid__item > .product-item > .products > .product-bottom > .action > .variants > .add-to-cart-btn");e&&t.push(e),o&&t.push(o)}if(s=c.closest(".featured__collection-product.product-index"),s){let e=s.querySelector(".product_listing_options");e&&t.push(e)}if(s=c.closest(".product-index"),s){let e=s.querySelector(".product_listing_options");e&&t.push(e)}if(s=c.closest(".product__section-details"),s){let e=s.querySelector(".product__section-details__inner
7177--product_buttons");e&&t.push(e)}if(s=c.closest(".product-page--cart-form-block"),s){let e=s.querySelector(".add-to-cart");e&&t.push(e)}if(s=c.closest(".price__sale"),s){let e=s.querySelector(".price-item--regular");e&&t.push(e)}if(s=c.closest(".product-item-v1"),s){let e=s.querySelector(".price-old"),o=s.querySelector(".product-icon-action");e&&t.push(e),o&&t.push(o)}if(s=c.closest(".detail-info > .relative"),s){let e=s.querySelector("#AddToCartForm > .btn-action"),o=s.querySelector('div.shopify-payment-button[data-shopify="payment-button"]'),r=s.querySelector(".product-price > del");e&&t.push(e),o&&t.push(o),r&&t.push(r)}if(s=c.closest(".product-details"),s){let e=s.querySelector(".product-block--form>.product-form--regular");e&&"eurosafetysystems.myshopify.com"!==o&&e.remove();let t=s.querySelector(".button-cart");t&&t.remove()}if("annabellenoeldesigns-com.myshopify.com"==o&&(s=c.closest(".product-block-list__item .card__section"),s)){let e=s.querySelector("#MULTIVARIANTS_APP_SECTION_PLACE .multivariants_block_qty_box");e&&e.remove();let t=s.querySelector("#MULTIVARIANTS_APP_SECTION_PLACE .multivariants_block_last_holder .multivariants_block_prc_holder");t&&t.remove();let o=s.querySelector("#MULTIVARIANTS_APP_SECTION_PLACE #multivariants_add_to_cart_button_h");o&&o.remove();let r=s.querySelector("#MULTIVARIANTS_APP_SECTION_PLACE #multivariants_block_subtotal_h");r&&r.remove()}if("fedua-b2b.myshopify.com"==o){if(s=c.closest(".gp-product-detail .container"),s){let e=s.querySelector(".gp-product-main-button button[type='submit']");e&&e.remove();let t=s.querySelector(".cbb-also-bought-add-to-cart-button");t&&t.remove();let o=s.querySelector(".cbb-also-bought-product-price-container");o&&o.remove()}if(s=c.closest(".gp-product-widget .product-card-grid"),s){let e=s.querySelector(".product-buttons .btn-quick-view ");e&&e.remove()}}if(s=c.closest(".product--price-container"),s){let e=s.querySelectorAll(".product--price-wrapper > a");e.length&&e.forEach(e=>e.remove())}if("linis-bites-b2b.myshopify.com"==window.location.host&&c.querySelector("[bss-customize-ltsp-message]")){let e=c.closest(".price .price__container");if(e){let o=e.querySelector(".unit-price.caption");o&&t.push(o)}}if(s=c.closest(".product-price--wrapper"),s){let e=s.querySelector(".product-price--compare");e&&e.remove()}if(s=c.closest(".price__pricing-group"),s){let e=s.querySelector(".price-item.price-item--regular[data-regular-price]");e&&(e.classList.remove("price-item"),e.classList.remove("price-item--regular"))}if(l.forEach((function(e){c.closest(e)&&t.push(c.closest(e))})),s=c.closest(".product-page-info"),s){let e=s.querySelector("[data-js-footbar-product-limit]");e&&t.push(e)}if(s=c.closest(".product-wrap"),s){let e=s.querySelector(".purchase-details button.button--add-to-cart"),o=s.querySelector(".product-action");if(e&&t.push(e),o&&t.push(o),window.Shopify&&"dermafirmusa.myshopify.com"===window.Shopify.shop){let e=s.querySelector(".price.sale");e&&t.push(e)}}if(s=c.closest(".seven.columns.omega"),s){let e=s.querySelector(".purchase-details__buttons button.shopify-payment-button__button ");e&&t.push(e)}if(s=c.closest("#collectionPr"),s){let e=s.querySelectorAll("#PageContainer .collection .btn.add-to-cart");e.length&&e.forEach(e=>{t.push(e)})}if(s=c.closest(".grid.product-single"),s){let e=s.querySelector('#PageContainer .wrap-product-info button[type="submit"].btn.btn1.pr_btn.addtocart_js');e&&t.push(e)}if(s=c.closest(".gryffeditor"),s){let e=s.querySelector(".module-wrap .gf_add-to-cart.product-form-product-template");e&&t.push(e)}if(s=c.closest(".product-single .product-single__meta"),s){let e=s.querySelector('.product-form__item button[name="add"].product-form__cart-submit');e&&t.push(e)}if(s=c.closest(".shopify-product-form"),s){let e=s.querySelector("#product-price");e&&t.push(e)}if(s=c.closest(".product-item-price"),s){let e=s.querySelector(".money");e&&t.push(e)}if(s=c.closest('main#main[role="main"]'),s){let e=s.querySelector("div.atc-bar");e&&t.push(e)}if(s=c.closest("#CartDrawer"),s){let e=s.querySelector("#CartDrawer-CartItems .cart-item .cart-item__details dl .product-option");e&&t.push(e);let o=s.querySelector("#CartDrawer-CartItems .cart-item .cart-item__totals .cart-item__price-wrapper");o&&t.push(o);let r=s.querySelector("#CartDrawer-CartItems .cart-item .cart-item__quantity");r&&t.push(r);let c=s.querySelector(".drawer__footer");c&&t.push(c)}if(s=c.closest("#main-cart-items"),s){let e=s.querySelector(".cart-item .cart-item__details dl .product-option");e&&t.push(e);let o=s.querySelector(".cart-item .cart-item__quantity .cart-item__quantity-wrapper");o&&t.push(o);let r=s.querySelector(".cart-item .cart-item__totals.right.small-hide .cart-item__price-wrapper");r&&t.push(r)}if(s=c.closest("#main-cart-footer"),s){let e=s.querySelector(".cart__footer");e&&t.push(e)}if(s=c.closest(".product-single__meta"),s&&window.Shopify&&("asiadirectfurniture.mysh
7177opify.com"===window.Shopify.shop||"pure-vision-ch.myshopify.com"===window.Shopify.shop)){let e=s.querySelector(".product__price[data-product-price]");e&&t.push(e)}if(s=c.closest(".product-inner.pr"),s){let e=s.querySelector(".pr_atc.pr_qty_atc > a.pr_atc_.js_addtc");e&&t.push(e)}if(s=c.closest("#shopify-section-pr_summary"),s){let e=s.querySelector("p.price_range, .price.price_varies");e&&t.push(e)}if(s=c.closest(".grid__item"),s){let e=s.querySelector(".product__form-container"),o=s.querySelector(".product__description");e&&(t.push(e),o.style.width="100%")}if(s=c.closest(".featured-product__content-wrapper"),s){let e=s.querySelector(".product-form");e&&t.push(e)}if(s=c.closest(".card__price"),s&&"exosomes-inc.myshopify.com"===o&&(s.style.textAlign="center"),s=c.closest(".Product__InfoWrapper > .Product__Info "),s){let e=s.querySelector('.ProductForm__BuyButtons > button[type="submit"].ProductForm__AddToCart');e&&t.push(e);let o=s.querySelector(".ProductForm__AddToCart");o&&t.push(o)}if(s=c.closest(".product-grid__container .product-grid__content"),s){let e=s.querySelector(".product-single__form .product__quantity");e&&t.push(e);let o=s.querySelector(".add-to-cart");o&&t.push(o);let r=s.querySelector(".product__price--compare");if(r&&t.push(r),window.Shopify&&"sparklinbluewholesale.myshopify.com"===window.Shopify.shop){let e=s.querySelector(".product__price-savings");e&&t.push(e)}}if(s=c.closest(".product-grid-item"),s){let e=s.querySelector(".h1.medium--left");e&&"envogueusa.com"==window.location.host&&t.push(e)}if(s=c.closest("#productPrice-product-template"),s){let e=s.querySelector("small");e&&"envogueusa.com"==window.location.host&&t.push(e),s.appendChild(c)}if(s=c.closest(".product-grid-item"),s){let e=s.querySelector(".form-grid-btn");e&&"mamiereglissepro.myshopify.com"===o&&t.push(e)}if(s=c.closest("#cont-form"),s){let e=s.querySelector(".so-price");e&&t.push(e);let r=s.querySelector("#addToCart");r&&"mamiereglissepro.myshopify.com"===o&&t.push(r)}if(s=c.closest(".template-product"),s){let e=s.querySelector('button[name="add"]#addToCartBis, button[name="add"]#addToCart2');e&&t.push(e)}if(s=c.closest(".grid-product__content"),s){let e=s.querySelector(".quick-product__btn");!e||"wood-hill-boards.myshopify.com"!==o&&"wood-hill-boards-usa.myshopify.com"!==o&&"bundlecomph.myshopify.com"!==o||t.push(e)}if(s=c.closest(".product-single__meta"),s){let e=s.querySelector(".product__quantity");!e||"wood-hill-boards.myshopify.com"!==o&&"wood-hill-boards-usa.myshopify.com"!==o||t.push(e)}if(s=c.closest(".product-block-area"),s){let e=s.querySelector("#addToCartButton");e&&"wanderlustvision.myshopify.com"===o&&t.push(e)}if(s=c.closest(".product-single__meta--wrapper .product-single__meta"),s){let e=s.querySelector(".price-container.text-money"),o=s.querySelector('button[name="add"].btn--add-to-cart');e&&t.push(e),o&&t.push(o)}if(s=c.closest(".product-single__metas"),s){let e=s.querySelector(".product-single__buttons .js-quantity-selector.product-quantity"),o=s.querySelector(".product-single__buttons button.btn--add-to-cart");e&&t.push(e),o&&t.push(o)}if("dollie-wholesale.myshopify.com"===o&&(s=c.closest(".product-card"),s)){let e=s.querySelector(".product-card__buttons .product-card__quickview"),o=s.querySelector(".product-card__buttons .product-card__form"),r=s.querySelector(".product-card__buttons .button-wishlist"),c=s.querySelector(".wpb-variants-swatch");e&&t.push(e),o&&t.push(o),r&&t.push(r),c&&t.push(c)}if("obsequ.myshopify.com"===o&&(s=c.closest(".product-meta"),s)){let e=s.querySelector(".price-list[data-product-price-list]");e&&e.remove()}if(s=c.closest(".sticky-cart"),s){let e=s.querySelector(".product-form__buttons");e&&t.push(e)}if("wholesale-rubypearlco.myshopify.com"!==o&&"coventa-demo.myshopify.com"!==o&&(s=c.closest(".productitem--info")||c.closest(".product-pricing"),s)){let e=s.querySelector(".price");e&&t.push(e)}if(s=c.closest(".productitem--info"),s){let e=s.querySelector(".price__compare-at.visible");e&&"coventa-demo.myshopify.com"===o&&t.push(e)}if(s=c.closest(".product-block-list"),s&&window.Shopify&&"axiom-wholesale-parts.myshopify.com"===window.Shopify.shop){let e=s.querySelector(".price");e&&e.classList.remove("price")}if(s=c.closest(".product-layout"),s){let e=s.querySelector(".action-links");e&&t.push(e)}if(s=c.closest(".product-single__meta"),s){let e=s.querySelector(".product-block--price");e&&"comphycompany.myshopify.com"===o&&t.push(e)}if(s=c.closest(".product-details, .modal_price"),s){let e=s.querySelector(".current_price, .price__container");e&&t.push(e)}if("wholesale-rubypearlco.myshopify.com"===window.Shopify.shop&&(s=c.closest(".productitem__container .productitem--info, .product-details .product-pricing"),s)){let e=s.querySelectorAll(".price__compare-at--single, .price__compare-at, .price__current--max");
7177e.length&&e.forEach(e=>e.remove())}if("kerriecapelliusa-com.myshopify.com"===window.Shopify.shop&&(s=c.closest(".product-detail.quickbuy-content.spaced-row.container"),s)){let e=s.querySelectorAll(".product-form.theme-init .variant-visibility-area");e.length&&e.forEach(e=>e.remove())}if(s=c.closest(".widget_if_pr, .product-inner, .al_center.fl_center, .widget_if_pr"),s){let e=s.querySelectorAll(".product-price-pr-search, .hover_button, .nt_add_w, .nt_add_cp, .sticky_atc_btn.variations_form, .transcy-money");e.length&&e.forEach(e=>e.remove())}if(s=c.closest(".ProductItem__Wrapper, .ProductForm"),s){let e=s.querySelector(".ProductItem__PriceList, .ProductForm__QuantitySelector");e&&"sirenwireless.myshopify.com"!==o&&e.remove();let r=s.querySelector(".ProductFormWrapper");r&&"sirenwireless.myshopify.com"===o&&t.push(r)}if("butterfly-health-and-wellness.myshopify.com"===window.Shopify.shop){if(s=c.closest(".item-content"),s){let e=s.querySelector('.module-wrap[data-label="(P) Cart Button"] button.gf_add-to-cart');e&&e.remove()}if(s=c.closest(".gf_product-desc"),s){let e=s.querySelector("h4");e&&(e.remove(),c.style.display="none")}if(s=c.closest(".gf_column[data-id]"),s){let e=s.querySelectorAll('.elementor-section[data-element_type="section"] .elementor-text-editor strong, .gf_product-desc h4, .gf_product-desc strong');if(e)for(let t of e)t.remove()}}if(s=c.closest(".product-block"),s){let e=s.querySelector(".quickbuy-toggle");e&&t.push(e)}if(s=c.closest(".productView-details"),s){let e=s.querySelector(".productView-buttons"),r=s.querySelector(".quantity_selector"),c=s.querySelector(".productView-subtotal");e&&t.push(e),r&&t.push(r),c&&t.push(c),"remote-king-au.myshopify.com"===o&&s.querySelectorAll(".product-customInformation").forEach(e=>e.remove())}if(s=c.closest(".product__content"),s&&"campomarzio-trade-uk.myshopify.com"===o){let e=s.querySelector(".product__text"),o=s.querySelector(".select__fieldset"),r=s.querySelector(".product__submit");e&&t.push(e),o&&t.push(o),r&&t.push(r)}if(s=c.closest(".product-card__price, .product-single__meta-list"),s){let e=s.querySelector(".product-single__price, .money-product");e&&e.remove()}if("ens-nutrition-3419.myshopify.com"===o&&(s=c.closest(".card__content"),s)){let e=s.querySelector(".button.quick-add__submit");e&&e.remove()}if("b2b-nandu.myshopify.com"===o){if(s=c.closest(".grid-product__content"),s){let e=s.querySelector(".grid-product__meta .grid-product__price ");e&&e.remove()}let e=c.closest(".product-single__meta");if(e){let t=e.querySelector(".product__price.product__price--compare"),o=e.querySelector(".product__price.on-sale"),r=e.querySelector(".product__price-savings");t&&o&&r&&(t.remove(),o.remove(),r.remove())}}if("impjarwholesale.myshopify.com"===o){if(s=c.closest(".tp-product-content"),s){let e=s.querySelector("button#AddToCart"),o=s.querySelector(".tp-product-singe-action .tp-product-quantity");e&&t.push(e),o&&t.push(o)}if(s=c.closest(".grid-item"),s){let e=s.querySelector('form[action="/cart/add"]');e&&t.push(e)}}if("b2b-dbodhi-singapore.myshopify.com"===o&&(s=c.closest("del"),s&&t.push(c),s=c.closest(".product-information--inner"),s)){const e=s.querySelector(".product-form");e&&t.push(e)}if(s=c.closest(".lh-details-product"),s){if("ags2020.myshopify.com"===o){let e=s.querySelector(".lh-price");e&&e.classList.remove("lh-price")}let e=s.querySelector(".lh-add_to_cart");e&&t.push(e);let r=s.querySelector(".lh-buy-now");r&&t.push(r);let c=s.querySelector(".lh-compare-at-price");c&&t.push(c)}if(s=c.closest(".lh-collection-item"),s){if("ags2020.myshopify.com"===o){let e=s.querySelector(".lh-price");e&&e.classList.remove("lh-price")}let e=s.querySelector(".lh-product-compare-price");e&&t.push(e)}if(s=c.closest(".ProductMeta, .ProductItem__Info"),s){let e=s.querySelectorAll(".Price");e&&e.forEach(e=>e.remove())}}t.forEach((function(e){e.remove()}))}}(e),function(e){e.ltsp.removeElementByLTSPWrapper=function(){let e=document.getElementsByClassName("bss-ltsp-price-wrapper"),t=[];for(let o=0;o<e.length;o++){let r=e[o],c=[],l=r.closest(".product-parent");if(l){let e=l.querySelector("form .tt-btn-addtocart");e&&t.push(e);let o=l.querySelector(".tt-btn-quickview");o&&t.push(o)}if(l=r.closest(".product-single__meta"),l=r.closest(".tt-product-single-info"),l){let e=l.querySelector("form .btn-addtocart");e&&t.push(e);let o=l.querySelector('form[action*="/cart/add"]');o&&t.push(o)}if(l=r.closest(".product_section"),l){let e=l.querySelector("form .add_to_cart, form .b2b-ajax-submit");e&&t.push(e);let o=l.querySelector(".sale.savings");o&&t.push(o)}if(l=r.closest(".quick-shop-style--inline"),l){let e=l.querySelector("form .add_to_cart, form .b2b-ajax-submit");e&&t.push(e)}if(l=r.closest(".product-details"),l){let e=l.querySelector("small em");e&&t.push(e)}if(l=r.closest(".gt_product-body"),l){let e=l.querySelector("form .gt_product-addtocart");e&&t.push(e);let o=l.querySelector(".gt_product-saved");o&&t.push(o);let r=l.querySelector(".gt_product-price--compare");r&&t.push(r)}if(l=r.closest(".gt_product_content"),l){let e=l.querySelector("form .gt_product-addtocart");e&&t.push(e);let o=l.querySelector(".gt_product-price--compare");o&&t.push(o)}if(l=r.closest(".gt-single-product"),l){let e=l.querySelector("div.gt_method_addToCart");e&&t.push(e);let o=l.querySelector(".gt_product-price--compare");o&&t.push(o)}if(l=r.closest("#cont-form"),l){let e=l.querySelector("form .cont-add-btns");e&&t.push(e)}if(l=r.closest(".theiaStickySidebar"),l){let e=l.querySelector(".variations_button");e&&t.push(e)}if(l=r.closest(".product-submit"),l){let e=l.querySelector(".payment-buttons-container");e&&t.push(e)}if(l=r.closest(".productitem"),l){let e=l.querySelector(".productitem--action");e&&t.push(e)}if(l=r.closest(".product--outer"),l){let e=l.querySelector(".product-form--atc");e&&t.push(e),e=l.querySelector(".shopify-payment-button"),e&&t.push(e)}if(l=r.closest(".product-grouped"),l){let e=l.querySelector(".product_top form#add-to-cart-form");e&&t.push(e)}if(l=r.closest(".product-item"),l){let e=l.querySelector(".product-top .product-des .action");e&&t.push(e)}if(l=r.closest(".product-item"),l){let e=l.querySelector('.product-item__action-button[data-action="add-to-cart"]');e&&t.push(e)}if(l=r.closest(".grid__item.grid-product"),l){let e=l.querySelector('form[action="/cart/add"] input[type="submit"]');e&&t.push(e);let o=l.querySelector(".grid-product__tag");o&&t.push(o);let r=l.querySelector(".visually-hidden");r&&t.push(r)}if(l=r.closest(".product-info"),l){let e=l.querySelector('form[action="/cart/add"] .payment-buttons');e&&t.push(e);let o=l.querySelector(".variant-wrapper.variant-wrapper--button");o&&t.push(o)}if(l=r.closest("#product-right"),l){let e=l.querySelector(".was");e&&t.push(e);let o=l.querySelector(".product-add");o&&t.push(o)}if(l=r.closest(".was"),l&&t.push(l),l=r.closest(".product-single__meta"),l){let e=l.querySelector(".pf__actions");e&&t.push(e)}if(l=r.closest("#AddToCartForm-product-template"),l){let e=l.querySelector("#CartButtons-product-template");e&&t.push(e)}if(l=r.closest(".Product__Info"),l){let e=l.querySelector(".ProductMeta__PriceList");e&&t.push(e)}if(l=r.closest(".grid-item"),l){let e=l.querySelector("#addToCart-product-template");e&&t.push(e);let o=l.querySelector(".payment-buttons");o&&t.push(o)}c.forEach((function(e){r.closest(e)&&t.push(r.closest(e))}))}t.forEach((function(e){e.remove()}))}}(e),e.ltsp.removePattern=function(){e.ltsp.removeElementByLTSPMessage(),e.ltsp.removeElementByLTSPWrapper()},e.ltsp.insertBeforeAddToCart=function(){let t=document.querySelectorAll(".bsscommerce-ltsp-message[data-ltsp-cart-message]");for(let o=0;o<t.length;o++){let r=t[o],c=r.getAttribute("data-ltsp-cart-message");r.removeAttribute("data-ltsp-cart-message");let l=[".main-content .product-single__meta",".main-content .grid__item",".main-content .grid-item",".main-content .product__content.product__content--template.product__content--information","main#MainContent .product__info-container",".container#product-product .product-info-main",'main#main section[data-section-id="collection-template"] .product-item',".product-area__details.product-detail .product-detail__form"];for(let t=0;t<l.length;t++){let o=r.closest(l[t]);if(o&&!o.querySelector(".bsscommerce-ltsp-message.hide-message")){let t=
7177o.querySelector('form[action="/cart/add"]');if(t){let o=e.helperLTSP.createHidePriceMessageSpan(c);t.before(o)}}}let s=[[".product-layout .item .item-inner .caption",".button.btn-cart"],['main#main section[data-section-id="product-template"] .card__section',".product-form__payment-container"],[".main#MainContent .content.product",'form[action="/cart/add"] .offers']];for(let t=0;t<s.length;t++){let o=r.closest(s[t][0]);if(o&&!o.querySelector(".bsscommerce-ltsp-message.hide-message")){let r=o.querySelector(s[t][1]);if(r){let t=e.helperLTSP.createHidePriceMessageSpan(c);r.before(t)}}}if(window.Shopify&&"airbesafe.myshopify.com"===window.Shopify.shop){let t=[[".shopify-section--main-collection .product-list__inner .product-item ",".product-item__info .product-item-meta__price-list-container .price-list"],[".shopify-section--main-product .product--thumbnails-bottom .product__info",".product-meta__price-list-container"],["product-item.product-item .product-item__info",".product-item-meta__price-list-container"]];for(let o=0;o<t.length;o++){let l=r.closest(t[o][0]);if(l&&!l.querySelector(".bsscommerce-ltsp-message.hide-message")){let r=l.querySelector(t[o][1]);if(r){let t=e.helperLTSP.createHidePriceMessageSpan(c);r.after(t)}}}}}}}function c(e){!function(e){e.helperLTSP={},e.helperLTSP.createHidePriceMessageSpan=function(e){let t=document.createElement("span");return t.classList.add("bsscommerce-ltsp-message"),t.classList.add("hide-message"),t.style.fontSize="16px",t.style.fontWeight="normal",t.style.color="initial",t.style.textTransform="none",t.style.visibility="visible",t.innerHTML=e,t},e.helperLTSP.onLoadMore=function(e){const t=document.querySelector([".sf__product-listing[data-product-container] > div",'.row[data-js-collection-replace="products"]',".product-list-container .product-list.use-infinite-scroll","#collection-product .product-container",".container #col-main"].join(","));if(t){new MutationObserver((function(t){t.forEach((function(t){t.addedNodes.length&&e()}))})).observe(t,{childList:!0})}}}(e)}function l(){const e={};c(e),r(e),function(e){e.ptvp={},e.ptvp.addPasscodeForm=function(){let e=document.querySelector('form[action*="/cart/add"]'),t=document.getElementsByClassName("bss-passcode-wrapper-tag"),o=document.getElementsByClassName("bsscommerce-password-form"),r=document.querySelector(".toggle-passcode-input"),c=null;if(o.length&&(c=o[0],c.style.display="block",r&&r.addEventListener("click",(function(e){let t=document.getElementById("bsscommerce-password");"password"===t.type?(t.type="text",e.target.closest(".toggle-passcode-input").style.fill="#5C5F62"):(t.type="password",e.target.closest(".toggle-passcode-input").style.fill="#BABEC3")}))),t.length&&e&&o.length){e.before(c);let o=document.getElementById("bsscommerce-password"),r=new FormData;r.append(o.name,o.value),document.getElementById("bsscommerce-password-submit").style.padding="12px 16px",document.getElementById("bsscommerce-password-submit").style.display="block";let l=new XMLHttpRequest;l.open("post","/cart/update.js"),l.send(r);let s=document.getElementsByClassName("bsscommerce-ltap-password");if(s.length)for(let e=0;e<s.length;e++)s[e].addEventListener("submit",(function(e){e.preventDefault();let t=this;if(t.length)for(let e=0;e<t.length;e++)if("bsscommerce-password"==t[e].id){let o=t[e];if(o.addEventListener("input",(function(){o.classList.remove("input--error")})),o.value)if(""!=o.value){let e=new FormData;e.append(o.name,o.value);let t=new XMLHttpRequest;t.onreadystatechange=function(){4==t.readyState&&200==t.status&&location.reload()},t.open("post","/cart/update.js"),t.send(e)}else o.classList.add("input--error")}}));for(let e=0;e<t.length;e++)t[e].remove()}}}(e),e.ptvp.addPasscodeForm(),document.querySelectorAll(".quick-view-btn").forEach((function(t){t.addEventListener("click",(function(){setTimeout((function(){e.ptvp.addPasscodeForm()}),1e3)}))})),function e(){document.querySelectorAll(".advanced-filter a").forEach((function(t){t.addEventListener("click",(function(){setTimeout((function(){let t=document.getElementsByClassName("bsscommerce-ltsp-message");for(let e=0;e<t.length;e++){let o=t[e].closest(".item-row");
7177if(o){let e=o.querySelector(".add-to-cart");e&&e.remove()}}e()}),1200)}))}))}(),e.ltsp.quickView(),e.ltsp.insertBeforeAddToCart(),e.ltsp.removePattern(),e.helperLTSP.onLoadMore(e.ltsp.removePattern),setTimeout((function(){e.ltsp.removePattern()}),2500);if(window.Shopify&&-1!==["showroom1-ducanero.myshopify.com","sparklinbluewholesale.myshopify.com","youchique-4183.myshopify.com","wilkens-gmbh.myshopify.com","friends-forever-pets.myshopify.com"].indexOf(window.Shopify.shop)&&(window.onscroll=function(e,t){let o;return function(...r){o&&clearTimeout(o),o=setTimeout(()=>{e(...r),o=null},t)}}((function(){let t=setInterval((function(){e.ltsp.removePattern()}),200);setTimeout((function(){clearInterval(t)}),3e3)}),500)),"amoreo.eu"===window.location.host){let t=setInterval((function(){e.ltsp.removePattern()}),200);setTimeout((function(){clearInterval(t)}),3e3)}let t=document.querySelector(".infinite-scrolling-homepage a.btn");"airbesafe.myshopify.com"===window.location.host&&setTimeout((function(){e.ltsp.insertBeforeAddToCart()}),3e3),t&&(t.onclick=function(){setTimeout((function(){e.ltsp.removePattern()}),1e3)});let o=document.querySelectorAll("#shopify-section-product-recommendations, .product-modal-wrapper");var l,s,u;(o.length&&o.forEach((function(t){t.addEventListener("DOMSubtreeModified",(function(){e.ltsp.removePattern()}))})),"valleys-group.myshopify.com"===window.location.host)&&(l=function(){e.ltsp.removePattern();
7177let t=document.querySelectorAll(".slideout__drawer-right, .sidebar_leftside_wapper, .filtering__results");t.length&&t.forEach((function(e){e.addEventListener("click",(function(){setTimeout(()=>{l()},1700)}))}))});"b.salonpremium.com"===window.location.host&&(s=function(){e.ltsp.removePattern();let t=document.querySelectorAll(".pagination");t.length&&t.forEach((function(e){e.addEventListener("click",(function(){setTimeout(()=>{s()},3e3)}))}))});"www.internationalbeauty.ca"===window.location.host&&(u=function(){let t=document.querySelector('[id^="RecentlyViewed"]');new MutationObserver((function(t){t.forEach((function(t){t.addedNodes.length&&(e.ltsp.removePattern(),document.querySelectorAll(".btn--icon.quick-product__btn").forEach((function(e){e.addEventListener("click",(function(){setTimeout((function(){let e=document.getElementsByClassName("bsscommerce-ltsp-message");for(let t=0;t<e.length;t++){let o=e[t].closest(".product-grid__content");if(o){let e=o.querySelector(".payment-buttons");e&&e.remove()}}u()}),2e3)}))})))}))})).observe(t,{childList:!0})});if("bluebasketb2b.myshopify.com"===window.Shopify.shop){let t=document.querySelector("#CartDrawer");const o=()=>{let e=document.querySelectorAll("script#bss-ltap-login-require");for(let t in e)t.remove()};if(t){new MutationObserver((function(t){t.forEach((function(t){t.addedNodes.length&&(e.ltsp.removePattern(),o())}))})).observe(t,{childList:!0})}}if("dollie-wholesale.myshopify.com"===window.Shopify.shop){let t=document.querySelector("#product-grid .products__row");if(t){new MutationObserver((function(t){t.forEach((function(t){t.addedNodes.length&&e.ltsp.removePattern()}))})).observe(t,{childList:!0})}}if("impjarwholesale.myshopify.com"===window.Shopify.shop){let t=document.querySelector(".tp-collection-content");if(t){new MutationObserver((function(t){t.forEach((function(t){t.addedNodes.length&&e.ltsp.removePattern()}))})).observe(t,{childList:!0})}}if("inex-studio.myshopify.com"===window.Shopify.shop){let t=document.querySelector("#Search .Search__Results");if(t){new MutationObserver((function(t){t.forEach((function(t){t.addedNodes.length&&e.ltsp.removePattern()}))})).observe(t,{childList:!0,subtree:!0})}}}o.r(t),o.d(t,"default",(function(){return l})),l()}]); 7178 </script>
7178 7179 7180 </main> 7181 7182 <div id="shopify-section-newsletter" class="shopify-section"><br> 7183 <style> 7184 #shopify-section-newsletter { 7185 background: url('image/background-emo78.png'); 7186 background-attachment: fixed; 7187 margin-bottom: 0; 7188 } 7189 input:-webkit-autofill, 7190 input:-webkit-autofill:hover, 7191 input:-webkit-autofill:active, 7192 input:-webkit-autofill:focus { 7193 -webkit-box-shadow:0 0 0 50px white inset; 7194 -webkit-text-fill-color: #ffffff; 7195 } 7196 .section-newsletter { 7197 max-width: 800px; 7198 margin: auto; 7199 padding: 50px 0; 7200 } 7201 .section-newsletter h2 { 7202 font-weight: 700; 7203 font-size: 24px; 7204 } 7205 .section-newsletter input[type="email"] { 7206 width: 100%; 7207 text-align: center; 7208 border: none; 7209 border-bottom: 1px solid #ffffff; 7210 font-size: 16px; 7211 color: #757575; 7212 background-color: #eeeeee; 7213 } 7214 .section-newsletter .row label { 7215 font-size: 14px; 7216 cursor: pointer; 7217 } 7218 .section-newsletter .radio-inline input { 7219 width: auto; 7220 } 7221 .section-newsletter .btn { 7222 width: 130px; 7223 border: 1px solid #ffffff; 7224 box-shadow: none; 7225 font-size: 16px; 7226 font-weight: 500; 7227 text-transform: uppercase; 7228 } 7229 .section-newsletter form { 7230 margin: 30px 0 60px; 7231 } 7232 .section-newsletter input[type="radio"] { 7233 position: absolute; 7234 width: 1px; 7235 height: 1px; 7236 } 7237 .section-newsletter [type="radio"]:checked + label, .section-newsletter [type="radio"]:not(:checked) + label { 7238 position: relative; 7239 padding-left: 28px; 7240 cursor: pointer; 7241 line-height: 20px; 7242 display: inline-block; 7243 color: #666; 7244 } 7245 .section-newsletter [type="radio"]:checked + label:before, .section-newsletter [type="radio"]:not(:checked) + label:before { 7246 content: ''; 7247 position: absolute; 7248 left: 0; 7249 top: 0; 7250 width: 18px; 7251 height: 18px; 7252 border: 1px solid #ddd; 7253 border-radius: 100%; 7254 background: #fff; 7255 } 7256 .section-newsletter [type="radio"]:checked + label:after, .section-newsletter [type="radio"]:not(:checked) + label:after { 7257 content: ''; 7258 width: 12px; 7259 height: 12px; 7260 background: #ffffff; 7261 position: absolute; 7262 top: 3px; 7263 left: 3px; 7264 border-radius: 100%; 7265 -webkit-transition: all 0.2s ease; 7266 transition: all 0.2s ease; 7267 } 7268 .section-newsletter [type="radio"]:not(:checked) + label:after { 7269 opacity: 0; 7270 -webkit-transform: scale(0); 7271 transform: scale(0); 7272 } 7273 .opt-newsletter {display:none;} 7274 .footer-newsletter p, .footer-newsletter p a { 7275 color: #757575; 7276 } 7277 @media (max-width:991px){ 7278 .section-newsletter h2 { 7279 font-size: 32px; 7280 } 7281 .section-newsletter input { 7282 width: 300px; 7283 font-size: 14px; 7284 } 7285 .section-newsletter { 7286 padding: 50px 20px; 7287 } 7288 } 7289 @media (max-width: 480px){ 7290 .section-newsletter input[type="email"] {font-size: 16px;} 7291 } 7292 </style> 7293 <style> 7294 .icon-img-footer { 7295 width: 80px; 7296 padding: 0px 5px; 7297 } 7298 @media (min-width: 768px) { 7299 .icon-img-footer { 7300 width: 120px; 7301 } 7302 } 7303 @media (min-width: 992px) { 7304 .icon-img-footer { 7305 width: 120px; 7306 } 7307 } 7308 7309 .button-login-daftar { 7310 display: grid; 7311 grid-template-columns: repeat(2, 1fr); 7312 font-weight: 700; 7313 } 7314 .button-login-daftar a { 7315 text-align: center; 7316 } 7317 .login, 7318 .register { 7319 color: gold; 7320 padding: 15px 10px; 7321 font-size: 23px; 7322 } 7323 .login, 7324 .login-button { 7325 background: linear-gradient(to bottom,#000000 0,#000000 100%); 7326 border: 2px solid gold; 7327 } 7328 .register, 7329 .register-button { 7330 background: linear-gradient(to bottom,#000000 0,#000000 100%); 7331 border: 2px solid gold; 7332 } 7333 7334 7335 7336 </style> 7337 7338 <!-- wp:html --> 7339
7339<script> 7340 document.addEventListener('DOMContentLoaded', 7341 function(){const faqItems=document.querySelectorAll('.faq-item'); 7342 faqItems.forEach(item=>{const question=item.querySelector('.faq-question'); 7343 question.addEventListener('click', 7344 ()=>{const isActive=item.classList.contains('active'); 7345 faqItems.forEach(otherItem=>{otherItem.classList.remove('active')}); 7346 if(!isActive){item.classList.add('active')}})})}); 7347 </script>
7347 7348 7349 7350 <div class="page__overlay" data-view="offCanvasNavToggle" data-off-canvas="close" bis_skin_checked="1"> 7351 </div> 7352 <div class="faq-section"> 7353 <h2>FAQ TERBARU BANDAR SLOT GACOR PROVIDER PRAGMATIC EMO78</h2> 7354<div class="faq-container"> 7355 7356 <div class="faq-item"> 7357 <button class="faq-question"> 7358 1. Apa yang dimaksud dengan EMO78 sebagai Situs Slot Gacor dan Bandar Slot777? 7359 <span></span> 7360 </button> 7361 <div class="faq-answer"> 7362 <p> 7363 EMO78 merupakan platform hiburan slot online yang menggabungkan berbagai kategori permainan digital, 7364 termasuk Slot777 dan pilihan game dari sejumlah provider populer. Struktur navigasinya dirancang agar 7365 pengguna lebih mudah menemukan permainan berdasarkan provider, tema, dan fitur yang tersedia. 7366 </p> 7367 </div> 7368 </div> 7369 7370 <div class="faq-item"> 7371 <button class="faq-question"> 7372 2. Apakah EMO78 menyediakan permainan dari provider Pragmatic Play? 7373 <span></span> 7374 </button> 7375 <div class="faq-answer"> 7376 <p> 7377 EMO78 menghadirkan kategori permainan dari provider Pragmatic Play yang dikenal memiliki beragam tema, 7378 fitur bonus, free spin, multiplier, dan mekanisme permainan yang berbeda pada setiap judul. Daftar 7379 permainan dapat berubah mengikuti pembaruan katalog yang tersedia. 7380 </p> 7381 </div> 7382 </div> 7383 7384 <div class="faq-item"> 7385 <button class="faq-question"> 7386 3. Apa yang dimaksud dengan kategori Slot777 di EMO78? 7387 <span></span> 7388 </button> 7389 <div class="faq-answer"> 7390 <p> 7391 Slot777 merupakan salah satu istilah yang banyak digunakan untuk menggambarkan kategori permainan slot 7392 digital. Di EMO78, pengguna dapat menjelajahi berbagai pilihan permainan berdasarkan provider, tema, 7393 fitur khusus, serta karakteristik masing-masing game. 7394 </p> 7395 </div> 7396 </div> 7397 7398 <div class="faq-item"> 7399 <button class="faq-question"> 7400 4. Apa arti istilah Slot Gacor di EMO78? 7401 <span></span> 7402 </button> 7403 <div class="faq-answer"> 7404 <p> 7405 Slot gacor adalah istilah populer yang digunakan komunitas pemain untuk menyebut permainan yang sedang 7406 banyak diperhatikan atau dianggap menarik untuk dimainkan. Istilah tersebut tidak berarti suatu game 7407 dapat menjamin kemenangan karena hasil permainan tetap ditentukan oleh mekanisme dan peluangnya. 7408 </p> 7409 </div> 7410 </div> 7411 7412 <div class="faq-item"> 7413 <button class="faq-question"> 7414 5. Apa fungsi informasi RTP pada game Pragmatic di EMO78? 7415 <span></span> 7416 </button> 7417 <div class="faq-answer"> 7418 <p> 7419 RTP atau Return to Player merupakan persentase teoretis pengembalian permainan dalam jangka panjang. 7420 Informasi RTP dapat digunakan untuk memahami karakteristik sebuah game, tetapi tidak dapat menjamin 7421 hasil kemenangan pada setiap putaran maupun sesi permainan tertentu. 7422 </p> 7423 </div> 7424 </div> 7425 7426 <div class="faq-item"> 7427 <button class="faq-question"> 7428 6. Apakah EMO78 dapat diakses melalui Android dan iPhone? 7429 <span></span> 7430 </button> 7431 <div class="faq-answer"> 7432 <p> 7433 Platform dengan desain responsif dapat menyesuaikan tampilan dengan berbagai ukuran layar sehingga 7434 katalog EMO78 dapat dijelajahi melalui Android, iPhone, tablet, maupun komputer menggunakan browser 7435 yang kompatibel. 7436 </p> 7437 </div> 7438 </div> 7439 7440 <div class="faq-item"> 7441 <button class="faq-question"> 7442 7. Bagaimana cara memilih permainan Pragmatic dan Slot777 di EMO78? 7443 <span></span> 7444 </button> 7445 <div class="faq-answer"> 7446 <p> 7447 Pengguna dapat mempertimbangkan tema permainan, fitur bonus, volatilitas, RTP, jumlah paylines, serta 7448 mekanisme permainan sebelum memilih game. Gunakan informasi tersebut sebagai referensi dan hindari 7449 menganggap istilah seperti gacor, maxwin, atau pasti menang sebagai jaminan hasil permainan. 7450 </p> 7451 </div> 7452 </div> 7453 7454</div> 7455</div> 7456 7457 7458<section class="review-section"> 7459 <h2>Apa Kata Mereka Tentang EMO78</h2> 7460 7461 <div class="review-container"> 7462 7463 <div class="review-card">
7464 <img src="https://ui-avatars.com/api/?name=Arka+Zenith&background=FF4500&color=fff" class="review-avatar" alt="Avatar Arka Zenith"> 7465 <div class="review-name">Arka Zenith</div> 7466 <div class="review-stars">â â â â â </div> 7467 <div class="review-text"> 7468 âSaya suka menjelajahi EMO78 karena kategori Slot777 dan pilihan game dari provider Pragmatic cukup mudah ditemukan. Tampilan menunya juga sederhana, jadi tidak perlu berpindah-pindah halaman terlalu banyak.â 7469 </div> 7470 </div> 7471 7472 <div class="review-card"> 7473 <img src="https://ui-avatars.com/api/?name=Raka+Vortex&background=32CD32&color=fff" class="review-avatar" alt="Avatar Raka Vortex"> 7474 <div class="review-name">Raka Vortex</div> 7475 <div class="review-stars">â â â â â </div> 7476 <div class="review-text"> 7477 âBagian yang paling menarik menurut saya adalah pilihan game Pragmatic Play. Saya bisa melihat berbagai tema, fitur bonus, free spin, dan karakteristik permainan sebelum menentukan game yang ingin dijelajahi.â 7478 </div> 7479 </div> 7480 7481 <div class="review-card"> 7482 <img src="https://ui-avatars.com/api/?name=Dimas+Falcon&background=8A2BE2&color=fff" class="review-avatar" alt="Avatar Dimas Falcon"> 7483 <div class="review-name">Dimas Falcon</div> 7484 <div class="review-stars">â â â â â </div> 7485 <div class="review-text"> 7486 âMenurut saya EMO78 cukup nyaman digunakan melalui smartphone. Kategori slot gacor, Bandar Slot777, dan provider bisa ditemukan dengan cepat karena susunan navigasinya terasa lebih terorganisasi.â 7487 </div> 7488 </div> 7489 7490 <div class="review-card"> 7491 <img src="https://ui-avatars.com/api/?name=Kevin+Orion&background=FF8C00&color=fff" class="review-avatar" alt="Avatar Kevin Orion"> 7492 <div class="review-name">Kevin Orion</div> 7493 <div class="review-stars">â â â â â </div> 7494 <div class="review-text"> 7495 âSaya biasanya membandingkan beberapa permainan berdasarkan tema, RTP, volatilitas, dan fitur yang tersedia. EMO78 membuat proses pencarian game Slot777 dan Pragmatic terasa lebih praktis karena kategorinya tersusun cukup jelas.â 7496 </div> 7497 </div> 7498 7499 </div> 7500</section> 7501 7502 7503 <div class="overlay overlay-cart"></div> 7504 <div id="CartDrawer" class="drawer drawer--right"> 7505 <div class="drawer__header pl-2 pr-2"> 7506 <div class="drawer__icon-cart display-table-cell"> 7507 <a href="/cart" class=""> 7508 <svg class="icon icon-cart" version="1.1" xmlns="image/logo-login-emo78.png" width="32" height="32" viewBox="0 0 32 32"> <path fill="#fff" d="M13.638 23.203c0 0 3.5-2.113 3.502-4.11 0.002-2.304-2.689-3.537-3.497-1.76-0.916-1.778-3.493-1.714-3.497 0.59-0.003 1.999 3.491 5.28 3.491 5.28z"></path> <path fill="#fff" d="M8.112 9.809v16.662l11.063 2.491v-17.58l-11.063-1.573zM7.74 8.858l11.925 1.696c0.213 0.030 0.372 0.218 0.372 0.44v18.519c0 0.284-0.254 0.495-0.523 0.434l-11.925-2.685c-0.198-0.045-0.339-0.225-0.339-0.434v-17.53c0-0.27 0.231-0.477 0.49-0.44z"></path> <path fill="#fff" d="M23.7 10.046l-3.275 0.146-0.388 0.897v17.656l3.664-2.174v-16.526zM24.346 27.214l-4.526 2.685c-0.287 0.17-0.646-0.043-0.646-0.385v-18.519l0.037-0.181 0.534-1.235c0.067-0.154 0.212-0.256 0.375-0.263l3.991-0.178c0.245-0.011 0.45 0.191 0.45 0.444v17.247c0 0.159-0.082 0.306-0.216 0.385z"></path> <path fill="#000" d="M20.772 27.081l-0.501 2.383c-0.050 0.24-0.28 0.392-0.512 0.34s-0.38-0.289-0.33-0.528l0.569-2.707v-16.588c0-0.245 0.193-0.444 0.431-0.444s0.431 0.199 0.431 0.444v16.215l3.296 0.189c0.238 0.014 0.42 0.223 0.406 0.468s-0.217 0.433-0.454 0.419l-3.335-0.191z"></path> <path fill="#fff" d="M20.772 27.081l-0.501 2.383c-0.050 0.24-0.28 0.392-0.512 0.34s-0.38-0.289-0.33-0.528l0.569-2.707v-16.588c0-0.245 0.193-0.444 0.431-0.444s0.431 0.199 0.431 0.444v16.215l3.296 0.189c0.238 0.014 0.42 0.223 0.406 0.468s-0.217 0.433-0.454 0.419l-3.335-0.191z"></path> <path fill="#fff" d="M11.336 8.354l-0.257-0.333c-0.243-0.315 0.012-0.774 0.398-0.717l12.51 1.838c0.236 0.035 0.399 0.26 0.366 0.503s-0.252 0.412-0.487 0.377l-11.436-1.68 0.056 0.073c0.209 0.27 0.052 0.672-0.281 0.718l-4.467 0.607c-0.236 0.032-0.452-0.139-0.484-0.383s0.135-0.467 0.371-0.499l3.711-0.504z"></path> <path fill="#fff" d="M17.152 11.344c0.026-0.003 0.053-0.005 0.079-0.005 0.357 0 0.645 0.297 0.645 0.665s-0.288 0.665-0.645 0.665c-0.322 0-0.59-0.245-0.637-0.565-0.383-0.45-0.515-1.321-0.521-2.536-0.003-0.556 0.026-1.149 0.076-1.739 0.028-0.339 0.057-0.603 0.074-0.735 0.195-2.391-2.008-3.379-3.568-1.658-0.64 0.707-1.041 1.855-1.266 3.412-0.092 0.634-0.137 1.111-0.194 2.024 0.107 0.119 0.172 0.278 0.172 0.453 0 0.342-0.251 0.624-0.573 0.661-0.031 0.005-0.064 0.007-0.097 0.005-0.015-0.001-0.029-0.003-0.044-0.
7508005-0.324-0.036-0.576-0.318-0.576-0.661 0-0.218 0.102-0.412 0.259-0.533 0.058-0.924 0.105-1.415 0.201-2.075 0.249-1.719 0.703-3.020 1.489-3.888 2.114-2.335 5.321-0.897 5.054 2.359-0.018 0.141-0.045 0.392-0.072 0.717-0.047 0.566-0.075 1.133-0.073 1.658 0.004 0.839 0.098 1.47 0.216 1.78z"></path> <path fill="#fff" d="M14.43 8.138c-0.008 0.245-0.207 0.438-0.445 0.43s-0.424-0.213-0.417-0.459c0.001-0.026 0.001-0.026 0.002-0.051 0.029-0.909 0.047-1.282 0.102-1.792 0.164-1.528 0.58-2.665 1.434-3.481 2.037-1.949 5.235-0.623 5.066 2.208-0.007 0.119-0.018 0.331-0.029 0.608-0.022 0.539-0.033 1.084-0.029 1.59 0.007 0.797 0.053 1.412 0.139 1.744 0.062 0.237-0.075 0.481-0.305 0.544s-0.466-0.077-0.528-0.314c-0.111-0.427-0.161-1.097-0.168-1.966-0.004-0.523 0.007-1.081 0.029-1.634 0.011-0.284 0.023-0.502 0.030-0.626 0.119-1.995-2.13-2.927-3.619-1.501-0.673 0.644-1.021 1.591-1.164 2.927-0.051 0.479-0.069 0.838-0.097 1.723-0.001 0.026-0.001 0.026-0.002 0.052z"></path> </svg> 7509 </a> 7510 </div> 7511 <div class="drawer__title h4">Keranjang Belanja</div> 7512 <div class="drawer__close js-drawer-close"> 7513 <button type="button"> 7514 <svg class="icon icon-close" version="1.1" xmlns="image/logo-login-emo78.png" width="32" height="32" viewBox="0 0 32 32"> 7515 <title>icon-close</title> 7516 <path d="M16.943 16l8.862 8.862c0.26 0.26 0.26 0.682 0 0.943s-0.682 0.26-0.943 0l-8.862-8.862-8.862 8.862c-0.26 0.26-0.682 0.26-0.943 0s-0.26-0.682 0-0.943l8.862-8.862-8.862-8.862c-0.26-0.26-0.26-0.682 0-0.943s0.682-0.26 0.943 0l8.862 8.862 8.862-8.862c0.26-0.26 0.682-0.26 0.943 0s0.26 0.682 0 0.943l-8.862 8.862z"></path> 7517 </svg> 7518 </button> 7519 </div> 7520 </div> 7521 <div id="CartContainer" class="p-2"></div> 7522 </div> 7523 7524
7524<script> 7525 7526 </script>
7526 7527
7527<script src="//outerbloom.com/cdn/shop/t/138/assets/handlebars.min.js?v=79044469952368397291752652415" defer></script>
7527 7528 <!-- /snippets/ajax-cart-template.liquid --> 7529 7530
7530<script id="CartTemplate" type="text/template"> 7531 7532 <form action="/cart" method="post" novalidate class="cart ajaxcart"> 7533 <div class="ajaxcart__inner" {{ cart.item_count }}> 7534 {{#items}} 7535 <div class="ajaxcart__product"> 7536 <div class="ajaxcart__row" data-line="{{line}}"> 7537 <div class="grid"> 7538 <div class="grid__item one-quarter"> 7539 <a href="{{url}}" class="ajaxcart__product-image"><img src="{{img}}" alt=""></a> 7540 </div> 7541 <div class="grid__item three-quarters"> 7542 <p class="d-block mb-3"> 7543 <a class="h4 d-block mb-2" href="{{url}}" class="ajaxcart__product-name">{{name}}</a> 7544 {{#if variation}} 7545 <span class="ajaxcart__product-meta p">{{variation}}</span> 7546 {{/if}} 7547 {{#properties}} 7548 {{#each this}} 7549 {{#if this}} 7550 <span class="ajaxcart__product-meta p hide">{{@key}}: {{this}}</span> 7551 {{/if}} 7552 {{/each}} 7553 {{/properties}} 7554 7555 </p> 7556 <div class="grid--full display-table"> 7557 <div class="grid__item display-table-cell one-half"> 7558 <div class="ajaxcart__qty"> 7559 <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--minus" data-id="{{key}}" data-qty="{{itemMinus}}" data-line="{{line}}"> 7560 <svg version="1.1" xmlns="image/logo-login-emo78.png" width="24" height="24" viewBox="0 0 32 32"><title>icon-minus</title><path d="M6.667 16.667c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h18.667c0.368 0 0.667 0.298 0.667 0.667s-0.298 0.667-0.667 0.667h-18.667z"></path></svg> 7561 <span class="visually-hidden">Kurangi jumlah barang</span> 7562 </button> 7563 <input type="text" name="updates[]" class="btn ajaxcart__qty-num" value="{{itemQty}}" min="0" data-id="{{key}}" data-line="{{line}}" aria-label="quantity" pattern="[0-9]*"> 7564 <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--plus" data-id="{{key}}" data-line="{{line}}" data-qty="{{itemAdd}}"> 7565 <svg version="1.1" xmlns="image/logo-login-emo78.png" width="24" height="24" viewBox="0 0 32 32"><title>icon-plus</title><path d="M16.667 15.333h8.667c0.368 0 0.667 0.298 0.667 0.667s-0.298 0.667-0.667 0.667h-8.667v8.667c0 0.368-0.298 0.667-0.667 0.667s-0.667-0.298-0.667-0.667v-8.667h-8.667c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h8.667v-8.667c0-0.368 0.298-0.667 0.667-0.667s0.667 0.298 0.667 0.667v8.667z"></path></svg> 7566 <span class="visually-hidden">Tambahkan jumlah barang</span> 7567 </button> 7568 </div> 7569 </div> 7570 <div class="grid__item display-table-cell one-half text-right"> 7571 {{#if discountsApplied}} 7572 <small class="ajaxcart-item__price-strikethrough"><s>{{{originalLinePrice}}}</s></small> 7573 <br><span class="h4">{{{linePrice}}}</span> 7574 {{else}} 7575 <span class="h4">{{{linePrice}}}</span> 7576 {{/if}} 7577 </div> 7578 </div> 7579 {{#if discountsApplied}} 7580 <div class="grid--full display-table"> 7581 <div class="grid__item text-right"> 7582 {{#each discounts}} 7583 <small class="ajaxcart-item__discount">{{ this.title }}</small><br> 7584 {{/each}} 7585 </div> 7586 </div> 7587 {{/if}} 7588 </div> 7589 </div> 7590 </div> 7591 </div> 7592 </div> 7593 </div> 7594 {{/items}} 7595 </div> 7596 <div class="ajaxcart__footer"> 7597 <div class="grid--full cart-subtotal py-2"> 7598 <p>Subtotal</p> 7599 <h3 class="primary">{{{totalPrice}}}</h3> 7600 {{#if totalCartDiscount}} 7601 <p class="ajaxcart__savings text-center"><em>{{{totalCartDiscount}}}</em></p> 7602 {{/if}} 7603 </div> 7604 7605 <a href="/cart" class="btn btn-cta view-more btn-block cart__checkout mt-2">Checkout</a> 7606 7607 <p class="cart-checkout-shipping hide">Free Ongkir dengan belanja di atas Rp.10.000 <a href="/pages/pengiriman">detail</a></p> 7608 </div> 7609 </form> 7610 7611 </script>
7611 7612
7612<script id="AjaxQty" type="text/template"> 7613 7614 <div class="ajaxcart__qty"> 7615 <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--minus" data-id="{{key}}" data-qty="{{itemMinus}}"> 7616 <svg version="1.1" xmlns="image/logo-login-emo78.png" width="24" height="24" viewBox="0 0 32 32"> 7617 <title>icon-minus</title> 7618 <path d="M6.667 16.667c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h18.667c0.368 0 0.667 0.298 0.667 0.667s-0.298 0.667-0.667 0.667h-18.667z"></path> 7619 </svg> 7620 <span class="visually-hidden">Kurangi jumlah barang</span> 7621 </button> 7622 <input type="text" class="ajaxcart__qty-num" value="{{itemQty}}" min="0" data-id="{{key}}" aria-label="quantity" pattern="[0-9]*"> 7623 <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--plus" data-id="{{key}}" data-qty="{{itemAdd}}"> 7624 <svg version="1.1" xmlns="image/logo-login-emo78.png" width="24" height="24" viewBox="0 0 32 32"><title>icon-plus</title><path d="M16.667 15.333h8.667c0.368 0 0.667 0.298 0.667 0.667s-0.298 0.667-0.667 0.667h-8.667v8.667c0 0.368-0.298 0.667-0.667 0.667s-0.667-0.298-0.667-0.667v-8.667h-8.667c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h8.667v-8.667c0-0.368 0.298-0.667 0.667-0.667s0.667 0.298 0.667 0.667v8.667z"></path></svg> 7625 <span class="visually-hidden">Tambahkan jumlah barang</span> 7626 </button> 7627 </div> 7628 7629 </script>
7629 7630
7630<script id="JsQty" type="text/template"> 7631 7632 <div class="js-qty mx-auto mt-2"> 7633 <button type="button" class="js-qty__adjust js-qty__adjust--minus" data-id="{{key}}" data-qty="{{itemMinus}}"> 7634 <svg version="1.1" xmlns="image/logo-login-emo78.png" width="24" height="24" viewBox="0 0 32 32"><title>icon-minus</title><path d="M6.667 16.667c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h18.667c0.368 0 0.667 0.298 0.667 0.667s-0.298 0.667-0.667 0.667h-18.667z"></path></svg> 7635 <span class="visually-hidden">Kurangi jumlah barang</span> 7636 </button> 7637 <input type="text" class="js-qty__num" value="{{itemQty}}" min="1" data-id="{{key}}" aria-label="quantity" pattern="[0-9]*" name="{{inputName}}" id="{{inputId}}"> 7638 <button type="button" class="js-qty__adjust js-qty__adjust--plus" data-id="{{key}}" data-qty="{{itemAdd}}"> 7639 <svg version="1.1" xmlns="image/logo-login-emo78.png" width="24" height="24" viewBox="0 0 32 32"><title>icon-plus</title><path d="M16.667 15.333h8.667c0.368 0 0.667 0.298 0.667 0.667s-0.298 0.667-0.667 0.667h-8.667v8.667c0 0.368-0.298 0.667-0.667 0.667s-0.667-0.298-0.667-0.667v-8.667h-8.667c-0.368 0-0.667-0.298-0.667-0.667s0.298-0.667 0.667-0.667h8.667v-8.667c0-0.368 0.298-0.667 0.667-0.667s0.667 0.298 0.667 0.667v8.667z"></path></svg> 7640 <span class="visually-hidden">Tambahkan jumlah barang</span> 7641 </button> 7642 </div> 7643 7644 </script>
7644 7645 7646 <style> 7647 #CartDrawer .ajaxcart__product.nExtra.Shipping.Cost .ajaxcart__qty button, 7648 #CartDrawer .ajaxcart__product.n3D2N .ajaxcart__qty button, 7649 #CartDrawer .ajaxcart__product.n4D3N .ajaxcart__qty button {display: none;} 7650 #CartDrawer .ajaxcart__product.nExtra.Shipping.Cost .ajaxcart__qty input, 7651 #CartDrawer .ajaxcart__product.n3D2N .ajaxcart__qty input, 7652 #CartDrawer .ajaxcart__product.n4D3N .ajaxcart__qty input {pointer-events: none;opacity: 0.5;} 7653 #CartDrawer .ajaxcart__product.nExtra.Shipping.Cost .ajaxcart__qty input, 7654 #CartDrawer .ajaxcart__product.n3D2N .ajaxcart__qty input, 7655 #CartDrawer .ajaxcart__product.n4D3N .ajaxcart__qty input {pointer-events: none;} 7656 </style> 7657
7657<script src="//outerbloom.com/cdn/shop/t/138/assets/ajax-cart.js?v=51128912329657147331752652452" defer></script>
7657 7658
7658<script> 7659 jQuery(function($) { 7660 ajaxCart.init({ 7661 formSelector: '#AddToCartForm', 7662 cartContainer: '#CartContainer', 7663 addToCartSelector: '#AddToCartXX', 7664 cartCountSelector: '#CartCount, #CartCount2', 7665 cartCostSelector: '#CartCost', 7666 moneyFormat: "Rp {{amount_no_decimals}}" 7667 }); 7668 }); 7669 7670 jQuery(document.body).on('afterCartLoad.ajaxCart', function(evt, cart) { 7671 // Bind to 'afterCartLoad.ajaxCart' to run any javascript after the cart has loaded in the DOM 7672 timber.RightDrawer.open(); 7673 }); 7674 </script>
7674 7675 7676 7677 7678 7679 <style> 7680 /** Search AutoComplete **/ 7681 .resultsearch .ui-menu-item[data-cat="Collection"], 7682 .resultsearch .ui-menu-item[data-cat="Collection"] {display: none;} 7683 .resultsearch .ui-widget.ui-widget-content { 7684 width: 100%; 7685 top: 48px; 7686 border: none; 7687 box-shadow: 0 4px 8px rgba(255, 255, 255, 0.3); 7688 } 7689 .resultsearch .ui-menu-item {text-align: left;} 7690 .resultsearch .ui-menu-item>a, .resultsearch .ui-menu-item>span {display: inline-block;width: 100%;font-size: 16px;}.resultsearch .ui-menu-item img {vertical-align: middle;}.resultsearch .ui-menu-item a[data-cat="Collection"] img {display: none;}.resultsearch .ui-menu .ui-state-focus, .resultsearch .ui-menu .ui-state-active {margin: 0;}.ui-state-active, .ui-widget-content .ui-state-active {background: #f2f2f2;border: none;color: #ffffff;}.resultsearch .ui-menu-item>a,.resultsearch .ui-menu-item>span {display: inline-block;width: 100%;font-size: 13px;}.resultsearch .ui-menu-item a[data-cat="Produk"] img {margin-right: 10px;}.resultsearch .ui-menu-item a[data-cat="Produk"] .price {float: right;padding: 15px 0;}.ui-autocomplete-category.ui-menu-item[data-cat="Produk"]:before {content: "Product Populer";font-size: 13px;padding: 5px;margin: 5px 0;background: #f2f2f2;width: 100%;display: block;color: #ffffff;}.ui-autocomplete-category.ui-menu-item[data-cat="Produk"] span {display: none;} 7691 .ui-state-active { 7692 border: none!important; 7693 background-color: #fafafa!important; 7694 color: #000!important; 7695 } 7696 .ui-menu-item a[data-cat="Collection"] {padding: 5px 12px;} 7697 .ui-menu .ui-menu-item {line-height: normal;} 7698 </style> 7699
7699<script> 7700 $(window).load(function(){ 7701 7702 function format(item) {var cell = '';cell += "<a data-cat=" + item.category + " " + "href=" + item.url + ">" + "<img src=" + item.images + "/>" + "<span class='title'>" + item.label + "</span>" + "<span class='price'>" + item.price + "</span>" + "</a>";return cell;} 7703 7704 $.widget("custom.catcomplete", $.ui.autocomplete, { 7705 _renderMenu: function (ul, items) { 7706 // have search reults split up in categories 7707 var that = this, 7708 currentCategory = ""; 7709 $.each(items, function (index, item) { 7710 if (item.category != currentCategory) { 7711 ul.append("<li class='ui-autocomplete-category' data-cat=" + item.category + ">" + "<span>" + item.category + "</span>" + "</li>"); 7712 currentCategory = item.category; 7713 } 7714 that._renderItemData(ul, item); 7715 }); 7716 } 7717 }); 7718 7719 // higlight searched for term 7720 $.ui.autocomplete.prototype._renderItem = function( ul, item ) { 7721 var term = this.element.val(), 7722 html = item.label.replace( term, "<b>$&</b>" ); 7723 return $( "<li>" ) 7724 .append(format(item)) 7725 .appendTo( ul ); 7726 }; 7727 7728 7729 var data = [ 7730 { label: "< Rp 500.000", category: "Collection", url: "/collections/rp-500-000", images: " ", price: " " },{ label: "> Rp 1.000.000", category: "Collection", url: "/collections/rp-1-000-000", images: " ", price: " " },{ label: "Acrylic Jewelry Box", category: "Collection", url: "/collections/acrylic-jewelry-box", images: " ", price: " " },{ label: "Ajmal", category: "Collection", url: "/collections/ajmal", images: " ", price: " " },{ label: "Alamat Rumah Duka", category: "Collection", url: "/collections/rumah-duka", images: " ", price: " " },{ label: "Anggrek Bulan", category: "Collection", url: "/collections/anggrek-bulan", images: " ", price: " " },{ label: "Anniversary Gift", category: "Collection", url: "/collections/kado-anniversary", images: " ", price: " " },{ label: "Aquarius âï¸ 20Jan - 18Feb", category: "Collection", url: "/collections/kado-untuk-zodiak-aquarius", images: " ", price: " " },{ label: "Aries âï¸ 21March - 19April", category: "Collection", url: "/collections/kado-untuk-zodiak-aries", images: " ", price: " " },{ label: "Armaf", category: "Collection", url: "/collections/armaf", images: " ", price: " " },{ label: "Aromatherapy Diffuser", category: "Collection", url: "/collections/aromatherapy-diffuser", images: " ", price: " " },{ label: "Artisan Soap", category: "Collection", url: "/collections/artisan-soap", images: " ", price: " " },{ label: "Artisan Tea", category: "Collection", url: "/collections/artisan-tea", images: " ", price: " " },{ label: "AsmaraKu", category: "Collection", url: "/collections/asmaraku", images: " ", price: " " },{ label: "Atkinsons", category: "Collection", url: "/collections/atkinsons", images: " ", price: " " },{ label: "Autumn by Outerbloom", category: "Collection", url: "/collections/autumn-by-outerbloom", images: " ", price: " " },{ label: "Autumn by Outerbloom Chinese New Year", category: "Collection", url: "/collections/autumn-by-outerbloom-chinese-new-year", images: " ", price: " " },{ label: "Autumn by Outerbloom Christmas", category: "Collection", url: "/collections/autumn-by-outerbloom-christmas", images: " ", price: " " },{ label: "Autumn by Outerbloom Luar Jadetabek", category: "Collection", url: "/collections/autumn-by-outerbloom-luar-jadetabek", images: " ", price: " " },{ label: "Autumn by Outerbloom Ramadan", category: "Collection", url: "/collections/autumn-by-outerbloom-ramadan", images: " ", price: " " },{ label: "Autumn Pop", category: "Collection", url: "/collections/autumn-pop", images: " ", price: " " },{ label: "Bachelorette", category: "Collection", url: "/collections/bachelorette", images: " ", price: " " },{ label: "Bag Newborn Hampers", category: "Collection", url: "/collections/bag-newborn-hampers", images: " ", price: " " },{ label: "Balon", category: "Collection", url: "/collections/balon", images: " ", price: " " },{ label: "Beauty Package", category: "Collection", url: "/collections/beauty-package", images: " ", price: " " },{ label: "Best Deal", category: "Collection", url: "/collections/best-deal", images: " ", price: " " },{ label: "Best Seller", category: "Collection", url: "/collections/best-seller", images: " ", price: " " },{ label: "Best Valentine's Deals", category: "Collection", url: "/collections/bes-valentines-deals", images: " ", price: " " },{ label: "Best Value Newborn Hampers Collection", category: "Collection", url: "/collections/best-value-newborn-hampers-collection", images: " ", price: " " },{ label: "Black Tea", category: "Collection", url: "/collections/black-tea", images: " ", price: " " },{ label: "Blessing Hampers", category: "Collection", url: "/collections/blessing-hampers", images: " ", price: " " },{ label: "Bloom Box", category: "Collection", url: "/collections/bloom-box", images: " ", price: " " },{ label: "Bloomcard", category: "Collection", url: "/collections/bloomcard", images: " ", price: " " },{ label: "Boutonniere", category: "Collection", url: "/collections/boutonniere", images: " ", price: " " },{ label: "Bracelet", category: "Collection", url: "/collections/gelang", images: " ", price: " " },{ label: "Buket Bunga Bali", category: "Collection", url: "/collections/buket-bunga-bali", images: " ", price: " " },{ label: "Buket Bunga Bandung", category: "Collection", url: "/collections/buket-bunga-bandung", images: " ", price: " " },{ label: "Buket Bunga Batam", category: "Collection", url: "/collections/buket-bunga-batam", images: " ", price: " " },{ label: "Buket Bunga Demak", category: "Collection", url: "/collections/buket-bunga-demak", images: " ", price: " " },{ label: "Buket Bunga Fresh", category: "Collection", url: "/collections/buket-bunga", images: " ", price: " " },{ label: "Buket Bunga Jepara", category: "Collection", url: "/collections/buket-bunga-jepara", images: " ", price: " " },{ label: "Buket Bunga Medan", category: "Collection", url: "/collections/buket-bunga-medan", images: " ", price: " " },{ label: "Buket Bunga Nusantara", category: "Collection", url: "/collections/buket-bunga-nusantara", images: " ", price: " " },{ label: "Buket Bunga Semarang", category: "Collection", url: "/collections/buket-bunga-semarang", images: " ", price: " " },{ label: "Buket Bunga Sidoarjo", category: "Collection", url: "/collections/buket-bunga-sidoarjo", images: " ", price: " " },{ label: "Buket Bunga Surabaya", category: "Collection", url: "/collections/buket-bunga-surabaya", images: " ", price: " " },{ label: "Buket Bunga Tangerang", category: "Collection", url: "/collections/buket-bunga-tangerang", images: " ", price: " " },{ label: "Buket Bunga Uang", category: "Collection", url: "/collections/buket-bunga-uang", images: " ", price: " " },{ label: "Buket Bunga Valentine", category: "Collection", url: "/collections/buket-bunga-valentine", images: " ", price: " " },{ label: "Buket Bunga Yogyakarta", category: "Collection", url: "/collections/buket-bunga-jogja", images: " ", price: " " },{ label: "Bunga Anggrek Bali", category: "Collection", url: "/collections/bunga-anggrek-bali", images: " ", price: " " },{ label: "Bunga Anggrek Bandung", category: "Collection", url: "/collections/bunga-anggrek-bandung", images: " ", price: " " },{ label: "Bunga Anggrek Surabaya", category: "Collection", url: "/collections/bunga-anggrek-surabaya", images: " ", price: " " },{ label: "Bunga Anniversary", category: "Collection", url: "/collections/bunga-anniversary", images: " ", price: " " },{ label: "Bunga Artificial", category: "Collection", url: "/collections/bunga-artificial", images: " ", price: " " },{ label: "Bunga Buket", category: "Collection", url: "/collections/bunga-buket", images: " ", price: " " },{ label: "Bunga Carnations Bali", category: "Collection", url: "/collections/bunga-carnations-bali", images: " ", price: " " },{ label: "Bunga Carnations Bandung", category: "Collection", url: "/collections/bunga-carnations-bandung", images: " ", price: " " },{ label: "Bunga Carnations Surabaya", category: "Collection", url: "/collections/bunga-carnations-surabaya", images: " ", price: " " },{ label: "Bunga Daisy Bali", category: "Collection", url: "/collections/bunga-daisy-bali", images: " ", price: " " },{ label: "Bunga Daisy Bandung", category: "Collection", url: "/collections/bunga-daisy-bandung", images: " ", price: " " },{ label: "Bunga Daisy Surabaya", category: "Collection", url: "/collections/bunga-daisy-surabaya", images: " ", price: " " },{ label: "Bunga Gerbera Bali", category: "Collection", url: "/collections/bunga-gerbera-bali", images: " ", price: " " },{ label: "Bunga Gerbera Bandung", category: "Collection", url: "/collections/bunga-gerbera-bandung", images: " ", price: " " },{ label: "Bunga Gerbera Surabaya", category: "Collection", url: "/collections/bunga-gerbera-surabaya", images: " ", price: " " },{ label: "Bunga Imlek", category: "Collection", url: "/collections/rangkaian-bunga-tahun-baru-imlek", images: " ", price: " " },{ label: "Bunga Lebaran", category: "Collection", url: "/collections/rangkaian-bunga-lebaran", images: " ", price: " " },{ label: "Bunga Lily Bali", category: "Collection", url: "/collections/bunga-lily-bali", images: " ", price: " " },{ label: "Bunga Lily Bandung", category: "Collection", url: "/collections/bunga-lily-bandung", images: " ", price: " " },{ label: "Bunga Lily Surabaya", category: "Collection", url: "/collections/bunga-lily-surabaya", images: " ", price: " " },{ label: "Bunga Matahari Bali", category: "Collection", url: "/collections/bunga-matahari-bali", images: " ", price: " " },{ label: "Bunga Matahari Bandung", category: "Collection", url: "/collections/bunga-matahari-bandung", images: " ", price: " " },{ label: "Bunga Matahari Surabaya", category: "Collection", url: "/collections/bunga-matahari-surabaya", images: " ", price: " " },{ label: "Bunga Mawar Bali", category: "Collection", url: "/collections/bunga-mawar-bali", images: " ", price: " " },{ label: "Bunga Mawar Bandung", category: "Collection", url: "/collections/bunga-mawar-bandung", images: " ", price: " " },{ label: "Bunga Mawar Surabaya", category: "Collection", url: "/collections/bunga-mawar-surabaya", images: " ", price: " " },{ label: "Bunga Meja", category: "Collection", url: "/collections/bunga-meja", images: " ", price: " " },{ label: "Bunga Meja Bali", category: "Collection", url: "/collections/bunga-meja-bali", images: " ", price: " " },{ label: "Bunga Meja Bandung", category: "Collection", url: "/collections/bunga-meja-bandung", images: " ", price: " " },{ label: "Bunga Meja Batam", category: "Collection", url: "/collections/bunga-meja-batam", images: " ", price: " " },{ label: "Bunga Meja Jepara", category: "Collection", url: "/collections/bunga-meja-jepara", images: " ", price: " " },{ label: "Bunga Meja Medan", category: "Collection", url: "/collections/bunga-meja-medan", images: " ", price: " " },{ label: "Bunga Meja Semarang", category: "Collection", url: "/collections/bunga-meja-semarang", images: " ", price: " " },{ label: "Bunga Meja Sidoarjo", category: "Collection", url: "/collections/bunga-meja-sidoarjo", images: " ", price: " " },{ label: "Bunga Meja Surabaya", category: "Collection", url: "/collections/bunga-meja-surabaya", images: " ", price: " " },{ label: "Bunga Meja Tangerang", category: "Collection", url: "/collections/bunga-meja-tangerang", images: " ", price: " " },{ label: "Bunga Meja Yogyakarta", category: "Collection", url: "/collections/bunga-meja-jogja", images: " ", price: " " },{ label: "Bunga Modern Pastel Bali", category: "Collection", url: "/collections/bunga-modern-pastel-bali", images: " ", price: " " },{ label: "Bunga Modern Pastel Bandung", category: "Collection", url: "/collections/bunga-modern-pastel-bandung", images: " ", price: " " },{ label: "Bunga Modern Pastel Medan", category: "Collection", url: "/collections/bunga-modern-pastel-medan", images: " ", price: " " },{ label: "Bunga Modern Pastel Semarang", category: "Collection", url: "/collections/bunga-modern-pastel-semarang", images: " ", price: " " },{ label: "Bunga Modern Pastel Surabaya", category: "Collection", url: "/collections/bunga-modern-pastel-surabaya", images: " ", price: " " },{ label: "Bunga Modern Pastel Yogyakarta", category: "Collection", url: "/collections/bunga-modern-pastel-yogyakarta", images: " ", price: " " },{ label: "Bunga Natal", category: "Collection", url: "/collections/rangkaian-bunga-christmas", images: " ", price: " " },{ label: "Bunga Papan", category: "Collection", url: "/collections/bunga-papan", images: " ", price: " " },{ label: "Bunga Pernikahan", category: "Collection", url: "/collections/bunga-pernikahan", images: " ", price: " " },{ label: "Bunga Plastik", category: "Collection", url: "/collections/bunga-plastik", images: " ", price: " " },{ label: "Bunga Tulip", category: "Collection", url: "/collections/bunga-tulip", images: " ", price: " " },{ label: "Bunga Ulang Tahun", category: "Collection", url: "/collections/bunga-ulang-tahun", images: " ", price: " " },{ label: "Bunga Wisuda", category: "Collection", url: "/collections/karangan-bunga-wisuda", images: " ", price: " " },{ label: "Cake", category: "Collection", url: "/collections/kue", images: " ", price: " " },{ label: "Cake", category: "Collection", url: "/collections/cake", images: " ", price: " " },{ label: "Cake Sameday Delivery", category: "Collection", url: "/collections/cake-sameday-delivery", images: " ", price: " " },{ label: "Cake, Hampers & Gifts", category: "Collection", url: "/collections/cake-hampers", images: " ", price: " " },{ label: "Cancer âï¸ 22June - 22July", category: "Collection", url: "/collections/kado-untuk-zodiak-cancer", images: " ", price: " " },{ label: "Capricorn âï¸ 21Dec - 19Jan", category: "Collection", url: "/collections/kado-untuk-zodiak-capricorn", images: " ", price: " " },{ label: "Care Packages", category: "Collection", url: "/collections/toko-parcel-murah", images: " ", price: " " },{ label: "Care Packages (Keluarga, Sahabat, Karyawan)", category: "Collection", url: "/collections/sehat-bebas-corona", images: " ", price: " " },{ label: "Carnations", category: "Collection", url: "/collections/bunga-anyelir", images: " ", price: " " },{ label: "Celebration", category: "Collection", url: "/collections/celebration", images: " ", price: " " },{ label: "Chléa Paperie", category: "Collection", url: "/collections/chlea-paperie", images: " ", price: " " },{ label: "Chocodot", category: "Collection", url: "/collections/chocodot", images: " ", price: " " },{ label: "Christmas", category: "Collection", url: "/collections/christmas", images: " ", price: " " },{ label: "Classic Cake", category: "Collection", url: "/collections/classic-cake", images: " ", price: " " },{ label: "Classic CNY Hampers", category: "Collection", url: "/collections/classic-cny-hampers", images: " ", price: " " },{ label: "Classic CNY Hampers Luar Jabodetabek", category: "Collection", url: "/collections/classic-cny-hampers-luar-jabodetabek", images: " ", price: " " },{ label: "Classic Hampers", category: "Collection", url: "/collections/classic-hampers", images: " ", price: " " },{ label: "Classic Hampers Luar Jadetabek", category: "Collection", url: "/collections/classic-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Classic Style Flowers", category: "Collection", url: "/collections/classic-style-flowers", images: " ", price: " " },{ label: "Cokelat", category: "Collection", url: "/collections/permen-coklat", images: " ", price: " " },{ label: "Collection List", category: "Collection", url: "/collections/collection-list", images: " ", price: " " },{ label: "Condolences", category: "Collection", url: "/collections/axa-condolences", images: " ", price: " " },{ label: "Congratulations", category: "Collection", url: "/collections/rangkaian-bunga-ucapan-selamat", images: " ", price: " " },{ label: "Corporate Gifts", category: "Collection", url: "/collections/corporate-gifts", images: " ", price: " " },{ label: "Corporate Hampers", category: "Collection", url: "/collections/corporate-hampers", images: " ", price: " " },{ label: "Couple Gift", category: "Collection", url: "/collections/couple-gift", images: " ", price: " " },{ label: "Craft Sweetbox Newborn", category: "Co
7730llection", url: "/collections/craft-sweetbox-newborn", images: " ", price: " " },{ label: "Crystal Florarium", category: "Collection", url: "/collections/crystal-florarium", images: " ", price: " " },{ label: "Cuddlemate Doll", category: "Collection", url: "/collections/boneka-lucu", images: " ", price: " " },{ label: "Cufflinks", category: "Collection", url: "/collections/cufflinks", images: " ", price: " " },{ label: "Cupcakes", category: "Collection", url: "/collections/cupcakes", images: " ", price: " " },{ label: "Custom Alat Tulis", category: "Collection", url: "/collections/alat-tulis", images: " ", price: " " },{ label: "Custom Cake", category: "Collection", url: "/collections/custom-cake", images: " ", price: " " },{ label: "Custom Card Holder", category: "Collection", url: "/collections/custom-card-holder", images: " ", price: " " },{ label: "Custom Coaster", category: "Collection", url: "/collections/custom-coaster", images: " ", price: " " },{ label: "Custom Cutlery", category: "Collection", url: "/collections/custom-cutlery", images: " ", price: " " },{ label: "Custom E-Money", category: "Collection", url: "/collections/custom-e-money", images: " ", price: " " },{ label: "Custom Earpod", category: "Collection", url: "/collections/custom-earpod", images: " ", price: " " },{ label: "Custom Fan", category: "Collection", url: "/collections/custom-fan", images: " ", price: " " },{ label: "Custom Jewelry", category: "Collection", url: "/collections/custom-jewelry", images: " ", price: " " },{ label: "Custom Keychain", category: "Collection", url: "/collections/custom-keychain", images: " ", price: " " },{ label: "Custom Medallion", category: "Collection", url: "/collections/custom-medallion", images: " ", price: " " },{ label: "Custom Mirror", category: "Collection", url: "/collections/custom-mirror", images: " ", price: " " },{ label: "Custom Mug", category: "Collection", url: "/collections/custom-mug", images: " ", price: " " },{ label: "Custom Necklace", category: "Collection", url: "/collections/custom-necklace", images: " ", price: " " },{ label: "Custom Notebook", category: "Collection", url: "/collections/custom-notebook", images: " ", price: " " },{ label: "Custom Pen & Pencil", category: "Collection", url: "/collections/custom-pen-pencil", images: " ", price: " " },{ label: "Custom Photo Frame", category: "Collection", url: "/collections/photo-frame", images: " ", price: " " },{ label: "Custom Pillow", category: "Collection", url: "/collections/bantal-custom", images: " ", price: " " },{ label: "Custom Powerbank", category: "Collection", url: "/collections/custom-powerbank", images: " ", price: " " },{ label: "Custom Scarf", category: "Collection", url: "/collections/custom-scarf", images: " ", price: " " },{ label: "Custom Speaker", category: "Collection", url: "/collections/custom-speaker", images: " ", price: " " },{ label: "Custom T-Shirt", category: "Collection", url: "/collections/custom-t-shirt", images: " ", price: " " },{ label: "Custom Tote Bag", category: "Collection", url: "/collections/custom-tote-bag", images: " ", price: " " },{ label: "Custom Tumbler Minuman", category: "Collection", url: "/collections/custom-tumbler-minuman", images: " ", price: " " },{ label: "D'paris", category: "Collection", url: "/collections/dparis", images: " ", price: " " },{ label: "Daisy", category: "Collection", url: "/collections/bunga-aster", images: " ", price: " " },{ label: "Dekorasi", category: "Collection", url: "/collections/dekorasi", images: " ", price: " " },{ label: "Dekorasi Duka Cita", category: "Collection", url: "/collections/dekorasi-bunga-duka-cita", images: " ", price: " " },{ label: "Dekorasi Pemakaman", category: "Collection", url: "/collections/dekorasi-pemakaman", images: " ", price: " " },{ label: "Dekorasi Pernikahan", category: "Collection", url: "/collections/dekorasi-bunga-pernikahan", images: " ", price: " " },{ label: "Dekorasi Ulang Tahun", category: "Collection", url: "/collections/dekorasi-bunga-ulang-tahun", images: " ", price: " " },{ label: "Delivery", category: "Collection", url: "/collections/delivery", images: " ", price: " " },{ label: "Deluxe Newborn Hampers Collection", category: "Collection", url: "/collections/deluxe-newborn-hampers-collection", images: " ", price: " " },{ label: "Digital Gift", category: "Collection", url: "/collections/digital-gift", images: " ", price: " " },{ label: "Donasi", category: "Collection", url: "/collections/donasi", images: " ", price: " " },{ label: "E-Card", category: "Collection", url: "/collections/ecard", images: " ", price: " " },{ label: "E-Gift Card", category: "Collection", url: "/collections/e-gift-card", images: " ", price: " " },{ label: "Earrings", category: "Collection", url: "/collections/anting", images: " ", price: " " },{ label: "Edible Gift", category: "Collection", url: "/collections/edible-gift", images: " ", price: " " },{ label: "Enchanted Grande Love Pirouette", category: "Collection", url: "/collections/enchanted-grande-love-pirouette", images: " ", price: " " },{ label: "Enchanted Love Pirouette", category: "Collection", url: "/collections/enchanted-love-pirouette", images: " ", price: " " },{ label: "Engagement", category: "Collection", url: "/collections/rangkaian-bunga-lamaran", images: " ", price: " " },{ label: "Expression", category: "Collection", url: "/collections/expression", images: " ", price: " " }
7730,{ label: "Father's Day Special", category: "Collection", url: "/collections/kado-untuk-ayah", images: " ", price: " " },{ label: "Ferrari", category: "Collection", url: "/collections/ferrari", images: " ", price: " " },{ label: "Ferrero Rocher", category: "Collection", url: "/collections/ferrero-rocher", images: " ", price: " " },{ label: "Festival Belanja Online", category: "Collection", url: "/collections/fbo-2018", images: " ", price: " " },{ label: "Floatbox", category: "Collection", url: "/collections/floatbox", images: " ", price: " " },{ label: "Flower", category: "Collection", url: "/collections/flower", images: " ", price: " " },{ label: "Flower Best Deals", category: "Collection", url: "/collections/flower-best-deals", images: " ", price: " " },{ label: "Flowers", category: "Collection", url: "/collections/toko-bunga", images: " ", price: " " },{ label: "Flowers For Him", category: "Collection", url: "/collections/bunga-untuk-pria", images: " ", price: " " },{ label: "Flowers Style", category: "Collection", url: "/collections/style", images: " ", price: " " },{ label: "Flowers Type", category: "Collection", url: "/collections/type", images: " ", price: " " },{ label: "For Her", category: "Collection", url: "/collections/kado-untuk-wanita", images: " ", price: " " },{ label: "For Him", category: "Collection", url: "/collections/kado-untuk-pria", images: " ", price: " " },{ label: "Forever Flower", category: "Collection", url: "/collections/forever-flower", images: " ", price: " " },{ label: "Forever Flower Holo Series", category: "Collection", url: "/collections/forever-flower-holo-series", images: " ", price: " " },{ label: "Forever Flower x NestBloom", category: "Collection", url: "/collections/forever-flower-x-nestbloom", images: " ", price: " " },{ label: "Fortune Hampers", category: "Collection", url: "/collections/fortune-hampers", images: " ", price: " " },{ label: "Frank & Co", category: "Collection", url: "/collections/franknco", images: " ", price: " " },{ label: "Fresh Flowers", category: "Collection", url: "/collections/fresh-flower", images: " ", price: " " },{ label: "Gantungan Kunci", category: "Collection", url: "/collections/gantungan-kunci", images: " ", price: " " },{ label: "Gelato", category: "Collection", url: "/collections/gelato", images: " ", price: " " },{ label: "Gelato Pie", category: "Collection", url: "/collections/gelato-pie", images: " ", price: " " },{ label: "Gemini âï¸ 21May - 21June", category: "Collection", url: "/collections/kado-untuk-zodiak-gemini", images: " ", price: " " },{ label: "Gerbera", category: "Collection", url: "/collections/gerbera", images: " ", price: " " },{ label: "Get Well Soon", category: "Collection", url: "/collections/rangkaian-bunga-gws", images: " ", price: " " },{ label: "Giant Flower Bali", category: "Collection", url: "/collections/giant-flower-bali", images: " ", price: " " },{ label: "Giant Flower Bandung", category: "Collection", url: "/collections/giant-flower-bandung", images: " ", price: " " },{ label: "Giant Flower Bouquet", category: "Collection", url: "/collections/giant-flower", images: " ", price: " " },{ label: "Gift", category: "Collection", url: "/collections/souvenir-kado-hadiah", images: " ", price: " " },{ label: "Gift by Recipient", category: "Collection", url: "/collections/gift-by-recipient", images: " ", price: " " },{ label: "Gift for Your Girlfriend", category: "Collection", url: "/collections/kado-untuk-pacar-wanita", images: " ", price: " " },{ label: "Gifts", category: "Collection", url: "/collections/gifts", images: " ", price: " " },{ label: "Glassbox Hampers", category: "Collection", url: "/collections/glassbox-hampers", images: " ", price: " " },{ label: "Glassware Hampers", category: "Collection", url: "/collections/parcel-pecah-belah", images: " ", price: " " },{ label: "Gold Jewelry", category: "Collection", url: "/collections/perhiasan-emas", images: " ", price: " " },{ label: "Grand Opening", category: "Collection", url: "/collections/grand-opening", images: " ", price: " " },{ label: "Granola", category: "Collection", url: "/collections/granola", images: " ", price: " " },{ label: "Green Tea", category: "Collection", url: "/collections/green-tea", images: " ", price: " " },{ label: "Greeting Card All", category: "Collection", url: "/collections/greeting-card-all", images: " ", price: " " },{ label: "Greeting Card Anniversary", category: "Collection", url: "/collections/greeting-card-anniversary", images: " ", price: " " },{ label: "Greeting Card Birthday", category: "Collection", url: "/collections/greeting-card-birthday", images: " ", price: " " },{ label: "Greeting Card Eid", category: "Collection", url: "/collections/greeting-card-eid", images: " ", price: " " },{ label: "Greeting Card Graduation", category: "Collection", url: "/collections/greeting-card-graduation", images: " ", price: " " },{ label: "Greeting Card Mother's Day", category: "Collection", url: "/collections/greeting-card-mothers-day", images: " ", price: " " },{ label: "Greeting Card Newborn", category: "Collection", url: "/collections/greeting-card-newborn", images: " ", price: " " },{ label: "Greeting Card Others", category: "Collection", url: "/collections/greeting-card-others", images: " ", price: " " },{ label: "Greeting Card Valentine", category: "Collection", url: "/collections/greeting-card-valentine", images: " ", price: " " },{ label: "Greeting Card Wedding", category: "Collection", url: "/collections/greeting-card-wedding", images: " ", price: " " },{ label: "Grooming", category: "Collection", url: "/collections/grooming", images: " ", price: " " },{ label: "Hadiah Tahun Baru Imlek", category: "Collection", url: "/collections/kado-imlek", images: " ", price: " " },{ label: "Hadiah untuk Bayi", category: "Collection", url: "/collections/kado-untuk-bayi", images: " ", price: " " },{ label: "Hadiah untuk Pacar", category: "Collection", url: "/collections/kado-untuk-pacar", images: " ", price: " " },{ label: "Hadiah untuk Pernikahan", category: "Collection", url: "/collections/kado-untuk-pernikahan", images: " ", price: " " },{ label: "Hadiah untuk Sahabat", category: "Collection", url: "/collections/kado-untuk-sahabat", images: " ", price: " " },{ label: "Hampers", category: "Collection", url: "/collections/hampers", images: " ", price: " " },{ label: "Hampers Baby Boy", category: "Collection", url: "/collections/hampers-baby-boy", images: " ", price: " " },{ label: "Hampers Baby Girl", category: "Collection", url: "/collections/hampers-baby-girl", images: " ", price: " " },{ label: "Hampers Baby Unisex", category: "Collection", url: "/collections/hampers-baby-unisex", images: " ", price: " " },{ label: "Hampers Delivery Indonesia", category: "Collection", url: "/collections/parcel-indonesia", images: " ", price: " " },{ label: "Hampers Lebaran 2025", category: "Collection", url: "/collections/parcel-lebaran", images: " ", price: " " },{ label: "Hampers Lebaran Bali", category: "Collection", url: "/collections/hampers-lebaran-bali", images: " ", price: " " },{ label: "Hampers Lebaran Bandung", category: "Collection", url: "/collections/hampers-lebaran-bandung", images: " ", price: " " },{ label: "Hampers Lebaran Jakarta", category: "Collection", url: "/collections/hampers-lebaran-jakarta", images: " ", price: " " },{ label: "Hampers Lebaran Semarang", category: "Collection", url: "/collections/hampers-lebaran-semarang", images: " ", price: " " },{ label: "Hampers Lebaran Surabaya", category: "Collection", url: "/collections/hampers-lebaran-surabaya", images: " ", price: " " },{ label: "Hampers Lebaran Yogyakarta", category: "Collection", url: "/collections/hampers-lebaran-yogyakarta", images: " ", price: " " },{ label: "Hand Sanitizer", category: "Collection", url: "/collections/hand-sanitizer", images: " ", price: " " },{ label: "Happy Birthday", category: "Collection", url: "/collections/kado-ulang-tahun", images: " ", price: " " },{ label: "Harbolnas", category: "Collection", url: "/collections/harbolnas-2018", images: " ", price: " " },{ label: "Harbolnas Produk Lokal", category: "Collection", url: "/collections/produk-lokal", images: " ", price: " " },{ label: "Hari Belanja Online Nasional", category: "Collection", url: "/collections/harbolnas", images: " ", price: " " },{ label: "Hari Guru", category: "Collection", url: "/collections/hari-guru", images: " ", price: " " },{ label: "Healthy Creations", category: "Collection", url: "/collections/healthy-creations", images: " ", price: " " },{ label: "Healthy Hampers", category: "Collection", url: "/collections/healthy-hampers", images: " ", price: " " },{ label: "Heritage Box", category: "Collection", url: "/collections/heritage-boxes", images: " ", price: " " },{ label: "Heritage Chinese New Year Hampers", category: "Collection", url: "/collections/heritage-chinese-new-year-hampers", images: " ", price: " " },{ label: "Heritage Christmas Hampers", category: "Collection", url: "/collections/heritage-christmas-hampers", images: " ", price: " " },{ label: "Heritage Hampers", category: "Collection", url: "/collections/heritage-hampers", images: " ", price: " " },{ label: "Heritage Ramadan Hampers", category: "Collection", url: "/collections/heritage-ramadan-hampers", images: " ", price: " " },{ label: "Hexa Hampers", category: "Collection", url: "/collections/hexa-hampers", images: " ", price: " " },{ label: "Hexa Hampers Luar Jadetabek", category: "Collection", url: "/collections/hexa-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Hexa Newborn", category: "Collection", url: "/collections/hexa-newborn", images: " ", price: " " },{ label: "Holo Bag", category: "Collection", url: "/collections/holo-bag", images: " ", price: " " },{ label: "Holo Series", category: "Collection", url: "/collections/holo-series", images: " ", price: " " },{ label: "Home Decoration & Photo Frame", category: "Collection", url: "/collections/home-decoration", images: " ", price: " " }
7730,{ label: "Hospitalization", category: "Collection", url: "/collections/axa-hospitalization", images: " ", price: " " },{ label: "House Hampers", category: "Collection", url: "/collections/house-hampers", images: " ", price: " " },{ label: "I'm Sorry", category: "Collection", url: "/collections/rangkaian-bunga-sorry", images: " ", price: " " },{ label: "Ice Cream Cake", category: "Collection", url: "/collections/ice-cream-cake", images: " ", price: " " },{ label: "Idul Fitri", category: "Collection", url: "/collections/rangkaian-bunga-idul-fitri", images: " ", price: " " },{ label: "Jam Tangan", category: "Collection", url: "/collections/jam-tangan", images: " ", price: " " },{ label: "Jam Tangan Couple", category: "Collection", url: "/collections/jam-tangan-couple", images: " ", price: " " },{ label: "Jam Tangan Pria", category: "Collection", url: "/collections/jam-tangan-pria", images: " ", price: " " },{ label: "Jam Tangan Wanita", category: "Collection", url: "/collections/jam-tangan-wanita", images: " ", price: " " },{ label: "Jasa Packing Parcel", category: "Collection", url: "/collections/jasa-packing-parcel", images: " ", price: " " },{ label: "Jewelry", category: "Collection", url: "/collections/jewelry", images: " ", price: " " },{ label: "Jolly Hampers", category: "Collection", url: "/collections/jolly-hampers", images: " ", price: " " },{ label: "Jual Custom Cake & Hampers Termurah & Terlengkap | Outerbloom Florist & Gift", category: "Collection", url: "/collections/custom-cake-hampers", images: " ", price: " " },{ label: "Just Because", category: "Collection", url: "/collections/just-because", images: " ", price: " " },{ label: "Kado Makanan", category: "Collection", url: "/collections/kado-makanan", images: " ", price: " " },{ label: "Kado Minuman", category: "Collection", url: "/collections/kado-minuman", images: " ", price: " " },{ label: "Kado Natal", category: "Collection", url: "/collections/kado-natal", images: " ", price: " " },{ label: "Kado Unik", category: "Collection", url: "/collections/kado-unik", images: " ", price: " " },{ label: "Kado Valentine Nusantara", category: "Collection", url: "/collections/kado-valentine-nusantara", images: " ", price: " " },{ label: "Kado Valentine untuk Pria", category: "Collection", url: "/collections/kado-valentine-untuk-pria", images: " ", price: " " },{ label: "Kado Wisuda", category: "Collection", url: "/collections/kado-wisuda", images: " ", price: " " },{ label: "Kado Zodiak", category: "Collection", url: "/collections/kado-untuk-zodiak", images: " ", price: " " },{ label: "Karangan Bunga Aceh", category: "Collection", url: "/collections/karangan-bunga-aceh", images: " ", price: " " },{ label: "Karangan Bunga Ambon", category: "Collection", url: "/collections/karangan-bunga-ambon", images: " ", price: " " },{ label: "Karangan Bunga Atambua", category: "Collection", url: "/collections/karangan-bunga-atambua", images: " ", price: " " },{ label: "Karangan Bunga Bali", category: "Collection", url: "/collections/karangan-bunga-bali", images: " ", price: " " },{ label: "Karangan Bunga Balikpapan", category: "Collection", url: "/collections/karangan-bunga-balikpapan", images: " ", price: " " },{ label: "Karangan Bunga Bandung", category: "Collection", url: "/collections/karangan-bunga-bandung", images: " ", price: " " },{ label: "Karangan Bunga Bandung Barat", category: "Collection", url: "/collections/karangan-bunga-bandung-barat", images: " ", price: " " },{ label: "Karangan Bunga Bangka", category: "Collection", url: "/collections/karangan-bunga-bangka", images: " ", price: " " },{ label: "Karangan Bunga Banjarmasin", category: "Collection", url: "/collections/karangan-bunga-banjarmasin", images: " ", price: " " },{ label: "Karangan Bunga Banten", category: "Collection", url: "/collections/karangan-bunga-banten", images: " ", price: " " },{ label: "Karangan Bunga Banyumas", category: "Collection", url: "/collections/karangan-bunga-banyumas", images: " ", price: " " },{ label: "Karangan Bunga Banyuwangi", category: "Collection", url: "/collections/karangan-bunga-banyuwangi", images: " ", price: " " },{ label: "Karangan Bunga Batam", category: "Collection", url: "/collections/karangan-bunga-batam", images: " ", price: " " },{ label: "Karangan Bunga Baubau", category: "Collection", url: "/collections/karangan-bunga-baubau", images: " ", price: " " },{ label: "Karangan Bunga Bengkalis", category: "Collection", url: "/collections/karangan-bunga-bengkalis", images: " ", price: " " },{ label: "Karangan Bunga Bengkayang", category: "Collection", url: "/collections/karangan-bunga-bengkayang", images: " ", price: " " },{ label: "Karangan Bunga Bengkulu", category: "Collection", url: "/collections/karangan-bunga-bengkulu", images: " ", price: " " },{ label: "Karangan Bunga Blora", category: "Collection", url: "/collections/karangan-bunga-blora", images: " ", price: " " },{ label: "Karangan Bunga Bogor", category: "Collection", url: "/collections/karangan-bunga-bogor", images: " ", price: " " },{ label: "Karangan Bunga Bojonegoro", category: "Collection", url: "/collections/karangan-bunga-bojonegoro", images: " ", price: " " },{ label: "Karangan Bunga Boyolali", category: "Collection", url: "/collections/karangan-bunga-boyolali", images: " ", price: " " },{ label: "Karangan Bunga Brebes", category: "Collection", url: "/collections/karangan-bunga-brebes", images: " ", price: " " },{ label: "Karangan Bunga Bukittinggi", category: "Collection", url: "/collections/karangan-bunga-bukittinggi", images: " ", price: " " },{ label: "Karangan Bunga Ciamis", category: "Collection", url: "/collections/karangan-bunga-ciamis", images: " ", price: " " }
7730,{ label: "Karangan Bunga Cianjur", category: "Collection", url: "/collections/karangan-bunga-cianjur", images: " ", price: " " },{ label: "Karangan Bunga Cikarang", category: "Collection", url: "/collections/karangan-bunga-cikarang", images: " ", price: " " },{ label: "Karangan Bunga Cikupa", category: "Collection", url: "/collections/karangan-bunga-cikupa", images: " ", price: " " },{ label: "Karangan Bunga Cilacap", category: "Collection", url: "/collections/karangan-bunga-cilacap", images: " ", price: " " },{ label: "Karangan Bunga Cileunyi", category: "Collection", url: "/collections/karangan-bunga-cileunyi", images: " ", price: " " },{ label: "Karangan Bunga Cimahi", category: "Collection", url: "/collections/karangan-bunga-cimahi", images: " ", price: " " },{ label: "Karangan Bunga Cirebon", category: "Collection", url: "/collections/karangan-bunga-cirebon", images: " ", price: " " },{ label: "Karangan Bunga Ciwidey", category: "Collection", url: "/collections/karangan-bunga-ciwidey", images: " ", price: " " },{ label: "Karangan Bunga Danau Toba", category: "Collection", url: "/collections/karangan-bunga-danau-toba", images: " ", price: " " },{ label: "Karangan Bunga Demak", category: "Collection", url: "/collections/karangan-bunga-demak", images: " ", price: " " },{ label: "Karangan Bunga Denpasar", category: "Collection", url: "/collections/karangan-bunga-denpasar", images: " ", price: " " },{ label: "Karangan Bunga Depok", category: "Collection", url: "/collections/karangan-bunga-depok", images: " ", price: " " },{ label: "Karangan Bunga Duka Cita", category: "Collection", url: "/collections/karangan-bunga-duka-cita", images: " ", price: " " },{ label: "Karangan Bunga Garut", category: "Collection", url: "/collections/karangan-bunga-garut", images: " ", price: " " },{ label: "Karangan Bunga Gianyar", category: "Collection", url: "/collections/karangan-bunga-gianyar", images: " ", price: " " },{ label: "Karangan Bunga Gorontalo", category: "Collection", url: "/collections/karangan-bunga-gorontalo", images: " ", price: " " },{ label: "Karangan Bunga Gowa", category: "Collection", url: "/collections/karangan-bunga-gowa", images: " ", price: " " },{ label: "Karangan Bunga Gresik", category: "Collection", url: "/collections/karangan-bunga-gresik", images: " ", price: " " },{ label: "Karangan Bunga Grobogan", category: "Collection", url: "/collections/karangan-bunga-grobogan", images: " ", price: " " },{ label: "Karangan Bunga Gunung Kidul", category: "Collection", url: "/collections/karangan-bunga-gunungkidul", images: " ", price: " " },{ label: "Karangan Bunga Indramayu", category: "Collection", url: "/collections/karangan-bunga-indramayu", images: " ", price: " " },{ label: "Karangan Bunga Jakarta", category: "Collection", url: "/collections/karangan-bunga-jakarta", images: " ", price: " " },{ label: "Karangan Bunga Jambi", category: "Collection", url: "/collections/karangan-bunga-jambi", images: " ", price: " " },{ label: "Karangan Bunga Jayapura", category: "Collection", url: "/collections/karangan-bunga-jayapura", images: " ", price: " " },{ label: "Karangan Bunga Jember", category: "Collection", url: "/collections/karangan-bunga-jember", images: " ", price: " " },{ label: "Karangan Bunga Jembrana", category: "Collection", url: "/collections/karangan-bunga-jembrana", images: " ", price: " " },{ label: "Karangan Bunga Jepara", category: "Collection", url: "/collections/karangan-bunga-jepara", images: " ", price: " " },{ label: "Karangan Bunga Jombang", category: "Collection", url: "/collections/karangan-bunga-jombang", images: " ", price: " " },{ label: "Karangan Bunga Kampung Baru", category: "Collection", url: "/collections/karangan-bunga-kampung-baru", images: " ", price: " " },{ label: "Karangan Bunga Kapuas", category: "Collection", url: "/collections/karangan-bunga-kapuas", images: " ", price: " " },{ label: "Karangan Bunga Karanganyar", category: "Collection", url: "/collections/karangan-bunga-karanganyar", images: " ", price: " " },{ label: "Karangan Bunga Karangasem", category: "Collection", url: "/collections/karangan-bunga-karangasem", images: " ", price: " " },{ label: "Karangan Bunga Karawang", category: "Collection", url: "/collections/karangan-bunga-karawang", images: " ", price: " " },{ label: "Karangan Bunga Kartosuro", category: "Collection", url: "/collections/karangan-bunga-kartosuro", images: " ", price: " " },{ label: "Karangan Bunga Kebumen", category: "Collection", url: "/collections/karangan-bunga-kebumen", images: " ", price: " " },{ label: "Karangan Bunga Kediri", category: "Collection", url: "/collections/karangan-bunga-kediri", images: " ", price: " " },{ label: "Karangan Bunga Kendal", category: "Collection", url: "/collections/karangan-bunga-ken
7730dal", images: " ", price: " " },{ label: "Karangan Bunga Kendari", category: "Collection", url: "/collections/karangan-bunga-kendari", images: " ", price: " " },{ label: "Karangan Bunga Ketapang", category: "Collection", url: "/collections/karangan-bunga-ketapang", images: " ", price: " " },{ label: "Karangan Bunga Klaten", category: "Collection", url: "/collections/karangan-bunga-klaten", images: " ", price: " " },{ label: "Karangan Bunga Kota Batu", category: "Collection", url: "/collections/karangan-bunga-kota-batu", images: " ", price: " " },{ label: "Karangan Bunga Kudus", category: "Collection", url: "/collections/karangan-bunga-kudus", images: " ", price: " " },{ label: "Karangan Bunga Kupang", category: "Collection", url: "/collections/karangan-bunga-kupang", images: " ", price: " " },{ label: "Karangan Bunga Lamongan", category: "Collection", url: "/collections/karangan-bunga-lamongan", images: " ", price: " " },{ label: "Karangan Bunga Lampung", category: "Collection", url: "/collections/karangan-bunga-lampung", images: " ", price: " " },{ label: "Karangan Bunga Langkat", category: "Collection", url: "/collections/karangan-bunga-langkat", images: " ", price: " " },{ label: "Karangan Bunga Lembang", category: "Collection", url: "/collections/karangan-bunga-lembang", images: " ", price: " " },{ label: "Karangan Bunga Lombok", category: "Collection", url: "/collections/karangan-bunga-lombok", images: " ", price: " " },{ label: "Karangan Bunga Lubuk Pakam", category: "Collection", url: "/collections/karangan-bunga-lubuk-pakam", images: " ", price: " " },{ label: "Karangan Bunga Lumajang", category: "Collection", url: "/collections/karangan-bunga-lumajang", images: " ", price: " " },{ label: "Karangan Bunga Madiun", category: "Collection", url: "/collections/karangan-bunga-madiun", images: " ", price: " " },{ label: "Karangan Bunga Magelang", category: "Collection", url: "/collections/karangan-bunga-magelang", images: " ", price: " " },{ label: "Karangan Bunga Majalengka", category: "Collection", url: "/collections/karangan-bunga-majalengka", images: " ", price: " " },{ label: "Karangan Bunga Makassar", category: "Collection", url: "/collections/karangan-bunga-makassar", images: " ", price: " " },{ label: "Karangan Bunga Malang", category: "Collection", url: "/collections/karangan-bunga-malang", images: " ", price: " " },{ label: "Karangan Bunga Mamuju", category: "Collection", url: "/collections/karangan-bunga-mamuju", images: " ", price: " " },{ label: "Karangan Bunga Manado", category: "Collection", url: "/collections/karangan-bunga-manado", images: " ", price: " " },{ label: "Karangan Bunga Manokwari", category: "Collection", url: "/collections/karangan-bunga-manokwari", images: " ", price: " " },{ label: "Karangan Bunga Maros", category: "Collection", url: "/collections/karangan-bunga-maros", images: " ", price: " " },{ label: "Karangan Bunga Mataram", category: "Collection", url: "/collections/karangan-bunga-mataram", images: " ", price: " " },{ label: "Karangan Bunga Mojokerto", category: "Collection", url: "/collections/karangan-bunga-mojokerto", images: " ", price: " " },{ label: "Karangan Bunga Nganjuk", category: "Collection", url: "/collections/karangan-bunga-nganjuk", images: " ", price: " " },{ label: "Karangan Bunga Nias", category: "Collection", url: "/collections/karangan-bunga-nias", images: " ", price: " " },{ label: "Karangan Bunga Padang", category: "Collection", url: "/collections/karangan-bunga-padang", images: " ", price: " " },{ label: "Karangan Bunga Palangkaraya", category: "Collection", url: "/collections/karangan-bunga-palangkaraya", images: " ", price: " " },{ label: "Karangan Bunga Palu", category: "Collection", url: "/collections/karangan-bunga-palu", images: " ", price: " " },{ label: "Karangan Bunga Pangkal Pinang", category: "Collection", url: "/collections/karangan-bunga-pangkal-pinang", images: " ", price: " " },{ label: "Karangan Bunga Papan", category: "Collection", url: "/collections/karangan-bunga", images: " ", price: " " },{ label: "Karangan Bunga Papan Bandar Lampung", category: "Collection", url: "/collections/karangan-bunga-bandar-lampung", images: " ", price: " " },{ label: "Karangan Bunga Papan Bekasi", category: "Collection", url: "/collections/karangan-bunga-bekasi", images: " ", price: " " },{ label: "Karangan Bunga Papan Binjai", category: "Collection", url: "/collections/karangan-bunga-binjai", images: " ", price: " " },{ label: "Karangan Bunga Papan Blitar", category: "Collection", url: "/collections/karangan-bunga-blitar", images: " ", price: " " },{ label: "Karangan Bunga Papan Buleleng", category: "Collection", url: "/collections/karangan-bunga-buleleng", images: " ", price: " " },{ label: "Karangan Bunga Papan Cibubur", category: "Collection", url: "/collections/karangan-bunga-cibubur", images: " ", price: " " },{ label: "Karangan Bunga Papan Deli Serdang", category: "Collection", url: "/collections/karangan-bunga-deli-serdang", images: " ", price: " " },{ label: "Karangan Bunga Papan Jakarta Timur", category: "Collection", url: "/collections/karangan-bunga-jakarta-timur", images: " ", price: " " },{ label: "Karangan Bunga Papan Karo", category: "Collection", url: "/collections/karangan-bunga-karo", images: " ", price: " " },{ label: "Karangan Bunga Papan Medan", category: "Collection", url: "/collections/karangan-bunga-medan", images: " ", price: " " },{ label: "Karangan Bunga Papan Ngawi", category: "Collection", url: "/collections/karangan-bunga-ngawi", images: " ", price: " " },{ label: "Karangan Bunga Papan Palembang", category: "Collection", url: "/collections/karangan-bunga-palembang", images: " ", price: " " },{ label: "Karangan Bunga Papan Pemalang", category: "Collection", url: "/collections/karangan-bunga-pemalang", images: " ", price: " " },{ label: "Karangan Bunga Papan Rembang", category: "Collection", url: "/collections/karangan-bunga-rembang", images: " ", price: " " },{ label: "Karangan Bunga Papan Sragen", category: "Collection", url: "/collections/karangan-bunga-sragen", images: " ", price: " " },{ label: "Karangan Bunga Papan Tegal", category: "Collection", url: "/collections/karangan-bunga-tegal", images: " ", price: " " },{ label: "Karangan Bunga Papan Temanggung", category: "Collection", url: "/collections/karangan-bunga-temanggung", images: " ", price: " " },{ label: "Karangan Bunga Parepare", category: "Collection", url: "/collections/karangan-bunga-parepare", images: " ", price: " " },{ label: "Karangan Bunga Pasuruan", category: "Collection", url: "/collections/karangan-bunga-pasuruan", images: " ", price: " " },{ label: "Karangan Bunga Pati", category: "Collection", url: "/collections/karangan-bunga-pati", images: " ", price: " " },{ label: "Karangan Bunga Pekalongan", category: "Collection", url: "/collections/karangan-bunga-pekalongan", images: " ", price: " " },{ label: "Karangan Bunga Pekanbaru", category: "Collection", url: "/collections/karangan-bunga-pekanbaru", images: " ", price: " " },{ label: "Karangan Bunga Pematangsiantar", category: "Collection", url: "/collections/karangan-bunga-pematangsiantar", images: " ", price: " " },{ label: "Karangan Bunga Ponorogo", category: "Collection", url: "/collections/karangan-bunga-ponorogo", images: " ", price: " " },{ label: "Karangan Bunga Pontianak", category: "Collection", url: "/collections/karangan-bunga-pontianak", images: " ", price: " " },{ label: "Karangan Bunga Probolinggo", category: "Collection", url: "/collections/karangan-bunga-probolinggo", images: " ", price: " " },{ label: "Karangan Bunga Purbalingga", category: "Collection", url: "/collections/karangan-bunga-purbalingga", images: " ", price: " " },{ label: "Karangan Bunga Purwokerto", category: "Collection", url: "/collections/karangan-bunga-purwokerto", images: " ", price: " " },{ label: "Karangan Bunga Purworejo", category: "Collection", url: "/collections/karangan-bunga-purworejo", images: " ", price: " " },{ label: "Karangan Bunga Riau", category: "Collection", url: "/collections/karangan-bunga-riau", images: " ", price: " " },{ label: "Karangan Bunga Salatiga", category: "Collection", url: "/collections/karangan-bunga-salatiga", images: " ", price: " " },{ label: "Karangan Bunga Samarinda", category: "Collection", url: "/collections/karangan-bunga-samarinda", images: " ", price: " " },{ label: "Karangan Bunga Semarang", category: "Collection", url: "/collections/karangan-bunga-semarang", images: " ", price: " " },{ label: "Karangan Bunga Serang", category: "Collection", url: "/collections/karangan-bunga-serang", images: " ", price: " " },{ label: "Karangan Bunga Sibolga", category: "Collection", url: "/collections/karangan-bunga-sibolga", images: " ", price: " " },{ label: "Karangan Bunga Sidoarjo", category: "Collection", url: "/collections/karangan-bunga-sidoarjo", images: " ", price: " " },{ label: "Karangan Bunga Singkawang", category: "Collection", url: "/collections/karangan-bunga-singkawang", images: " ", price: " " },{ label: "Karangan Bunga Solo", category: "Collection", url: "/collections/karangan-bunga-solo", images: " ", price: " " },{ label: "Karangan Bunga Sorong", category: "Collection", url: "/collections/karangan-bunga-sorong", images: " ", price: " " },{ label: "Karangan Bunga Subang", category: "Collection", url: "/collections/karangan-bunga-subang", images: " ", price: " " },{ label: "Karangan Bunga Sukabumi", category: "Collection", url: "/collections/karangan-bunga-sukabumi", images: " ", price: " " },{ label: "Karangan Bunga Sumbawa", category: "Collection", url: "/collections/karangan-bunga-sumbawa", images: " ", price: " " },{ label: "Karangan Bunga Surabaya", category: "Collection", url: "/collections/karangan-bunga-surabaya", images: " ", price: " " },{ label: "Karangan Bunga Surakarta", category: "Collection", url: "/collections/karangan-bunga-surakarta", images: " ", price: " " },{ label: "Karangan Bunga Tangerang", category: "Collection", url: "/collections/karangan-bunga-tangerang", images: " ", price: " " },{ label: "Karangan Bunga Tasikmalaya", category: "Collection", url: "/collections/karangan-bunga-tasikmalaya", images: " ", price: " " },{ label: "Karangan Bunga Ternate", category: "Collection", url: "/collections/karangan-bunga-ternate", images: " ", price: " " },{ label: "Karangan Bunga Tolitoli", category: "Collection", url: "/collections/karangan-bunga-tolitoli", images: " ", price: " " },{ label: "Karangan Bunga Toraja", category: "Collection", url: "/collections/karangan-bunga-toraja", images: " ", price: " " },{ label: "Karangan Bunga Tuban", category: "Collection", url: "/collections/karangan-bunga-tuban", images: " ", price: " " },{ label: "Karangan Bunga Tulungagung", category: "Collection", url: "/collections/karangan-bunga-tulungagung", images: " ", price: " " },{ label: "Karangan Bunga Wakatobi", category: "Collection", url: "/collections/karangan-bunga-wakatobi", images: " ", price: " " },{ label: "Karangan Bunga Wiyung", category: "Collection", url: "/collections/karangan-bunga-wiyung", images: " ", price: " " },{ label: "Karangan Bunga Wonogiri", category: "Collection", url: "/collections/karangan-bunga-wonogiri", images: " ", price: " " },{ label: "Karangan Bunga Wonokromo", category: "Collection", url: "/collections/karangan-bunga-wonokromo", images: " ", price: " " },{ label: "Karangan Bunga Wonosobo", category: "Collection", url: "/collections/karangan-bunga-wonosobo", images: " ", price: " " },{ label: "Karangan Bunga Yogyakarta", category: "Collection", url: "/collections/karangan-bunga-yogyakarta", images: " ", price: " " },{ label: "Kartu Ucapan", category: "Collection", url: "/collections/kartu-ucapan", images: " ", price: " " },{ label: "Kue Anniversary", category: "Collection", url: "/collections/kue-anniversary", images: " ", price: " " },{ label: "Kue Bachelorette", category: "Collection", url: "/collections/kue-bachelorette", images: " ", price: " " },{ label: "Kue Bandung", category: "Collection", url: "/collections/kue-bandung", images: " ", price: " " },{ label: "Kue Bulan", category: "Collection", url: "/collections/kue-bulan", images: " ", price: " " },{ label: "Kue Imlek", category: "Collection", url: "/collections/kue-imlek", images: " ", price: " " },{ label: "Kue Kering", category: "Collection", url: "/collections/kue-kering", images: " ", price: " " },{ label: "Kue Natal", category: "Collection", url: "/collections/kue-natal", images: " ", price: " " },{ label: "Kue Pernikahan", category: "Collection", url: "/collections/kue-pernikahan", images: " ", price: " " },{ label: "Kue Tart", category: "Collection", url: "/collections/kue-tart", images: " ", price: " " },{ label: "Kue Tart Oma Elly", category: "Collection", url: "/collections/kue-tart-oma-elly", images: " ", price: " " },{ label: "Kue Ulang Tahun", category: "Collection", url: "/collections/kue-ulang-tahun", images: " ", price: " " },{ label: "Lalique", category: "Collection", url: "/collections/lalique", images: " ", price: " " },{ label: "Le Sucre Du Patisserie", category: "Collection", url: "/collections/le-sucre-du-patisserie", images: " ", price: " " },{ label: "Leo âï¸ 23July - 22Augst", category: "Collection", url: "/collections/kado-untuk-zodiak-leo", images: " ", price: " " },{ label: "Letter Box", category: "Collection", url: "/collections/letter-box", images: " ", price: " " },{ label: "Libra âï¸ 23Sept - 23Oct", category: "Collection", url: "/collections/kado-untuk-zodiak-libra", images: " ", price: " " },{ label: "Lilin Aromaterapi", category: "Collection", url: "/collections/lilin-aromaterapi", images: " ", price: " " },{ label: "Lily", category: "Collection", url: "/collections/bunga-lily", images: " ", price: " " },{ label: "Lindt", category: "Collection", url: "/collections/lindt", images: " ", price: " " },{ label: "Locations", category: "Collection", url: "/collections/locations", images: " ", price: " " },{ label: "Love & Romance", category: "Collection", url: "/collections/rangkaian-bunga-i-love-you", images: " ", price: " " },{ label: "Love Bag Collection", category: "Collection", url: "/collections/love-bag-collection", images: " ", price: " " },{ label: "Love Bundle", category: "Collection", url: "/collections/paket-promo-spesial-valentine", images: " ", price: " " },{ label: "Love Bundle Nusantara", category: "Collection", url: "/collections/love-bundle-nusantara", images: " ", price: " " },{ label: "Luxury Chinese New Year Hampers", category: "Collection", url: "/collections/luxury-chinese-new-year-hampers", images: " ", price: " " },{ label: "Luxury Christmas Hampers", category: "Collection", url: "/collections/luxury-christmas-hampers", images: " ", price: " " },{ label: "Luxury Hampers", category: "Collection", url: "/collections/luxury-hampers", images: " ", price: " " },{ label: "Luxury Hampers Luar Jadetabek", category: "Collection", url: "/collections/luxury-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Luxury Newborn Hampers Collection", category: "Collection", url: "/collections/luxury-newborn-hampers-collection", images: " ", price: " " },{ label: "Luxury Ramadan Hampers", category: "Collection", url: "/collections/luxury-ramadan-hampers", images: " ", price: " " },{ label: "Luxury Set", category: "Collection", url: "/collections/luxury", images: " ", price: " " },{ label: "Manual", category: "Collection", url: "/collections/manual", images: " ", price: " " },{ label: "Massimo Gelato", category: "Collection", url: "/collections/massimo-gelato", images: " ", price: " " },{ label: "Men's Collection", category: "Collection", url: "/collections/mens-collection", images: " ", price: " " },{ label: "Mercedes Benz", category: "Collection", url: "/collections/mercedes-benz", images: " ", price: " " },{ label: "Mercy Hampers", category: "Collection", url: "/collections/mercy-
7730hampers", images: " ", price: " " },{ label: "Merry Hampers", category: "Collection", url: "/collections/merry-hampers", images: " ", price: " " },{ label: "Merry Hampers Luar Jabodetabek", category: "Collection", url: "/collections/merry-hampers-luar-jabodetabek", images: " ", price: " " },{ label: "Mini Bouquet", category: "Collection", url: "/collections/mini-bouquet", images: " ", price: " " },{ label: "Miss Mondial", category: "Collection", url: "/collections/miss-mondial", images: " ", price: " " },{ label: "Modern & Chic Chinese New Year", category: "Collection", url: "/collections/modern-chic-chinese-new-year", images: " ", price: " " },{ label: "Modern & Chic Christmas Hampers", category: "Collection", url: "/collections/modern-chic-christmas", images: " ", price: " " },{ label: "Modern & Chic Hampers", category: "Collection", url: "/collections/modern-chic-hampers", images: " ", price: " " },{ label: "Modern & Chic Hampers Luar Jadetabek", category: "Collection", url: "/collections/modern-chic-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Modern & Chic Ramadan Hampers", category: "Collection", url: "/collections/modern-chic-ramadan-hampers", images: " ", price: " " },{ label: "Modern & Classy Hampers", category: "Collection", url: "/collections/parcel-unik", images: " ", price: " " },{ label: "Modern 3D Cake", category: "Collection", url: "/collections/custom-3d-cake", images: " ", price: " " },{ label: "Modern Style Flowers", category: "Collection", url: "/collections/modern-style-flowers", images: " ", price: " " },{ label: "Monochrome Hampers", category: "Collection", url: "/collections/monochrome-hampers", images: " ", price: " " },{ label: "Monochrome Hampers Luar Jadetabek", category: "Collection", url: "/collections/monochrome-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Mooncake", category: "Collection", url: "/collections/kue-bulan-mooncake-2025-mid-autumn-festival", images: " ", price: " " },{ label: "Mooncake Assorted Selection", category: "Collection", url: "/collections/mooncake-assorted-selection", images: " ", price: " " },{ label: "Mother's Day", category: "Collection", url: "/collections/rangkaian-bunga-hari-ibu", images: " ", price: " " },{ label: "Mother's Day Special", category: "Collection", url: "/collections/kado-untuk-ibu", images: " ", price: " " },{ label: "Necklace", category: "Collection", url: "/collections/kalung", images: " ", price: " " },{ label: "NestBloom Bird Nest Hampers", category: "Collection", url: "/collections/nestbloom-birds-nest", images: " ", price: " " },{ label: "NestBloom Gift Set", category: "Collection", url: "/collections/nestbloom-gift-set", images: " ", price: " " },{ label: "Nestbloom Ritual Kit", category: "Collection", url: "/collections/nestbloom-ritual-kit", images: " ", price: " " },{ label: "NestBloom Single Bloom", category: "Collection", url: "/collections/nestbloom-single-bloom", images: " ", price: " " },{ label: "New Collection", category: "Collection", url: "/collections/produk-baru", images: " ", price: " " },{ label: "New Product", category: "Collection", url: "/collections/new-product", images: " ", price: " " },{ label: "Newborn", category: "Collection", url: "/collections/rangkaian-bunga-newborn-baby", images: " ", price: " " },{ label: "Newborn Hampers", category: "Collection", url: "/collections/parcel-newborn", images: " ", price: " " },{ label: "Occasions", category: "Collection", url: "/collections/occasions", images: " ", price: " " },{ label: "Oma Elly", category: "Collection", url: "/collections/oma-elly", images: " ", price: " " },{ label: "Oma Elly Gelato", category: "Collection", url: "/collections/oma-elly-gelato", images: " ", price: " " },{ label: "Orchid", category: "Collection", url: "/collections/bunga-anggrek", images: " ", price: " " },{ label: "Orori", category: "Collection", url: "/collections/orori", images: " ", price: " " },{ label: "Outerbloom", category: "Collection", url: "/collections/outerbloom", images: " ", price: " " },{ label: "Outerbloom Cake", category: "Collection", url: "/collections/outerbloom-cake", images: " ", price: " " },{ label: "Outerbloom Florist", category: "Collection", url: "/collections/outerbloom-florist", images: " ", price: " " },{ label: "Outerbloom Gift", category: "Collection", url: "/collections/outerbloom-gift", images: " ", price: " " },{ label: "Outerbloom Hampers", category: "Collection", url: "/collections/outerbloom-hampers", images: " ", price: " " },{ label: "Outerbloom Indonesia", category: "Collection", url: "/collections/indonesia", images: " ", price: " " },{ label: "Outerbloom x Boho Panna", category: "Collection", url: "/collections/outerbloom-x-boh
7730o-panna", images: " ", price: " " },{ label: "Outerbloom x Clairmont", category: "Collection", url: "/collections/outerbloom-x-clairmont", images: " ", price: " " },{ label: "Outerbloom x Kikido", category: "Collection", url: "/collections/outerbloom-x-kikido", images: " ", price: " " },{ label: "Outerbloom x Miwa Pattern", category: "Collection", url: "/collections/outerbloom-x-miwa", images: " ", price: " " },{ label: "Outerbloom x Nestbloom Chinese New Year", category: "Collection", url: "/collections/outerbloom-x-nestbloom-chinese-new-year", images: " ", price: " " },{ label: "Outerbloom x NestBloom Hampers", category: "Collection", url: "/collections/outerbloom-x-nestbloom", images: " ", price: " " },{ label: "Paket Kolaborasi Outerbloom", category: "Collection", url: "/collections/paket-kolaborasi-outerbloom", images: " ", price: " " },{ label: "Paket Kolaborasi Valentine", category: "Collection", url: "/collections/paket-kolaborasi-valentine", images: " ", price: " " },{ label: "Paket Ulang Tahun", category: "Collection", url: "/collections/paket-ulang-tahun", images: " ", price: " " },{ label: "Paket Valentine Nusantara", category: "Collection", url: "/collections/paket-valentine-nusantara", images: " ", price: " " },{ label: "Paket Valentine Outerbloom", category: "Collection", url: "/collections/paket-valentine", images: " ", price: " " },{ label: "Papan Bunga", category: "Collection", url: "/collections/papan-bunga", images: " ", price: " " },{ label: "Papan Bunga Aceh", category: "Collection", url: "/collections/papan-bunga-aceh", images: " ", price: " " },{ label: "Papan Bunga Acrylic", category: "Collection", url: "/collections/papan-bunga-acrylic", images: " ", price: " " },{ label: "Papan Bunga Ambon", category: "Collection", url: "/collections/papan-bunga-ambon", images: " ", price: " " },{ label: "Papan Bunga Artificial", category: "Collection", url: "/collections/papan-bunga-artificial", images: " ", price: " " },{ label: "Papan Bunga Atambua", category: "Collection", url: "/collections/papan-bunga-atambua", images: " ", price: " " },{ label: "Papan Bunga Bali", category: "Collection", url: "/collections/papan-bunga-bali", images: " ", price: " " },{ label: "Papan Bunga Balikpapan", category: "Collection", url: "/collections/papan-bunga-balikpapan", images: " ", price: " " },{ label: "Papan Bunga Bandar Lampung", category: "Collection", url: "/collections/papan-bunga-bandar-lampung", images: " ", price: " " },{ label: "Papan Bunga Bandung", category: "Collection", url: "/collections/papan-bunga-bandung", images: " ", price: " " },{ label: "Papan Bunga Bandung Barat", category: "Collection", url: "/collections/papan-bunga-bandung-barat", images: " ", price: " " },{ label: "Papan Bunga Bangka", category: "Collection", url: "/collections/papan-bunga-bangka", images: " ", price: " " },{ label: "Papan Bunga Banjarmasin", category: "Collection", url: "/collections/papan-bunga-banjarmasin", images: " ", price: " " },{ label: "Papan Bunga Banten", category: "Collection", url: "/collections/papan-bunga-banten", images: " ", price: " " },{ label: "Papan Bunga Banyumas", category: "Collection", url: "/collections/papan-bunga-banyumas", images: " ", price: " " },{ label: "Papan Bunga Banyuwangi", category: "Collection", url: "/collections/papan-bunga-banyuwangi", images: " ", price: " " },{ label: "Papan Bunga Batam", category: "Collection", url: "/collections/papan-bunga-batam", images: " ", price: " " },{ label: "Papan Bunga Baubau", category: "Collection", url: "/collections/papan-bunga-baubau", images: " ", price: " " },{ label: "Papan Bunga Bekasi", category: "Collection", url: "/collections/papan-bunga-bekasi", images: " ", price: " " },{ label: "Papan Bunga Bengkalis", category: "Collection", url: "/collections/papan-bunga-bengkalis", images: " ", price: " " },{ label: "Papan Bunga Bengkayang", category: "Collection", url: "/collections/papan-bunga-bengkayang", images: " ", price: " " },{ label: "Papan Bunga Bengkulu", category: "Collection", url: "/collections/papan-bunga-bengkulu", images: " ", price: " " }
7730,{ label: "Papan Bunga Binjai", category: "Collection", url: "/collections/papan-bunga-binjai", images: " ", price: " " },{ label: "Papan Bunga Blitar", category: "Collection", url: "/collections/papan-bunga-blitar", images: " ", price: " " },{ label: "Papan Bunga Blora", category: "Collection", url: "/collections/papan-bunga-blora", images: " ", price: " " },{ label: "Papan Bunga Bogor", category: "Collection", url: "/collections/papan-bunga-bogor", images: " ", price: " " },{ label: "Papan Bunga Bojonegoro", category: "Collection", url: "/collections/papan-bunga-bojonegoro", images: " ", price: " " },{ label: "Papan Bunga Boyolali", category: "Collection", url: "/collections/papan-bunga-boyolali", images: " ", price: " " },{ label: "Papan Bunga Brebes", category: "Collection", url: "/collections/papan-bunga-brebes", images: " ", price: " " },{ label: "Papan Bunga Bukittinggi", category: "Collection", url: "/collections/papan-bunga-bukittinggi", images: " ", price: " " },{ label: "Papan Bunga Buleleng", category: "Collection", url: "/collections/papan-bunga-buleleng", images: " ", price: " " },{ label: "Papan Bunga Ciamis", category: "Collection", url: "/collections/papan-bunga-ciamis", images: " ", price: " " },{ label: "Papan Bunga Cianjur", category: "Collection", url: "/collections/papan-bunga-cianjur", images: " ", price: " " },{ label: "Papan Bunga Cibubur", category: "Collection", url: "/collections/papan-bunga-cibubur", images: " ", price: " " },{ label: "Papan Bunga Cikarang", category: "Collection", url: "/collections/papan-bunga-cikarang", images: " ", price: " " },{ label: "Papan Bunga Cikupa", category: "Collection", url: "/collections/papan-bunga-cikupa", images: " ", price: " " },{ label: "Papan Bunga Cikupa", category: "Collection", url: "/collections/papan-bunga-cikupa-1", images: " ", price: " " },{ label: "Papan Bunga Cilacap", category: "Collection", url: "/collections/papan-bunga-cilacap", images: " ", price: " " },{ label: "Papan Bunga Cileunyi", category: "Collection", url: "/collections/papan-bunga-cileunyi", images: " ", price: " " },{ label: "Papan Bunga Cirebon", category: "Collection", url: "/collections/papan-bunga-cirebon", images: " ", price: " " },{ label: "Papan Bunga Congratulations", category: "Collection", url: "/collections/papan-bunga-ucapan-selamat", images: " ", price: " " },{ label: "Papan Bunga Congratulations Bali", category: "Collection", url: "/collections/papan-bunga-congratulations-bali", images: " ", price: " " },{ label: "Papan Bunga Congratulations Bandung", category: "Collection", url: "/collections/papan-bunga-congratulations-bandung", images: " ", price: " " },{ label: "Papan Bunga Congratulations Bekasi", category: "Collection", url: "/collections/papan-bunga-congratulations-bekasi", images: " ", price: " " },{ label: "Papan Bunga Congratulations Bogor", category: "Collection", url: "/collections/papan-bunga-congratulations-bogor", images: " ", price: " " },{ label: "Papan Bunga Congratulations Cikupa", category: "Collection", url: "/collections/papan-bunga-congratulations-cikupa", images: " ", price: " " },{ label: "Papan Bunga Congratulations Demak", category: "Collection", url: "/collections/papan-bunga-congratulations-demak", images: " ", price: " " },{ label: "Papan Bunga Congratulations Depok", category: "Collection", url: "/collections/papan-bunga-congratulations-depok", images: " ", price: " " },{ label: "Papan Bunga Congratulations Gresik", category: "Collection", url: "/collections/papan-bunga-congratulations-gresik", images: " ", price: " " },{ label: "Papan Bunga Congratulations Jakarta", category: "Collection", url: "/collections/papan-bunga-congratulations-jakarta", images: " ", price: " " },{ label: "Papan Bunga Congratulations Jepara", category: "Collection", url: "/collections/papan-bunga-congratulations-jepara", images: " ", price: " " },{ label: "Papan Bunga Congratulations Medan", category: "Collection", url: "/collections/papan-bunga-congratulations-medan", images: " ", price: " " },{ label: "Papan Bunga Congratulations Semarang", category: "Collection", url: "/collections/papan-bunga-congratulations-semarang", images: " ", price: " " }
7730,{ label: "Papan Bunga Congratulations Serang", category: "Collection", url: "/collections/papan-bunga-congratulations-serang", images: " ", price: " " },{ label: "Papan Bunga Congratulations Sidoarjo", category: "Collection", url: "/collections/papan-bunga-congratulations-sidoarjo", images: " ", price: " " },{ label: "Papan Bunga Congratulations Surabaya", category: "Collection", url: "/collections/papan-bunga-congratulations-surabaya", images: " ", price: " " },{ label: "Papan Bunga Congratulations Tangerang", category: "Collection", url: "/collections/papan-bunga-congratulations-tangerang", images: " ", price: " " },{ label: "Papan Bunga Congratulations Yogyakarta", category: "Collection", url: "/collections/papan-bunga-congratulations-yogyakarta", images: " ", price: " " },{ label: "Papan Bunga Danau Toba", category: "Collection", url: "/collections/papan-bunga-danau-toba", images: " ", price: " " },{ label: "Papan Bunga Deli Serdang", category: "Collection", url: "/collections/papan-bunga-deli-serdang", images: " ", price: " " },{ label: "Papan Bunga Demak", category: "Collection", url: "/collections/papan-bunga-demak", images: " ", price: " " },{ label: "Papan Bunga Denpasar", category: "Collection", url: "/collections/papan-bunga-denpasar", images: " ", price: " " },{ label: "Papan Bunga Depok", category: "Collection", url: "/collections/papan-bunga-depok", images: " ", price: " " },{ label: "Papan Bunga Duka Cita", category: "Collection", url: "/collections/bunga-duka-cita", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Bali", category: "Collection", url: "/collections/papan-bunga-duka-cita-bali", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Bandung", category: "Collection", url: "/collections/papan-bunga-duka-cita-bandung", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Bekasi", category: "Collection", url: "/collections/papan-bunga-duka-cita-bekasi", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Bogor", category: "Collection", url: "/collections/papan-bunga-duka-cita-bogor", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Cikupa", category: "Collection", url: "/collections/papan-bunga-duka-cita-cikupa", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Demak", category: "Collection", url: "/collections/papan-bunga-duka-cita-demak", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Depok", category: "Collection", url: "/collections/papan-bunga-duka-cita-depok", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Gresik", category: "Collection", url: "/collections/papan-bunga-duka-cita-gresik", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Jakarta", category: "Collection", url: "/collections/papan-bunga-duka-cita-jakarta", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Jepara", category: "Collection", url: "/collections/papan-bunga-duka-cita-jepara", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Medan", category: "Collection", url: "/collections/papan-bunga-duka-cita-medan", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Semarang", category: "Collection", url: "/collections/papan-bunga-duka-cita-semarang", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Serang", category: "Collection", url: "/collections/papan-bunga-duka-cita-serang", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Sidoarjo", category: "Collection", url: "/collections/papan-bunga-duka-cita-sidoarjo", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Surabaya", category: "Collection", url: "/collections/papan-bunga-duka-cita-surabaya", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Tangerang", category: "Collection", url: "/collections/papan-bunga-duka-cita-tangerang", images: " ", price: " " },{ label: "Papan Bunga Duka Cita Yogyakarta", category: "Collection", url: "/collections/papan-bunga-duka-cita-yogyakarta", images: " ", price: " " },{ label: "Papan Bunga Garut", category: "Collection", url: "/collections/papan-bunga-garut", images: " ", price: " " },{ label: "Papan Bunga Gianyar", category: "Collection", url: "/collections/papan-bunga-gianyar", images: " ", price: " " }
7730,{ label: "Papan Bunga Gorontalo", category: "Collection", url: "/collections/papan-bunga-gorontalo", images: " ", price: " " },{ label: "Papan Bunga Gowa", category: "Collection", url: "/collections/papan-bunga-gowa", images: " ", price: " " },{ label: "Papan Bunga Gresik", category: "Collection", url: "/collections/papan-bunga-gresik", images: " ", price: " " },{ label: "Papan Bunga Grobogan", category: "Collection", url: "/collections/papan-bunga-grobogan", images: " ", price: " " },{ label: "Papan Bunga Gunungkidul", category: "Collection", url: "/collections/papan-bunga-gunungkidul", images: " ", price: " " },{ label: "Papan Bunga Indramayu", category: "Collection", url: "/collections/papan-bunga-indramayu", images: " ", price: " " },{ label: "Papan Bunga Jakarta", category: "Collection", url: "/collections/papan-bunga-jakarta", images: " ", price: " " },{ label: "Papan Bunga Jakarta Timur", category: "Collection", url: "/collections/papan-bunga-jakarta-timur", images: " ", price: " " },{ label: "Papan Bunga Jambi", category: "Collection", url: "/collections/papan-bunga-jambi", images: " ", price: " " },{ label: "Papan Bunga Jayapura", category: "Collection", url: "/collections/papan-bunga-jayapura", images: " ", price: " " },{ label: "Papan Bunga Jember", category: "Collection", url: "/collections/papan-bunga-jember", images: " ", price: " " },{ label: "Papan Bunga Jembrana", category: "Collection", url: "/collections/papan-bunga-jembrana", images: " ", price: " " },{ label: "Papan Bunga Jepara", category: "Collection", url: "/collections/papan-bunga-jepara", images: " ", price: " " },{ label: "Papan Bunga Jombang", category: "Collection", url: "/collections/papan-bunga-jombang", images: " ", price: " " },{ label: "Papan Bunga Kampung Baru", category: "Collection", url: "/collections/papan-bunga-kampung-baru", images: " ", price: " " },{ label: "Papan Bunga Kapuas", category: "Collection", url: "/collections/papan-bunga-kapuas", images: " ", price: " " },{ label: "Papan Bunga Karanganyar", category: "Collection", url: "/collections/papan-bunga-karanganyar", images: " ", price: " " },{ label: "Papan Bunga Karangasem", category: "Collection", url: "/collections/papan-bunga-karangasem", images: " ", price: " " },{ label: "Papan Bunga Karawang", category: "Collection", url: "/collections/papan-bunga-karawang", images: " ", price: " " },{ label: "Papan Bunga Karo", category: "Collection", url: "/collections/papan-bunga-karo", images: " ", price: " " },{ label: "Papan Bunga Kartosuro", category: "Collection", url: "/collections/papan-bunga-kartosuro", images: " ", price: " " },{ label: "Papan Bunga Kebumen", category: "Collection", url: "/collections/papan-bunga-kebumen", images: " ", price: " " },{ label: "Papan Bunga Kediri", category: "Collection", url: "/collections/papan-bunga-kediri", images: " ", price: " " },{ label: "Papan Bunga Kendal", category: "Collection", url: "/collections/papan-bunga-kendal", images: " ", price: " " },{ label: "Papan Bunga Kendari", category: "Collection", url: "/collections/papan-bunga-kendari", images: " ", price: " " },{ label: "Papan Bunga Ketapang", category: "Collection", url: "/collections/papan-bunga-ketapang", images: " ", price: " " },{ label: "Papan Bunga Klaten", category: "Collection", url: "/collections/papan-bunga-klaten", images: " ", price: " " },{ label: "Papan Bunga Kota Batu", category: "Collection", url: "/collections/papan-bunga-kota-batu", images: " ", price: " " },{ label: "Papan Bunga Kudus", category: "Collection", url: "/collections/papan-bunga-kudus", images: " ", price: " " },{ label: "Papan Bunga Kupang", category: "Collection", url: "/collections/papan-bunga-kupang", images: " ", price: " " },{ label: "Papan Bunga Lamongan", category: "Collection", url: "/collections/papan-bunga-lamongan", images: " ", price: " " },{ label: "Papan Bunga Lampu LED", category: "Collection", url: "/collections/papan-bunga-lampu-led", images: " ", price: " " },{ label: "Papan Bunga Lampung", category: "Collection", url: "/collections/papan-bunga-lampung", images: " ", price: " " }
7730,{ label: "Papan Bunga Langkat", category: "Collection", url: "/collections/papan-bunga-langkat", images: " ", price: " " },{ label: "Papan Bunga Lembang", category: "Collection", url: "/collections/papan-bunga-lembang", images: " ", price: " " },{ label: "Papan Bunga Lombok", category: "Collection", url: "/collections/papan-bunga-lombok", images: " ", price: " " },{ label: "Papan Bunga Lubuk Pakam", category: "Collection", url: "/collections/papan-bunga-lubuk-pakam", images: " ", price: " " },{ label: "Papan Bunga Lumajang", category: "Collection", url: "/collections/papan-bunga-lumajang", images: " ", price: " " },{ label: "Papan Bunga Madiun", category: "Collection", url: "/collections/papan-bunga-madiun", images: " ", price: " " },{ label: "Papan Bunga Magelang", category: "Collection", url: "/collections/papan-bunga-magelang", images: " ", price: " " },{ label: "Papan Bunga Majalengka", category: "Collection", url: "/collections/papan-bunga-majalengka", images: " ", price: " " },{ label: "Papan Bunga Makassar", category: "Collection", url: "/collections/papan-bunga-makassar", images: " ", price: " " },{ label: "Papan Bunga Malang", category: "Collection", url: "/collections/papan-bunga-malang", images: " ", price: " " },{ label: "Papan Bunga Mamuju", category: "Collection", url: "/collections/papan-bunga-mamuju", images: " ", price: " " },{ label: "Papan Bunga Manado", category: "Collection", url: "/collections/papan-bunga-manado", images: " ", price: " " },{ label: "Papan Bunga Manokwari", category: "Collection", url: "/collections/papan-bunga-manokwari", images: " ", price: " " },{ label: "Papan Bunga Maros", category: "Collection", url: "/collections/papan-bunga-maros", images: " ", price: " " },{ label: "Papan Bunga Mataram", category: "Collection", url: "/collections/papan-bunga-mataram", images: " ", price: " " },{ label: "Papan Bunga Medan", category: "Collection", url: "/collections/papan-bunga-medan", images: " ", price: " " },{ label: "Papan Bunga Mojokerto", category: "Collection", url: "/collections/papan-bunga-mojokerto", images: " ", price: " " },{ label: "Papan Bunga Nganjuk", category: "Collection", url: "/collections/papan-bunga-nganjuk", images: " ", price: " " },{ label: "Papan Bunga Ngawi", category: "Collection", url: "/collections/papan-bunga-ngawi", images: " ", price: " " },{ label: "Papan Bunga Nias", category: "Collection", url: "/collections/papan-bunga-nias", images: " ", price: " " },{ label: "Papan Bunga Organza", category: "Collection", url: "/collections/papan-bunga-organza", images: " ", price: " " },{ label: "Papan Bunga Padang", category: "Collection", url: "/collections/papan-bunga-padang", images: " ", price: " " },{ label: "Papan Bunga Palangkaraya", category: "Collection", url: "/collections/papan-bunga-palangkaraya", images: " ", price: " " },{ label: "Papan Bunga Palembang", category: "Collection", url: "/collections/papan-bunga-palembang", images: " ", price: " " },{ label: "Papan Bunga Palu", category: "Collection", url: "/collections/papan-bunga-palu", images: " ", price: " " },{ label: "Papan Bunga Pangkal Pinang", category: "Collection", url: "/collections/papan-bunga-pangkal-pinang", images: " ", price: " " },{ label: "Papan Bunga Parepare", category: "Collection", url: "/collections/papan-bunga-parepare", images: " ", price: " " },{ label: "Papan Bunga Pasuruan", category: "Collection", url: "/collections/papan-bunga-pasuruan", images: " ", price: " " },{ label: "Papan Bunga Pati", category: "Collection", url: "/collections/papan-bunga-pati", images: " ", price: " " },{ label: "Papan Bunga Pekalongan", category: "Collection", url: "/collections/papan-bunga-pekalongan", images: " ", price: " " },{ label: "Papan Bunga Pekanbaru", category: "Collection", url: "/collections/papan-bunga-pekanbaru", images: " ", price: " " },{ label: "Papan Bunga Pemalang", category: "Collection", url: "/collections/papan-bunga-pemalang", images: " ", price: " " },{ label: "Papan Bunga Pematangsiantar", category: "Collection", url: "/collections/papan-bunga-pematangsiantar", images: " ", price: " " }
7730,{ label: "Papan Bunga Pernikahan Bali", category: "Collection", url: "/collections/papan-bunga-pernikahan-bali", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Bandung", category: "Collection", url: "/collections/papan-bunga-pernikahan-bandung", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Bekasi", category: "Collection", url: "/collections/papan-bunga-pernikahan-bekasi", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Bogor", category: "Collection", url: "/collections/papan-bunga-pernikahan-bogor", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Cikupa", category: "Collection", url: "/collections/papan-bunga-pernikahan-cikupa", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Demak", category: "Collection", url: "/collections/papan-bunga-pernikahan-demak", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Depok", category: "Collection", url: "/collections/papan-bunga-pernikahan-depok", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Gresik", category: "Collection", url: "/collections/papan-bunga-pernikahan-gresik", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Jakarta", category: "Collection", url: "/collections/papan-bunga-pernikahan-jakarta", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Jepara", category: "Collection", url: "/collections/papan-bunga-pernikahan-jepara", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Medan", category: "Collection", url: "/collections/papan-bunga-pernikahan-medan", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Semarang", category: "Collection", url: "/collections/papan-bunga-pernikahan-semarang", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Serang", category: "Collection", url: "/collections/papan-bunga-pernikahan-serang", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Sidoarjo", category: "Collection", url: "/collections/papan-bunga-pernikahan-sidoarjo", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Surabaya", category: "Collection", url: "/collections/papan-bunga-pernikahan-surabaya", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Tangerang", category: "Collection", url: "/collections/papan-bunga-pernikahan-tangerang", images: " ", price: " " },{ label: "Papan Bunga Pernikahan Yogyakarta", category: "Collection", url: "/collections/papan-bunga-pernikahan-yogyakarta", images: " ", price: " " },{ label: "Papan Bunga Ponorogo", category: "Collection", url: "/collections/papan-bunga-ponorogo", images: " ", price: " " },{ label: "Papan Bunga Pontianak", category: "Collection", url: "/collections/papan-bunga-pontianak", images: " ", price: " " },{ label: "Papan Bunga Premium", category: "Collection", url: "/collections/papan-bunga-premium", images: " ", price: " " },{ label: "Papan Bunga Printing", category: "Collection", url: "/collections/papan-bunga-printing", images: " ", price: " " },{ label: "Papan Bunga Printing Congratulations", category: "Collection", url: "/collections/papan-bunga-printing-congratulations", images: " ", price: " " },{ label: "Papan Bunga Probolinggo", category: "Collection", url: "/collections/papan-bunga-probolinggo", images: " ", price: " " },{ label: "Papan Bunga Promo", category: "Collection", url: "/collections/promo-papan-bunga", images: " ", price: " " },{ label: "Papan Bunga Purbalingga", category: "Collection", url: "/collections/papan-bunga-purbalingga", images: " ", price: " " },{ label: "Papan Bunga Purwokerto", category: "Collection", url: "/collections/papan-bunga-purwokerto", images: " ", price: " " },{ label: "Papan Bunga Purworejo", category: "Collection", url: "/collections/papan-bunga-purworejo", images: " ", price: " " },{ label: "Papan Bunga Rembang", category: "Collection", url: "/collections/papan-bunga-rembang", images: " ", price: " " },{ label: "Papan Bunga Riau", category: "Collection", url: "/collections/papan-bunga-riau", images: " ", price: " " },{ label: "Papan Bunga Salatiga", category: "Collection", url: "/collections/papan-bunga-salatiga", images: " ", price: " " }
7730,{ label: "Papan Bunga Samarinda", category: "Collection", url: "/collections/papan-bunga-samarinda", images: " ", price: " " },{ label: "Papan Bunga Selamat Bandung", category: "Collection", url: "/collections/papan-bunga-selamat-bandung", images: " ", price: " " },{ label: "Papan Bunga Selamat Medan", category: "Collection", url: "/collections/papan-bunga-selamat-medan", images: " ", price: " " },{ label: "Papan Bunga Semarang", category: "Collection", url: "/collections/papan-bunga-semarang", images: " ", price: " " },{ label: "Papan Bunga Serang", category: "Collection", url: "/collections/papan-bunga-serang", images: " ", price: " " },{ label: "Papan Bunga Sibolga", category: "Collection", url: "/collections/papan-bunga-sibolga", images: " ", price: " " },{ label: "Papan Bunga Sidoarjo", category: "Collection", url: "/collections/papan-bunga-sidoarjo", images: " ", price: " " },{ label: "Papan Bunga Singkawang", category: "Collection", url: "/collections/papan-bunga-singkawang", images: " ", price: " " },{ label: "Papan Bunga Solo", category: "Collection", url: "/collections/papan-bunga-solo", images: " ", price: " " },{ label: "Papan Bunga Sorong", category: "Collection", url: "/collections/papan-bunga-sorong", images: " ", price: " " },{ label: "Papan Bunga Sragen", category: "Collection", url: "/collections/papan-bunga-sragen", images: " ", price: " " },{ label: "Papan Bunga Standard", category: "Collection", url: "/collections/papan-bunga-standard", images: " ", price: " " },{ label: "Papan Bunga Subang", category: "Collection", url: "/collections/papan-bunga-subang", images: " ", price: " " },{ label: "Papan Bunga Sukabumi", category: "Collection", url: "/collections/papan-bunga-sukabumi", images: " ", price: " " },{ label: "Papan Bunga Sumbawa", category: "Collection", url: "/collections/papan-bunga-sumbawa", images: " ", price: " " },{ label: "Papan Bunga Surabaya", category: "Collection", url: "/collections/papan-bunga-surabaya", images: " ", price: " " },{ label: "Papan Bunga Surakarta", category: "Collection", url: "/collections/papan-bunga-surakarta", images: " ", price: " " },{ label: "Papan Bunga Tangerang", category: "Collection", url: "/collections/papan-bunga-tangerang", images: " ", price: " " },{ label: "Papan Bunga Tasikmalaya", category: "Collection", url: "/collections/papan-bunga-tasikmalaya", images: " ", price: " " },{ label: "Papan Bunga Tegal", category: "Collection", url: "/collections/papan-bunga-tegal", images: " ", price: " " },{ label: "Papan Bunga Temanggung", category: "Collection", url: "/collections/papan-bunga-temanggung", images: " ", price: " " },{ label: "Papan Bunga Ternate", category: "Collection", url: "/collections/papan-bunga-ternate", images: " ", price: " " },{ label: "Papan Bunga Tolitoli", category: "Collection", url: "/collections/papan-bunga-tolitoli", images: " ", price: " " },{ label: "Papan Bunga Toraja", category: "Collection", url: "/collections/papan-bunga-toraja", images: " ", price: " " },{ label: "Papan Bunga Tuban", category: "Collection", url: "/collections/papan-bunga-tuban", images: " ", price: " " },{ label: "Papan Bunga Tulungagung", category: "Collection", url: "/collections/papan-bunga-tulungagung", images: " ", price: " " },{ label: "Papan Bunga Wakatobi", category: "Collection", url: "/collections/papan-bunga-wakatobi", images: " ", price: " " },{ label: "Papan Bunga Wedding", category: "Collection", url: "/collections/papan-bunga-ucapan-pernikahan", images: " ", price: " " },{ label: "Papan Bunga Wiyung", category: "Collection", url: "/collections/papan-bunga-wiyung", images: " ", price: " " },{ label: "Papan Bunga Wonogiri", category: "Collection", url: "/collections/papan-bunga-wonogiri", images: " ", price: " " },{ label: "Papan Bunga Wonokromo", category: "Collection", url: "/collections/papan-bunga-wonokromo", images: " ", price: " " },{ label: "Papan Bunga Wonosobo", category: "Collection", url: "/collections/papan-bunga-wonosobo", images: " ", price: " " },{ label: "Papan Bunga Yogyakarta", category: "Collection", url: "/collections/papan-bunga-yogyakarta", images: " ", price: " " }
7730,{ label: "Paper Flower Board", category: "Collection", url: "/collections/papan-bunga-kertas", images: " ", price: " " },{ label: "Paper Flower Board Bali", category: "Collection", url: "/collections/papan-bunga-kertas-bali", images: " ", price: " " },{ label: "Paper Flower Board Gresik", category: "Collection", url: "/collections/papan-bunga-kertas-gresik", images: " ", price: " " },{ label: "Paper Flower Board Sidoarjo", category: "Collection", url: "/collections/papan-bunga-kertas-sidoarjo", images: " ", price: " " },{ label: "Paper Flower Board Surabaya", category: "Collection", url: "/collections/papan-bunga-kertas-surabaya", images: " ", price: " " },{ label: "Paper Flower Board Yogyakarta", category: "Collection", url: "/collections/papan-bunga-kertas-yogyakarta", images: " ", price: " " },{ label: "Parcel", category: "Collection", url: "/collections/parcel", images: " ", price: " " },{ label: "Parcel Buah", category: "Collection", url: "/collections/parcel-buah-segar", images: " ", price: " " },{ label: "Parcel Buah Bandung", category: "Collection", url: "/collections/parcel-buah-bandung", images: " ", price: " " },{ label: "Parcel Buah Semarang", category: "Collection", url: "/collections/parcel-buah-semarang", images: " ", price: " " },{ label: "Parcel Buah Sidoarjo", category: "Collection", url: "/collections/parcel-buah-sidoarjo", images: " ", price: " " },{ label: "Parcel Buah Surabaya", category: "Collection", url: "/collections/parcel-buah-surabaya", images: " ", price: " " },{ label: "Parcel Imlek 2025", category: "Collection", url: "/collections/parcel-imlek", images: " ", price: " " },{ label: "Parcel Imlek Bandung", category: "Collection", url: "/collections/parcel-imlek-bandung", images: " ", price: " " },{ label: "Parcel Imlek Nusantara", category: "Collection", url: "/collections/parcel-imlek-nusantara", images: " ", price: " " },{ label: "Parcel Lebaran Bandung", category: "Collection", url: "/collections/parcel-lebaran-bandung", images: " ", price: " " },{ label: "Parcel Lebaran Nusantara", category: "Collection", url: "/collections/parcel-lebaran-indonesia", images: " ", price: " " },{ label: "Parcel Lebaran Surabaya", category: "Collection", url: "/collections/parcel-lebaran-surabaya", images: " ", price: " " },{ label: "Parcel Makanan", category: "Collection", url: "/collections/parcel-makanan", images: " ", price: " " },{ label: "Parcel Natal & Tahun Baru 2026", category: "Collection", url: "/collections/hampers-natal", images: " ", price: " " },{ label: "Parcel Natal & Tahun Baru Bandung", category: "Collection", url: "/collections/parcel-natal-bandung", images: " ", price: " " },{ label: "Parcel Newborn Nusantara", category: "Collection", url: "/collections/parcel-newborn-nusantara", images: " ", price: " " },{ label: "Parcel Tahun Baru", category: "Collection", url: "/collections/new-year-tahun-baru", images: " ", price: " " },{ label: "Party Supplies", category: "Collection", url: "/collections/party-supplies", images: " ", price: " " },{ label: "Partysaurus", category: "Collection", url: "/collections/partysaurus", images: " ", price: " " },{ label: "Pasar Bunga Splendid Malang", category: "Collection", url: "/collections/pasar-bunga-splendid-malang", images: " ", price: " " },{ label: "Passionate Red Valentine", category: "Collection", url: "/collections/red-valentine", images: " ", price: " " },{ label: "Pendant", category: "Collection", url: "/collections/liontin", images: " ", price: " " },{ label: "Personalized Fashion", category: "Collection", url: "/collections/fashion", images: " ", price: " " },{ label: "Personalized Gift", category: "Collection", url: "/collections/personalized-gift", images: " ", price: " " },{ label: "Personalized Gift Pria", category: "Collection", url: "/collections/personalized-gift-pria", images: " ", price: " " },{ label: "Personalized Gift Wanita", category: "Collection", url: "/collections/personalized-gift-wanita", images: " ", price: " " },{ label: "Personalized Gifts", category: "Collection", url: "/collections/personalized-gifts", images: " ", price: " " },{ label: "Pesca Ice Cream Cakes", category: "Collection", url: "/collections/pesca", images: " ", price: " " },{ label: "Phone Case", category: "Collection", url: "/collections/phone-case", images: " ", price: " " },{ label: "Photobook", category: "Collection", url: "/collections/photobook", images: " ", price: " " },{ label: "Pisces âï¸ 19Feb - 20March", category: "Collection", url: "/collections/kado-untuk-zodiak-pisces", images: " ", price: " " },{ label: "Pohon Natal", category: "Collection", url: "/collections/pohon-natal", images: " ", price: " " },{ label: "Premium Hampers", category: "Collection", url: "/collections/parcel-premium", images: " ", price: " " },{ label: "Premium Newborn Hampers Collection", category: "Collection", url: "/collections/premium-newborn-hampers-collection", images: " ", price: " " },{ label: "Printing Cake", category: "Collection", url: "/collections/printing-cake", images: " ", price: " " },{ label: "Prom", category: "Collection", url: "/collections/prom", images: " ", price: " " },{ label: "Promo Merdeka", category: "Collection", url: "/collections/merdeka", images: " ", price: " " },{ label: "Rangkaian Bunga", category: "Collection", url: "/collections/rangkaian-bunga", images: " ", price: " " },{ label: "Rangkaian Bunga Dekorasi", category: "Collection", url: "/collections/rangkaian-bunga-dekorasi", images: " ", price: " " },{ label: "Rangkaian Bunga Ulang Tahun", category: "Collection", url: "/collections/rangkaian-bunga-ulang-tahun", images: " ", price: " " },{ label: "Romantic & Sweets", category: "Collection", url: "/collections/romantic-sweets", images: " ", price: " " },{ label: "Romantic Package", category: "Collection", url: "/collections/romantic-package", images: " ", price: " " },{ label: "Rose Beam", category: "Collection", url: "/collections/rose-beam", images: " ", price: " " },{ label: "Rose Box", category: "Collection", url: "/collections/rose-box", images: " ", price: " " },{ label: "Roses", category: "Collection", url: "/collections/bunga-mawar", images: " ", price: " " },{ label: "Rp 500.000 - Rp 800.000", category: "Collection", url: "/collections/rp-500-000-rp-800-000", images: " ", price: " " },{ label: "Rp 800.000 - Rp 1.000.000", category: "Collection", url: "/collections/rp-800-000-rp-1-000-000", images: " ", price: " " },{ label: "Rustic & Monochrome Ramadan Hampers", category: "Collection", url: "/collections/rustic-monochrome-ramadanhampers", images: " ", price: " " },{ label: "Rustic Bloom", category: "Collection", url: "/collections/dried-flowers", images: " ", price: " " },{ label: "Rustic Style Flowers", category: "Collection", url: "/collections/rustic-style-flowers", images: " ", price: " " },{ label: "Sagittarius âï¸ 22Nov - 21Des", category: "Collection", url: "/collections/kado-untuk-zodiak-sagittarius", images: " ", price: " " },{ label: "Sameday Delivery", category: "Collection", url: "/collections/sameday", images: " ", price: " " },{ label: "Savoury Dish", category: "Collection", url: "/collections/savoury-dish", images: " ", price: " " },{ label: "Saychiz", category: "Collection", url: "/collections/saychiz", images: " ", price: " " },{ label: "Scented Candles", category: "Collection", url: "/collections/scented-candles", images: " ", price: " " },{ label: "Scorpio âï¸ 24Oct - 21Nov", category: "Collection", url: "/collections/kado-untuk-zodiak-scorpio", images: " ", price: " " },{ label: "Self Pick-Up", category: "Collection", url: "/collections/self-pick-up", images: " ", price: " " },{ label: "Semua Produk", category: "Collection", url: "/collections/all", images: " ", price: " " },{ label: "Serenitea", category: "Collection", url: "/collections/serenitea", images: " ", price: " " },{ label: "Share Outerbloom Moment", category: "Collection", url: "/collections/share-moment", images: " ", price: " " },{ label: "Share your Happiness", category: "Collection", url: "/collections/share-happiness", images: " ", price: " " },{ label: "Signature Cake", category: "Collection", url: "/collections/signature-cake", images: " ", price: " " },{ label: "Signature Chinese New Year Hampers", category: "Collection", url: "/collections/signature-chinese-new-year-hampers", images: " ", price: " " },{ label: "Signature Christmas & New Year Hampers", category: "Collection", url: "/collections/signature-christmas-hampers", images: " ", price: " " },{ label: "Signature Hampers", category: "Collection", url: "/collections/signature-hampers", images: " ", price: " " },{ label: "Signature Hampers Luar Jadetabek", category: "Collection", url: "/collections/signature-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Signature Hampers Sameday", category: "Collection", url: "/collections/signature-hampers-sameday", images: " ", price: " " },{ label: "Signature Ramadan Hampers", category: "Collection", url: "/collections/signature-ramadan-hampers", images: " ", price: " " },{ label: "Slice Cake", category: "Collection", url: "/collections/slice-cake", images: " ", price: " " },{ label: "Snack Box", category: "Collection", url: "/collections/snack-box", images: " ", price: " " },{ label: "Sol et Terre", category: "Collection", url: "/collections/sol-et-terre", images: " ", price: " " },{ label: "Sorbet", category: "Collection", url: "/collections/sorbet", images: " ", price: " " },{ label: "Special Day", category: "Collection", url: "/collections/special-day", images: " ", price: " " },{ label: "Special Edition", category: "Collection", url: "/collections/special-edition", images: " ", price: " " },{ label: "Special For Her", category: "Collection", url: "/collections/special-for-her", images: " ", price: " " },{ label: "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik", category: "Collection", url: "/collections/standing-flower", images: " ", price: " " },{ label: "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik Bali", category: "Collection", url: "/collections/standing-flower-bali", images: " ", price: " " },{ label: "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik Bandung", category: "Collection", url: "/collections/standing-flower-bandung", images: " ", price: " " },{ label: "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik Congratulations", category: "Collection", url: "/collections/standing-flower-congratulations", images: " ", price: " " },{ label: "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik Demak", category: "Collection", url: "/collections/standing-flower-demak", images: " ", price: " " },{ label: "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik Jepara", category: "Collection", url: "/collections/standing-flower-jepara", images: " ", price: " " },{ label: "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik Semarang", category: "Collection", url: "/collections/standing-flower-semarang", images: " ", price: " " },{ label: "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik Sidoarjo", category: "Collection", url: "/collections/standing-flower-sidoarjo", images: " ", price: " " },{ label: "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik Surabaya", category: "Collection", url: "/collections/standing-flower-surabaya", images: " ", price: " " },{ label: "EMO78 hadir sebagai situs bandar slot gacor Slot777 dengan pilihan game Pragmatic terbaik 2026 yang bisa anda mainkan untuk menggapai kemenangan jackpot terbaik Yogyakarta", category: "Collection", url: "/collections/standing-flower-yogyakarta", images: " ", price: " " },{ label: "Standing Giant Flower", category: "Collection", url: "/collections/standing-giant-flower", images: " ", price: " " },{ label: "Stationery", category: "Collection", url: "/collections/stationery", images: " ", price: " " },{ label: "Steekwerk", category: "Collection", url: "/collections/steekwerk", images: " ", price: " " },{ label: "Stylish Hampers", category: "Collection", url: "/collections/stylish-hampers", images: " ", price: " " },{ label: "Stylish Hampers Luar Jadetabek", category: "Collection", url: "/collections/stylish-hampers-luar-jadetabek", images: " ", price: " " },{ label: "Succulent", category: "Collection", url: "/collections/succulent", images: " ", price: " " },{ label: "Sunflower", category: "Collection", url: "/collections/bunga-matahari", images: " ", price: " " },{ label: "Sweet & Savoury Hampers", category: "Collection", url: "/collections/sweet-savoury-hampers", images: " ", price: " " },{ label: "Sweet Gracie", category: "Collection", url: "/collections/sweet-gracie", images: " ", price: " " },{ label: "Sweet Pastel Love", category: "Collection", url: "/collections/pastel-love", images: " ", price: " " },{ label: "Sweet Pastel Love Nusantara", category: "Collection", url: "/collections/sweet-pastel-love-nusantara", images: " ", price: " " },{ label: "Sweet Treats", category: "Collection", url: "/collections/sweet-treats", images: " ", price: " " },{ label: "Sweetooth", category: "Collection", url: "/collections/sweetooth", images: " ", price: " " },{ label: "Taurus âï¸ 20April - 20May", category: "Collection", url: "/collections/kado-untuk-zodiak-taurus", images: " ", price: " " },{ label: "Teddy Bear", category: "Collection", url: "/collections/boneka-teddy-bear", images: " ", price: " " },{ label: "Teh", category: "Collection", url: "/collections/teh", images: " ", price: " " },{ label: "Test Error", category: "Collection", url: "/collections/test-error", images: " ", price: " " },{ label: "Testing", category: "Collection", url: "/collections/testing", images: " ", price: " " },{ label: "Thank You", category: "Collection", url: "/collections/rangkaian-bunga-ucapan-terima-kasih", images: " ", price: " " },{ label: "The Classic Astoria", category: "Collection", url: "/collections/astoria", images: " ", price: " " },{ label: "The Classic Enchanted Dome", category: "Collection", url: "/collections/enchanted-dome", images: " ", price: " " },{ label: "The Enchanted Love Pirouette Special Edition", category: "Collection", url: "/collections/the-enchanted-love-pirouette-special-edition", images: " ", price: " " },{ label: "The F Thing", category: "Collection", url: "/collections/the-f-thing", images: " ", price: " " },{ label: "The First", category: "Collection", url: "/collections/the-first", images: " ", price: " " },{ label: "The Novo Astoria", category: "Collection", url: "/collections/the-novo-astoria", images: " ", price: " " },{ label: "The Novo Enchanted Dome", category: "Collection", url: "/collections/the-novo-enchanted-dome", images: " ", price: " " },{ label: "The Novo Enchanted Dome Special Edition", category: "Collection", url: "/collections/the-novo-enchanted-dome-special-edition", images: " ", price: " " },{ label: "The Palace", category: "Collection", url: "/collections/the-palace", images: " ", price: " " },{ label: "Ties", category: "Collection", url: "/collections/dasi", images: " ", price: " " },{ label: "Tisane", category: "Collection", url: "/collections/tisane", images: " ", price: " " },{ label: "Toko Bunga Aceh", category: "Collection", url: "/collections/toko-bunga-aceh", images: " ", price: " " },{ label: "Toko Bunga Ambon", category: "Collection", url: "/collections/toko-bunga-ambon", images: " ", price: " " },{ label: "Toko Bunga Atambua", category: "Collection", url: "/collections/toko-bunga-atambua"
7730, images: " ", price: " " },{ label: "Toko Bunga Bali", category: "Collection", url: "/collections/toko-bunga-bali", images: " ", price: " " },{ label: "Toko Bunga Balikpapan", category: "Collection", url: "/collections/toko-bunga-balikpapan", images: " ", price: " " },{ label: "Toko Bunga Bandar Lampung", category: "Collection", url: "/collections/toko-bunga-bandar-lampung", images: " ", price: " " },{ label: "Toko Bunga Bandung", category: "Collection", url: "/collections/toko-bunga-bandung", images: " ", price: " " },{ label: "Toko Bunga Bandung Barat", category: "Collection", url: "/collections/toko-bunga-bandung-barat", images: " ", price: " " },{ label: "Toko Bunga Banjarmasin", category: "Collection", url: "/collections/toko-bunga-banjarmasin", images: " ", price: " " },{ label: "Toko Bunga Banten", category: "Collection", url: "/collections/toko-bunga-banten", images: " ", price: " " },{ label: "Toko Bunga Banyumas", category: "Collection", url: "/collections/toko-bunga-banyumas", images: " ", price: " " },{ label: "Toko Bunga Banyuwangi", category: "Collection", url: "/collections/toko-bunga-banyuwangi", images: " ", price: " " },{ label: "Toko Bunga Batam", category: "Collection", url: "/collections/toko-bunga-batam", images: " ", price: " " },{ label: "Toko Bunga Baubau", category: "Collection", url: "/collections/toko-bunga-baubau", images: " ", price: " " },{ label: "Toko Bunga Bekasi", category: "Collection", url: "/collections/toko-bunga-bekasi", images: " ", price: " " },{ label: "Toko Bunga Bengkalis", category: "Collection", url: "/collections/toko-bunga-bengkalis", images: " ", price: " " },{ label: "Toko Bunga Bengkayang", category: "Collection", url: "/collections/toko-bunga-bengkayang", images: " ", price: " " },{ label: "Toko Bunga Binjai", category: "Collection", url: "/collections/toko-bunga-binjai", images: " ", price: " " },{ label: "Toko Bunga Bintaro", category: "Collection", url: "/collections/toko-bunga-bintaro", images: " ", price: " " },{ label: "Toko Bunga Blitar", category: "Collection", url: "/collections/toko-bunga-blitar", images: " ", price: " " },{ label: "Toko Bunga Blora", category: "Collection", url: "/collections/toko-bunga-blora", images: " ", price: " " },{ label: "Toko Bunga Bogor", category: "Collection", url: "/collections/toko-bunga-bogor", images: " ", price: " " },{ label: "Toko Bunga Bojonegoro", category: "Collection", url: "/collections/toko-bunga-bojonegoro", images: " ", price: " " },{ label: "Toko Bunga Boyolali", category: "Collection", url: "/collections/toko-bunga-boyolali", images: " ", price: " " },{ label: "Toko Bunga Brebes", category: "Collection", url: "/collections/toko-bunga-brebes", images: " ", price: " " },{ label: "Toko Bunga Bukittinggi", category: "Collection", url: "/collections/toko-bunga-bukittinggi", images: " ", price: " " },{ label: "Toko Bunga Buleleng", category: "Collection", url: "/collections/toko-bunga-buleleng", images: " ", price: " " },{ label: "Toko Bunga Cakung", category: "Collection", url: "/collections/toko-bunga-cakung", images: " ", price: " " },{ label: "Toko Bunga Cawang", category: "Collection", url: "/collections/toko-bunga-cawang", images: " ", price: " " },{ label: "Toko Bunga Cempaka Putih", category: "Collection", url: "/collections/toko-bunga-cempaka-putih", images: " ", price: " " },{ label: "Toko Bunga Cengkareng", category: "Collection", url: "/collections/toko-bunga-cengkareng", images: " ", price: " " },{ label: "Toko Bunga Ciamis", category: "Collection", url: "/collections/toko-bunga-ciamis", images: " ", price: " " },{ label: "Toko Bunga Cianjur", category: "Collection", url: "/collections/toko-bunga-cianjur", images: " ", price: " " },{ label: "Toko Bunga Cibinong", category: "Collection", url: "/collections/toko-bunga-cibinong", images: " ", price: " " },{ label: "Toko Bunga Cibubur", category: "Collection", url: "/collections/toko-bunga-cibubur", images: " ", price: " " },{ label: "Toko Bunga Cijantung", category: "Collection", url: "/collections/toko-bunga-cijantung", images: " ", price: " " },{ label: "Toko Bunga Cikarang", category: "Collection", url: "/collections/toko-bunga-cikarang", images: " ", price: " " },{ label: "Toko Bunga Cikini", category: "Collection", url: "/collections/toko-bunga-cikini", images: " ", price: " " },{ label: "Toko Bunga Cilacap", category: "Collection", url: "/collections/toko-bunga-cilacap", images: " ", price: " " },{ label: "Toko Bunga Cilandak", category: "Collection", url: "/collections/toko-bunga-cilandak", images: " ", price: " " },{ label: "Toko Bunga Cileunyi", category: "Collection", url: "/collections/toko-bunga-cileunyi", images: " ", price: " " },{ label: "Toko Bunga Ciracas", category: "Collection", url: "/collections/toko-bunga-ciracas", images: " ", price: " " },{ label: "Toko Bunga Cirebon", category: "Collection", url: "/collections/toko-bunga-cirebon", images: " ", price: " " }
7730,{ label: "Toko Bunga Ciwidey", category: "Collection", url: "/collections/toko-bunga-ciwidey", images: " ", price: " " },{ label: "Toko Bunga Danau Toba", category: "Collection", url: "/collections/toko-bunga-danau-toba", images: " ", price: " " },{ label: "Toko Bunga Demak", category: "Collection", url: "/collections/toko-bunga-demak", images: " ", price: " " },{ label: "Toko Bunga Denpasar", category: "Collection", url: "/collections/toko-bunga-denpasar", images: " ", price: " " },{ label: "Toko Bunga Depok", category: "Collection", url: "/collections/toko-bunga-depok", images: " ", price: " " },{ label: "Toko Bunga Duren Sawit", category: "Collection", url: "/collections/toko-bunga-duren-sawit", images: " ", price: " " },{ label: "Toko Bunga Garut", category: "Collection", url: "/collections/toko-bunga-garut", images: " ", price: " " },{ label: "Toko Bunga Gianyar", category: "Collection", url: "/collections/toko-bunga-gianyar", images: " ", price: " " },{ label: "Toko Bunga Gowa", category: "Collection", url: "/collections/toko-bunga-gowa", images: " ", price: " " },{ label: "Toko Bunga Gresik", category: "Collection", url: "/collections/toko-bunga-gresik", images: " ", price: " " },{ label: "Toko Bunga Grobogan", category: "Collection", url: "/collections/toko-bunga-grobogan", images: " ", price: " " },{ label: "Toko Bunga Grogol", category: "Collection", url: "/collections/toko-bunga-grogol", images: " ", price: " " },{ label: "Toko Bunga Gunungkidul", category: "Collection", url: "/collections/toko-bunga-gunungkidul", images: " ", price: " " },{ label: "Toko Bunga Indramayu", category: "Collection", url: "/collections/toko-bunga-indramayu", images: " ", price: " " },{ label: "Toko Bunga Jakarta", category: "Collection", url: "/collections/toko-bunga-jakarta", images: " ", price: " " },{ label: "Toko Bunga Jakarta Barat", category: "Collection", url: "/collections/toko-bunga-jakarta-barat", images: " ", price: " " },{ label: "Toko Bunga Jakarta Pusat", category: "Collection", url: "/collections/toko-bunga-jakarta-pusat", images: " ", price: " " },{ label: "Toko Bunga Jakarta Selatan", category: "Collection", url: "/collections/toko-bunga-jakarta-selatan", images: " ", price: " " },{ label: "Toko Bunga Jakarta Timur", category: "Collection", url: "/collections/toko-bunga-jakarta-timur", images: " ", price: " " },{ label: "Toko Bunga Jakarta Utara", category: "Collection", url: "/collections/toko-bunga-jakarta-utara", images: " ", price: " " },{ label: "Toko Bunga Jambi", category: "Collection", url: "/collections/toko-bunga-jambi", images: " ", price: " " },{ label: "Toko Bunga Jatinegara", category: "Collection", url: "/collections/toko-bunga-jatinegara", images: " ", price: " " },{ label: "Toko Bunga Jawa & Bali", category: "Collection", url: "/collections/toko-bunga-jawa-bali", images: " ", price: " " },{ label: "Toko Bunga Jayapura", category: "Collection", url: "/collections/toko-bunga-jayapura", images: " ", price: " " },{ label: "Toko Bunga Jelambar - Florist Onine 24 Jam", category: "Collection", url: "/collections/toko-bunga-jelambar", images: " ", price: " " },{ label: "Toko Bunga Jember", category: "Collection", url: "/collections/toko-bunga-jember", images: " ", price: " " },{ label: "Toko Bunga Jembrana", category: "Collection", url: "/collections/toko-bunga-jembrana", images: " ", price: " " },{ label: "Toko Bunga Jepara", category: "Collection", url: "/collections/toko-bunga-jepara", images: " ", price: " " },{ label: "Toko Bunga Joglo", category: "Collection", url: "/collections/toko-bunga-joglo", images: " ", price: " " },{ label: "Toko Bunga Jombang", category: "Collection", url: "/collections/toko-bunga-jombang", images: " ", price: " " },{ label: "Toko Bunga Kalibata", category: "Collection", url: "/collections/toko-bunga-kalibata", images: " ", price: " " },{ label: "Toko Bunga Kalimantan", category: "Collection", url: "/collections/toko-bunga-kalimantan", images: " ", price: " " },{ label: "Toko Bunga Kalisari Semarang", category: "Collection", url: "/collections/toko-bunga-kalisari-semarang", images: " ", price: " " },{ label: "Toko Bunga Kampung Baru", category: "Collection", url: "/collections/toko-bunga-kampung-baru", images: " ", price: " " },{ label: "Toko Bunga Kapuas", category: "Collection", url: "/collections/toko-bunga-kapuas", images: " ", price: " " },{ label: "Toko Bunga Karanganyar", category: "Collection", url: "/collections/toko-bunga-karanganyar", images: " ", price: " " },{ label: "Toko Bunga Karangasem", category: "Collection", url: "/collections/toko-bunga-karangasem", images: " ", price: " " },{ label: "Toko Bunga Karawang", category: "Collection", url: "/collections/toko-bunga-karawang", images: " ", price: " " },{ label: "Toko Bunga Kartosuro", category: "Collection", url: "/collections/toko-bunga-kartosuro", images: " ", price: " " },{ label: "Toko Bunga Kayoon Surabaya", category: "Collection", url: "/collections/toko-bunga-kayoon-surabaya", images: " ", price: " " },{ label: "Toko Bunga Kebayoran Baru", category: "Collection", url: "/collections/toko-bunga-kebayoran-baru", images: " ", price: " " },{ label: "Toko Bunga Kebon Jeruk", category: "Collection", url: "/collections/toko-bunga-kebon-jeruk", images: " ", price: " " },{ label: "Toko Bunga Kebumen", category: "Collection", url: "/collections/toko-bunga-kebumen", images: " ", price: " " },{ label: "Toko Bunga Kediri", category: "Collection", url: "/collections/toko-bunga-kediri", images: " ", price: " " },{ label: "Toko Bunga Kelapa Gading", category: "Collection", url: "/collections/toko-bunga-kelapa-gading", images: " ", price: " " },{ label: "Toko Bunga Kemayoran", category: "Collection", url: "/collections/toko-bunga-kemayoran", images: " ", price: " " },{ label: "Toko Bunga Kendal", category: "Collection", url: "/collections/toko-bunga-ken
7730dal", images: " ", price: " " },{ label: "Toko Bunga Kendari", category: "Collection", url: "/collections/toko-bunga-kendari", images: " ", price: " " },{ label: "Toko Bunga Ketapang", category: "Collection", url: "/collections/toko-bunga-ketapang", images: " ", price: " " },{ label: "Toko Bunga Klaten", category: "Collection", url: "/collections/toko-bunga-klaten", images: " ", price: " " },{ label: "Toko Bunga Klender", category: "Collection", url: "/collections/toko-bunga-klender", images: " ", price: " " },{ label: "Toko Bunga Kota Baru Yogyakarta", category: "Collection", url: "/collections/toko-bunga-kota-baru-yogyakarta", images: " ", price: " " },{ label: "Toko Bunga Kota Batu", category: "Collection", url: "/collections/toko-bunga-kota-batu", images: " ", price: " " },{ label: "Toko Bunga Kramat Jati", category: "Collection", url: "/collections/toko-bunga-kramat-jati", images: " ", price: " " },{ label: "Toko Bunga Kudus", category: "Collection", url: "/collections/toko-bunga-kudus", images: " ", price: " " },{ label: "Toko Bunga Kupang", category: "Collection", url: "/collections/toko-bunga-kupang", images: " ", price: " " },{ label: "Toko Bunga Lamongan", category: "Collection", url: "/collections/toko-bunga-lamongan", images: " ", price: " " },{ label: "Toko Bunga Langkat", category: "Collection", url: "/collections/toko-bunga-langkat", images: " ", price: " " },{ label: "Toko Bunga Lebak Bulus", category: "Collection", url: "/collections/toko-bunga-lebak-bulus", images: " ", price: " " },{ label: "Toko Bunga Lembang", category: "Collection", url: "/collections/toko-bunga-lembang", images: " ", price: " " },{ label: "Toko Bunga Lenteng Agung", category: "Collection", url: "/collections/toko-bunga-lenteng-agung", images: " ", price: " " },{ label: "Toko Bunga Lombok", category: "Collection", url: "/collections/toko-bunga-lombok", images: " ", price: " " },{ label: "Toko Bunga Lubuk Pakam", category: "Collection", url: "/collections/toko-bunga-lubuk-pakam", images: " ", price: " " },{ label: "Toko Bunga Lumajang", category: "Collection", url: "/collections/toko-bunga-lumajang", images: " ", price: " " },{ label: "Toko Bunga Madiun", category: "Collection", url: "/collections/toko-bunga-madiun", images: " ", price: " " },{ label: "Toko Bunga Magelang", category: "Collection", url: "/collections/toko-bunga-magelang", images: " ", price: " " },{ label: "Toko Bunga Majalengka", category: "Collection", url: "/collections/toko-bunga-majalengka", images: " ", price: " " },{ label: "Toko Bunga Makassar", category: "Collection", url: "/collections/toko-bunga-makassar", images: " ", price: " " },{ label: "Toko Bunga Malang", category: "Collection", url: "/collections/toko-bunga-malang", images: " ", price: " " },{ label: "Toko Bunga Manado", category: "Collection", url: "/collections/toko-bunga-manado", images: " ", price: " " },{ label: "Toko Bunga Mangga Besar", category: "Collection", url: "/collections/toko-bunga-mangga-besar", images: " ", price: " " },{ label: "Toko Bunga Manokwari", category: "Collection", url: "/collections/toko-bunga-manokwari", images: " ", price: " " },{ label: "Toko Bunga Maros", category: "Collection", url: "/collections/toko-bunga-maros", images: " ", price: " " },{ label: "Toko Bunga Mataram", category: "Collection", url: "/collections/toko-bunga-mataram", images: " ", price: " " },{ label: "Toko Bunga Medan", category: "Collection", url: "/collections/toko-bunga-medan", images: " ", price: " " },{ label: "Toko Bunga Mojokerto", category: "Collection", url: "/collections/toko-bunga-mojokerto", images: " ", price: " " },{ label: "Toko Bunga Nganjuk", category: "Collection", url: "/collections/toko-bunga-nganjuk", images: " ", price: " " },{ label: "Toko Bunga Ngawi", category: "Collection", url: "/collections/toko-bunga-ngawi", images: " ", price: " " },{ label: "Toko Bunga Nias", category: "Collection", url: "/collections/toko-bunga-nias", images: " ", price: " " },{ label: "Toko Bunga Nusa Tenggara", category: "Collection", url: "/collections/toko-bunga-nusa-tenggara", images: " ", price: " " },{ label: "Toko Bunga Padang", category: "Collection", url: "/collections/toko-bunga-padang", images: " ", price: " " },{ label: "Toko Bunga Palembang", category: "Collection", url: "/collections/toko-bunga-palembang", images: " ", price: " " },{ label: "Toko Bunga Palu", category: "Collection", url: "/collections/toko-bunga-palu", images: " ", price: " " },{ label: "Toko Bunga Pangkal Pinang", category: "Collection", url: "/collections/toko-bunga-pangkal-pinang", images: " ", price: " " },{ label: "Toko Bunga Papua", category: "Collection", url: "/collections/toko-bunga-papua", images: " ", price: " " },{ label: "Toko Bunga Parepare", category: "Collection", url: "/collections/toko-bunga-parepare", images: " ", price: " " },{ label: "Toko Bunga Pasar Baru", category: "Collection", url: "/collections/toko-bunga-pasar-baru", images: " ", price: " " },{ label: "Toko Bunga Pasar Minggu", category: "Collection", url: "/collections/toko-bunga-pasar-minggu", images: " ", price: " " },{ label: "Toko Bunga Pasar Rebo", category: "Collection", url: "/collections/toko-bunga-pasar-rebo", images: " ", price: " " },{ label: "Toko Bunga Pasuruan", category: "Collection", url: "/collections/toko-bunga-pasuruan", images: " ", price: " " },{ label: "Toko Bunga Pati", category: "Collection", url: "/collections/toko-bunga-pati", images: " ", price: " " },{ label: "Toko Bunga Pekalongan", category: "Collection", url: "/collections/toko-bunga-pekalongan", images: " ", price: " " },{ label: "Toko Bunga Pekanbaru", category: "Collection", url: "/collections/toko-bunga-pekanbaru", images: " ", price: " " },{ label: "Toko Bunga Pemalang", category: "Collection", url: "/collections/toko-bunga-pemalang", images: " ", price: " " }, 7731 { label: "grand salutation jabodetabek", category: "Produk", url: "/products/grand-salutation", images: "//outerbloom.com/cdn/shop/files/JKTCON1005_Grand-Salutation-Jabodetabek-WM_thumb.jpg?v=1703241523", price: "Rp 435.000" },{ label: "consolantibus jabodetabek", category: "Produk", url: "/products/consolantibus", images: "//outerbloom.com/cdn/shop/files/JKTDUK1011_Consolantibus-Jabodetabek-WM_thumb.jpg?v=1703239823", price: "Rp 435.000" },{ label: "classic midnight hand bouquet fiery red", category: "Produk", url: "/products/the-classic-midnight-hand-bouquet-fiery-red", images: "//outerbloom.com/cdn/shop/files/OBVBUN1422_Classic-Midnight-Hand-Bouquet---Fiery-Red-large_thumb.jpg?v=1757302521", price: "Rp 385.000" },{ label: "enchanted dome passionate red", category: "Produk", url: "/products/enchanted-dome-passionate-red", images: "//outerbloom.com/cdn/shop/files/Enchanted-dome-red-new-box_3_2_26c081bf-f2a5-42b4-9ce4-3c0304c498e5_thumb.jpg?v=1712639476", price: "Rp 1.435.000" },{ label: "endearing ruby", category: "Produk", url: "/products/endearing-ruby", images: "//outerbloom.com/cdn/shop/products/OUTSTF1003_Endearing-Ruby_thumb.jpg?v=1631296611", price: "Rp 585.000" },{ label: "gentle soul jabodetabek", category: "Produk", url: "/products/gentle-soul-jabodetabek", images: "//outerbloom.com/cdn/shop/files/JKTDUK1030_Gentle-Soul-Jabodetabek-WM_thumb.jpg?v=1703239894", price: "Rp 435.000" },{ label: "belleza jabodetabek", category: "Produk", url: "/products/belleza", images: "//outerbloom.com/cdn/shop/files/Belleza-Jabodetabek-LED_aecb756a-0737-45cc-8bfb-008515ca0a37_thumb.gif?v=1759229680", price: "Rp 435.000" }
7731,{ label: "majestic pink roses with baby breath bouquet", category: "Produk", url: "/products/majestic-pink-roses-with-baby-breath-bouquet", images: "//outerbloom.com/cdn/shop/products/ef4a3be9-c938-4c70-98ac-4873e7da82bf_90820a66-923a-463d-a464-81bcbe6e6644_thumb.jpg?v=1581413440", price: "Rp 485.000" },{ label: "sentiments jabodetabek", category: "Produk", url: "/products/sentiments", images: "//outerbloom.com/cdn/shop/files/Sentiments-Jabodetabek-WM_thumb.jpg?v=1759224099", price: "Rp 485.000" },{ label: "rose poetry bouquet", category: "Produk", url: "/products/rose-poetry-bouquet", images: "//outerbloom.com/cdn/shop/products/Rose-Poetry-Bouquet-20-tangkai_thumb.jpg?v=1675151039", price: "Rp 385.000" },{ label: "genuine feeling", category: "Produk", url: "/products/genuine-feeling", images: "//outerbloom.com/cdn/shop/products/OUTSTF1004Genuine-Feeling_981ade89-af27-433e-81aa-8d76175a0e4d_thumb.jpg?v=1612352389", price: "Rp 585.000" },{ label: "eternal fidelity jabodetabek", category: "Produk", url: "/products/eternal-fidelity-jabodetabek", images: "//outerbloom.com/cdn/shop/products/0b89df45-dcc1-4876-820e-61b2243a1945_964e211d-2972-46c9-8593-976210929089_thumb.jpg?v=1590491458", price: "Rp 435.000" },{ label: "rosabelle hand bouquet", category: "Produk", url: "/products/rosabelle-hand-bouquet", images: "//outerbloom.com/cdn/shop/files/OBVBUN1429_Rosabelle-Hand-Bouquet-Medium_thumb.jpg?v=1756971848", price: "Rp 385.000" },{ label: "dreaming in pink luxury in vase", category: "Produk", url: "/products/dreaming-in-pink-luxury-in-vase", images: "//outerbloom.com/cdn/shop/products/OBVBUN1051_Dreaming-In-Pink-Luxury-In-Vase_3_thumb.jpg?v=1614594504", price: "Rp 735.000" },{ label: "excito jabodetabek", category: "Produk", url: "/products/excito", images: "//outerbloom.com/cdn/shop/files/JKTCON1010_Excito-Jabodetabek-2023_thumb.gif?v=1717494677", price: "Rp 485.000" },{ label: "golden toast jabodetabek", category: "Produk", url: "/products/golden-toast", images: "//outerbloom.com/cdn/shop/products/LED-GoldenToast_thumb.gif?v=1579249585", price: "Rp 485.000" },{ label: "spirit of eminance jabodetabek", category: "Produk", url: "/products/spirit-of-eminance-jabodetabek", images: "//outerbloom.com/cdn/shop/files/JKTCON1026_Spirit-of-Eminance-Jabodetabek-newest-WM_thumb.jpg?v=1693297526", price: "Rp 485.000" },{ label: "white elysian bloom box", category: "Produk", url: "/products/white-elysian-bloom-box", images: "//outerbloom.com/cdn/shop/files/OBVBUN1704_White-Elysian-Bloom-Box_thumb.jpg?v=1757328247", price: "Rp 685.000" },{ label: "charming forevermore jabodetabek", category: "Produk", url: "/products/charming-forevermore-jabodetabek", images: "//outerbloom.com/cdn/shop/files/JKTWED1036_Charming-Forevermore-Jabodetabek-WM_thumb.jpg?v=1703239534", price: "Rp 485.000" },{ label: "moment of glory jabodetabek", category: "Produk", url: "/products/moment-of-glory-jabodetabek", images: "//outerbloom.com/cdn/shop/products/JKTCON1051_Moment-of-Glory-Jabodetabek_2_thumb.jpg?v=1596614663", price: "Rp 385.000" },{ label: "sweet romance jabodetabek", category: "Produk", url: "/products/sweet-romance", images: "//outerbloom.com/cdn/shop/products/JKTWED1005_Sweet-Romance-Jabodetabek_thumb.gif?v=1677134791", price: "Rp 635.000" },{ label: "with love bouquet", category: "Produk", url: "/products/with-love-bouquet", images: "//outerbloom.com/cdn/shop/products/c5d6fed6-8ada-4c38-ae0f-36d395aacb19_613f78f0-d52c-443b-9e13-63a151cd8ec5_thumb.jpg?v=1590748429", price: "Rp 535.000" },{ label: "sunflower yellow and with white daisies in vase", category: "Produk", url: "/products/sunflower-yellow-roses-with-white-and-yellow-daisies-in-a-glass-vase", images: "//outerbloom.com/cdn/shop/files/OBVBUN1132_Sunflower-Yellow-And-With-White-Daisies-in-Vase_thumb.jpg?v=1757930628", price: "Rp 435.000" },{ label: "everlasting peace jabodetabek", category: "Produk", url: "/products/everlasting-peace-jabodetabek", images: "//outerbloom.com/cdn/shop/products/JKTDUK1034_Everlasting-Peace-Jabodetabek_2_thumb.jpg?v=1596614613", price: "Rp 385.000" },{ label: "astoria passionate red", category: "Produk", url: "/products/astoria-passionate-red", images: "//outerbloom.com/cdn/shop/products/Astoria-passionate-red_b59b26f6-c39d-46d3-adcb-262c675bb16f_thumb.jpg?v=1633502742", price: "Rp 685.000" },{ label: "classic purple orchid majesty in vase", category: "Produk", url: "/products/classic-purple-orchid-majesty-in-vase", images: "//outerbloom.com/cdn/shop/products/Classic-Purple-Orchid-Majesty-in-Vase---White---4-Tangkai_40a5e337-283f-40f5-911c-5df9b506b9da_thumb.jpg?v=1639981404", price: "Rp 435.000" },{ label: "passion rouge bloom box", category: "Produk", url: "/products/passion-rouge-bloom-box", images: "//outerbloom.com/cdn/shop/files/OBVBUN1725_Passion-Rouge-Bloom-Box_thumb.jpg?v=1756972410", price: "Rp 385.000" },{ label: "classic white orchid majesty in vase", category: "Produk", url: "/products/classic-white-orchid-majesty-in-vase", images: "//outerbloom.com/cdn/shop/products/Classic-white-Orchid-Majesty-in-Vase---white---4-Tangkai_thumb.jpg?v=1644205542", price: "Rp 435.000" }
7731,{ label: "majestic blue romance bouquet", category: "Produk", url: "/products/majestic-blue-romance-bouquet", images: "//outerbloom.com/cdn/shop/files/OBVBUN1357_Majestic-Blue-Romance-Bouquet_99b8ba96-0e67-4eef-a00e-b2daedcddb6a_thumb.jpg?v=1757390540", price: "Rp 435.000" },{ label: "sincerely", category: "Produk", url: "/products/sincerely", images: "//outerbloom.com/cdn/shop/files/Sincerely-WM_thumb.jpg?v=1688354677", price: "Rp 585.000" },{ label: "happy days jabodetabek", category: "Produk", url: "/products/happy-days-jabodetabek", images: "//outerbloom.com/cdn/shop/files/Happy-Days-Jabodetabek_WM_thumb.jpg?v=1759224026", price: "Rp 485.000" },{ label: "solemn comfort jabodetabek", category: "Produk", url: "/products/solemn-comfort-jabodetabek", images: "//outerbloom.com/cdn/shop/products/7fe123d8-6bb2-4c0d-bd4c-f8c3032823f2_6b9c33b6-4a23-41cb-8709-fc9223fe096a_thumb.png?v=1590662086", price: "Rp 635.000" },{ label: "big dreams jabodetabek", category: "Produk", url: "/products/big-dreams", images: "//outerbloom.com/cdn/shop/files/JKTCON1002_Big-Dreams-Jabodetabek_thumb.gif?v=1717494603", price: "Rp 485.000" },{ label: "signature ramadan deluxe hampers", category: "Produk", url: "/products/outerbloom-signature-ramadhan-deluxe-hampers", images: "//outerbloom.com/cdn/shop/files/Signature-Deluxe-Hampers_thumb.jpg?v=1739242254", price: "Rp 985.000" },{ label: "amorous amos jabodetabek", category: "Produk", url: "/products/amorous-amos-jabodetabek", images: "//outerbloom.com/cdn/shop/files/Amorous-Amos-Jabodetabek-WM_thumb.jpg?v=1759224071", price: "Rp 485.000" },{ label: "pink darling bouquet", category: "Produk", url: "/products/pink-darling-bouquet", images: "//outerbloom.com/cdn/shop/products/Pink-Darling-Bouquet_thumb.jpg?v=1669969725", price: "Rp 485.000" },{ label: "black pink bouquet", category: "Produk", url: "/products/black-pink-bouquet", images: "//outerbloom.com/cdn/shop/files/Black-Pink-Bouquet_thumb.jpg?v=1756434063", price: "Rp 485.000" },{ label: "profound happiness jabodetabek", category: "Produk", url: "/products/profound-happiness-jabodetabek", images: "//outerbloom.com/cdn/shop/files/profound-happiness_thumb.gif?v=1689940309", price: "Rp 635.000" },{ label: "healing trove", category: "Produk", url: "/products/healing-trove", images: "//outerbloom.com/cdn/shop/products/2ef5379f-27a6-41ba-85c7-c65cf3ec3f08_thumb.jpg?v=1571471845", price: "Rp 485.000" },{ label: "sincerity solace", category: "Produk", url: "/products/sincerity-solace", images: "//outerbloom.com/cdn/shop/products/OUTSTF1038_sincerity-solace-WM_thumb.jpg?v=1612352477", price: "Rp 485.000" },{ label: "bellarosa bloom box", category: "Produk", url: "/products/bellarosa-bloom-box", images: "//outerbloom.com/cdn/shop/files/OBVBUN1783_Bellarosa-Bloom-Box_c0000424-411c-48ed-abf4-0de7d925ea53_thumb.jpg?v=1757316757", price: "Rp 785.000" } 7732 ]; 7733 7734 7735 $( ".header-input-search" ).catcomplete({ 7736 appendTo: ".searchResult",source: function(request, response) { 7737 var results = $.ui.autocomplete.filter(data, request.term); 7738 var predicate = function () { 7739 var counter = { Collection: 0, Produk: 0 }; 7740 var fn = function(item) {counter[item.category] += 1;return (counter[item.category] <= 5);} 7741 return fn 7742 }(); 7743 response(results.filter(predicate)); 7744 }, 7745 minLength:1, 7746 //results are clickable 7747 select: function( event, ui ) {window.location = ui.item.url;} 7748 }); 7749 $( ".header-input-search2" ).catcomplete({ 7750 appendTo: ".searchResult2", 7751 source: function(request, response) { 7752 var results = $.ui.autocomplete.filter(data, request.term); 7753 var predicate = function () { 7754 var counter = { Collection: 0, Produk: 0 }; 7755 var fn = function(item) { 7756 counter[item.category] += 1; 7757 return (counter[item.category] <= 5); 7758 } 7759 return fn 7760 }(); 7761 response(results.filter(predicate)); 7762 }, 7763 minLength:1, 7764 //results are clickable 7765 select: function( event, ui ) { 7766 window.location = ui.item.url; 7767 } 7768 }); 7769 }); 7770 </script>
7770 7771 7772
7772<script src="//outerbloom.com/cdn/shop/t/138/assets/vendors.js?v=6349622868601634021752652419" defer></script>
7772 7773
7773<script src="//outerbloom.com/cdn/shop/t/138/assets/app.js?v=136050180318808583701752652452" defer></script>
7773 7774 7775
7775<script> 7776 ( function() { 7777 var youtube = document.querySelectorAll( ".youtube" ); 7778 for (var i = 0; i < youtube.length; i++) { 7779 var source = "https://img.youtube.com/vi/"+ youtube[i].dataset.embed +"/sddefault_1x.jpg"; 7780 var datasource = "https://img.youtube.com/vi/"+ youtube[i].dataset.embed +"/sddefault.jpg"; 7781 var image = new Image(); 7782 image.src = source; 7783 image.setAttribute("data-src", datasource); 7784 image.classList.add("swiper-lazy"); 7785 image.addEventListener( "load", function() { 7786 youtube[ i ].appendChild( image ); 7787 }( i ) ); 7788 youtube[i].addEventListener( "click", function() { 7789 var iframe = document.createElement( "iframe" ); 7790 iframe.setAttribute( "width", "480" ); 7791 iframe.setAttribute( "height", "480" ); 7792 iframe.setAttribute( "frameborder", "0" ); 7793 iframe.setAttribute( "allowfullscreen", "" ); 7794 iframe.setAttribute( "src", "https://www.youtube.com/embed/"+ this.dataset.embed +"?rel=0&showinfo=0&autoplay=1" ); 7795 this.innerHTML = ""; 7796 this.appendChild( iframe ); 7797 } ); 7798 }; 7799 7800 } )(); 7801 7802 /* Lazy Load */ 7803 const mainLazyLoad = new LazyLoad({threshold:400}); 7804 $(document).ready(function(){ 7805 7806 $("selectxxx").addClass("needsclick"); 7807 FastClick.attach(document.body); 7808 7809 var $customSelects = $('.select-search'); 7810 $customSelects.select2({ 7811 templateResult: function(result, container) { 7812 if (!result.id) { 7813 return result.text; 7814 } 7815 container.className += ' needsclick'; 7816 return result.text; 7817 } 7818 }); 7819 $customSelects.each(function(index, el){$(el).data('select2').$container.find('*').addClass('needsclick');}); 7820 $(document).on('select2:open', () => { 7821 document.querySelector('.select2-search__field').focus(); 7822 }); 7823 7824 7825 $(".overlay").click(function(){ 7826 $(".js-drawer-close").click(); 7827 }); 7828 $(".site-nav--mobile .js-drawer-open-left, #NavDrawer .icon-close, .overlay-nav").click(function(){ 7829 $("html").toggleClass("nav_open"); 7830 }); 7831 7832 $('.swatch-element label').on('click', function(){ 7833 var srcImg = $(this).data('src'); 7834 $('#thumb-image-product .product-single__thumbnail').each(function(){ 7835 if ($(this).attr("href") == srcImg) { 7836 $(this).trigger('click'); 7837 } 7838 }); 7839 }); 7840 var defaultValue = $(".swatch input:checked").val() 7841 7842 $('#purchaseProduct .swatch [type=radio]').change(function() { 7843 var optionIndex = $(this).closest('.swatch').attr('data-option-index'); 7844 var optionValue = $(this).val(); 7845 console.log(optionIndex, optionValue) 7846 var value = parseInt(optionValue.split(' ')[0]) 7847 $(this) 7848 .closest('#purchaseProduct') 7849 .find('.single-option-selector') 7850 .eq(optionIndex) 7851 .val(optionValue) 7852 .trigger('change'); 7853 7854 }); 7855 7856 }); 7857 $(document).ready(function(){ 7858 $(".nav-search a").click(function(e){ 7859 e.preventDefault(); 7860 $(".icon-navsearch").toggle(); 7861 $(".icon-navclose").toggle(); 7862 $(".site-nav__item > .site-nav__link").toggle(); 7863 $(".open-search").toggle(); 7864 $(".open-search input").focus(); 7865 }); 7866 $(".best-price-guarantee").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/logo-best-price-guarantee-grid_75x.png?v=72489032173169839651752652420' alt='Logo Best Price Guarantee'>"); 7867 if ($(window).width() < 768) { 7868 $(".bg-products .label-tag.valentine").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/icon-valentine_75x.png?v=82732945490105366961752652419' alt='Icon Valentine'>"); 7869 $(".bg-products .label-tag.cny").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/icon-cny_45x.png?v=101884295148001743851752652418' alt='Icon CNY'>"); 7870 $(".bg-products .label-tag.free-valentine").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/free-valentine_150x.png?v=171641187769238175351752652421' alt='Icon Free Valentine'>"); 7871 } else { 7872 $(".bg-products .label-tag.valentine").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/icon-valentine_60x.png?v=82732945490105366961752652419' alt='Icon Valentine'>"); 7873 $(".bg-products .label-tag.cny").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/icon-cny_60x.png?v=101884295148001743851752652418' alt='Icon CNY'>"); 7874 $(".bg-products .label-tag.free-valentine").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/free-valentine_200x.png?v=171641187769238175351752652421' alt='Icon Free Valentine'>"); 7875 } 7876 $(".bg-products .label-tag.free-cookies").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/free-cookies_80x.png?51468' alt='Icon Free Cookies'>"); 7877 $(".bg-products .label-tag.mothersday").html("<img src='//outerbloom.com/cdn/shop/t/138/assets/mothers-day_70x.png?v=171373711354766377891752652419' alt='Icon Mothers day'>"); 7878 }); 7879 </script>
7879 7880 7881 7882 7883 7884
7884<script type="text/javascript"> 7885 var wishlistpage = 0; 7886 7887 var quickShop_money_format="<span class='money'>"+"Rp {{amount_no_decimals}}"+"</span>"; 7888 </script>
7888 7889 7890 <!-- Remove duplicate wishlist.js reference --> 7891 <style> 7892 .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:999999;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.fade.in{opacity:1}.modal-open .modal{overflow-x:hidden;overflow-y:auto;z-index:999999;background-color:rgba(0,0,0,.3)}.modal-dialog{position:relative;width:auto;margin:10px}.wishlist-model .modal-dialog{width:700px}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.wishlist-model .modal-content{}.wishlist-model .modal-header{min-height:0;padding:0;border-bottom:0}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #121212;filter:alpha(opacity=20);opacity:.2}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-header .close{margin-top:-2px}.wishlist-model .close{position:absolute;top:-10px;right:-10px;background:#fff;opacity:1;width:30px;height:30px;font-size:15px;border-radius:50%;z-index:10;box-shadow:0 1px 4px 0 #121212}.wishlist-model .close .icon-close{width:25px;height:25px}.modal-body{position:relative;padding:15px}.wishlist-model .modal-body{padding:0 30px;display:flex}.wishlist-model .wishlist-left{width:66.67%;border-right:1px solid #ccc;padding:30px 0}.wishlist-model .wishlist-note{position:relative;display:inline-block;margin-bottom:20px;margin-left:35px;border-bottom:1px solid #121212;color:#121212}.wishlist-model .wishlist-note a{color: #ffffff;}.wishlist-model .wishlist-note .cirle{position:absolute;top:-4px;left:-35px;width:25px;height:25px;color:#fff;background:#121212;line-height:25px;border-radius:50%;text-align:center}.wishlist-model .wishlist-note svg{fill:#fff}.wishlist-model .wishlist-note .cirle .icon-check{vertical-align:middle}.wishlist-model .product-left{width:33.33%;float:left;margin-right:30px}.wishlist-model .wishlist-image{overflow:hidden}.wishlist-model .wishlist-image img{transition:all .3s linear}.wishlist-model .wishlist-name{padding:0;margin-bottom:10px}.wishlist-model .wishlist-name a{color: #ffffff;}.wishlist-model .wishlist-price{margin-bottom:10px}.wishlist-model .wishlist-price .price{font-weight:700;margin-right:10px;font-size:15px}.wishlist-model .wishlist-price .price_compare{color:#ccc}.wishlist-model .wishlist-right{width:33.33%;padding:30px 0;padding-left:30px}.wishlist-model .btn-quick-shop{width:100%;border-color:#121212;background:#fff;color:#121212;padding:0 30px;transition:all .2s linear;height:36px;margin-bottom:10px;text-transform:uppercase}.wishlist-model .btn-cta{width:100%;font-size:1em;border-color:#ffffff;background:#ffffff;color:#fff;padding:0;transition:all .2s linear;height:36px;line-height:36px;margin-bottom:10px}.wishlist-model .quantity-content{text-align:center}.wishlist-model .quantity-content input{outline:none;text-align:center;font-weight:600;border:1px solid #121212}.wishlist-model .quantity-content button{border-color:#121212}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}} 7893 </style> 7894 7895 <div class="modal fade" id="modalwishlist0" tabindex="-1" role="dialog"> 7896 <div class="modal-dialog" role="document"> 7897 <div class="modal-content"> 7898 <div class="modal-body">Your Wishlist is empty!</div> 7899 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> 7900 </div> 7901 </div> 7902 </div> 7903 7904 <div class="wishlist-model"> 7905 <div class="modal fade" id="modalwishlist1" tabindex="-1" role="dialog" aria-hidden="true"> 7906 <div class="modal-dialog white-modal"> 7907 <div class="modal-content"> 7908 <div class="modal-header"> 7909 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 7910 <svg class="icon icon-close" version="1.1" xmlns="image/logo-login-emo78.png" width="32" height="32" viewBox="0 0 32 32"> 7911 <title>icon-close</title> 7912 <path d="M16.943 16l8.862 8.862c0.26 0.26 0.26 0.682 0 0.943s-0.682 0.26-0.943 0l-8.862-8.862-8.862 8.862c-0.26 0.26-0.682 0.26-0.943 0s-0.26-0.682 0-0.943l8.862-8.862-8.862-8.862c-0.26-0.26-0.26-0.682 0-0.943s0.682-0.26 0.943 0l8.862 8.862 8.862-8.862c0.26-0.26 0.682-0.26 0.943 0s0.26 0.682 0 0.943l-8.862 8.862z"></path> 7913 </svg> 7914 </button> 7915 </div> 7916 <div class="modal-body"> 7917 <div class="wishlist-left"> 7918 <div class="wishlist-note">
7919 <span class="cirle"><svg version="1.1" xmlns="image/logo-login-emo78.png" width="32" height="32" viewBox="0 0 32 32"> 7920 <title>icon-check</title> 7921 <path d="M12 21.766l14.218-12.926c0.272-0.248 0.694-0.228 0.942 0.045s0.228 0.694-0.045 0.942l-14.667 13.333c-0.254 0.231-0.643 0.231-0.897 0l-6.667-6.061c-0.272-0.248-0.293-0.669-0.045-0.942s0.669-0.293 0.942-0.045l6.218 5.653z"></path> 7922 </svg></span> 7923 Product added to <a href="/pages/wish-list">Wishlist</a> 7924 </div> 7925 <div class="wishlist-product"> 7926 <div class="product-left"> 7927 <div class="wishlist-image"></div> 7928 </div> 7929 <div class="product-right"> 7930 <div class="wishlist-name"></div> 7931 <div class="wishlist-price"></div> 7932 </div> 7933 </div> 7934 </div> 7935 <div class="wishlist-right"> 7936 <div class="wishlist-cart"> 7937 <form action="/cart/add" method="post" class="variants-form variants" id="AddToCartForm" enctype="multipart/form-data"> 7938 <div class="others-bottom"> 7939 <a class="btn btn-quick-shop" href="/pages/wish-list">View Wishlist</a> 7940 <button type="submit" name="add" id="AddToCart" class="btn btn-cta"> 7941 <span id="AddToCartText" class="">Beli Sekarang</span> 7942 </button> 7943 </div> 7944 <div id="wishlist-variants-container" class="variants-wrapper"></div> 7945 <div class="quantity-content"> 7946 <label>QTY</label> 7947 <input type="number" size="5" class="" name="quantity" value="1" /> 7948 </div> 7949 </form> 7950 </div> 7951 </div> 7952 </div> 7953 </div> 7954 </div> 7955 </div> 7956 </div> 7957 7958 7959 <style> 7960 .stamped-badge[data-rating="0.0"]{display: none !Important;} 7961 7962 div[data-load-type="continue"] ul.stamped-pagination li.next a, div[data-widget-load-type="continue"] ul.stamped-pagination li.next a { 7963 border-radius: 0px; 7964 } 7965 .stamped-review-body { 7966 padding-left: 0px !important; 7967 } 7968 #product-reviews .stamped-header:after { 7969 display:none !Important; 7970 } 7971 #stamped-main-widget .stamped-container, .stamped-badge-caption,#stamped-reviews-widget { 7972 font-family:inherit !important; 7973 } 7974 </style> 7975 7976 7977 7978 <div id='stamped-rewards-init' class='stamped-rewards-init' 7979 data-key-public='' 7980 7981 ></div> 7982 7983
7983<script src="//outerbloom.com/cdn/shop/t/138/assets/variant-sku-handler.js?v=91239063692820757781752652418" defer></script>
7983 7984 <!-- Remove duplicate jQuery reference and load wishlist script properly --> 7985
7985<script src="//outerbloom.com/cdn/shop/t/138/assets/wishlist-fixed.js?v=35991423018869066281754360012" defer></script>
7985 7986 7987
7987<script> 7988 function myInit(){ StampedFn.init({ apiKey: 'pubkey-hCS8DHE9QbBHhHN89WXFkuJ0Y3422D', sId: '23462' }); } 7989 </script>
7989 7990
7990<script async onload="myInit()" type="text/javascript" src="https://cdn1.stamped.io/files/widget.min.js"></script>
7990<style> 7991 .jss59 { 7992 background-color: rgba(0, 0, 0, 0.6); 7993 } 7994 .MuiBackdrop-root { 7995 top: 0; 7996 left: 0; 7997 right: 0; 7998 bottom: 0; 7999 display: flex; 8000 z-index: -1; 8001 position: fixed; 8002 align-items: center; 8003 justify-content: center; 8004 background-color: rgba(0, 0, 0, 0.5); 8005 -webkit-tap-highlight-color: transparent; 8006 } 8007 .MuiDialog-scrollPaper { 8008 display: flex; 8009 align-items: center; 8010 justify-content: center; 8011 } 8012 .MuiDialog-container { 8013 height: 100%; 8014 outline: 0; 8015 } 8016 .MuiPaper-elevation24 { 8017 box-shadow: 0px 11px 15px -7px rgba(0,0,0,0.2), 0px 24px 38px 3px rgba(0,0,0,0.14), 0px 9px 46px 8px rgba(0,0,0,0.12); 8018 } 8019 .MuiDialog-paper { 8020 margin: 32px; 8021 position: relative; 8022 overflow-y: auto; 8023 } 8024 .MuiDialog-paperScrollPaper { 8025 display: flex; 8026 max-height: calc(100% - 64px); 8027 flex-direction: column; 8028 } 8029 .MuiDialog-paperWidthSm { 8030 max-width: 600px; 8031 } 8032 #location-lock-dialog { 8033 top: 20%; 8034 left: 0; 8035 right: 0; 8036 width: 30%; 8037 margin: 0px auto; 8038 display: block; 8039 padding: 30px; 8040 z-index: 99999; 8041 position: fixed; 8042 font-size: 14px; 8043 background: rgb(0, 0, 0); 8044 box-shadow: rgba(11, 11, 12, 0.2) 2px 4px 5px 0px; 8045 text-align: center; 8046 font-family: Roboto, Arial, sans-serif; 8047 line-height: 1; 8048 border-radius: 8px; 8049 -webkit-font-smoothing: subpixel-antialiased; 8050 } 8051 .MuiButtonBase-root { 8052 color: inherit; 8053 border: 0; 8054 cursor: pointer; 8055 margin: 0; 8056 display: inline-flex; 8057 outline: 0; 8058 padding: 0; 8059 position: relative; 8060 align-items: center; 8061 user-select: none; 8062 border-radius: 0; 8063 vertical-align: middle; 8064 -moz-appearance: none; 8065 justify-content: center; 8066 text-decoration: none; 8067 background-color: transparent; 8068 -webkit-appearance: none; 8069 -webkit-tap-highlight-color: transparent; 8070 } 8071 .MuiIconButton-root { 8072 flex: 0 0 auto; 8073 color: rgba(0, 0, 0, 0.54); 8074 padding: 12px; 8075 overflow: visible; 8076 font-size: 1.5rem; 8077 text-align: center; 8078 transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; 8079 border-radius: 50%; 8080 } 8081 .MuiIconButton-label { 8082 width: 100%; 8083 display: flex; 8084 align-items: inherit; 8085 justify-content: inherit; 8086 } 8087 .MuiSvgIcon-root { 8088 fill: currentColor; 8089 width: 1em; 8090 height: 1em; 8091 display: inline-block; 8092 font-size: 1.5rem; 8093 transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; 8094 flex-shrink: 0; 8095 user-select: none; 8096 } 8097 .MuiTouchRipple-root { 8098 top: 0; 8099 left: 0; 8100 right: 0; 8101 bottom: 0; 8102 z-index: 0; 8103 overflow: hidden; 8104 position: absolute; 8105 border-radius: inherit; 8106 pointer-events: none; 8107 } 8108 .jss36 { 8109 color: #222222; 8110 font-size: 24px; 8111 font-family: Roboto, Arial, sans-serif; 8112 font-weight: 500; 8113 } 8114 .jss37 { 8115 color: #555555; 8116 padding: 10px 0px 0px; 8117 font-size: 14px; 8118 } 8119 .MuiFormGroup-root { 8120 display: flex; 8121 flex-wrap: wrap; 8122 flex-direction: column; 8123 } 8124 .MuiFormGroup-row { 8125 flex-direction: row; 8126 } 8127 .jss63 { 8128 width: 85%; 8129 margin: 15px auto; 8130 display: flex; 8131 padding: 11px 0px 0px; 8132 justify-content: space-evenly; 8133 } 8134 .MuiFormControlLabel-root { 8135 cursor: pointer; 8136 display: inline-flex; 8137 align-items: center; 8138 margin-left: -11px; 8139 margin-right: 16px; 8140 vertical-align: middle; 8141 -webkit-tap-highlight-color: transparent; 8142 } 8143 .jss70 { 8144 margin: 0; 8145 } 8146 .MuiButtonBase-root { 8147 color: inherit; 8148 border: 0; 8149 cursor: pointer; 8150 margin: 0; 8151 display: inline-flex; 8152 outline: 0; 8153 padding: 0; 8154 position: relative; 8155 align-items: center; 8156 user-select: none; 8157 border-radius: 0; 8158 vertical-align: middle; 8159 -moz-appearance: none; 8160 justify-content: center; 8161 text-decoration: none; 8162 background-color: transparent; 8163 -webkit-appearance: none; 8164 -webkit-tap-highlight-color: transparent; 8165 } 8166 .MuiIconButton-root { 8167 flex: 0 0 auto; 8168 color: rgba(0, 0, 0, 0.54); 8169 padding: 12px; 8170 overflow: visible; 8171 font-size: 1.5rem; 8172 text-align: center; 8173 transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; 8174 border-radius: 50%; 8175 } 8176 .MuiIconButton-colorSecondary { 8177 color: #f50057; 8178 } 8179 .jss71 { 8180 padding: 9px; 8181 } 8182 .MuiRadio-root { 8183 color: rgba(0, 0, 0, 0.54); 8184 } 8185 .jss64 { 8186 padding: 2px; 8187 } 8188 .MuiRadio-colorSecondary.Mui-checked { 8189 color: #f50057; 8190 } 8191 .MuiIconButton-label { 8192 width: 100%; 8193 display: flex; 8194 align-items: inherit; 8195 justify-content: inherit; 8196 } 8197 .MuiTypography-root { 8198 margin: 0; 8199 } 8200 .MuiTypography-body1 { 8201 font-size: 18px; 8202 font-family: Roboto,sans-serif; 8203 font-weight: 400; 8204 line-height: 1.5; 8205 } 8206 .location-popup_area-block__sp9Ws { 8207 display: -moz-box; 8208 display: flex; 8209 -moz-box-orient: vertical; 8210 -moz-box-direction: normal; 8211 flex-direction: column; 8212 -moz-box-pack: center; 8213 justify-content: center; 8214 position: relative; 8215 margin: 10px 10% 0; 8216 } 8217 .location-popup_pin-search-box__3l5mJ { 8218 width: 100%; 8219 display: -moz-box; 8220 display: flex; 8221 -moz-box-align: center; 8222 align-items: center; 8223 } 8224 .location-popup_place-icon-city__1XAX5, .location-popup_place-icon__jSG0Q { 8225 position: absolute; 8226 z-index: 999; 8227 } 8228 .location-popup_place-icon__jSG0Q { 8229 color: #ffffff; 8230 padding-left: 8px; 8231 } 8232 .location-popup_place-icon__jSG0Q svg { 8233 width: 18px; 8234 height: 18px; 8235 } 8236 .location-popup_cancel-icon__FHujU { 8237 color: #fff; 8238 right: 10px; 8239 width: 16px; 8240 cursor: pointer; 8241 height: 16px; 8242 display: none; 8243 padding: 5px; 8244 position: absolute; 8245 background: #999; 8246 text-align: center; 8247 border-radius: 50%; 8248 } 8249 .location-popup_pin-search-box__3l5mJ>div>select { 8250 /* -webkit-box-shadow: 0 0 10px #ffffff; 8251 box-shadow: 0 0 10px #ffffff; */ 8252 text-transform: capitalize; 8253 border: 1px solid #ffffff; 8254 color: #ffffff; 8255 width: 100%; 8256 margin: 0; 8257 display: -moz-box; 8258 display: flex;
8259 padding: 0 30px; 8260 -webkit-animation: location-popup_focuses__1I8Gj 1.5s ease-in-out infinite; 8261 -moz-animation: location-popup_focuses__1I8Gj 1.5s ease-in-out infinite; 8262 animation: location-popup_focuses__1I8Gj 1.5s ease-in-out infinite; 8263 font-size: 16px; 8264 border-radius: 4px; 8265 height: 44px; 8266 moz-animation: location-popup_focuses__1I8Gj ease-in-out 1.5s infinite; 8267 webkit-animation: location-popup_focuses__1I8Gj ease-in-out 1.5s infinite; 8268 } 8269 .MuiButtonBase-root { 8270 color: inherit; 8271 border: 0; 8272 cursor: pointer; 8273 margin: 0; 8274 display: inline-flex; 8275 outline: 0; 8276 padding: 0; 8277 position: relative; 8278 align-items: center; 8279 user-select: none; 8280 border-radius: 0; 8281 vertical-align: middle; 8282 -moz-appearance: none; 8283 justify-content: center; 8284 text-decoration: none; 8285 background-color: transparent; 8286 -webkit-appearance: none; 8287 -webkit-tap-highlight-color: transparent; 8288 } 8289 .MuiButton-root { 8290 color: rgba(0, 0, 0, 0.87); 8291 padding: 6px 16px; 8292 font-size: 0.875rem; 8293 min-width: 64px; 8294 box-sizing: border-box; 8295 transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; 8296 font-family: Roboto,sans-serif; 8297 font-weight: 500; 8298 line-height: 1.75; 8299 border-radius: 4px; 8300 text-transform: uppercase; 8301 } 8302 .MuiButton-contained { 8303 color: rgba(0, 0, 0, 0.87); 8304 box-shadow: 0px 3px 1px -2px rgba(0,0,0,0.2), 0px 2px 2px 0px rgba(0,0,0,0.14), 0px 1px 5px 0px rgba(0,0,0,0.12); 8305 background-color: #e0e0e0; 8306 } 8307 .MuiButtonBase-root.Mui-disabled { 8308 cursor: default; 8309 pointer-events: none; 8310 } 8311 .MuiButton-label { 8312 width: 100%; 8313 display: inherit; 8314 align-items: inherit; 8315 justify-content: inherit; 8316 } 8317 .cartButton_login_content__2j1f7 { 8318 display: -moz-box; 8319 display: flex; 8320 text-align: center; 8321 z-index: 9; 8322 font-size: 18px; 8323 font-weight: 500; 8324 color: #fff; 8325 } 8326 8327 .jss35 { 8328 top: 5px; 8329 right: 5px; 8330 padding: 4px; 8331 position: absolute; 8332 border-radius: 50%; 8333 } 8334 .jss67 { 8335 cursor: pointer; 8336 font-size: 15px; 8337 line-height: 1.3; 8338 padding-left: 5px; 8339 } 8340 .jss69 { 8341 color: #222222; 8342 } 8343 .jss80 { 8344 color: #fff; 8345 width: 100%; 8346 height: 52px; 8347 padding: 11px 16px; 8348 font-size: 18px; 8349 min-width: 88px; 8350 min-height: 36px; 8351 transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; 8352 font-weight: 500; 8353 line-weight: 1em; 8354 border-radius: 4px; 8355 text-transform: uppercase; 8356 background-color: #ff6600; 8357 } 8358 @media (min-width: 991px){ 8359 .cartButton_login_content__2j1f7 { 8360 font-weight: 500; 8361 } 8362 } 8363 8364 @media (max-width: 992px) { 8365 #location-lock-dialog { 8366 width: 100%; 8367 top: auto; 8368 bottom: 0; 8369 padding-left: 0; 8370 padding-right: 0; 8371 } 8372 .MuiFormGroup-row { 8373 display: block 8374 } 8375 .MuiIconButton-label input { 8376 margin: 0; 8377 } 8378 } 8379 </style> 8380 <div role="presentation" class="MuiDialog-root jss34" style="display: none;position: fixed; z-index: 9999; inset: 0px;"> 8381 <div class="MuiBackdrop-root" aria-hidden="true" style="opacity: 1; transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;"></div> 8382 <div tabindex="0" data-test="sentinelStart"></div> 8383 <div class="MuiDialog-container MuiDialog-scrollPaper" role="none presentation" tabindex="-1" style="opacity: 1; transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;"> 8384 <div class="MuiPaper-root MuiDialog-paper MuiDialog-paperScrollPaper MuiDialog-paperWidthSm MuiPaper-elevation24 MuiPaper-rounded" role="dialog"> 8385 <div class="jss31 undefined" id="location-lock-dialog"> 8386 <button id="close-popup-delivery" class="MuiButtonBase-root MuiIconButton-root jss35" tabindex="0" type="button" aria-label="close"> 8387 <span class="MuiIconButton-label"> 8388 <svg class="MuiSvgIcon-root" focusable="false" viewBox="0 0 24 24" aria-hidden="true"> 8389 <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path> 8390 </svg> 8391 </span>
8392 <span class="MuiTouchRipple-root"></span> 8393 </button> 8394 <div> 8395 <div class="jss36">Select Delivery Location</div> 8396 <div class="jss37">Select a delivery location to see product availability</div> 8397 </div> 8398 <div class="MuiFormGroup-root jss63 MuiFormGroup-row" role="radiogroup"> 8399 <label for="jabodetabek" class="MuiFormControlLabel-root jss45"> 8400 <span class="MuiButtonBase-root MuiIconButton-root jss46 MuiRadio-root MuiRadio-colorSecondary jss39 jss47 Mui-checked MuiIconButton-colorSecondary" aria-disabled="false"> 8401 <span class="MuiIconButton-label"> 8402 <input id="jabodetabek" class="jss49" type="radio" value="Jabodetabek" checked="" name="location"> 8403 <span class="jss41"></span> 8404 </span> 8405 <span class="MuiTouchRipple-root"></span> 8406 </span> 8407 <span class="MuiTypography-root MuiFormControlLabel-label MuiTypography-body1"> 8408 <span class="jss67 jss69">Jabodetabek</span> 8409 </span> 8410 </label> 8411 <label for="non-jabodetabek" class="MuiFormControlLabel-root jss45"> 8412 <span class="MuiButtonBase-root MuiIconButton-root jss46 MuiRadio-root MuiRadio-colorSecondary jss39 MuiIconButton-colorSecondary" aria-disabled="false"> 8413 <span class="MuiIconButton-label"> 8414 <input id="non-jabodetabek" class="jss49" type="radio" value="Outside Jabodetabek" name="location"> 8415 <span class="jss40"></span> 8416 </span> 8417 <span class="MuiTouchRipple-root"></span> 8418 </span> 8419 <span class="MuiTypography-root MuiFormControlLabel-label MuiTypography-body1"> 8420 <span class="jss67 jss68">Outside Jabodetabek</span> 8421 </span> 8422 </label> 8423 </div> 8424 <div> 8425 <div class="MuiGrid-root location-popup_area-block__sp9Ws"> 8426 <div class="MuiGrid-root location-popup_pin-search-box__3l5mJ false"> 8427 <div class="MuiGrid-root location-popup_place-icon__jSG0Q"> 8428 <svg class="MuiSvgIcon-root jss6" focusable="false" viewBox="0 0 24 24" aria-hidden="true" style="font-size:16px"><path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"></path></svg> 8429 </div> 8430 <div class="MuiGrid-root location-popup_cancel-icon__FHujU false"> 8431 <i class="material-icons location-popup_clear-pin__s1dRc">close</i> 8432 </div> 8433 <div style="width: 100%;"> 8434 <select id="choose-location" class="form-control"> 8435 <option value="">Choose Location</option> 8436 <option value="jakarta">Jakarta</option> 8437 <option value="bogor">Bogor</option> 8438 <option value="depok">Depok</option> 8439 <option value="tangerang">Tangerang</option> 8440 <option value="bekasi">Bekasi</option> 8441 </select> 8442 </div> 8443 </div> 8444 </div> 8445 </div> 8446 <button class="MuiButtonBase-root MuiButton-root MuiButton-contained jss55" tabindex="-1" type="button" title="" id="location-lock-submit" data-idforcdp="actionBtn-cdp" data-testid="location-lock-submit" style="background-color: #ffffff; width: 80%; padding: 14px 0px 12px; margin: 20px 0px; font-size: 18px; font-weight: 500; box-shadow: rgba(0, 0, 0, 0.1) 0px 2px 4px 0px; border-radius: 4px; color: rgb(0, 0, 0); height: 44px;" data-content=""> 8447 <span class="MuiButton-label"> 8448 <span class=""></span> 8449 <span id="location-lock-continue-btn" class="cartButton_login_content__2j1f7" style="font-weight: 500;" data-content="">Continue Shopping</span> 8450 </span> 8451 </button> 8452 </div> 8453 </div> 8454 </div> 8455 <div tabindex="0" data-test="sentinelEnd"></div> 8456 </div> 8457 8458
8458<script> 8459 const jabodetabek = [ 8460 { 8461 "code": "jakarta", 8462 "city": "jakarta", 8463 "zip": [] 8464 }, 8465 { 8466 "code": "bogor", 8467 "city": "bogor", 8468 "zip": [] 8469 }, 8470 { 8471 "code": "depok", 8472 "city": "depok", 8473 "zip": [] 8474 }, 8475 { 8476 "code": "tangerang", 8477 "city": "tangerang", 8478 "zip": [] 8479 }, 8480 { 8481 "code": "bekasi", 8482 "city": "bekasi", 8483 "zip": [] 8484 } 8485 ] 8486 let cityNonJabodetabek = [ 8487 8488 8489 8490 8491 "pengiriman_aceh", 8492 8493 8494 8495 8496 8497 "pengiriman_ambon", 8498 8499 8500 8501 8502 8503 "pengiriman_atambua", 8504 8505 8506 8507 8508 8509 "pengiriman_badung", 8510 8511 8512 8513 8514 8515 "pengiriman_bali", 8516 8517 8518 8519 8520 8521 "pengiriman_balikpapan", 8522 8523 8524 8525 8526 8527 "pengiriman_bandar lampung", 8528 8529 8530 8531 8532 8533 "pengiriman_bandung", 8534 8535 8536 8537 8538 8539 "pengiriman_bandung barat", 8540 8541 8542 8543 8544 8545 "pengiriman_banjarmasin", 8546 8547 8548 8549 8550 8551 "pengiriman_banyumas", 8552 8553 8554 8555 8556 8557 "pengiriman_banyuwangi", 8558 8559 8560 8561 8562 8563 "pengiriman_batam", 8564 8565 8566 8567 8568 8569 8570 8571 8572 8573 "pengiriman_biak", 8574 8575 8576 8577 8578 8579 "pengiriman_binjai", 8580 8581 8582 8583 8584 8585 "pengiriman_blitar", 8586 8587 8588 8589 8590 8591 "pengiriman_blora", 8592 8593 8594 8595 8596 8597 8598 8599 8600 8601 "pengiriman_bojonegoro", 8602 8603 8604 8605 8606 8607 "pengiriman_boyolali", 8608 8609 8610 8611 8612 8613 "pengiriman_bukittinggi", 8614 8615 8616 8617 8618 8619 "pengiriman_buleleng", 8620 8621 8622 8623 8624 8625 "pengiriman_ciamis", 8626 8627 8628 8629 8630 8631 "pengiriman_cianjur", 8632 8633 8634 8635 8636 8637 "pengiriman_cibinong", 8638 8639 8640 8641 8642 8643 "pengiriman_cikarang", 8644 8645 8646 8647 8648 8649 "pengiriman_cikupa", 8650 8651 8652 8653 8654 8655 "pengiriman_cilacap", 8656 8657 8658 8659 8660 8661 "pengiriman_cileunyi", 8662 8663 8664 8665 8666 8667 "pengiriman_cimahi", 8668 8669 8670 8671 8672 8673 "pengiriman_cirebon", 8674 8675 8676 8677 8678 8679 "pengiriman_ciwidey", 8680 8681 8682 8683 8684 8685 "pengiriman_deli serdang", 8686 8687 8688 8689 8690 8691 "pengiriman_demak", 8692 8693 8694 8695 8696 8697 "pengiriman_denpasar", 8698 8699 8700 8701 8702 8703 8704 "pengiriman_garut", 8705 8706 8707 8708 8709 8710 "pengiriman_gianyar", 8711 8712 8713 8714 8715 8716 "pengiriman_gresik", 8717 8718 8719 8720 8721 8722 "pengiriman_gunung kidul", 8723 8724 8725 8726 8727 8728 8729 "pengiriman_jambi", 8730 8731 8732 8733 8734 8735 "pengiriman_jayapura", 8736 8737 8738 8739 8740 8741 "pengiriman_jember", 8742 8743 8744 8745 8746 8747 "pengiriman_jepara", 8748 8749 8750 8751 8752 8753 "pengiriman_jombang", 8754 8755 8756 8757 8758 8759 "pengiriman_karanganyar", 8760 8761 8762 8763 8764 8765 "pengiriman_karawang", 8766 8767 8768 8769 8770 8771 "pengiriman_karo", 8772 8773 8774 8775 8776 8777 "pengiriman_kebumen", 8778 8779 8780 8781 8782 8783 "pengiriman_kediri", 8784 8785 8786 8787 8788 8789 "pengiriman_keerom", 8790 8791 8792 8793 8794 8795 "pengiriman_kendal", 8796 8797 8798 8799 8800 8801 "pengiriman_klaten", 8802 8803 8804 8805 8806 8807 "pengiriman_kudus", 8808 8809 8810 8811 8812 8813 "pengiriman_kupang", 8814 8815 8816 8817 8818 8819 "pengiriman_lainnya", 8820 8821 8822 8823 8824 8825 "pengiriman_lamongan", 8826 8827 8828 8829 8830 8831 "pengiriman_lampung", 8832 8833 8834 8835 8836 8837 "pengiriman_lampung barat", 8838 8839 8840 8841 8842 8843 "pengiriman_lembang", 8844 8845 8846 8847 8848 8849 "pengiriman_lombok", 8850 8851 8852 8853 8854 8855 "pengiriman_lumajang", 8856 8857 8858 8859 8860 8861 "pengiriman_madiun", 8862 8863 8864 8865 8866 8867 "pengiriman_magelang", 8868 8869 8870 8871 8872 8873 "pengiriman_majalengka", 8874 8875 8876 8877 8878 8879 "pengiriman_makassar", 8880 8881 8882 8883 8884 8885 "pengiriman_malang", 8886 8887 8888 8889 8890 8891 "pengiriman_manado", 8892 8893 8894 8895 8896 8897 "pengiriman_medan", 8898 8899 8900 8901 8902 8903 "pengiriman_mengwi", 8904 8905 8906 8907 8908 8909 "pengiriman_mojokerto", 8910 8911 8912 8913 8914 8915 "pengiriman_nganjuk", 8916 8917 8918 8919 8920 8921 "pengiriman_ngawi", 8922 8923 8924 8925 8926 8927 "pengiriman_padang", 8928 8929 8930 8931 8932 8933 "pengiriman_palembang", 8934 8935 8936 8937 8938 8939 "pengiriman_pasuruan", 8940 8941 8942 8943 8944 8945 "pengiriman_pati", 8946 8947 8948 8949 8950 8951 "pengiriman_pekalongan", 8952 8953 8954 8955 8956 8957 "pengiriman_pekanbaru", 8958 8959 8960 8961 8962 8963 "pengiriman_pemalang", 8964 8965 8966 8967 8968 8969 "pengiriman_ponorogo", 8970 8971 8972 8973 8974 8975 "pengiriman_pontianak", 8976 8977 8978 8979 8980 8981 "pengiriman_probolinggo", 8982 8983 8984 8985 8986 8987 "pengiriman_purbalingga", 8988 8989 8990 8991 8992 8993 "pengiriman_purwakarta", 8994 8995 8996 8997 8998 8999 "pengiriman_purwokerto", 9000 9001 9002 9003 9004 9005 "pengiriman_rembang", 9006 9007 9008 9009 9010 9011 "pengiriman_riau", 9012 9013 9014 9015 9016 9017 "pengiriman_salatiga", 9018 9019 9020 9021 9022 9023 "pengiriman_samarinda", 9024 9025 9026 9027 9028 9029 "pengiriman_semarang", 9030 9031 9032 9033 9034 9035 "pengiriman_sentani", 9036 9037 9038 9039 9040 9041 "pengiriman_serang", 9042 9043 9044 9045 9046 9047 "pengiriman_sidoarjo", 9048 9049 9050 9051 9052 9053 "pengiriman_singkawang", 9054 9055 9056 9057 9058 9059 "pengiriman_sragen", 9060 9061 9062 9063 9064 9065 "pengiriman_subang", 9066 9067 9068 9069 9070 9071 "pengiriman_sukabumi", 9072 9073 9074 9075 9076 9077 "pengiriman_sumbawa", 9078 9079 9080 9081 9082 9083 "pengiriman_surabaya", 9084 9085 9086 9087 9088 9089 "pengiriman_surakarta solo", 9090 9091 9092 9093 9094 "pengiriman_tasikmalaya", 9095 9096 9097 9098 9099 9100 "pengiriman_tegal", 9101 9102 9103 9104 9105 9106 "pengiriman_timika", 9107 9108 9109 9110 9111 9112 "pengiriman_wamena", 9113 9114 9115 9116 9117 9118 "pengiriman_wiyung", 9119 9120 9121 9122 9123 9124 "pengiriman_wonokromo", 9125 9126 9127 9128 9129 9130 "pengiriman_yogyakarta", 9131 9132 ] 9133 console.log(cityNonJabodetabek) 9134 let non_jabodetabek = [] 9135 for(var i=0;i<cityNonJabodetabek.length;i++) { 9136 const obj = { 9137 "code": cityNonJabodetabek[i].toLowerCase().replace('pengiriman_', '').replace(' ','-'), 9138 "city": cityNonJabodetabek[i].replace('pengiriman_', '').replace(' ','-'), 9139 "zip": [] 9140 } 9141 non_jabodetabek.push(obj) 9142 } 9143 let current_location = getCookie("location_delivery") 9144 $("[name=location]").change(function(){ 9145 let v = $(this).val() 9146 let option = [] 9147 if(v == 'Jabodetabek') { 9148 for(var i=0;i<jabodetabek.length;i++) { 9149 const jabodetabekHtml = `<option value=${jabodetabek[i].city}>${jabodetabek[i].city}</option>` 9150 option.push(jabodetabekHtml) 9151 } 9152 $("#choose-location").html(`<option value="">Choose Location</option>${option}`) 9153 } else { 9154 for(var i=0;i<non_jabodetabek.length;i++) { 9155 const nonjabodetabekHtml = `<option value=${non_jabodetabek[i].city}>${non_jabodetabek[i].city}</option>` 9156 option.push(nonjabodetabekHtml) 9157 } 9158 $("#choose-location").html(`<option value="">Choose Location</option>${option}`) 9159 } 9160 }) 9161 9162 $("#location-lock-submit").click(function(e){ 9163 let select = $("#choose-location") 9164 let value = select.val().toLowerCase() 9165 console.log(value) 9166 if(select.val() == "") { 9167 return alert("Choose Your Location") 9168 e.preventDefault() 9169 }
9170 setCookie("location_delivery",value,1000000); 9171 9172 location.reload(); 9173 9174 }) 9175 9176 $("#close-popup-delivery").click(function(){ 9177 $(".MuiDialog-root").hide() 9178 if(!current_location){ 9179 setCookie("location_delivery","jakarta",1000000); 9180 $("#loc_delivery_city, #loc_delivery_city_mobile").text("Jakarta") 9181 } 9182 }) 9183 $("#loc_delivery, #loc_delivery_mobile").click(function(){ 9184 $(".MuiDialog-root").show() 9185 }) 9186 9187 9188 if(!current_location){ 9189 9190 } else { 9191 $("#loc_delivery_city, #loc_delivery_city_mobile").text(current_location) 9192 console.log(current_location) 9193 $("#choose-location").each(function(){ 9194 if(current_location == 'jakarta' || current_location == 'depok' || current_location == 'bogor' || current_location == 'tangerang' || current_location == 'bekasi'){ 9195 $("#jabodetabek").trigger("click") 9196 } else { 9197 $("#non-jabodetabek").trigger("click") 9198 } 9199 $("#choose-location").find("option[value="+current_location+"]").attr("selected", "selected") 9200 }) 9201 } 9202 9203 // if(current_location == 'jakarta' || current_location == 'depok' || current_location == 'bogor' || current_location == 'tangerang' || current_location == 'bekasi' || current_location == 'bandung' || current_location == 'semarang' || current_location == 'yogyakarta' || current_location == 'surabaya'){ 9204 // $("#timeMalam").attr("disabled", false) 9205 // } else { 9206 // $("#timeMalam").attr("disabled", true) 9207 // } 9208 9209 if(current_location && current_location != 'jakarta') { 9210 $("#self-pickup").attr("disabled", true) 9211 } 9212 9213 function setCookie(name,value,days) { 9214 var expires = ""; 9215 if (days) { 9216 var date = new Date(); 9217 date.setTime(date.getTime() + (days*24*60*60*1000)); 9218 expires = "; expires=" + date.toUTCString(); 9219 } 9220 document.cookie = name + "=" + (value || "") + expires + "; path=/"; 9221 } 9222 function getCookie(name) { 9223 var nameEQ = name + "="; 9224 var ca = document.cookie.split(';'); 9225 for(var i=0;i < ca.length;i++) { 9226 var c = ca[i]; 9227 while (c.charAt(0)==' ') c = c.substring(1,c.length); 9228 if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 9229 } 9230 return null; 9231 } 9232 </script>
9232 9233 <!-- One Tap --> 9234
9234<script> 9235 console.log("Outerbloom..."); 9236 </script>
9236 9237 <div id="shopify-block-ANVEzSUcxTUxZOGpwZ__9703700522657871012" class="shopify-block shopify-app-block"> 9238 9239 9240 9241 9242 9243 9244 9245 9246 9247 9248 9249 9250 9251 9252 9253 9254 9255 9256 9257 9258 9259 9260 9261 9262 9263 9264 9265 9266 9267 9268 9269 9270 9271 9272 9273 9274 9275 9276 9277 9278 9279 9280 9281 9282 9283 9284 <link rel="stylesheet" href="https://cdn1.bitbybit.studio/bitbybit/static/bitChat_widget/widget.css" /> 9285
9285<script src="https://cdn1.bitbybit.studio/bitbybit/static/bitChat_widget/widget.js" defer></script>
9285 9286
9286<script> 9287 const widgetConfig = { 9288 id: "clz7897za002cz7otleaz0d3d", 9289 showQuickResponse: false, 9290 quickResponsesData: [], 9291 themeColor: "#ffffff", 9292 widgetText: "", 9293 radiusType: "circle", 9294 widgetIconType: "whatsapp", 9295 position: "right", 9296 storeLogo: "", 9297 storeName: "Outerbloom", 9298 storeDescription: "", 9299 size: "small", 9300 showCard: false, 9301 widgetColorType: "solid", 9302 widgetColor1: "#008069", 9303 widgetColor2: "#008069", 9304 social: { 9305 socialOrders: ["instagram","tiktok","facebook","x","youtube","linkedin","email"], 9306 values: { 9307 instagram: { 9308 enabled: false, 9309 value: "", 9310 }, 9311 facebook: { 9312 enabled: false, 9313 value: "", 9314 }, 9315 email: { 9316 enabled: false, 9317 value: "", 9318 }, 9319 x: { 9320 enabled: false, 9321 value: "", 9322 }, 9323 tiktok: { 9324 enabled: false, 9325 value: "", 9326 }, 9327 linkedin: { 9328 enabled: false, 9329 value: "", 9330 }, 9331 youtube: { 9332 enabled: false, 9333 value: "", 9334 }, 9335 }, 9336 }, 9337 }; 9338 9339 function initializeWidget() { 9340 if (typeof BBBWidget !== 'undefined') { 9341 BBBWidget.init(widgetConfig); 9342 } else { 9343 setTimeout(initializeWidget, 100); 9344 } 9345 } 9346 9347 initializeWidget();</script>
9347 9348 9349 9350 </div><div id="shopify-block-ATzRpVTBPU3k1R2pnW__286197278318599166" class="shopify-block shopify-app-block"> 9351 9352 9353 <div style="position: fixed; bottom: 0; right: 0"></div> 9354 9355
9355<script> 9356 console.info("bitlogin extension version: v2.5.7"); 9357 9358 const googleScript = document.createElement("script"); 9359 googleScript.setAttribute("src", "https://accounts.google.com/gsi/client"); 9360 document.head.append(googleScript); 9361 9362 const bitLoginBaseUrl = "https://api.bitbybit.studio"; 9363 const apiUrl = `${bitLoginBaseUrl}/bitlogin/api`; 9364 9365 const appearance = {"style":"square","hasShadow":true,"domain":"outerbloom1.myshopify.com","colorScheme":"match","backgroundColor":"#ffffff","outlineColor":"#ffe100","textColor":"#700000","position":"top","hideDivider":false,"dividerText":"","size":"small","format":"contentFlex","language":"en","buttonText":"Continue With","redirectLink":"\/account","googleOneTap":true,"googleOneTapBanner":true,"captureAdditionalData":true,"customerTag":"bitLogin","redirectOneTapDesktop":"[{\"label\":\"Account\",\"label2\":\"Desktop: Account\",\"value\":\"account\",\"parentValue\":\"Desktop\"}]","redirectOneTapMobile":"[{\"label\":\"Thank you page\",\"label2\":\"Mobile: Thank you page\",\"value\":\"thank_you\",\"parentValue\":\"Mobile\"}]","watermark":true,"buttonList":{"google":"Continue with Google","facebook":"Continue with Facebook","apple":"Continue with Apple","whatsapp":"Continue with WhatsApp","microsoft":"Continue with Microsoft","twitter":"Continue with X","amazon":"Continue with Amazon","instagram":"Continue with Instagram","magic_link":"Continue with Magic Link","mobile_app":"Continue with Mobile App","linkedin":"Continue with LinkedIn"}}; 9366 const config = [{"domain":"outerbloom1.myshopify.com","provider":"FACEBOOK","enabledMobile":false,"enabledWeb":true,"clientId":"922184709213757","clientSecret":"e3c874c8bce6da4211538ebda706d1cb","appleTeamId":null,"applePrivateKey":null,"usePersonalOauth":false,"position":null},{"domain":"outerbloom1.myshopify.com","provider":"GOOGLE","enabledMobile":true,"enabledWeb":true,"clientId":"933600373534-vk6hiu9lqrtbblj0357q0gsoo7mqvsd0.apps.googleusercontent.com","clientSecret":"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","appleTeamId":null,"applePrivateKey":null,"usePersonalOauth":true,"position":null},{"domain":"outerbloom1.myshopify.com","provider":"APPLE","enabledMobile":true,"enabledWeb":true,"clientId":"com.bitlogin.outerbloom","clientSecret":"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","appleTeamId":"1A","applePrivateKey":"1A","usePersonalOauth":false,"position":null},{"domain":"outerbloom1.myshopify.com","provider":"WHATSAPP","enabledMobile":false,"enabledWeb":true,"clientId":null,"clientSecret":null,"appleTeamId":null,"applePrivateKey":null,"usePersonalOauth":false,"position":null},{"domain":"outerbloom1.myshopify.com","provider":"MICROSOFT","enabledMobile":false,"enabledWeb":false,"clientId":null,"clientSecret":null,"appleTeamId":null,"applePrivateKey":null,"usePersonalOauth":false,"position":null},{"domain":"outerbloom1.myshopify.com","provider":"TWITTER","enabledMobile":false,"enabledWeb":false,"clientId":null,"clientSecret":null,"appleTeamId":null,"applePrivateKey":null,"usePersonalOauth":false,"position":null},{"domain":"outerbloom1.myshopify.com","provider":"AMAZON","enabledMobile":false,"enabledWeb":false,"clientId":"amzn1.application-oa2-client.5b560a5e3e2943d6b25c50cd6dca5532","clientSecret":"amz
9366n1.oa2-cs.v1.1cb5f9085a202341f60daf5a7be16c570ccc0b4bd5908b3afd080f34e9b8935d","appleTeamId":null,"applePrivateKey":null,"usePersonalOauth":false,"position":null}]; 9367 const redirectUrl = appearance.redirectLink; 9368 9369 let locationCacheSet = false; 9370 let errorLocation = false; 9371 let oneTapSet = false; 9372 9373 let bitloginCache = { 9374 appearance: appearance, 9375 config: config 9376 }; 9377 9378 let isInitializing = false; 9379 const queue = []; 9380 9381 // Add CSS for the popup 9382 const popupStyles = document.createElement('style'); 9383 popupStyles.textContent = ` 9384 /* Styles for login popup */ 9385 .bitlogin-popup-overlay { 9386 position: fixed; 9387 top: 0; 9388 left: 0; 9389 width: 100%; 9390 height: 100%; 9391 background: rgba(0, 0, 0, 0.45); 9392 backdrop-filter: blur(4px); 9393 display: flex; 9394 align-items: center; 9395 justify-content: center; 9396 opacity: 0; 9397 transition: opacity 0.3s ease-in-out; 9398 z-index: 999999; 9399 } 9400 9401 .bitlogin-popup-overlay.visible { 9402 opacity: 1; 9403 } 9404 9405 .bitlogin-popup { 9406 background: #FFFFFF; 9407 box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); 9408 border-radius: 16px; 9409 width: 100%; 9410 max-width: 560px; 9411 display: flex; 9412 overflow: hidden; 9413 position: relative; 9414 opacity: 0; 9415 transform: translateY(20px) scale(0.98); 9416 transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1); 9417 } 9418 9419 .bitlogin-popup.visible { 9420 opacity: 1; 9421 transform: translateY(0) scale(1); 9422 } 9423 9424 .bitlogin-popup-with-image { 9425 max-width: 640px; 9426 } 9427 9428 .bitlogin-popup-right-image { 9429 flex-direction: row-reverse; 9430 } 9431 9432 .bitlogin-popup-image { 9433 object-fit: cover; 9434 width: 50%; 9435 height: auto; 9436 } 9437 9438 .bitlogin-popup-content { 9439 padding: 32px; 9440 position: relative; 9441 width: 50%; 9442 } 9443 9444 .bitlogin-popup-close { 9445 position: absolute; 9446 top: 16px; 9447 right: 16px; 9448 background: white; 9449 border: none; 9450 width: 30px; 9451 height: 30px; 9452 display: flex; 9453 align-items: center; 9454 justify-content: center; 9455 cursor: pointer; 9456 transition: background-color 0.2s; 9457 color: inherit; 9458 padding: 0; 9459 } 9460 9461 .bitlogin-popup-close:hover { 9462 background-color: #e5e5e5; 9463 } 9464 9465 .bitlogin-popup-buttons { 9466 display: flex; 9467 flex-direction: column; 9468 gap: 12px; 9469 margin-top: 24px; 9470 } 9471 9472 /* Button styles within popup - override width for popup buttons */ 9473 .bitlogin-popup-buttons #google-login, 9474 .bitlogin-popup-buttons #facebook-login, 9475 .bitlogin-popup-buttons #apple-login, 9476 .bitlogin-popup-buttons #whatsapp-login, 9477 .bitlogin-popup-buttons #microsoft-login, 9478 .bitlogin-popup-buttons #twitter-login, 9479 .bitlogin-popup-buttons #amazon-login, 9480 .bitlogin-popup-buttons #instagram-login, 9481 .bitlogin-popup-buttons #magic-link-login, 9482 .bitlogin-popup-buttons #mobile-app-login { 9483 width: 100% !important; 9484 font-family: inherit !important; 9485 } 9486 9487 .bitlogin-popup-footer { 9488 margin-top: 32px; 9489 text-align: center; 9490 font-size: 14px; 9491 opacity: 0.6; 9492 } 9493 9494 /* Modern Typography */ 9495 .bitlogin-popup h2 { 9496 margin-top: 12px; 9497 font-size: 21px !important; 9498 line-height: 1.2 !important; 9499 font-weight: 700 !important; 9500 letter-spacing: -0.02em !important; 9501 margin-bottom: 16px !important; 9502 } 9503 9504 .bitlogin-popup-header { 9505 position: relative; 9506 margin-bottom: 24px; 9507 } 9508 9509 /* Modern gradient accent */ 9510 .bitlogin-popup-content > div { 9511 font-size: 16px !important; 9512 line-height: 1.2 !important; 9513 opacity: 0.85 !important; 9514 } 9515 9516 /* Enhanced button interactions */ 9517 .bitlogin-popup-buttons button { 9518 position: relative; 9519 overflow: hidden; 9520 } 9521 9522 @keyframes ripple { 9523 0% { 9524 transform: scale(0, 0); 9525 opacity: 0.5; 9526 } 9527 100% { 9528 transform: scale(100, 100); 9529 opacity: 0; 9530 } 9531 } 9532 9533 /* Responsive adjustments */ 9534 @media (max-width: 640px) { 9535 .bitlogin-popup { 9536 max-width: 90%; 9537 width: 90%; 9538 margin: 0 16px; 9539 } 9540 9541 .bitlogin-popup-with-image { 9542 flex-direction: column !important; 9543 } 9544 9545 .bitlogin-popup-image { 9546 width: 100%; 9547 height: 180px; 9548 } 9549 9550 .bitlogin-popup-content { 9551 padding: 24px; 9552 } 9553 9554 .bitlogin-popup h2 { 9555 font-size: 24px !important; 9556 } 9557 } 9558 `; 9559
9560 document.head.appendChild(popupStyles); 9561 9562 // Add fonts link for different font options 9563 const fontsLink = document.createElement('link'); 9564 fontsLink.rel = 'stylesheet'; 9565 fontsLink.href = 'https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600&family=Roboto:wght@400;500&family=Open+Sans:wght@400;500;600&family=Noto+Sans:wght@400;500;600&family=Lato:wght@400;700&family=Poppins:wght@400;500;600&family=Quicksand:wght@400;500;600&family=Raleway:wght@400;500;600&family=PT+Sans:wght@400;700&family=Oswald:wght@400;500;600&display=swap'; 9566 document.head.appendChild(fontsLink); 9567 9568 (async () => { 9569 try { 9570 let host = window.location.host; 9571 if (host === "admin.shopify.com") { 9572 host = `${window.location.pathname.split("/")[2]}.myshopify.com`; 9573 } 9574 9575 const urlSearchParams = new URLSearchParams(window.location.search); 9576 const checkoutUrl = urlSearchParams.get("checkout_url"); 9577 9578 async function init({ inputRef, index }) { 9579 if (isInitializing) { 9580 queue.push(() => init({ inputRef, index })); 9581 return; 9582 } 9583 9584 isInitializing = true; 9585 9586 try { 9587 let bitLoginSectionRoot = document.querySelector( 9588 `.bitlogin-root[data-index="${index}"]` 9589 ); 9590 9591 const formRef = inputRef?.closest( 9592 "form:not([action='/account/recover'])" 9593 ); 9594 9595 if (formRef && !bitLoginSectionRoot) { 9596 await getLocation(); 9597 9598 bitLoginSectionRoot = document.createElement(`div`); 9599 9600 bitLoginSectionRoot.setAttribute("class", "bitlogin-root"); 9601 bitLoginSectionRoot.setAttribute("data-index", `${index}`); 9602 9603 updateAppearance({ 9604 formRef, 9605 rootRef: bitLoginSectionRoot, 9606 host, 9607 }); 9608 } 9609 } catch (err) { 9610 console.error(`error while initiating bitlogin extensions`, err); 9611 } finally { 9612 // Release the lock 9613 isInitializing = false; 9614 9615 // Check if there are pending items in the queue 9616 if (queue.length > 0) { 9617 // Process the next function in the queue 9618 const nextFunction = queue.shift(); 9619 nextFunction(); 9620 } 9621 } 9622 } 9623 9624 function initAll() { 9625 return new Promise((resolve, reject) => { 9626 setTimeout(async () => { 9627 const inputRefs = document.querySelectorAll( 9628 'input[name="customer[email]"]' 9629 ); 9630 9631 for (let i = 0; i < inputRefs.length; i++) { 9632 const currentInputRef = inputRefs[i]; 9633 const isVisible = isElementVisible(currentInputRef); 9634 9635 if (isVisible) { 9636 await init({ inputRef: currentInputRef, index: i }); 9637 } 9638 } 9639 9640 resolve("ok"); 9641 }, 100); 9642 }); 9643 } 9644 9645 const observer = new MutationObserver((mutationsList) => { 9646 for (let mutation of mutationsList) { 9647 initAll(); 9648 } 9649 }); 9650 9651 observer.observe(document.body, { 9652 childList: true, 9653 subtree: true, 9654 attributes: true, 9655 }); 9656 9657 initAll(); 9658 9659 if (appearance.googleOneTap) { 9660 setupOneTap({ host, checkoutUrl }); 9661 } 9662 9663 // Initialize popup 9664 await initPopup(host); 9665 } catch (error) { 9666 console.error("Error initializing BitLogin:", error); 9667 } 9668 })(); 9669 9670 async function initPopup(host) { 9671 // Check if user is already logged in using Liquid checks properly 9672 const isLoggedIn = false || 9673 document.querySelector('.customer-logout-link') || 9674 document.querySelector('.account-link') || 9675 window.location.pathname.includes('/account'); 9676 9677 if (isLoggedIn) { 9678 return; // User is logged in, don't show popup 9679 } 9680 9681 try { 9682 // Fetch the popup configuration 9683 const popupConfig = await fetch(`${apiUrl}/appearance/popup/domain/${host}`) 9684 .then(res => res.json()) 9685 .catch(err => { 9686 console.error('Error fetching popup configuration:', err); 9687 return null; 9688 }); 9689 9690 if (!popupConfig || !popupConfig.enabled) { 9691 return;
9691 // Don't show popup if disabled or config not found 9692 } 9693 9694 // Create popup after 10 seconds 9695 setTimeout(() => { 9696 // Check if user is still on the page and still not logged in 9697 if (document.visibilityState === 'visible') { 9698 // Additional check in case user logged in during the 10 second wait 9699 const currentlyLoggedIn = false || 9700 document.querySelector('.customer-logout-link') || 9701 document.querySelector('.account-link'); 9702 9703 if (!currentlyLoggedIn) { 9704 createLoginPopup(popupConfig, host); 9705 } 9706 } 9707 }, 10000); 9708 } catch (error) { 9709 console.error('Error initializing popup:', error); 9710 } 9711 } 9712 9713 function createLoginPopup(popupConfig, host) { 9714 // Font mapping 9715 const fontFamilyMap = { 9716 system_fonts: 'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif', 9717 montserrat: 'Montserrat, sans-serif', 9718 roboto: 'Roboto, sans-serif', 9719 open_sans: 'Open Sans, sans-serif', 9720 noto_sans: 'Noto Sans, sans-serif', 9721 lato: 'Lato, sans-serif', 9722 poppins: 'Poppins, sans-serif', 9723 quicksand: 'Quicksand, sans-serif', 9724 raleway: 'Raleway, sans-serif', 9725 pt_sans: 'PT Sans, sans-serif', 9726 oswald: 'Oswald, sans-serif', 9727 }; 9728 9729 // Create overlay 9730 const overlay = document.createElement('div'); 9731 overlay.className = 'bitlogin-popup-overlay'; 9732 9733 // Create popup container with appropriate styling 9734 const popup = document.createElement('div'); 9735 popup.className = 'bitlogin-popup'; 9736 9737 if (popupConfig.layout === 'default') { 9738 popup.style.maxWidth = '400px'; 9739 } 9740 9741 // Function to close the popup 9742 const closePopup = () => { 9743 overlay.classList.remove('visible'); 9744 popup.classList.remove('visible'); 9745 setTimeout(() => { 9746 if (document.body.contains(overlay)) { 9747 document.body.removeChild(overlay); 9748 } 9749 }, 300); 9750 }; 9751 9752 // Add click handler to the overlay to close when clicking outside 9753 overlay.addEventListener('click', (event) => { 9754 // Close only if clicking directly on the overlay, not its children 9755 if (event.target === overlay) { 9756 closePopup(); 9757 } 9758 }); 9759 9760 // Add escape key handler to close popup 9761 document.addEventListener('keydown', (event) => { 9762 if (event.key === 'Escape' && document.body.contains(overlay)) { 9763 closePopup(); 9764 } 9765 }); 9766 9767 // Create layout with image if specified 9768 let contentWrapper; 9769 if (popupConfig.layout !== 'default' && popupConfig.popupImage) { 9770 popup.classList.add('bitlogin-popup-with-image'); 9771 9772 if (popupConfig.layout === 'right') { 9773 popup.classList.add('bitlogin-popup-right-image'); 9774 } 9775 9776 // Add image 9777 const image = document.createElement('img'); 9778 image.className = 'bitlogin-popup-image'; 9779 image.src = popupConfig.popupImage; 9780 image.alt = 'Login'; 9781 image.loading = 'lazy'; 9782 popup.appendChild(image); 9783 9784 // Create content container 9785 contentWrapper = document.createElement('div'); 9786 contentWrapper.className = 'bitlogin-popup-content'; 9787 9788 if (popupConfig.layout === 'right') { 9789 const closeButton = document.createElement('button'); 9790 closeButton.className = 'bitlogin-popup-close'; 9791 closeButton.innerHTML = `<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="image/logo-login-emo78.png"> 9792 <path d="M13 1L1 13M1 1L13 13" stroke="${popupConfig.fontColor}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 9793 </svg>`; 9794 closeButton.setAttribute('aria-label', 'Close'); 9795 closeButton.onclick = closePopup; 9796 9797 popup.appendChild(closeButton); 9798 } 9799 } else { 9800 contentWrapper = document.createElement('div'); 9801 contentWrapper.className = 'bitlogin-popup-content'; 9802 contentWrapper.style.width = '100%'; 9803 } 9804 9805 // Set background style 9806 if (popupConfig.backgroundTheme === 'gradient') { 9807 contentWrapper.style.background = `linear-gradient(135deg, ${popupConfig.backgroundPopupColor}, ${popupConfig.gradientColor})`; 9808 } else { 9809 contentWrapper.style.backgroundColor = popupConfig.backgroundPopupColor; 9810 } 9811 9812 // Apply font family 9813 contentWrapper.style.setProperty('font-family', fontFamilyMap[popupConfig.font] || fontFamilyMap.system_fonts, 'important'); 9814 9815 if (popupConfig.layout !== 'right') { 9816 const closeButton = document.createElement('button'); 9817 closeButton.className = 'bitlogin-popup-close'; 9818 closeButton.innerHTML = `<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="image/logo-login-emo78.png"> 9819 <path d="M13 1L1 13M1 1L13 13" stroke="${popupConfig.fontColor}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 9820 </svg>`; 9821 closeButton.setAttribute('aria-label', 'Close'); 9822 closeButton.onclick = closePopup; 9823 9824 contentWrapper.appendChild(closeButton); 9825 } 9826 9827 // Add heading with subtle animation effect 9828 const header = document.createElement('div'); 9829 header.className = 'bitlogin-popup-header'; 9830 9831 const heading = document.createElement('h2'); 9832 heading.textContent = popupConfig.headingText || 'Sign in for exclusive benef
9832its'; 9833 heading.style.color = popupConfig.fontColor; 9834 header.appendChild(heading); 9835 9836 // Add body text with improved formatting 9837 const bodyText = document.createElement('div'); 9838 bodyText.innerHTML = popupConfig.bodyText || 'Join our community to access exclusive offers and a personalized shopping experience.'; 9839 bodyText.style.color = popupConfig.fontColor; 9840 header.appendChild(bodyText); 9841 9842 contentWrapper.appendChild(header); 9843 9844 // Create buttons container with modern styling 9845 const buttonsContainer = document.createElement('div'); 9846 buttonsContainer.className = 'bitlogin-popup-buttons'; 9847 9848 // Add social buttons 9849 const providerLabels = { 9850 'GOOGLE': 'Continue with Google', 9851 'FACEBOOK': 'Continue with Facebook', 9852 'APPLE': 'Continue with Apple', 9853 'WHATSAPP': 'Continue with WhatsApp', 9854 'MAGIC_LINK': 'Continue with Email', 9855 }; 9856 9857 // Add first login provider button 9858 if (popupConfig.loginProvider1 !== 'NONE') { 9859 const buttonConfig = { 9860 theme: popupConfig.colorScheme || 'match', 9861 customColor: popupConfig.textColor, 9862 format: 'contentFlex', 9863 buttonText: bitloginCache.appearance.buttonList[popupConfig.loginProvider1.toLowerCase()], 9864 hasShadow: popupConfig.hasShadow !== undefined ? popupConfig.hasShadow : true, 9865 style: popupConfig.style || 'rounded', 9866 size: popupConfig.size || 'medium', 9867 colorScheme: popupConfig.colorScheme || 'match', 9868 backgroundColor: popupConfig.backgroundColor || '#3B82F6', 9869 textColor: popupConfig.textColor || '#FFFFFF', 9870 outlineColor: popupConfig.outlineColor || '#3B82F6', 9871 host: host 9872 }; 9873 9874 const button1 = createSocialLoginButton(popupConfig.loginProvider1, buttonConfig); 9875 9876 // Handle click event - this overrides the default click handler in createSocialLoginButton 9877 button1.onclick = () => { 9878 onClickSocialLogin({ provider: popupConfig.loginProvider1.toLowerCase(), host }); 9879 closePopup(); 9880 }; 9881 9882 buttonsContainer.appendChild(button1); 9883 } 9884 9885 // Add second login provider button if enabled 9886 if (popupConfig.loginProvider2 !== 'NONE') { 9887 const buttonConfig = { 9888 theme: popupConfig.colorScheme || 'match', 9889 customColor: popupConfig.textColor, 9890 format: 'contentFlex', 9891 buttonText: bitloginCache.appearance.buttonList[popupConfig.loginProvider2.toLowerCase()], 9892 hasShadow: popupConfig.hasShadow !== undefined ? popupConfig.hasShadow : true, 9893 style: popupConfig.style || 'rounded', 9894 size: popupConfig.size || 'medium', 9895 colorScheme: popupConfig.colorScheme || 'match', 9896 backgroundColor: popupConfig.backgroundColor || '#3B82F6', 9897 textColor: popupConfig.textColor || '#FFFFFF', 9898 outlineColor: popupConfig.outlineColor || '#3B82F6', 9899 host: host 9900 }; 9901 9902 const button2 = createSocialLoginButton(popupConfig.loginProvider2, buttonConfig); 9903 9904 // Handle click event - this overrides the default click handler in createSocialLoginButton 9905 button2.onclick = () => { 9906 onClickSocialLogin({ provider: popupConfig.loginProvider2.toLowerCase(), host }); 9907 closePopup(); 9908 }; 9909 9910 buttonsContainer.appendChild(button2); 9911 } 9912 9913 contentWrapper.appendChild(buttonsContainer); 9914 9915 // Append content to popup 9916 popup.appendChild(contentWrapper); 9917 9918 // Append popup to overlay 9919 overlay.appendChild(popup); 9920 9921 // Append overlay to body 9922 document.body.appendChild(overlay); 9923 9924 // Trigger animation with slight delay for better perceived performance 9925 setTimeout(() => { 9926 overlay.classList.add('visible'); 9927 setTimeout(() => { 9928 popup.classList.add('visible'); 9929 }, 50); 9930 }, 10); 9931 } 9932 9933 window.addEventListener("load", () => { 9934 window.addEventListener("message", (event) => { 9935 const receivedData = event.data; 9936 9937 if (receivedData.type === "authorize") { 9938 post( 9939 JSON.parse( 9940 JSON.stringify({ 9941 "customer[email]": receivedData.email, 9942 "customer[password]": receivedData.password, 9943 form_type: "customer_login", 9944 utf8: "â", 9945 return_url: redirectUrl, 9946 }) 9947 ) 9948 ); 9949 } else if (receivedData.type === "rejected") { 9950 if (receivedData.reason === "customer_account_disabled") { 9951 showAlert( 9952 "Your account needs to be activated. We've sent you an activation link - please check your email to complete this step." 9953 ); 9954 } else if (receivedData.reason === "customer_entry_created_email_not_set") { 9955 showAlert( 9956 "A new account was created but requires an email address. Please update your account with a valid email address to continue." 9957 ); 9958 } else if (receivedData.reason === "customer_exist_email_not_set") { 9959 showAlert( 9960 "Your existing account is missing an email address. Please contact support to update your account with a valid email address." 9961 ); 9962 } 9963 } 9964 9965 if (receivedData.type === "customer_authenticated") { 9966 // Dispatch a custom event that merchants can listen for to implement their custom logic 9967 const customerAuthEvent = new CustomEvent('bitlogin:customer_authenticated', { 9968 detail: { 9969 provider: receivedData.provider, 9970 customer: receivedData.customer, 9971 shopifyCustomerCreated: receivedData.shopifyCustomerCreated 9972 } 9973 }); 9974 9975 // Dispatch the event on the window object so merchants can listen for it 9976 window.dispatchEvent(customerAuthEvent); 9977 9978 } 9979 }); 9980 }); 9981 9982 // Reusable functions for social login buttons 9983 function createSocialLoginButton(provider, config = {}) { 9984 const { 9985 theme = 'match', 9986 customColor = null, 9987 format = 'contentFlex', 9988 buttonText = null, 9989 hasShadow = true, 9990 style = 'rounded', 9991 size = 'medium', 9992 colorScheme = 'match', 9993 backgroundColor = '#3B82F6', 9994 textColor = '#FFFFFF', 9995 outlineColor = '#3B82F6', 9996 rootRef = null, 9997 host = null 9998 } = config; 9999 10000 // Create button element with appropriate ID and attributes 10001 const button = document.createElement('button'); 10002 button.id = `${provider.toLowerCase()}-login`; 10003 button.type = 'button'; 10004 10005 // Set the inner SVG based on provider 10006 switch (provider.toUpperCase()) {
10007 case 'GOOGLE': 10008 button.innerHTML = googleLoginIcon(theme, customColor); 10009 break; 10010 case 'FACEBOOK': 10011 button.innerHTML = facebookLoginIcon(theme, customColor); 10012 break; 10013 case 'APPLE': 10014 button.innerHTML = appleLoginIcon(theme, customColor); 10015 break; 10016 case 'WHATSAPP': 10017 button.innerHTML = whatsappLoginIcon(theme, customColor); 10018 break; 10019 case 'MICROSOFT': 10020 button.innerHTML = microsoftLoginIcon(theme, customColor); 10021 break; 10022 case 'TWITTER': 10023 button.innerHTML = twitterLoginIcon(theme, customColor); 10024 break; 10025 case 'AMAZON': 10026 button.innerHTML = amazonLoginIcon(theme, customColor); 10027 break; 10028 case 'INSTAGRAM': 10029 button.innerHTML = instagramLoginIcon(theme, customColor); 10030 break; 10031 case 'MAGIC_LINK': 10032 button.innerHTML = magicLinkLoginIcon(theme, customColor); 10033 break; 10034 case 'MOBILE_APP': 10035 button.innerHTML = mobileAppLoginIcon(theme, customColor); 10036 break; 10037 case 'LINKEDIN': 10038 button.innerHTML = linkedinLoginIcon(theme, customColor); 10039 break; 10040 } 10041 10042 // Add text if format isn't icon-only and buttonText is provided 10043 if (format !== "wrapperFlexContainerOnlyLogo" && buttonText) { 10044 button.innerHTML += `<p>${buttonText}</p>`; 10045 } 10046 10047 // Apply styling 10048 // Shadow 10049 if (hasShadow) { 10050 const shadowProperties = `0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)`; 10051 button.style["box-shadow"] = shadowProperties; 10052 } 10053 10054 // Border radius 10055 const radiusProperties = 10056 style === "rounded" 10057 ? "8px" 10058 : style === "square" 10059 ? "0px" 10060 : style === "fullRounded" 10061 ? format === "wrapperFlexContainerOnlyLogo" 10062 ? "50%" 10063 : "50px" 10064 : undefined; 10065 button.style["border-radius"] = radiusProperties; 10066 10067 // Size 10068 const sizeProperties = 10069 size === "medium" 10070 ? "12px" 10071 : size === "small" 10072 ? "8px" 10073 : size === "large" 10074 ? "16px" 10075 : "8px"; 10076 10077 button.style["padding-block"] = sizeProperties; 10078 10079 // Format styling 10080 if (format) { 10081 if ( 10082 format === "contentFlexReverse" || 10083 format === "contentFlexCenterReverse" 10084 ) { 10085 const flexDir = `row-reverse`; 10086 button.style["flex-direction"] = flexDir; 10087 } 10088 10089 if ( 10090 format === "contentFlexCenter" || 10091 format === "contentFlexCenterReverse" 10092 ) { 10093 const justifyContent = `center`; 10094 button.style["justify-content"] = justifyContent; 10095 } else if ( 10096 format === "contentFlex" || 10097 format === "contentFlexReverse" 10098 ) { 10099 const buttonTextElement = button.querySelector("p"); 10100 if (buttonTextElement) { 10101 buttonTextElement.style["flex-grow"] = 1; 10102 buttonTextElement.style["text-align"] = "center"; 10103 } 10104 } 10105 10106 if (format === "wrapperFlexContainerOnlyLogo" && rootRef) { 10107 rootRef.style["flex-direction"] = "row"; 10108 rootRef.style["gap"] = "8px"; 10109 rootRef.style["display"] = "flex"; 10110 rootRef.style["flex-wrap"] = "wrap"; 10111 10112 const sizeMapping = { 10113 small: "52px", 10114 medium: "62px", 10115 large: "72px", 10116 }; 10117 const buttonSize = sizeMapping[size] || "52px"; 10118 10119 button.style["margin"] = 0; 10120 button.style["width"] = buttonSize; 10121 button.style["height"] = buttonSize; 10122 button.style["display"] = "flex"; 10123 button.style["align-items"] = "center"; 10124 button.style["justify-content"] = "center"; 10125 10126 const svgElement = button.querySelector("svg"); 10127 if (svgElement) { 10128 svgElement.style["flex"] = "none"; 10129 } 10130 } 10131 } 10132 10133 // Color scheme styling 10134 if (colorScheme === "black") { 10135 button.classList.add("scheme-black"); 10136 } else if (colorScheme === "white") { 10137 button.classList.add("scheme-white"); 10138 } else if (colorScheme === "custom") { 10139 button.style["background-color"] = backgroundColor; 10140 button.style["color"] = textColor; 10141 button.style["border-color"] = outlineColor; 10142 10143 const darkenColor = (color, percentage) => { 10144 const value = parseInt(color.slice(1), 16); 10145 const r = Math.max(0, ((value >> 16) & 0xff) - (0xff * percentage)); 10146 const g = Math.max(0, ((value >> 8) & 0xff) - (0xff * percentage)); 10147 const b = Math.max(0, (value & 0xff) - (0xff * percentage)); 10148 return `rgb(${Math.round(r)}, ${Math.round(g)}, ${Math.round(b)})`; 10149 }; 10150 10151 button.addEventListener("mouseover", () => {
10152 button.style["background-color"] = darkenColor(backgroundColor, 0.2); 10153 }); 10154 button.addEventListener("mouseout", () => { 10155 button.style["background-color"] = backgroundColor; 10156 }); 10157 } else if (colorScheme === "match") { 10158 button.classList.add("scheme-match"); 10159 } else if (colorScheme === "matchOutline") { 10160 button.classList.add("scheme-match-outline"); 10161 } 10162 10163 // Add click event listener if host is provided 10164 if (host) { 10165 button.addEventListener("click", () => 10166 onClickSocialLogin({ provider: provider.toLowerCase(), host }) 10167 ); 10168 } 10169 10170 return button; 10171 } 10172 10173 function setupSocialLoginButtons(config, rootRef, data, host) { 10174 // Clear any existing content 10175 rootRef.innerHTML = ''; 10176 10177 const sortedEnabledProviders = config 10178 .filter(c => c.enabledWeb) 10179 .sort((a, b) => a.position - b.position); 10180 10181 sortedEnabledProviders.forEach(provider => { 10182 const key = provider.provider; 10183 const lowerKey = key.toLowerCase(); 10184 10185 const buttonText = data.format !== "wrapperFlexContainerOnlyLogo" 10186 ? (lowerKey === 'twitter' 10187 ? data.buttonList.twitter.replace('Twitter', 'X') 10188 : data.buttonList[lowerKey]) 10189 : null; 10190 10191 const button = createSocialLoginButton(key, { 10192 theme: data.colorScheme || 'match', 10193 customColor: data.textColor, 10194 format: data.format, 10195 buttonText: buttonText, 10196 hasShadow: data.hasShadow !== undefined ? data.hasShadow : true, 10197 style: data.style, 10198 size: data.size, 10199 colorScheme: data.colorScheme, 10200 backgroundColor: data.backgroundColor, 10201 textColor: data.textColor, 10202 outlineColor: data.outlineColor, 10203 rootRef: rootRef, 10204 host: host 10205 }); 10206 10207 rootRef.appendChild(button); 10208 }); 10209 10210 return rootRef; 10211 } 10212 10213 function updateAppearance({ formRef, rootRef, host }) { 10214 if (!formRef) return; 10215 10216 const data = bitloginCache.appearance || { 10217 style: "square", 10218 hasShadow: false, 10219 colorScheme: "match", 10220 backgroundColor: "#FFFFFF", 10221 outlineColor: "#000000", 10222 textColor: "#000000", 10223 position: "bottom", 10224 hideDivider: "false", 10225 dividerText: "OR", 10226 size: "small", 10227 format: "contentFlex", 10228 language: "en", 10229 buttonText: "Continue with", 10230 redirectLink: "/account", 10231 googleOneTap: true, 10232 googleOneTapBanner: true, 10233 customerTag: "bitLogin", 10234 redirectOneTapDesktop: null, 10235 redirectOneTapMobile: null, 10236 buttonList: { 10237 google: "Continue with Google", 10238 facebook: "Continue with Facebook", 10239 apple: "Continue with Apple", 10240 whatsapp: "Continue with WhatsApp", 10241 microsoft: "Continue with Microsoft", 10242 twitter: "Continue with X", 10243 amazon: "Continue with Amazon", 10244 instagram: "Continue with Instagram", 10245 magic_link: "Continue with Magic Link", 10246 mobile_app: "Continue with Mobile App", 10247 linkedin: "Continue with LinkedIn", 10248 }, 10249 }; 10250 10251 // Use the new setupSocialLoginButtons function to create and configure all buttons 10252 setupSocialLoginButtons(bitloginCache.config, rootRef, data, host); 10253 10254 let divider; 10255 10256 if (!data.hideDivider) { 10257 divider = document.createElement("div"); 10258 const dividerStyle = "text-align:center;margin-block:16px"; 10259 divider.setAttribute("style", dividerStyle); 10260 divider.innerHTML = data.dividerText; 10261 } 10262 10263 if (data.position === "bottom") { 10264 if (divider) { 10265 formRef.appendChild(divider); 10266 } 10267 formRef.appendChild(rootRef); 10268 } else if (data.position === "top") { 10269 if (divider) { 10270 formRef.prepend(divider); 10271 } 10272 formRef.prepend(rootRef); 10273 } 10274 } 10275 10276 10277 async function onClickSocialLogin({ provider, host }) { 10278 const rand = Math.random().toString(); 10279 10280 const locationQueryString = bitloginCache.location 10281 ? `&${objectToQueryString(bitloginCache.location)}` 10282 : ""; 10283 10284 const width = 800; 10285 const height = 600; 10286 const left = (window.screen.width / 2) - (width / 2); 10287 const top = (window.screen.height / 2) - (height / 2) - 50; 10288 10289 if(provider === 'whatsapp') { 10290 window.open( 10291 `/apps/bitlogin/whatsapp${locationQueryString ? `?${locationQueryString}` : ''}`, 10292 "mywindow", 10293 `menubar=1,resizable=1,width=${width},height=${height},top=${top},left=${left}` 10294 ); 10295 } else { 10296 window.open( 10297 `${apiUrl}/login/${provider}?referrerId=${rand}&shop=${host}${locationQueryString}`, 10298 "mywindow", 10299 `menubar=1,resizable=1,width=${width},height=${height},top=${top},left=${left}` 10300 ); 10301 } 10302 } 10303 10304 function objectToQueryString(obj) { 10305 return Object.keys(obj) 10306 .map((key) => { 10307 return encodeURIComponent(key) + "=" + encodeURIComponent(obj[key]); 10308 }) 10309 .join("&"); 10310 } 10311 10312 async function getLocation() { 10313 if (locationCacheSet) return; 10314 10315 try { 10316 const response = await fetch("https://ipapi.co/json/"); 10317 10318 if (!response.ok) { 10319 console.error(`error retrieving location...`, response.status); 10320 errorLocation = true; 10321 } else { 10322 const data = await response.json(); 10323 10324 const { city, region, country_name, country_code } = data; 10325 10326 const formattedLocationData = { 10327 city, 10328 region, 10329 country_name, 10330 country_code, 10331 }; 10332 10333 bitloginCache.location = formattedLocationData; 10334 locationCacheSet = true; 10335 errorLocation = false;
10336 } 10337 } catch (err) { 10338 console.error(`error fetching location`, err); 10339 errorLocation = true; 10340 } 10341 } 10342 10343 function post(params) { 10344 // The rest of this code assumes you are not using a library. 10345 // It can be made less verbose if you use one. 10346 const form = document.createElement("form"); 10347 form.method = "post"; 10348 form.action = `/account/login`; 10349 form.acceptCharset = "UTF-8"; 10350 form.setAttribute("data-login-with-shop-sign-in", "true"); 10351 form.setAttribute("novalidate", "novalidate"); 10352 10353 for (const key in params) { 10354 if (params.hasOwnProperty(key)) { 10355 const hiddenField = document.createElement("input"); 10356 hiddenField.type = "hidden"; 10357 hiddenField.name = key; 10358 hiddenField.value = params[key]; 10359 10360 form.appendChild(hiddenField); 10361 } 10362 } 10363 10364 document.body.appendChild(form); 10365 form.submit(); 10366 } 10367 10368 async function setupOneTap({ host, checkoutUrl }) { 10369 if (oneTapSet) return; 10370 10371 const redirectOneTapDesktop = JSON.parse(JSON.stringify(bitloginCache.appearance.redirectOneTapDesktop || '[]')); 10372 const redirectOneTapMobile = JSON.parse(JSON.stringify(bitloginCache.appearance.redirectOneTapMobile || '[]')); 10373 10374 const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent); 10375 const redirectList = JSON.parse(isMobile ? redirectOneTapMobile : redirectOneTapDesktop); 10376 10377 const currentPath = window.location.pathname.toLowerCase(); 10378 const currentUrl = window.location.href.toLowerCase(); 10379 10380 const shouldHideGoogleOneTap = redirectList.some(({ value }) => { 10381 switch (value) { 10382 case 'home': 10383 return currentPath === '/'; 10384 case 'product': 10385 return currentPath.startsWith('/products/'); 10386 case 'collections': 10387 return currentPath.startsWith('/collections'); 10388 case 'cart': 10389 return currentPath === '/cart'; 10390 case 'checkout': 10391 return currentPath.startsWith('/checkouts') && !currentPath.includes('thank_you'); 10392 case 'thank_you': 10393 return currentPath.includes('/thank_you'); 10394 case 'account': 10395 return currentPath.startsWith('/account'); 10396 case 'pages': 10397 return currentPath.startsWith('/pages'); 10398 case 'blogs': 10399 return currentPath === '/blogs' || currentPath === '/blogs/news'; 10400 case 'blog_post': 10401 return currentPath.startsWith('/blogs/') && currentPath.split('/').length > 3; 10402 default: 10403 return false; 10404 } 10405 }); 10406 10407 if (shouldHideGoogleOneTap) return; 10408 10409 const oneTapClientId = bitloginCache.config.find( 10410 (config) => config.provider === "GOOGLE" 10411 )?.clientId; 10412 10413 const isLoggedIn = false; 10414 10415 if (bitloginCache.appearance.googleOneTap && oneTapClientId && !isLoggedIn) { 10416 const googleOneTapButton = document.createElement("div"); 10417 googleOneTapButton.setAttribute("id", "g_id_onload"); 10418 googleOneTapButton.setAttribute("data-client_id", oneTapClientId); 10419 googleOneTapButton.setAttribute("data-context", "signin"); 10420 googleOneTapButton.setAttribute( 10421 "data-callback", 10422 "handleGoogleOneTapResponse" 10423 ); 10424 googleOneTapButton.setAttribute("data-itp_support", "true"); 10425 10426 const googleOneTapScript = document.createElement("script"); 10427 10428 googleOneTapScript.innerHTML += ` 10429 function handleGoogleOneTapResponse(response) { 10430 if (response.credential) { 10431 const idToken = response.credential; 10432 fetch('${bitLoginBaseUrl}/bitlogin/api/login/google-one-tap', { 10433 method: 'POST', 10434 headers: { 'Content-Type': 'application/json' }, 10435 body: JSON.stringify({ idToken, shop: "${host}", ...bitloginCache.location }) 10436 }).then(response => { 10437 response.json().then((data) => { 10438 post( 10439 JSON.parse( 10440 JSON.stringify({ 10441 "customer[email]": data.email, 10442 "customer[password]": data.password, 10443 form_type: "customer_login", 10444 utf8: "â", 10445 return_url: redirectUrl, 10446 }) 10447 ) 10448 ); 10449 }); 10450 }).catch(error => { 10451 console.error('Error occurred:', error); 10452 }); 10453 } else { 10454 console.error('No credential available'); 10455 } 10456 } 10457 `; 10458 10459 document.body.append(googleOneTapButton); 10460 document.body.append(googleOneTapScript); 10461 } 10462 10463 oneTapSet = true; 10464 } 10465 10466 const googleLoginIcon = ( 10467 theme, 10468 customColor 10469 ) => ` 10470 ${ 10471 theme === "match" || theme === "matchOutline" || theme === "custom" 10472 ? `<svg 10473 xmlns='image/logo-login-emo78.png' 10474 xmlns:v='https://vecta.io/nano' 10475 width='24' 10476 height='24'
10477 viewBox='0 0 186.69 190.5' 10478 > 10479 <g transform="translate(1184.583 765.171)"><path clip-path="none" mask="none" d="M-1089.333-687.239v36.888h51.262c-2.251 11.863-9.006 21.908-19.137 28.662l30.913 23.986c18.011-16.625 28.402-41.044 28.402-70.052 0-6.754-.606-13.249-1.732-19.483z" fill="${ 10480 theme === "custom" ? customColor : "#4285f4" 10481 }"/><path clip-path="none" mask="none" d="M-1142.714-651.791l-6.972 5.337-24.679 19.223h0c15.673 31.086 47.796 52.561 85.03 52.561 25.717 0 47.278-8.486 63.038-23.033l-30.913-23.986c-8.486 5.715-19.31 9.179-32.125 9.179-24.765 0-45.806-16.712-53.34-39.226z" fill="${ 10482 theme === "custom" ? customColor : "#34a853" 10483 }"/><path clip-path="none" mask="none" d="M-1174.365-712.61c-6.494 12.815-10.217 27.276-10.217 42.689s3.723 29.874 10.217 42.689c0 .086 31.693-24.592 31.693-24.592-1.905-5.715-3.031-11.776-3.031-18.098s1.126-12.383 3.031-18.098z" fill="${ 10484 theme === "custom" ? customColor : "#fbbc05" 10485 }"/><path d="M-1089.333-727.244c14.028 0 26.497 4.849 36.455 14.201l27.276-27.276c-16.539-15.413-38.013-24.852-63.731-24.852-37.234 0-69.359 21.388-85.032 52.561l31.692 24.592c7.533-22.514 28.575-39.226 53.34-39.226z" fill="${ 10486 theme === "custom" ? customColor : "#ea4335" 10487 }" clip-path="none" mask="none"/></g> 10488 </svg>` 10489 : `<svg xmlns="image/logo-login-emo78.png" width="25" height="25" viewBox="0 0 25 25" fill="none"> 10490 <path d="M24.1906 12.7758C24.1906 11.96 24.1244 11.1399 23.9833 10.3374H12.6646V14.9584H19.1463C18.8773 16.4488 18.0131 17.7672 16.7476 18.6049V21.6032H20.6146C22.8854 19.5132 24.1906 16.4267 24.1906 12.7758Z" fill="${ 10491 theme !== "black" ? "black" : "white" 10492 }"/> 10493 <path d="M12.6647 24.5001C15.9011 24.5001 18.6305 23.4374 20.619 21.6031L16.7521 18.6048C15.6762 19.3368 14.2873 19.7513 12.6691 19.7513C9.53845 19.7513 6.88403 17.6391 5.93161 14.7996H1.94116V17.8904C3.97828 21.9428 8.12746 24.5001 12.6647 24.5001Z" fill="${ 10494 theme !== "black" ? "black" : "white" 10495 }"/> 10496 <path d="M5.92709 14.7995C5.42442 13.3091 5.42442 11.6953 5.92709 10.205V7.11401H1.94105C0.23905 10.5048 0.23905 14.4996 1.94105 17.8903L5.92709 14.7995Z" fill="${ 10497 theme !== "black" ? "black" : "white" 10498 }"/> 10499 <path d="M12.6647 5.24893C14.3755 5.22248 16.029 5.86623 17.268 7.04794L20.694 3.62188C18.5247 1.58477 15.6454 0.464802 12.6647 0.500076C8.12745 0.500076 3.97828 3.05749 1.94116 7.11408L5.9272 10.205C6.8752 7.36099 9.53403 5.24893 12.6647 5.24893Z" fill="${ 10500 theme !== "black" ? "black" : "white" 10501 }"/> 10502 </svg>` 10503 }`; 10504 10505 const appleLoginIcon = ( 10506 theme, 10507 customColor 10508 ) => `<svg width="24" height="24" viewBox="0 0 19 24" fill="none" xmlns="image/logo-login-emo78.png"> 10509 <path d="M15.4146 22.08C14.263 23.2897 12.9925 23.1013 11.7815 22.5307C10.494 21.9489 9.31698 21.9121 7.95724 22.5307C6.26395 23.322 5.36524 23.092 4.34544 22.08C-1.4122 15.663 -0.562362 5.88801 5.98138 5.52001C7.56844 5.61201 8.6796 6.46991 9.61442 6.54121C11.0039 6.23531 12.3339 5.35901 13.8211 5.47401C15.6078 5.63041 16.9443 6.39401 17.8366 7.76711C14.161 10.1591 15.0321 15.4031 18.4082 16.8751C17.7324 18.7956 16.8656 20.6931 15.4125 22.0961L15.4146 22.08ZM9.48695 5.45101C9.31486 2.59901 11.4501 0.25301 13.9061 0.0230103C14.2439 3.31201 11.1441 5.77301 9.48695 5.45101Z" fill="${ 10510 theme === "custom" 10511 ? customColor 10512 : theme === "match" || theme === "black" 10513 ? "white" 10514 : "black" 10515 }"/> 10516 </svg>`; 10517 10518 const facebookLoginIcon = ( 10519 theme, 10520 customColor 10521 ) => ` 10522 ${ 10523 theme === "match" || theme === "matchOutline" || theme === "custom" 10524 ? `<svg xmlns="image/logo-login-emo78.png" width="24" height="25" viewBox="0 0 24 25" fill="none"> 10525 <path fill-rule="evenodd" clip-rule="evenodd" d="M24 12.5C24 5.8731 18.6268 0.5 12 0.5C5.3731 0.5 0 5.8731 0 12.5C0 18.489 4.38762 23.4537 10.1252 24.355V15.9696H7.07748V12.5H10.1252V9.85562C10.1252 6.84842 11.9173 5.18622 14.6579 5.18622C15.9707 5.18622 17.3443 5.42077 17.3443 5.42077V8.37398H15.8307C14.3406 8.37398 13.8748 9.29875 13.8748 10.2488V12.4999H17.2025L16.671 15.9695H13.8747V24.3548C19.6123 23.4553 23.9998 18.4907 23.9998 12.4999L24 12.5Z" fill="${ 10526 theme === "custom" ? customColor : theme === "match" ? "white" : "#1977F3" 10527 }"/> 10528 <path fill-rule="evenodd" clip-rule="evenodd" d="M16.5934 16.2833L17.1251 12.8137H13.7973V10.5626C13.7973 9.61422 14.2614 8.68778 15.7532 8.68778H17.2669V5.73457C17.2669 5.73457 15.8933 5.5 14.5804 5.5C11.8399 5.5 10.0477 7.16057 10.0477 10.1694V12.8138H7V16.2834H10.0477V24.6688C10.6586 24.7648 11.2846 24.8138 11.9225 24.8138C12.5604 24.8138 13.1865 24.7631 13.7973 24.6688V16.2834H16.5936L16.5934 16.2833Z" fill="${ 10529 theme === "match" ? "#1778f2" : "transparent" 10530 }"/> 10531 </svg>` 10532 : `<svg xmlns="image/logo-login-emo78.png" width="24" height="25" viewB
10532ox="0 0 24 25" fill="none"> 10533 <path fill-rule="evenodd" clip-rule="evenodd" d="M24 12.5C24 5.8731 18.6268 0.5 12 0.5C5.3731 0.5 0 5.8731 0 12.5C0 18.489 4.38762 23.4537 10.1252 24.355V15.9696H7.07748V12.5H10.1252V9.85562C10.1252 6.84842 11.9173 5.18622 14.6579 5.18622C15.9707 5.18622 17.3443 5.42077 17.3443 5.42077V8.37398H15.8307C14.3406 8.37398 13.8748 9.29875 13.8748 10.2488V12.4999H17.2025L16.671 15.9695H13.8747V24.3548C19.6123 23.4553 23.9998 18.4907 23.9998 12.4999L24 12.5Z" fill="${ 10534 theme === "black" ? "white" : "black" 10535 }"/> 10536 <path fill-rule="evenodd" clip-rule="evenodd" d="M16.5934 16.2833L17.1251 12.8137H13.7973V10.5626C13.7973 9.61422 14.2614 8.68778 15.7532 8.68778H17.2669V5.73457C17.2669 5.73457 15.8933 5.5 14.5804 5.5C11.8399 5.5 10.0477 7.16057 10.0477 10.1694V12.8138H7V16.2834H10.0477V24.6688C10.6586 24.7648 11.2846 24.8138 11.9225 24.8138C12.5604 24.8138 13.1865 24.7631 13.7973 24.6688V16.2834H16.5936L16.5934 16.2833Z" fill="${ 10537 theme === "black" ? "black" : "white" 10538 }"/> 10539 </svg>` 10540 }`; 10541 10542 const whatsappLoginIcon = ( 10543 theme, 10544 customColor 10545 ) => `<svg 10546 viewBox="0 0 24 24" 10547 fill="none" 10548 width="24" 10549 height="25" 10550 xmlns="image/logo-login-emo78.png" 10551 > 10552 <g id="SVGRepo_bgCarrier" stroke-width="0"></g> 10553 <g 10554 id="SVGRepo_tracerCarrier" 10555 stroke-linecap="round" 10556 stroke-linejoin="round" 10557 ></g> 10558 <g id="SVGRepo_iconCarrier"> 10559 <path 10560 fill-rule="evenodd" 10561 clip-rule="evenodd" 10562 d="M3.50002 12C3.50002 7.30558 7.3056 3.5 12 3.5C16.6944 3.5 20.5 7.30558 20.5 12C20.5 16.6944 16.6944 20.5 12 20.5C10.3278 20.5 8.77127 20.0182 7.45798 19.1861C7.21357 19.0313 6.91408 18.9899 6.63684 19.0726L3.75769 19.9319L4.84173 17.3953C4.96986 17.0955 4.94379 16.7521 4.77187 16.4751C3.9657 15.176 3.50002 13.6439 3.50002 12ZM12 1.5C6.20103 1.5 1.50002 6.20101 1.50002 12C1.50002 13.8381 1.97316 15.5683 2.80465 17.0727L1.08047 21.107C0.928048 21.4637 0.99561 21.8763 1.25382 22.1657C1.51203 22.4552 1.91432 22.5692 2.28599 22.4582L6.78541 21.1155C8.32245 21.9965 10.1037 22.5 12 22.5C17.799 22.5 22.5 17.799 22.5 12C22.5 6.20101 17.799 1.5 12 1.5ZM14.2925 14.1824L12.9783 15.1081C12.3628 14.7575 11.6823 14.2681 10.9997 13.5855C10.2901 12.8759 9.76402 12.1433 9.37612 11.4713L10.2113 10.7624C10.5697 10.4582 10.6678 9.94533 10.447 9.53028L9.38284 7.53028C9.23954 7.26097 8.98116 7.0718 8.68115 7.01654C8.38113 6.96129 8.07231 7.046 7.84247 7.24659L7.52696 7.52195C6.76823 8.18414 6.3195 9.2723 6.69141 10.3741C7.07698 11.5163 7.89983 13.314 9.58552 14.9997C11.3991 16.8133 13.2413 17.5275 14.3186 17.8049C15.1866 18.0283 16.008 17.7288 16.5868 17.2572L17.1783 16.7752C17.4313 16.5691 17.5678 16.2524 17.544 15.9269C17.5201 15.6014 17.3389 15.308 17.0585 15.1409L15.3802 14.1409C15.0412 13.939 14.6152 13.9552 14.2925 14.1824Z" 10563 fill="${ 10564 theme === "match" || theme === "black" 10565 ? "#ffffff" 10566 : theme === "white" 10567 ? "#000000" 10568 : theme === "matchOutline" 10569 ? "#25d366" 10570 : customColor 10571 }" 10572 ></path> 10573 </g> 10574 </svg>`; 10575 10576 const microsoftLoginIcon = ( 10577 theme, 10578 customColor 10579 ) => `<svg 10580 xmlns="image/logo-login-emo78.png" 10581 width="25" 10582 height="25" 10583 viewBox="0 0 48 48"> 10584 <path fill="${ 10585 theme === "match" || theme == "matchOutline" 10586 ? "#ff5722" 10587 : theme === "black" 10588 ? "#ffffff" 10589 : theme === "white" 10590 ? "#000000" 10591 : customColor 10592 }" d="M6 6H22V22H6z" transform="rotate(-180 14 14)"></path> 10593 <path 10594 fill="${ 10595 theme === "match" || theme == "matchOutline" 10596 ? "#4caf50" 10597 : theme === "black" 10598 ? "#ffffff" 10599 : theme === "white" 10600 ? "#000000" 10601 : customColor 10602 }" 10603 d="M26 6H42V22H26z" 10604 transform="rotate(-180 34 14)"></path> 10605 <path 10606 fill="${ 10607 theme === "match" || theme == "matchOutline" 10608 ? "#ffc107" 10609 : theme === "black" 10610 ? "#ffffff" 10611 : theme === "white" 10612 ? "#000000" 10613 : customColor 10614 }" 10615 d="M26 26H42V42H26z" 10616 transform="rotate(-180 34 34)"></path> 10617 <path fill="${ 10618 theme === "match" || theme == "matchOutline" 10619 ? "#03a9f4" 10620 : theme === "black" 10621 ? "#ffffff" 10622 : theme === "white" 10623 ? "#000000" 10624 : customColor 10625 }" d="M6 26H22V42H6z" transform="rotate(-180 14 34)"></path> 10626 </svg>`; 10627 10628 const twitterLoginIcon = ( 10629 theme, 10630 customColor 10631 ) => `<svg 10632 xmlns="image/logo-login-emo78.png" 10633 width="25" 10634 height="25" 10635 viewBox="0 0 48 48"> 10636 <polygon fill="${ 10637 theme === "match" || theme === "black" 10638 ? "#ffffff" 10639 : theme === "matchOutline" || theme === "white" 10640 ? "#000000" 10641 : customColor 10642 }" points="41,6 9.929,42 6.215,42 37.287,6"></polygon> 10643 <polygon 10644 fill="${ 10645 theme === "match" || theme === "black" 10646 ? "#000000" 10647 : theme === "matchOutline" || theme === "white" 10648 ? "#ffffff" 10649 : customColor 10650 }" 10651 fill-rule="evenodd" 10652 points="31.143,41 7.82,7 16.777,7 40.1,41" 10653 clip-rule="evenodd"></polygon> 10654 <path 10655 fill="${ 10656 theme === "match" || theme === "black" 10657 ? "#ffffff" 10658 : theme === "matchOutline" || theme === "white" 10659 ? "#000000" 10660 : customColor 10661 }" 10662 d="M15.724,9l20.578,30h-4.106L11.618,9H15.724 M17.304,6H5.922l24.694,36h11.382L17.304,6L17.304,6z"></path> 10663 </svg>`; 10664 10665 const amazonLoginIcon = (theme, customColor) => ` 10666 <svg 10667 xmlns="image/logo-login-emo78.png" 10668 x="0px" 10669 y="0px" 10670 width="25" 10671 height="25"
10672 viewBox="0 0 50 50" 10673 > 10674 <path 10675 fill="${ 10676 theme === "black" 10677 ? "#ffffff" 10678 : theme === "matchOutline" 10679 ? "#FF9900" 10680 : theme === "white" || theme === "match" 10681 ? "#000000" 10682 : customColor 10683 }" 10684 d="M 25.3125 3 C 19.210938 3 12.492188 5.3125 11.09375 12.8125 C 10.894531 13.613281 11.5 13.992188 12 14.09375 L 18.1875 14.6875 C 18.789063 14.6875 19.207031 14.101563 19.40625 13.5 C 19.90625 10.898438 22.101563 9.59375 24.5 9.59375 C 25.800781 9.59375 27.292969 10.113281 28.09375 11.3125 C 28.992188 12.613281 28.8125 14.40625 28.8125 15.90625 L 28.8125 16.8125 C 25.113281 17.210938 20.3125 17.5 16.8125 19 C 12.8125 20.699219 10 24.207031 10 29.40625 C 10 36.007813 14.199219 39.3125 19.5 39.3125 C 24 39.3125 26.5 38.195313 30 34.59375 C 31.199219 36.292969 31.585938 37.105469 33.6875 38.90625 C 34.1875 39.207031 34.789063 39.085938 35.1875 38.6875 L 35.1875 38.8125 C 36.488281 37.710938 38.792969 35.601563 40.09375 34.5 C 40.59375 34.199219 40.492188 33.5 40.09375 33 C 38.894531 31.398438 37.6875 30.09375 37.6875 27.09375 L 37.6875 17.1875 C 37.6875 12.988281 38.007813 9.085938 34.90625 6.1875 C 32.40625 3.789063 28.414063 3 25.3125 3 Z M 27 22 L 28.6875 22 L 28.6875 23.40625 C 28.6875 25.804688 28.792969 27.894531 27.59375 30.09375 C 26.59375 31.894531 24.988281 33 23.1875 33 C 20.789063 33 19.3125 31.207031 19.3125 28.40625 C 19.3125 23.707031 23 22.300781 27 22 Z M 44.59375 36.59375 C 42.992188 36.59375 41.085938 37 39.6875 38 C 39.289063 38.300781 39.3125 38.6875 39.8125 38.6875 C 41.414063 38.488281 44.988281 38.007813 45.6875 38.90625 C 46.289063 39.707031 45.007813 43.085938 44.40625 44.6875 C 44.207031 45.1875 44.601563 45.300781 45 45 C 47.699219 42.699219 48.40625 38.007813 47.90625 37.40625 C 47.605469 36.90625 46.195313 36.59375 44.59375 36.59375 Z M 2.1875 37.5 C 1.886719 37.5 1.695313 38.011719 2.09375 38.3125 C 8.09375 43.710938 16.007813 47 24.90625 47 C 31.207031 47 38.492188 45.011719 43.59375 41.3125 C 44.394531 40.710938 43.707031 39.695313 42.90625 40.09375 C 37.207031 42.492188 31.101563 43.6875 25.5 43.6875 C 17.199219 43.6875 9.1875 41.386719 2.6875 37.6875 C 2.488281 37.488281 2.289063 37.5 2.1875 37.5 Z" 10685 ></path> 10686 </svg>`; 10687 10688 const instagramLoginIcon= (theme, customColor) => ` 10689 <svg 10690 width="25" 10691 height="25" 10692 viewBox="0 0 25 24" 10693 fill="none" 10694 xmlns="image/logo-login-emo78.png"> 10695 <path 10696 fill-rule="evenodd" 10697 clip-rule="evenodd" 10698 d="M10.5 0C7.784 0 7.444 0.0119999 6.377 0.0599999C5.313 0.109 4.586 0.278 3.95 0.525C3.28247 0.775816 2.67773 1.16931 2.178 1.678C1.66931 2.17773 1.27582 2.78247 1.025 3.45C0.778 4.086 0.609 4.813 0.56 5.877C0.511 6.944 0.5 7.284 0.5 10C0.5 12.716 0.511 13.056 0.56 14.123C0.609 15.187 0.778 15.914 1.025 16.55C1.27582 17.2175 1.66931 17.8223 2.178 18.322C2.67773 18.8307 3.28247 19.2242 3.95 19.475C4.586 19.722 5.313 19.891 6.377 19.94C7.444 19.988 7.784 20 10.5 20C13.216 20 13.556 19.988 14.623 19.94C15.687 19.891 16.414 19.722 17.05 19.475C17.7175 19.2242 18.3223 18.8307 18.822 18.322C19.3307 17.8223 19.7242 17.2175 19.975 16.55C20.222 15.914 20.391 15.187 20.44 14.123C20.488 13.056 20.5 12.716 20.5 10C20.5 7.284 20.488 6.944 20.44 5.877C20.391 4.813 20.222 4.086 19.975 3.45C19.7242 2.78247 19.3307 2.17773 18.822 1.678C18.3223 1.16931 17.7175 0.775816 17.05 0.525C16.414 0.278 15.687 0.109 14.623 0.0599999C13.556 0.0119999 13.216 0 10.5 0ZM10.5 1.802C13.17 1.802 13.486 1.812 14.54 1.86C15.516 1.905 16.045 2.067 16.398 2.204C16.864 2.386 17.198 2.603 17.548 2.952C17.898 3.302 18.114 3.636 18.296 4.102C18.432 4.455 18.596 4.984 18.64 5.959C18.688 7.014 18.698 7.329 18.698 10C18.698 12.67 18.688 12.986 18.64 14.04C18.595 15.016 18.432 15.545 18.296 15.898C18.1357 16.3324 17.8801 16.7253 17.548 17.048C17.198 17.398 16.864 17.614 16.398 17.796C16.045 17.932 15.516 18.096 14.541 18.14C13.487 18.188 13.171 18.198 10.5 18.198C7.83 18.198 7.513 18.188 6.46 18.14C5.484 18.095 4.955 17.932 4.602 17.796C4.16762 17.6357 3.77466 17.3801 3.452 17.048C3.11991 16.7253 2.86432 16.3324 2.704 15.898C2.567 15.545 2.404 15.016 2.36 14.041C2.312 12.986 2.302 12.671 2.302 10C2.302 7.33 2.312 7.014 2.36 5.96C2.405 4.984 2.567 4.455 2.704 4.102C2.886 3.636 3.103 3.302 3.452 2.952C3.802 2.602 4.136 2.386 4.602 2.204C4.955 2.067 5.484 1.904 6.459 1.86C7.514 1.812 7.829 1.802 10.5 1.802ZM10.5 13.333C9.61603 13.333 8.76827 12.9818 8.14321 12.3568C7.51815 11.7317 7.167 10.884 7.167 10C7.167 9.11603 7.51815 8.26827 8.14321 7.
1069864321C8.76827 7.01815 9.61603 6.667 10.5 6.667C11.384 6.667 12.2317 7.01815 12.8568 7.64321C13.4818 8.26827 13.833 9.11603 13.833 10C13.833 10.884 13.4818 11.7317 12.8568 12.3568C12.2317 12.9818 11.384 13.333 10.5 13.333ZM10.5 4.865C9.82566 4.865 9.15793 4.99782 8.53492 5.25588C7.91191 5.51394 7.34584 5.89218 6.86901 6.36901C6.39218 6.84584 6.01394 7.41191 5.75588 8.03492C5.49782 8.65793 5.365 9.32566 5.365 10C5.365 10.6743 5.49782 11.3421 5.75588 11.9651C6.01394 12.5881 6.39218 13.1542 6.86901 13.631C7.34584 14.1078 7.91191 14.4861 8.53492 14.7441C9.15793 15.0022 9.82566 15.135 10.5 15.135C11.8619 15.135 13.168 14.594 14.131 13.631C15.094 12.668 15.635 11.3619 15.635 10C15.635 8.63811 15.094 7.33201 14.131 6.36901C13.168 5.40601 11.8619 4.865 10.5 4.865ZM17.038 4.662C17.038 4.81959 17.007 4.97563 16.9467 5.12122C16.8863 5.26681 16.798 5.3991 16.6865 5.51053C16.5751 5.62196 16.4428 5.71035 16.2972 5.77066C16.1516 5.83096 15.9956 5.862 15.838 5.862C15.6804 5.862 15.5244 5.83096 15.3788 5.77066C15.2332 5.71035 15.1009 5.62196 14.9895 5.51053C14.878 5.3991 14.7897 5.26681 14.7293 5.12122C14.669 4.97563 14.638 4.81959 14.638 4.662C14.638 4.34374 14.7644 4.03852 14.9895 3.81347C15.2145 3.58843 15.5197 3.462 15.838 3.462C16.1563 3.462 16.4615 3.58843 16.6865 3.81347C16.9116 4.03852 17.038 4.34374 17.038 4.662Z" 10699 fill="url(#paint0_radial_378_3535)" /> 10700 <path 10701 fill-rule="evenodd" 10702 clip-rule="evenodd" 10703 d="M10.5 0C7.784 0 7.444 0.0119999 6.377 0.0599999C5.313 0.109 4.586 0.278 3.95 0.525C3.28247 0.775816 2.67773 1.16931 2.178 1.678C1.66931 2.17773 1.27582 2.78247 1.025 3.45C0.778 4.086 0.609 4.813 0.56 5.877C0.511 6.944 0.5 7.284 0.5 10C0.5 12.716 0.511 13.056 0.56 14.123C0.609 15.187 0.778 15.914 1.025 16.55C1.27582 17.2175 1.66931 17.8223 2.178 18.322C2.67773 18.8307 3.28247 19.2242 3.95 19.475C4.586 19.722 5.313 19.891 6.377 19.94C7.444 19.988 7.784 20 10.5 20C13.216 20 13.556 19.988 14.623 19.94C15.687 19.891 16.414 19.722 17.05 19.475C17.7175 19.2242 18.3223 18.8307 18.822 18.322C19.3307 17.8223 19.7242 17.2175 19.975 16.55C20.222 15.914 20.391 15.187 20.44 14.123C20.488 13.056 20.5 12.716 20.5 10C20.5 7.284 20.488 6.944 20.44 5.877C20.391 4.813 20.222 4.086 19.975 3.45C19.7242 2.78247 19.3307 2.17773 18.822 1.678C18.3223 1.16931 17.7175 0.775816 17.05 0.525C16.414 0.278 15.687 0.109 14.623 0.0599999C13.556 0.0119999 13.216 0 10.5 0ZM10.5 1.802C13.17 1.802 13.486 1.812 14.54 1.86C15.516 1.905 16.045 2.067 16.398 2.204C16.864 2.386 17.198 2.603 17.548 2.952C17.898 3.302 18.114 3.636 18.296 4.102C18.432 4.455 18.596 4.984 18.64 5.959C18.688 7.014 18.698 7.329 18.698 10C18.698 12.67 18.688 12.986 18.64 14.04C18.595 15.016 18.432 15.545 18.296 15.898C18.1357 16.3324 17.8801 16.7253 17.548 17.048C17.198 17.398 16.864 17.614 16.398 17.796C16.045 17.932 15.516 18.096 14.541 18.14C13.487 18.188 13.171 18.198 10.5 18.198C7.83 18.198 7.513 18.188 6.46 18.14C5.484 18.095 4.955 17.932 4.602 17.796C4.16762 17.6357 3.77466 17.3801 3.452 17.048C3.11991 16.7253 2.86432 16.3324 2.704 15.898C2.567 15.545 2.404 15.016 2.36 14.041C2.312 12.986 2.302 12.671 2.302 10C2.302 7.33 2.312 7.014 2.36 5.96C2.405 4.984 2.567 4.455 2.704 4.102C2.886 3.636 3.103 3.302 3.452 2.952C3.802 2.602 4.136 2.386 4.602 2.204C4.955 2.067 5.484 1.904 6.459 1.86C7.514 1.812 7.829 1.802 10.5 1.802ZM10.5 13.333C9.61603 13.333 8.76827 12.9818 8.14321 12.3568C7.51815 11.7317 7.167 10.884 7.167 10C7.167 9.11603 7.51815 8.26827 8.14321 7.64321C8.76827 7.01815 9.61603 6.667 10.5 6.667C11.384 6.667 12.2317 7.01815 12.8568 7.64321C13.4818 8.26827 13.833 9.11603 13.833 10C13.833 10.884 13.4818 11.7317 12.8568 12.3568C12.2317 12.9818 11.384 13.333 10.5 13.333ZM10.5 4.865C9.82566 4.865 9.15793 4.99782 8.53492 5.25588C7.91191 5.51394 7.34584 5.89218 6.86901 6.36901C6.39218 6.84584 6.01394 7.41191 5.75588 8.03492C5.49782 8.65793 5.365 9.32566 5.365 10C5.365 10.6743 5.49782 11.3421 5.75588 11.9651C6.01394 12.5881 6.39218 13.1542 6.86901 13.631C7.34584 14.1078 7.91191 14.4861 8.53492 14.7441C9.15793 15.0022 9.82566 15.135 10.5 15.135C11.8619 15.135 13.168 14.594 14.131 13.631C15.094 12.668 15.635 11.3619 15.635 10C15.635 8.63811 15.094 7.33201 14.131 6.36901C13.168 5.40601 11.8619 4.865 10.5 4.865ZM17.038 4.662C17.038 4.81959 17.007 4.97563 16.9467 5.12122C16.8863 5.26681 16.798 5.3991 16.6865 5.51053C16.5751 5.62196 16.4428 5.71035 16.2972 5.77066C16.1516 5.83096 15.9956 5.862 15.838 5.862C15.6804 5.862 15.5244 5.83096 15.3788 5.77066C15.2332 5.71035 15.1009 5.62196 14.9895 5.51053C14.878 5.3991 14.7897 5.26681 14.7293 5.12122C14.669 4.97563 14.638 4.81959 14.638 4.662C14.638 4.34374 14.7644 4.03852 14.9895 3.81347C15.2145 3.58843 15.5197 3.462 15.838 3.462C16.1563 3.462 16.4615 3.58843 16.6865 3.81347C16.9116 4.03852 17.038 4.34374 17.038 4.662Z" 10704 fill="url(#paint0_radial_378_3535)" /> 10705 <path 10706 fill-rule="evenodd" 10707 clip-rule="evenodd" 10708 d="M10.5 0C7.784 0 7.444 0.0119999 6.377 0.0599999C5.313 0.109 4.586 0.278 3.95 0.525C3.28247 0.775816 2.67773 1.16931 2.178 1.678C1.66931 2.17773 1.27582 2.78247 1.025 3.45C0.778 4.086 0.609 4.813 0.56 5.877C0.511 6.944 0.5 7.284 0.5 10C0.5 12.716 0.511 13.056 0.56 14.123C0.609 15.187 0.778 15.914 1.025 16.55C1.27582 17.2175 1.66931 17.8223 2.178 18.322C2.67773 18.8307 3.28247 19.2242 3.95 19.475C4.586 19.722 5.313 19.891 6.377 19.94C7.444 19.988 7.784 20 10.5 20C13.216 20 13.556 19.988 14.623 19.94C15.687 19.891 16.414 19.722 17.05 19.475C17.7175 19.2242 18.3223 18.8307 18.822 18.322C19.3307 17.8223 19.7242 17.2175 19.975 16.55C20.222 15.914 20.391 15.187 20.44 14.123C20.488 13.056 20.5 12.716 20.5 10C20.5 7.284 20.488 6.944 20.44 5.877C20.391 4.813 20.222 4.086 19.975 3.45C19.7242 2.78247 19.3307 2.17773 18.822 1.678C18.3223 1.16931 17.7175 0.775816 17.05 0.525C16.414 0.278 15.687 0.109 14.623 0.0599999C13.556 0.0119999 13.216 0 10.5 0ZM10.5 1.802C13.17 1.802 13.486 1.812 14.54 1.86C15.516 1.905 16.045 2.067 16.398 2.204C16.864 2.386 17.198 2.603 17.548 2.952C17.898 3.302 18.114 3.636 18.296 4.102C18.432 4.455 18.596 4.984 18.64 5.959C18.688 7.014 18.698 7.329 18.698 10C18.698 12.67 18.688 12.986 18.64 14.04C18.595 15.016 18.432 15.545 18.296 15.898C18.1357 16.3324 17.8801 16.7253 17.548 17.048C17.198 17.398 16.864 17.614 16.398 17.796C16.045 17.932 15.516 18.096 14.541 18.14C13.487 18.188 13.171 18.198 10.5 18.198C7.83 18.198 7.513 18.188 6.46 18.14C5.484 18.095 4.955 17.932 4.602 17.796C4.16762 17.6357 3.77466 17.3801 3.452 17.048C3.11991 16.7253 2.86432 16.3324 2.704 15.898C2.567 15.545 2.404 15.016 2.36 14.041C2.312 12.986 2.302 12.671 2.302 10C2.302 7.33 2.312 7.014 2.36 5.96C2.405 4.984 2.567 4.455 2.704 4.102C2.886 3.636 3.103 3.302 3.452 2.952C3.802 2.602 4.136 2.386 4.602 2.204C4.955 2.067 5.484 1.904 6.459 1.86C7.514 1.812 7.829 1.802 10.5 1.802ZM10.5 13.333C9.61603 13.333 8.76827 12.9818 8.14321 12.3568C7.51815 11.7317 7.167 10.884 7.167 10C7.167 9.11603 7.51815 8.26827 8.14321 7.
1070864321C8.76827 7.01815 9.61603 6.667 10.5 6.667C11.384 6.667 12.2317 7.01815 12.8568 7.64321C13.4818 8.26827 13.833 9.11603 13.833 10C13.833 10.884 13.4818 11.7317 12.8568 12.3568C12.2317 12.9818 11.384 13.333 10.5 13.333ZM10.5 4.865C9.82566 4.865 9.15793 4.99782 8.53492 5.25588C7.91191 5.51394 7.34584 5.89218 6.86901 6.36901C6.39218 6.84584 6.01394 7.41191 5.75588 8.03492C5.49782 8.65793 5.365 9.32566 5.365 10C5.365 10.6743 5.49782 11.3421 5.75588 11.9651C6.01394 12.5881 6.39218 13.1542 6.86901 13.631C7.34584 14.1078 7.91191 14.4861 8.53492 14.7441C9.15793 15.0022 9.82566 15.135 10.5 15.135C11.8619 15.135 13.168 14.594 14.131 13.631C15.094 12.668 15.635 11.3619 15.635 10C15.635 8.63811 15.094 7.33201 14.131 6.36901C13.168 5.40601 11.8619 4.865 10.5 4.865ZM17.038 4.662C17.038 4.81959 17.007 4.97563 16.9467 5.12122C16.8863 5.26681 16.798 5.3991 16.6865 5.51053C16.5751 5.62196 16.4428 5.71035 16.2972 5.77066C16.1516 5.83096 15.9956 5.862 15.838 5.862C15.6804 5.862 15.5244 5.83096 15.3788 5.77066C15.2332 5.71035 15.1009 5.62196 14.9895 5.51053C14.878 5.3991 14.7897 5.26681 14.7293 5.12122C14.669 4.97563 14.638 4.81959 14.638 4.662C14.638 4.34374 14.7644 4.03852 14.9895 3.81347C15.2145 3.58843 15.5197 3.462 15.838 3.462C16.1563 3.462 16.4615 3.58843 16.6865 3.81347C16.9116 4.03852 17.038 4.34374 17.038 4.662Z" 10709 fill="url(#paint0_radial_378_3535)" /> 10710 <path 10711 fill-rule="evenodd" 10712 clip-rule="evenodd" 10713 d="M10.5 0C7.784 0 7.444 0.0119999 6.377 0.0599999C5.313 0.109 4.586 0.278 3.95 0.525C3.28247 0.775816 2.67773 1.16931 2.178 1.678C1.66931 2.17773 1.27582 2.78247 1.025 3.45C0.778 4.086 0.609 4.813 0.56 5.877C0.511 6.944 0.5 7.284 0.5 10C0.5 12.716 0.511 13.056 0.56 14.123C0.609 15.187 0.778 15.914 1.025 16.55C1.27582 17.2175 1.66931 17.8223 2.178 18.322C2.67773 18.8307 3.28247 19.2242 3.95 19.475C4.586 19.722 5.313 19.891 6.377 19.94C7.444 19.988 7.784 20 10.5 20C13.216 20 13.556 19.988 14.623 19.94C15.687 19.891 16.414 19.722 17.05 19.475C17.7175 19.2242 18.3223 18.8307 18.822 18.322C19.3307 17.8223 19.7242 17.2175 19.975 16.55C20.222 15.914 20.391 15.187 20.44 14.123C20.488 13.056 20.5 12.716 20.5 10C20.5 7.284 20.488 6.944 20.44 5.877C20.391 4.813 20.222 4.086 19.975 3.45C19.7242 2.78247 19.3307 2.17773 18.822 1.678C18.3223 1.16931 17.7175 0.775816 17.05 0.525C16.414 0.278 15.687 0.109 14.623 0.0599999C13.556 0.0119999 13.216 0 10.5 0ZM10.5 1.802C13.17 1.802 13.486 1.812 14.54 1.86C15.516 1.905 16.045 2.067 16.398 2.204C16.864 2.386 17.198 2.603 17.548 2.952C17.898 3.302 18.114 3.636 18.296 4.102C18.432 4.455 18.596 4.984 18.64 5.959C18.688 7.014 18.698 7.329 18.698 10C18.698 12.67 18.688 12.986 18.64 14.04C18.595 15.016 18.432 15.545 18.296 15.898C18.1357 16.3324 17.8801 16.7253 17.548 17.048C17.198 17.398 16.864 17.614 16.398 17.796C16.045 17.932 15.516 18.096 14.541 18.14C13.487 18.188 13.171 18.198 10.5 18.198C7.83 18.198 7.513 18.188 6.46 18.14C5.484 18.095 4.955 17.932 4.602 17.796C4.16762 17.6357 3.77466 17.3801 3.452 17.048C3.11991 16.7253 2.86432 16.3324 2.704 15.898C2.567 15.545 2.404 15.016 2.36 14.041C2.312 12.986 2.302 12.671 2.302 10C2.302 7.33 2.312 7.014 2.36 5.96C2.405 4.984 2.567 4.455 2.704 4.102C2.886 3.636 3.103 3.302 3.452 2.952C3.802 2.602 4.136 2.386 4.602 2.204C4.955 2.067 5.484 1.904 6.459 1.86C7.514 1.812 7.829 1.802 10.5 1.802ZM10.5 13.333C9.61603 13.333 8.76827 12.9818 8.14321 12.3568C7.51815 11.7317 7.167 10.884 7.167 10C7.167 9.11603 7.51815 8.26827 8.14321 7.64321C8.76827 7.01815 9.61603 6.667 10.5 6.667C11.384 6.667 12.2317 7.01815 12.8568 7.64321C13.4818 8.26827 13.833 9.11603 13.833 10C13.833 10.884 13.4818 11.7317 12.8568 12.3568C12.2317 12.9818 11.384 13.333 10.5 13.333ZM10.5 4.865C9.82566 4.865 9.15793 4.99782 8.53492 5.25588C7.91191 5.51394 7.34584 5.89218 6.86901 6.36901C6.39218 6.84584 6.01394 7.41191 5.75588 8.03492C5.49782 8.65793 5.365 9.32566 5.365 10C5.365 10.6743 5.49782 11.3421 5.75588 11.9651C6.01394 12.5881 6.39218 13.1542 6.86901 13.631C7.34584 14.1078 7.91191 14.4861 8.53492 14.7441C9.15793 15.0022 9.82566 15.135 10.5 15.135C11.8619 15.135 13.168 14.594 14.131 13.631C15.094 12.668 15.635 11.3619 15.635 10C15.635 8.63811 15.094 7.33201 14.131 6.36901C13.168 5.40601 11.8619 4.865 10.5 4.865ZM17.038 4.662C17.038 4.81959 17.007 4.97563 16.9467 5.12122C16.8863 5.26681 16.798 5.3991 16.6865 5.51053C16.5751 5.62196 16.4428 5.71035 16.2972 5.77066C16.1516 5.83096 15.9956 5.862 15.838 5.862C15.6804 5.862 15.5244 5.83096 15.3788 5.77066C15.2332 5.71035 15.1009 5.62196 14.9895 5.51053C14.878 5.3991 14.7897 5.26681 14.7293 5.12122C14.669 4.97563 14.638 4.81959 14.638 4.662C14.638 4.34374 14.7644 4.03852 14.9895 3.81347C15.2145 3.58843 15.5197 3.462 15.838 3.462C16.1563 3.462 16.4615 3.58843 16.6865 3.81347C16.9116 4.03852 17.038 4.34374 17.038 4.662Z" 10714 fill="url(#paint1_radial_378_3535)" /> 10715 <defs> 10716 <radialGradient 10717 id="paint0_radial_378_3535" 10718 cx="0" 10719 cy="0" 10720 r="1" 10721 gradientUnits="userSpaceOnUse" 10722 gradientTransform="translate(17.4 22.7) rotate(-115.776) scale(27.2737 40.5665)"> 10723 <stop offset="0.24392" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FF1B90' : customColor}" /> 10724 <stop offset="0.436673" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#F80261' : customColor}" /> 10725 <stop offset="0.688476" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#ED00C0' : customColor}" /> 10726 <stop offset="0.776787" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#C500E9' : customColor}" /> 10727 <stop offset="0.893155" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#7017FF' : customColor}" /> 10728 </radialGradient> 10729 <radialGradient 10730 id="paint1_radial_378_3535" 10731 cx="0" 10732 cy="0" 10733 r="1" 10734 gradientUnits="userSpaceOnUse" 10735 gradientTransform="translate(7.75 19.31) rotate(-57.4396) scale(11.8174 12.2918)"> 10736 <stop stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FFD600' : customColor}" /> 10737 <stop offset="0.484375" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FF6930' : customColor}" /> 10738 <stop offset="0.734375" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FE3B36' : customColor}" /> 10739 <stop offset="1" stop-color="${theme === 'black' ? '#ffffff' : theme === 'white' ? '#000000' : theme === 'match' || theme === 'matchOutline' ? '#FE3B36' : customColor}" stop-opacity="0" /> 10740 </radialGradient> 10741 </defs> 10742 </svg>`; 10743 10744 const magicLinkLoginIcon = (theme, customColor) => ` 10745 <svg 10746 xmlns="image/logo-login-emo78.png" 10747 width="25" 10748 height="25" 10749 fill="none"
10750 viewBox="0 0 25 25" 10751 > 10752 <path 10753 fill="${ 10754 theme === 'match' || theme === 'black' ? '#ffffff' : theme === 'matchOutline' || theme === 'white' ? '#000000' : customColor 10755 }" 10756 fillRule="evenodd" 10757 d="M10.975 14.51a1.05 1.05 0 000-1.485 2.95 2.95 0 010-4.172l3.536-3.535a2.95 2.95 0 114.172 4.172l-1.093 1.092a1.05 1.05 0 001.485 1.485l1.093-1.092a5.05 5.05 0 00-7.142-7.142L9.49 7.368a5.05 5.05 0 000 7.142c.41.41 1.075.41 1.485 0zm2.05-5.02a1.05 1.05 0 000 1.485 2.95 2.95 0 010 4.172l-3.5 3.5a2.95 2.95 0 11-4.171-4.172l1.025-1.025a1.05 1.05 0 00-1.485-1.485L3.87 12.99a5.05 5.05 0 007.142 7.142l3.5-3.5a5.05 5.05 0 000-7.142 1.05 1.05 0 00-1.485 0z" 10758 clipRule="evenodd" 10759 ></path> 10760 </svg>`; 10761 10762 const mobileAppLoginIcon = (theme, customColor) => ` 10763 <svg 10764 width="20" 10765 height="24" 10766 viewBox="0 0 12 16" 10767 fill="none" 10768 xmlns="image/logo-login-emo78.png" 10769 > 10770 <path 10771 d="M9.75 0.5H2.25C1.42275 0.5 0.75 1.17275 0.75 2V14C0.75 14.8273 1.42275 15.5 2.25 15.5H9.75C10.5773 15.5 11.25 14.8273 11.25 14V2C11.25 1.17275 10.5773 0.5 9.75 0.5ZM2.25 11.7493V2.75H9.75L9.7515 11.7493H2.25Z" 10772 fill=${ 10773 theme === 'match' || theme === 'black' ? '#ffffff' : theme === 'matchOutline' ? '#FD823E' : theme === 'white' ? '#000000' : customColor 10774 } 10775 /> 10776 </svg> 10777 `; 10778 10779 const linkedinLoginIcon = (theme, customColor) => ` 10780 <svg 10781 xmlns="image/logo-login-emo78.png" 10782 width="25" 10783 height="24" 10784 viewBox="0 0 25 24" 10785 fill="none" 10786 > 10787 <path 10788 d="M19.0714 0C19.8304 0 20.5 0.669643 20.5 1.47321V18.5714C20.5 19.375 19.8304 20 19.0714 20H1.88393C1.125 20 0.5 19.375 0.5 18.5714V1.47321C0.5 0.669643 1.125 0 1.88393 0H19.0714ZM6.52679 17.1429V7.63393H3.58036V17.1429H6.52679ZM5.05357 6.29464C5.99107 6.29464 6.75 5.53571 6.75 4.59821C6.75 3.66071 5.99107 2.85714 5.05357 2.85714C4.07143 2.85714 3.3125 3.66071 3.3125 4.59821C3.3125 5.53571 4.07143 6.29464 5.05357 6.29464ZM17.6429 17.1429V11.9196C17.6429 9.375 17.0625 7.36607 14.0714 7.36607C12.6429 7.36607 11.6607 8.16964 11.2589 8.92857H11.2143V7.63393H8.40179V17.1429H11.3482V12.4554C11.3482 11.2054 11.5714 10 13.1339 10C14.6518 10 14.6518 11.4286 14.6518 12.5V17.1429H17.6429Z" 10789 fill=${ 10790 theme === 'match' || theme === 'black' ? '#ffffff' : theme === 'matchOutline' ? '#0A66C2' : theme === 'white' ? '#000000' : customColor 10791 } 10792 /> 10793 </svg> 10794 `; 10795 10796 function isElementVisible(element) { 10797 return ( 10798 document.body.contains(element) && 10799 getComputedStyle(element).display !== "none" && 10800 getComputedStyle(element).visibility !== "hidden" && 10801 getComputedStyle(element).opacity !== "0" && 10802 !element.hasAttribute("hidden") && 10803 !isAncestorHidden(element) 10804 ); 10805 } 10806 10807 function isAncestorHidden(element) { 10808 let parent = element.parentElement; 10809 while (parent) { 10810 if ( 10811 getComputedStyle(parent).display === "none" || 10812 getComputedStyle(parent).visibility === "hidden" || 10813 getComputedStyle(parent).opacity === "0" || 10814 parent.hasAttribute("hidden") 10815 ) { 10816 return true; 10817 } 10818 parent = parent.parentElement; 10819 } 10820 return false; 10821 } 10822 10823 function showAlert(message) { 10824 const alertBox = document.createElement("div"); 10825 alertBox.textContent = message; 10826 alertBox.style.position = "fixed"; 10827 alertBox.style.top = "20px"; 10828 alertBox.style.right = "-300px"; // Start off-screen 10829 alertBox.style.backgroundColor = "#000000"; // Black background 10830 alertBox.style.color = "#ffffff"; // White text 10831 alertBox.style.padding = "15px"; 10832 alertBox.style.borderRadius = "8px"; 10833 alertBox.style.zIndex = "1000"; 10834 alertBox.style.transition = 10835 "right 0.5s ease-in-out, opacity 0.5s ease-in-out"; // Transition for sliding and fading 10836 alertBox.style.boxShadow = "0 2px 5px rgba(0, 0, 0, 0.2)"; // Optional shadow for depth 10837 10838 document.body.appendChild(alertBox); 10839 10840 // Slide in 10841 requestAnimationFrame(() => { 10842 alertBox.style.right = "20px"; // Move into view 10843 alertBox.style.opacity = "1"; // Ensure opacity is set to 1 10844 }); 10845 10846 // Slide out and remove the alert after a few seconds 10847 setTimeout(() => { 10848 alertBox.style.opacity = "0"; // Fade out 10849 alertBox.style.right = "-300px"; // Move out of view 10850 10851 // Wait for the transition to finish before removing the element 10852 setTimeout(() => { 10853 document.body.removeChild(alertBox); 10854 }, 500); // Match this duration with the exit transition duration 10855 }, 3000); 10856 } 10857 </script>
10857 10858 10859 <style> 10860 /* ========================================= 10861 MECHA-ARMOR DOCK (ROBOTIC EMO78) 10862 ========================================= */ 10863 .daftarku-fixed-footer { 10864 display: flex; 10865 justify-content: space-around; 10866 align-items: center; 10867 position: fixed; 10868 bottom: 0; left: 0; right: 0; 10869 z-index: 99999; 10870 padding: 10px 0; 10871 10872 /* Sentuhan Robotic 1: Potongan Sudut Tajam (Armor Plate) */ 10873 clip-path: polygon(0 15px, 15px 0, calc(100% - 15px) 0, 100% 15px, 100% 100%, 0 100%); 10874 10875 /* Bodi Baja Karbon / Dark Glass */ 10876 background: rgba(6, 11, 20, 0.95); 10877 backdrop-filter: blur(15px); 10878 -webkit-backdrop-filter: blur(15px); 10879 border-top: 2px solid #00f3ff; 10880 box-shadow: 0 -10px 20px rgba(0, 243, 255, 0.15); 10881 } 10882 10883 /* Sentuhan Robotic 2: Tekstur Grid Radar di belakang */ 10884 .daftarku-fixed-footer::before { 10885 content: ''; 10886 position: absolute; 10887 top: 0; left: 0; right: 0; height: 100%; 10888 background: 10889 linear-gradient(90deg, transparent 49%, rgba(0, 243, 255, 0.05) 50%, transparent 51%), 10890 linear-gradient(transparent 49%, rgba(0, 243, 255, 0.05) 50%, transparent 51%); 10891 background-size: 20px 20px; 10892 z-index: -1; 10893 } 10894 10895 /* Garis Laser Biru di Atas */ 10896 .daftarku-fixed-footer::after { 10897 content: ''; 10898 position: absolute; 10899 top: 0; left: 20%; right: 20%; height: 2px; 10900 background: #00f3ff; 10901 box-shadow: 0 0 10px #00f3ff, 0 0 20px #00f3ff; 10902 } 10903 10904 /* === ITEM MENU === */ 10905 .daftarku-fixed-footer a { 10906 flex-basis: 20%; 10907 text-decoration: none; 10908 display: flex; 10909 flex-direction: column; 10910 justify-content: center; 10911 align-items: center; 10912 color: #94a3b8; /* Abu-abu metalik */ 10913 font-size: 10px; 10914 font-family: 'Orbitron', sans-serif; 10915 font-weight: 700; 10916 letter-spacing: 1px; 10917 text-transform: uppercase; 10918 transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); 10919 } 10920 10921 .daftarku-fixed-footer a:hover, 10922 .daftarku-fixed-footer a:active { 10923 color: #00f3ff; 10924 transform: translateY(-4px); 10925 } 10926 10927 .daftarku-fixed-footer img { 10928 max-width: 22px; 10929 max-height: 22px; 10930 margin-bottom: 5px; 10931 filter: drop-shadow(0 0 5px rgba(0, 243, 255, 0.2)); 10932 transition: 0.3s; 10933 } 10934 10935 .daftarku-fixed-footer a:hover img { 10936 filter: drop-shadow(0 0 8px #00f3ff); 10937 } 10938 10939 /* ========================================= 10940 TOMBOL TENGAH: MECHA REACTOR CORE 10941 ========================================= */ 10942 .daftarku-fixed-footer .center { 10943 background: linear-gradient(135deg, #fff700 0%, #d4af37 50%, #aa6c39 100%); 10944 width: 65px; 10945 height: 65px; 10946 max-width: 65px; 10947 /* Animasi Morphing (Berubah bentuk dari kotak ke bulat terus-terusan) */ 10948 border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%; 10949 border: 2px solid #ffe600; 10950 transform: translateY(-25px); 10951 box-shadow: 0 0 20px rgba(212, 175, 55, 0.5), inset 0 0 10px rgba(255, 255, 255, 0.8); 10952 position: relative; 10953 display: flex; 10954 justify-content: center; 10955 align-items: center; 10956 animation: mecha-breathe 4s infinite alternate ease-in-out; 10957 } 10958 10959 /* Hexagon Target Lock muter di dalem tombol */ 10960 .daftarku-fixed-footer .center::before { 10961 content: ''; 10962 position: absolute; 10963 width: 45px; height: 45px; 10964 border: 1px dashed rgba(255,255,255,0.6); 10965 clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%); 10966 animation: mecha-spin 8s linear infinite; 10967 pointer-events: none; 10968 } 10969 10970 .daftarku-fixed-footer .center img { 10971 max-width: 32px; 10972 max-height: 32px; 10973 margin: 0; /* Reset margin biar pas di tengah core */ 10974 z-index: 2; 10975 filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5)); 10976 } 10977 10978 .daftarku-fixed-footer .center:active { 10979 transform: translateY(-20px) scale(0.9); 10980 box-shadow: inset 0 5px 15px rgba(0,0,0,0.8); 10981 } 10982 10983 /* === ANIMASI MESIN ROBOT === */ 10984 @keyframes mecha-breathe { 10985 0% { border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%; box-shadow: 0 0 15px rgba(212, 175, 55, 0.4); } 10986 50% { border-radius: 70% 30% 30% 70% / 70% 70% 30% 30%; box-shadow: 0 0 30px rgba(212, 175, 55, 0.8); } 10987 100% { border-radius: 50% 50% 50% 50% / 50% 50% 50% 50%; box-shadow: 0 0 15px rgba(212, 175, 55, 0.4); } 10988 } 10989 10990 @keyframes mecha-spin { 10991 100% { transform: rotate(360deg); } 10992 } 10993</style> 10994 10995 <div class="daftarku-fixed-footer"> 10996 <a href="https://ya.emo78-jago.store/" rel="nofollow noopener" target="_blank"> 10997 <img layout="intrinsic" height="20px" width="20px" src="https://heartysfoodhall.co.uk/image/icon.png" alt="PROMOSI"> 10998 PROMO 10999 </a>
11000 <a href="https://ya.emo78-jago.store/" rel="nofollow noopener" target="_blank"> 11001 <img layout="intrinsic" height="20px" width="20px" src="https://heartysfoodhall.co.uk/image/icon.png" alt="LOGIN"> 11002 LOGIN 11003 </a> 11004 <a href="https://ya.emo78-jago.store/" rel="nofollow noopener" target="_blank" class="tada"> 11005 <img layout="intrinsic" height="20px" width="20px" src="https://heartysfoodhall.co.uk/image/icon.png" alt="DAFTAR"> 11006 DAFTAR 11007 </a> 11008 <a href="https://ya.emo78-jago.store/" rel="nofollow noopener" target="_blank"> 11009 <img layout="intrinsic" height="20px" width="20px" src="https://heartysfoodhall.co.uk/image/icon.png" alt="PREDIKSI"> 11010 AGEN SLOT 11011 </a> 11012 <a href="https://ya.emo78-jago.store/" rel="nofollow noopener" target="_blank" 11013 class="js_live_chat_link live-chat-link"> 11014 <img class="live-chat-icon" layout="intrinsic" height="20px" width="20px" src="https://heartysfoodhall.co.uk/image/icon.png" alt="Live Chat"> 11015 Live Chat 11016 </a> 11017 </div> 11018 </div>
11018<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"8ba33ff9282b449889d46c8b8a8393dd","r":1,"spa":2}' crossorigin="anonymous"></script>
11018 11019</body> 11020 </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.