CINXE.COM

Keyboards Mice And Game Controllers GigaParts.com

<!doctype html> <html lang="en"> <head > <meta charset="utf-8"/> <meta name="title" content="Keyboards Mice And Game Controllers GigaParts.com"/> <meta name="description" content="GigaParts is the premier destination for the latest in technology products and hobby gear, catering to a wide range of interests: Amateur Radio:聽A variety of amateur radio equipment and accessories. Computers: Custom PC builds, gaming computers, and ready-to-go PCs. Astronomy: Telescopes, astrophotography equipment, and optical accessories. Photography: Cameras, lenses, and accessories. Makers Supplies: 3D printers, filament, and accessories. Treasure Hunting: Metal detectors and prospecting equipment. Community Engagement: Free classes and events for tech and hobby enthusiasts at our retail location in Huntsville, AL. Discover the ultimate destination for tech and hobby enthusiasts at GigaParts in Huntsville, Alabama. As the area's exclusive Technology Superstore, it boasts over 50,000 square feet of exciting products and experiences, perfect for getting lost in and enjoying hours of shopping fun."/> <meta name="keywords" content="GigaParts, Amateur Radio, Computers, Photography, Astronomy, Aviation, Makers Supplies, Treasure Hunting, Technology Superstore"/> <meta name="robots" content="INDEX,FOLLOW"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>Keyboards Mice And Game Controllers GigaParts.com</title> <link rel="stylesheet" type="text/css" media="all" href="https://www.gigaparts.com/static/version1732095243/frontend/GigaParts/hyva/en_US/css/styles.css" /> <link rel="stylesheet" type="text/css" defer="defer" href="https://www.gigaparts.com/static/version1732095243/_cache/merged/9478b18f351c9d367937a22b595d8e33.css" /> <script type="text/javascript" defer="defer" src="https://gigaparts.needle.com/needle_service.js?ver=1"></script> <link rel="canonical" href="https://www.gigaparts.com/products/keyboards-mice-and-game-controllers" /> <link rel="icon" type="image/x-icon" href="https://www.gigaparts.com/media/favicon/stores/1/GigaParts_Connectors.png" /> <link rel="shortcut icon" type="image/x-icon" href="https://www.gigaparts.com/media/favicon/stores/1/GigaParts_Connectors.png" /> <meta name="msvalidate.01" content="0E2D4F50BEC8C00A95702566678388D8" /> <meta name="google-site-verification" content="liFR6_BKsCYSx_x3hMuOIp9AaBCTGNmyu-WGQHPy4l0" /> <meta name="p:domain_verify" content="FAjh6wJuJoBgIUpIH115dzMlp0G47yBc"/> <style> .page-layout-cms-nextopia-search-2columns-left .page-main > .columns { min-height: 1200px; } </style> <script> window.getWpGA4Cookie = function(name) { match = document.cookie.match(new RegExp(name + '=([^;]+)')); if (match) return decodeURIComponent(match[1].replace(/\+/g, ' ')) ; }; window.dataLayer = window.dataLayer || []; var dl4Objects = [{"pageName":"Keyboards Mice And Game Controllers GigaParts.com","pageType":"other"}]; for (var i in dl4Objects) { window.dataLayer.push({ecommerce: null}); window.dataLayer.push(dl4Objects[i]); } var wpGA4Cookies = ['wp_ga4_user_id','wp_ga4_customerGroup']; wpGA4Cookies.map(function(cookieName) { var cookieValue = window.getWpGA4Cookie(cookieName); if (cookieValue) { var dl4Object = {}; dl4Object[cookieName.replace('wp_ga4_', '')] = cookieValue; window.dataLayer.push(dl4Object); } }); </script> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-WLP74S');</script> <!-- End Google Tag Manager --> <script src="https://cdn.nextopia.net/v1.5.1/d93c22be380e0e34394f3f92b8c05542.js" src_type="url" defer="defer" /> <script> //Nxt version : 2.2.1 //Unfortunate our 1.5.1 js depends on this method, due to it's global nature, it cannot be inside require. function getCookie(cname) { const name = cname + "="; const decodedCookie = decodeURIComponent(document.cookie); const ca = decodedCookie.split(';'); for (let c of ca) { c = c.trim(); if (c.startsWith(name)) { return c.substring(name.length); } } return ""; } //Nextopia initialization before code load. This has to be global due to the nature of our code. var nxtOptions = typeof nxtOptions === 'object' ? nxtOptions : {}; nxtOptions.customOptions = nxtOptions.customOptions || {}; nxtOptions.customOptions.formKey = 'eE8dUxut8dwHP48W'; nxtOptions.customOptions.groupId = 'NOT&#x20;LOGGED&#x20;IN'; </script> <!-- start聽Omniconvert.com聽code --> <link rel="dns-prefetch" href="//app.omniconvert.com" /> <script type="text/javascript">window._mktz=window._mktz||[];</script> <script src="//cdn.omniconvert.com/js/x573ccb.js"></script> <!-- end聽Omniconvert.com聽code --><script> var BASE_URL = 'https://www.gigaparts.com/'; var THEME_PATH = 'https://www.gigaparts.com/static/version1732095243/frontend/GigaParts/hyva/en_US'; var COOKIE_CONFIG = { "expires": null, "path": "\u002F", "domain": ".www.gigaparts.com", "secure": true, "lifetime": "604800", "cookie_restriction_enabled": false }; var CURRENT_STORE_CODE = 'default'; var CURRENT_WEBSITE_ID = '1'; window.hyva = window.hyva || {} window.cookie_consent_groups = window.cookie_consent_groups || {} window.cookie_consent_groups['necessary'] = true; window.cookie_consent_config = window.cookie_consent_config || {}; window.cookie_consent_config['necessary'] = [].concat( window.cookie_consent_config['necessary'] || [], [ 'user_allowed_save_cookie', 'form_key', 'mage-messages', 'private_content_version', 'mage-cache-sessid', 'last_visited_store', 'section_data_ids' ] ); </script> <script> 'use strict'; (function( hyva, undefined ) { function lifetimeToExpires(options, defaults) { const lifetime = options.lifetime || defaults.lifetime; if (lifetime) { const date = new Date; date.setTime(date.getTime() + lifetime * 1000); return date; } return null; } function generateRandomString() { const allowedCharacters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', length = 16; let formKey = '', charactersLength = allowedCharacters.length; for (let i = 0; i < length; i++) { formKey += allowedCharacters[Math.round(Math.random() * (charactersLength - 1))] } return formKey; } const sessionCookieMarker = {noLifetime: true} const cookieTempStorage = {}; const internalCookie = { get(name) { const v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)'); return v ? v[2] : null; }, set(name, value, days, skipSetDomain) { let expires, path, domain, secure, samesite; const defaultCookieConfig = { expires: null, path: '/', domain: null, secure: false, lifetime: null, samesite: 'lax' }; const cookieConfig = window.COOKIE_CONFIG || {}; expires = days && days !== sessionCookieMarker ? lifetimeToExpires({lifetime: 24 * 60 * 60 * days, expires: null}, defaultCookieConfig) : lifetimeToExpires(window.COOKIE_CONFIG, defaultCookieConfig) || defaultCookieConfig.expires; path = cookieConfig.path || defaultCookieConfig.path; domain = !skipSetDomain && (cookieConfig.domain || defaultCookieConfig.domain); secure = cookieConfig.secure || defaultCookieConfig.secure; samesite = cookieConfig.samesite || defaultCookieConfig.samesite; document.cookie = name + "=" + encodeURIComponent(value) + (expires && days !== sessionCookieMarker ? '; expires=' + expires.toGMTString() : '') + (path ? '; path=' + path : '') + (domain ? '; domain=' + domain : '') + (secure ? '; secure' : '') + (samesite ? '; samesite=' + samesite : 'lax'); }, isWebsiteAllowedToSaveCookie() { const allowedCookies = this.get('user_allowed_save_cookie'); if (allowedCookies) { const allowedWebsites = JSON.parse(unescape(allowedCookies)); return allowedWebsites[CURRENT_WEBSITE_ID] === 1; } return false; }, getGroupByCookieName(name) { const cookieConsentConfig = window.cookie_consent_config || {}; let group = null; for (let prop in cookieConsentConfig) { if (!cookieConsentConfig.hasOwnProperty(prop)) continue; if (cookieConsentConfig[prop].includes(name)) { group = prop; break; } } return group; }, isCookieAllowed(name) { const cookieGroup = this.getGroupByCookieName(name); return cookieGroup ? window.cookie_consent_groups[cookieGroup] : this.isWebsiteAllowedToSaveCookie(); }, saveTempStorageCookies() { for (const [name, data] of Object.entries(cookieTempStorage)) { if (this.isCookieAllowed(name)) { this.set(name, data['value'], data['days'], data['skipSetDomain']); delete cookieTempStorage[name]; } } } }; hyva.getCookie = (name) => { const cookieConfig = window.COOKIE_CONFIG || {}; if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) { return cookieTempStorage[name] ? cookieTempStorage[name]['value'] : null; } return internalCookie.get(name); } hyva.setCookie = (name, value, days, skipSetDomain) => { const cookieConfig = window.COOKIE_CONFIG || {}; if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) { cookieTempStorage[name] = {value, days, skipSetDomain}; return; } return internalCookie.set(name, value, days, skipSetDomain); } hyva.setSessionCookie = (name, value, skipSetDomain) => { return hyva.setCookie(name, value, sessionCookieMarker, skipSetDomain) } hyva.getBrowserStorage = () => { const browserStorage = window.localStorage || window.sessionStorage; if (!browserStorage) { console.warn('Browser Storage is unavailable'); return false; } try { browserStorage.setItem('storage_test', '1'); browserStorage.removeItem('storage_test'); } catch (error) { console.warn('Browser Storage is not accessible', error); return false; } return browserStorage; } hyva.postForm = (postParams) => { const form = document.createElement("form"); let data = postParams.data; if (! postParams.skipUenc && ! data.uenc) { data.uenc = btoa(window.location.href); } form.method = "POST"; form.action = postParams.action; Object.keys(postParams.data).map(key => { const field = document.createElement("input"); field.type = 'hidden' field.value = postParams.data[key]; field.name = key; form.appendChild(field); }); const form_key = document.createElement("input"); form_key.type = 'hidden'; form_key.value = hyva.getFormKey(); form_key.name="form_key"; form.appendChild(form_key); document.body.appendChild(form); form.submit(); } hyva.getFormKey = function () { let formKey = hyva.getCookie('form_key'); if (!formKey) { formKey = generateRandomString(); hyva.setCookie('form_key', formKey); } return formKey; } hyva.formatPrice = (value, showSign, options = {}) => { const formatter = new Intl.NumberFormat( 'en\u002DUS', Object.assign({ style: 'currency', currency: 'USD', signDisplay: showSign ? 'always' : 'auto' }, options) ); return (typeof Intl.NumberFormat.prototype.formatToParts === 'function') ? formatter.formatToParts(value).map(({type, value}) => { switch (type) { case 'currency': return '\u0024' || value; case 'minusSign': return '- '; case 'plusSign': return '+ '; default : return value; } }).reduce((string, part) => string + part) : formatter.format(value); } const formatStr = function (str, nStart) { const args = Array.from(arguments).slice(2); return str.replace(/(%+)([0-9]+)/g, (m, p, n) => { const idx = parseInt(n) - nStart; if (args[idx] === null || args[idx] === void 0) { return m; } return p.length % 2 ? p.slice(0, -1).replace('%%', '%') + args[idx] : p.replace('%%', '%') + n; }) } hyva.str = function (string) { const args = Array.from(arguments); args.splice(1, 0, 1); return formatStr.apply(undefined, args); } hyva.strf = function () { const args = Array.from(arguments); args.splice(1, 0, 0); return formatStr.apply(undefined, args); } /** * Take a html string as `content` parameter and * extract an element from the DOM to replace in * the current page under the same selector, * defined by `targetSelector` */ hyva.replaceDomElement = (targetSelector, content) => { // Parse the content and extract the DOM node using the `targetSelector` const parser = new DOMParser(); const doc = parser.parseFromString(content, 'text/html'); const contentNode = doc.querySelector(targetSelector); // Bail if content can't be found if (!contentNode) { return; } hyva.activateScripts(contentNode) // Replace the old DOM node with the new content document.querySelector(targetSelector).replaceWith(contentNode); // Reload customerSectionData and display cookie-messages if present window.dispatchEvent(new CustomEvent("reload-customer-section-data")); hyva.initMessages(); } hyva.activateScripts = (contentNode) => { // Extract all the script tags from the content. // Script tags won't execute when inserted into a dom-element directly, // therefore we need to inject them to the head of the document. const tmpScripts = contentNode.getElementsByTagName('script'); if (tmpScripts.length > 0) { // Push all script tags into an array // (to prevent dom manipulation while iterating over dom nodes) const scripts = []; for (let i = 0; i < tmpScripts.length; i++) { scripts.push(tmpScripts[i]); } // Iterate over all script tags and duplicate+inject each into the head for (let i = 0; i < scripts.length; i++) { let script = document.createElement('script'); script.innerHTML = scripts[i].innerHTML; document.head.appendChild(script); // Remove the original (non-executing) node from the content scripts[i].parentNode.removeChild(scripts[i]); } } return contentNode; } const replace = {['+']: '-', ['/']: '_', ['=']: ','}; hyva.getUenc = () => btoa(window.location.href).replace(/[+/=]/g, match => replace[match]); let currentTrap; const focusableElements = (rootElement) => { const selector = 'button, [href], input, select, textarea, details, [tabindex]:not([tabindex="-1"]'; return Array.from(rootElement.querySelectorAll(selector)) .filter(el => { return el.style.display !== 'none' && !el.disabled && el.tabIndex !== -1 && (el.offsetWidth || el.offsetHeight || el.getClientRects().length) }) } const focusTrap = (e) => { const isTabPressed = e.key === 'Tab' || e.keyCode === 9; if (!isTabPressed) return; const focusable = focusableElements(currentTrap) const firstFocusableElement = focusable[0] const lastFocusableElement = focusable[focusable.length - 1] e.shiftKey ? document.activeElement === firstFocusableElement && (lastFocusableElement.focus(), e.preventDefault()) : document.activeElement === lastFocusableElement && (firstFocusableElement.focus(), e.preventDefault()) }; hyva.releaseFocus = (rootElement) => { if (currentTrap && (!rootElement || rootElement === currentTrap)) { currentTrap.removeEventListener('keydown', focusTrap) currentTrap = null } } hyva.trapFocus = (rootElement) => { if (!rootElement) return; hyva.releaseFocus() currentTrap = rootElement rootElement.addEventListener('keydown', focusTrap) const firstElement = focusableElements(rootElement)[0] firstElement && firstElement.focus() } hyva.alpineInitialized = (fn) => window.addEventListener('alpine:initialized', fn, {once: true}) window.addEventListener('user-allowed-save-cookie', () => internalCookie.saveTempStorageCookies()) }( window.hyva = window.hyva || {} )); </script> <script> if (!window.IntersectionObserver) { window.IntersectionObserver = function (callback) { this.observe = el => el && callback(this.takeRecords()); this.takeRecords = () => [{isIntersecting: true, intersectionRatio: 1}]; this.disconnect = () => {}; this.unobserve = () => {}; } } </script> </head> <body id="html-body" class="cms-products-keyboards-mice-and-game-controllers cms-page-view page-layout-cms-nextopia-search-2columns-left"> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WLP74S" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --><input name="form_key" type="hidden" value="eE8dUxut8dwHP48W" /> <noscript> <section class="message global noscript border-b-2 border-blue-500 bg-blue-50 shadow-none m-0 px-0 rounded-none font-normal"> <div class="container text-center"> <p> <strong>JavaScript seems to be disabled in your browser.</strong> <span> For the best experience on our site, be sure to turn on Javascript in your browser. </span> </p> </div> </section> </noscript> <script> document.body.addEventListener('touchstart', () => {}, {passive: true}) </script> <script> // https://github.com/Fischer-L/autoComplt !function(t,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():t.autoComplt=t.returnExports=e()}(this,function(){"use strict";Array.prototype.indexOf||(Array.prototype.indexOf=function(t,e){if(void 0===this||null===this)throw new TypeError('"this" is null or not defined');var o=this.length>>>0;for(e=+e||0,Math.abs(e)===1/0&&(e=0),0>e&&(e+=o,0>e&&(e=0));o>e;e++)if(this[e]===t)return e;return-1});var t=function(){var t=-1;if("Microsoft Internet Explorer"==navigator.appName){var e=navigator.userAgent,o=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");null!=o.exec(e)&&(t=+RegExp.$1)}return-1===t?NaN:t},e=function(){var e=window.navigator.userAgent.toLowerCase();return e.search(/mobile|windows phone/)>=0?i.modeMobile:t()<=9?i.modePC:o().windowWidth>i.modeMobileW?i.modePC:i.modeMobile},o=function(){return window.innerWidth?{windowWidth:window.innerWidth,windowHeight:window.innerHeight}:document.documentElement.offsetHeight?{windowWidth:document.documentElement.offsetWidth,windowHeight:document.documentElement.offsetHeight}:document.body.offsetHeight?{windowWidth:document.body.offsetWidth,windowHeight:document.body.offsetHeight}:document.documentElement.clientHeight?{windowWidth:document.documentElement.clientWidth,windowHeight:document.documentElement.clientHeight}:document.body.clientHeight?{windowWidth:document.body.clientWidth,windowHeight:document.body.clientHeight}:{windowWidth:-1,windowHeight:-1}},i=function(t){return i=t,t.modePC="modePC",t.modeMobile="modeMobile",t.modeMobileW=768,t.autoCompltListClass="autoComplt-list",t.autoCompltHintClass="autoComplt-hint",t.autoCompltHintSelectedClass="autoComplt-hint-selected",t.maxHintNum=e()===i.modePC?10:5,t.autoCompltDelay=250,t.hiddenArg_close_list_n_make_final_selection="hiddenArg_close_list_n_make_final_selection",t.listStatus={attr:"data-listStatus",open:"open"},t.keyCode={up:38,down:40,esc:27,enter:13},t.defaultStyles={autoCompltList:{maxHeight:"none",border:"1px solid #aaa",padding:"0",margin:"0",zIndex:99,overflowX:"hidden",overflowY:"auto",display:"none",position:"absolute",backgroundColor:"#fff"},autoCompltHint:{height:"1.5em",padding:e()===i.modePC?"2px 6px 2px 10px":"6px 6px 6px 10px",margin:"6px 0",overflow:"hidden",listStyleType:"none",color:"#000",backgroundColor:"#fff",cursor:"default",fontSize:"1em"},autoCompltHintSelected:{color:"#fff",backgroundColor:"#3399ff"}},t.adjStyleAttrs={autoCompltList:["border","maxHeight","backgroundColor"],autoCompltHint:["height","padding","margin","color","backgroundColor","fontSize"],autoCompltHintSelected:["color","backgroundColor"]},t.listenersSupported=["select"],i}({}),n=function(t){return t||(t=window.event),t.target||(t.target=t.srcElement),t.stopBubble=function(){this.cancelBubble=!0,this.stopPropoagation&&this.stopPropoagation()},t.stopDefault=function(){return this.preventDefault&&this.preventDefault(),this.returnValue=!1,!1},t},l=function(t,e,o){t.addEventListener?t.addEventListener(e,o):t.attachEvent&&t.attachEvent("on"+e,o)},s=function(t,e,o){t.removeEventListener?t.removeEventListener(e,o):t.detachEvent&&t.detachEvent("on"+e,o)},u=function(t,e){var o=null;if(window.getComputedStyle)o=window.getComputedStyle(t)[e]||null;else if(t.currentStyle){o=t.currentStyle&&t.currentStyle[e];var i,n,l=t.style;null==o&&l&&l[e]&&(o=l[e]),i=l.left,n=t.runtimeStyle&&t.runtimeStyle.left,n&&(t.runtimeStyle.left=t.currentStyle.left),l.left="fontSize"===e?"1em":o,o=l.pixelLeft+"px",l.left=i,n&&(t.runtimeStyle.left=n)}return o},a={buildElem:function(t){var e=document.createElement("DIV");return e.innerHTML=t,e.firstChild.cloneNode(!0)},buildHint:function(t,e){return"string"==typeof t&&t?(t=this.buildElem('<li class="'+i.autoCompltHintClass+'">'+t+"</li>"),t.style.height=t.style.lineHeight=e.autoCompltHint.height,t.style.padding=e.autoCompltHint.padding,t.style.margin=e.autoCompltHint.margin,t.style.overflow=e.autoCompltHint.overflow,t.style.listStyleType=e.autoCompltHint.listStyleType,t.style.color=e.autoCompltHint.color,t.style.backgroundColor=e.autoCompltHint.backgroundColor,t.style.cursor=e.autoCompltHint.cursor,t.style.fontSize=e.autoCompltHint.fontSize,t):null},buildList:function(t){var e=this.buildElem('<ul class="'+i.autoCompltListClass+'"></ul>');return e.style.maxHeight=t.autoCompltList.maxHeight,e.style.border=t.autoCompltList.border,e.style.padding=t.autoCompltList.padding,e.style.margin=t.autoCompltList.margin,e.style.zIndex=t.autoCompltList.zIndex,e.style.overflowX=t.autoCompltList.overflowX,e.style.overflowY=t.autoCompltList.overflowY,e.style.display=t.autoCompltList.display,e.style.position=t.autoCompltList.position,e.style.backgroundColor=t.autoCompltList.backgroundColor,e}},r=function(t){this.uiElem=null,this.assocInput=t,this.mouseOnList=!1,this.onMouseSelectionListener=null,this.maxHintNum=i.maxHintNum,this.styles=JSON.parse(JSON.stringify(i.defaultStyles))};r.prototype.genList=function(){if(!this.uiElem){var t=this;this.uiElem=a.buildList(this.styles),l(this.uiElem,"mouseover",function(e){e=n(e),t.isHint(e.target)&&(t.pick(e.target),t.autoScroll())}),l(this.uiElem,"mouseout",function(e){t.unpick()}),l(this.uiElem,"mousedown",function(e){t.mouseOnList=!0,setTimeout(function(){t.assocInput.focus()},50)}),l(this.uiElem,"mouseup",function(e){e=n(e),t.isHint(e.target)&&(t.pick(e.target),"function"==typeof t.onMouseSelectionListener&&t.onMouseSelectionListener())}),document.body.appendChild(this.uiElem)}},r.prototype.isHint=function(t){if(t&&"object"==typeof t&&1===t.nodeType){var e=" "+t.className+" ";return e.indexOf(" "+i.autoCompltHintClass+" ")>=0}return!1},r.prototype.putHints=function(t){var e=0;if(t instanceof Array){var o,i,n=[];for(i=Math.min(t.length,this.maxHintNum),o=0;i>o;o++)n.push(a.buildHint(t[o],this.styles)),n[n.length-1]||n.pop();if(n.length>0){var l=document.createDocumentFragment();for(o=0,e=n.length;e>o;o++)l.appendChild(n[o]);this.clearHints(),this.genList(),this.uiElem.appendChild(l)}}return e},r.prototype.clearHints=function(){this.uiElem&&(this.uiElem.innerHTML="")},r.prototype.isOpen=function(){return this.uiElem?this.uiElem.getAttribute(i.listStatus.attr)==i.listStatus.open:!1},r.prototype.open=function(){var t;if(this.uiElem&&(t=this.uiElem.querySelectorAll("."+i.autoCompltHintClass))&&t.length){var e,o;for(o=this.assocInput.getBoundingClientRect(),this.uiElem.style.top=(document.documentElement&&document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop)+o.bottom+"px",this.uiElem.style.left=o.left+"px",o=o.right-o.left-parseFloat(u(this.uiElem,"borderLeftWidth"))-parseFloat(u(this.uiElem,"borderRightWidth")),this.uiElem.style.width=o+"px",e=0,o=0;e<t.length;e++)o+=parseFloat(u(t[e],"height"))+parseFloat(u(t[e],"paddingTop"))+parseFloat(u(t[e],"paddingBottom")),t[e+1]&&(o+=Math.max(parseFloat(u(t[e],"marginBottom")),parseFloat(u(t[e+1],"marginTop"))));o+=parseFloat(u(t[0],"marginTop"))+parseFloat(u(t[t.length-1],"marginBottom")),this.uiElem.style.height=o+1+"px",this.uiElem.setAttribute(i.listStatus.attr,i.listStatus.open),this.uiElem.style.display="block"}},r.prototype.close=function(){this.uiElem&&(this.mouseOnList=!1,this.uiElem.parentNode.removeChild(this.uiElem),this.uiElem=null)},r.prototype.autoScroll=function(){var t=this.getPicked();if(t){var e,o=0,i=0,n=t.clientHeight,l=parseFloat(u(t,"marginTop")),s=parseFloat(u(t,"marginBottom"));for(e=t.previousSibling,i=n+(e?Math.max(l,s):l);e;)o+=n,e=e.previousSibling,o+=e?Math.max(l,s):l;(this.uiElem.clientHeight+this.uiElem.scrollTop-o<i||o-this.uiElem.scrollTop<i)&&(this.uiElem.scrollTop=o)}},r.prototype.pick=function(t){if(this.uiElem){var e=null;if(this.isHint(t))e=t;else if("number"==typeof t&&(t>=0||-1===t)){var o=this.uiElem.querySelectorAll("."+i.autoCompltHintClass);o.length>0&&(e=+t,e=-1===e||e>o.length-1?o.length-1:e,e=o[e])}null!==e&&(this.unpick(),e.className+=" "+i.autoCompltHintSelectedClass,e.style.color=this.styles.autoCompltHintSelected.color,e.style.backgroundColor=this.styles.autoCompltHintSelected.backgroundColor)}},r.prototype.unpick=function(){if(this.uiElem){var t=this.getPicked();t&&(t.className=i.autoCompltHintClass,t.style.color=this.styles.autoCompltHint.color,t.style.backgroundColor=this.styles.autoCompltHint.backgroundColor)}},r.prototype.getPicked=function(){return this.uiElem?this.uiElem.querySelector("."+i.autoCompltHintSelectedClass)||null:null};var c={enable:function(t,o){if(t&&"object"==typeof t&&"string"==typeof t.tagName&&"input"==t.tagName.toLowerCase()&&"text"==t.type&&1===t.nodeType&&!t.autoComplt){t.autoComplt={};var u=i.autoCompltDelay,a=!0,c="",p=null,m=null,d=new r(t),f=function(){if(t.value.length>0&&a&&"function"==typeof p&&c!==t.value){var e={that:t,compltTarget:c=t.value,compltTargetMatchCurrentTarget:function(){return e.compltTarget===c},call:function(){e.compltTargetMatchCurrentTarget()&&p.call(e.that,e.compltTarget,e.openHint)},openHint:function(t){e.compltTargetMatchCurrentTarget()&&(d.putHints(t)?d.open():e.that.autoComplt.close())}};setTimeout(e.call,u)}},h=function(){if(a){var e=d.getPicked();e?t.value=e.innerHTML:t.value=c}},y=function(e){d.mouseOnList?(t.focus(),d.mouseOnList=!1):d.isOpen()&&t.autoComplt.close(i.hiddenArg_close_list_n_make_final_selection)},g=function(o){if(e()!==i.modeMobile&&(o=n(o),a))if("keydown"!=o.type||!d.isOpen()||o.keyCode!==i.keyCode.up&&o.keyCode!==i.keyCode.down){if("keyup"==o.type){var l=!1;switch(o.keyCode){case i.keyCode.up:case i.keyCode.down:d.isOpen()||(l=!0);break;case i.keyCode.esc:d.isOpen()&&(t.value=c,t.autoComplt.close(i.hiddenArg_close_list_n_make_final_selection));break;case i.keyCode.enter:d.isOpen()&&(h(),t.autoComplt.close(i.hiddenArg_close_list_n_make_final_selection));break;default:l=!0}l&&(t.value.length>0?f():t.autoComplt.close())}}else{var s=d.getPicked();o.keyCode===i.keyCode.up?s?s.previousSibling?d.pick(s.previousSibling):d.unpick():d.pick(-1):o.keyCode===i.keyCode.down&&(s?s.nextSibling?d.pick(s.nextSibling):d.unpick():d.pick(0)),d.autoScroll(),h()}},C=function(o){e()!==i.modePC&&(t.value.length>0?f():t.autoComplt.close())},H=function(e){null!=m&&"function"==typeof m[e]&&m[e].call(t)};return t.autoComplt.setHintsFetcher=function(t){return null===t||"function"==typeof t?(p=t,!0):!1},t.autoComplt.setListener=function(t,e){return(null===e||"function"==typeof e)&&i.listenersSupported.indexOf(t)>=0?(null==m&&(m={}),m[t]=e,!0):!1},t.autoComplt.setStyles=function(t,e){var o,n,l=!1;switch(t){case i.autoCompltListClass:o=d.styles.autoCompltList,n=i.adjStyleAttrs.autoCompltList;break;case i.autoCompltHintClass:o=d.styles.autoCompltHint,n=i.adjStyleAttrs.autoCompltHint;break;case i.autoCompltHintSelectedClass:o=d.styles.autoCompltHintSelected,n=i.adjStyleAttrs.autoCompltHintSelected}if(e instanceof Object&&o&&n)for(var s=0;s<n.length;s++)("string"==typeof e[n[s]]||"number"==typeof e[n[s]])&&(l||(l={}),l[n[s]]=o[n[s]]=e[n[s]]);return l},t.autoComplt.config=function(t){var e=!1;if(t instanceof Object){var o;void 0!==t.delay&&(o=Math.floor(t.delay))>0&&(e||(e={}),u=e.delay=o),void 0!==t.maxHintNum&&(o=Math.floor(t.maxHintNum))>0&&(e||(e={}),d.maxHintNum=e.maxHintNum=o)}return e},t.autoComplt.close=function(){c="",d.close(),a&&""!==t.value&&arguments[0]===i.hiddenArg_close_list_n_make_final_selection&&H("select")},t.autoComplt.enable=function(){a=!0},t.autoComplt.disable=function(){a=!1,this.close()},t.autoComplt.destroy=function(){s(t,"blur",y),s(t,"keyup",g),s(t,"keydown",g),this.disable(),delete t.autoComplt},d.onMouseSelectionListener=function(){h(),t.autoComplt.close(i.hiddenArg_close_list_n_make_final_selection)},l(t,"blur",y),l(t,"keyup",g),l(t,"keydown",g),l(t,"input",C),o instanceof Object&&(t.autoComplt.config(o),t.autoComplt.setHintsFetcher(o.hintsFetcher)),t}return null}};return c}); </script> <div class="page-wrapper"><header class="page-header"><script type="application/javascript" async src="https://static.klaviyo.com/onsite/js/klaviyo.js?company_id=TnvbUP"></script> <div x-data="initKlaviyoCustomerTracking()" @private-content-loaded.window="sendCustomerDataToKlaviyo(event.detail.data)"></div> <script> function initKlaviyoCustomerTracking() { return { sendCustomerDataToKlaviyo(data) { let _learnq = window._learnq || []; let customer = data && data.customer; if(customer && customer.email) { _learnq.push(['identify', { $email: customer.email, $first_name: customer.firstname ? customer.firstname : '', $last_name: customer.lastname ? customer.lastname : '' }]); } } } } </script> <a class="action skip sr-only focus:not-sr-only focus:absolute focus:z-40 focus:bg-white contentarea" href="#contentarea"> <span> Skip to Content </span> </a> <script> function initHeader () { return { searchOpen: false, cart: {}, isCartOpen: false, isMobile: true, init() { const matchMedia = window.matchMedia("(max-width: 1023px)"); this.onChangeMedia(matchMedia); if(typeof matchMedia.onchange !== 'object') { //prevent an old iOS Safari bug where addEventListener does not accept an event type parameter matchMedia.addListener((event) => this.onChangeMedia(event)); } else { matchMedia.addEventListener( "change", (event) => this.onChangeMedia(event) ) } }, onChangeMedia(mediaQuery) { if(this.isMobile !== mediaQuery.matches){ this.isMobile = mediaQuery.matches; if(this.isMobile){ this.$refs.searchContainerMobile.appendChild(this.$refs.searchForm); }else{ this.$refs.searchContainerDesktop.appendChild(this.$refs.searchForm); } } }, getData(data) { if (data.cart) { this.cart = data.cart } }, isCartEmpty() { return !this.cart.summary_count }, toggleCart(event) { if (event.detail && event.detail.isOpen !== undefined) { this.isCartOpen = event.detail.isOpen if (!this.isCartOpen && this.$refs && this.$refs.cartButton) { this.$refs.cartButton.focus() } } else { this.isCartOpen = true } } } } function initCompareHeader() { return { compareProducts: null, itemCount: 0, receiveCompareData(data) { if (data['compare-products']) { this.compareProducts = data['compare-products']; this.itemCount = this.compareProducts.count; } } } } </script> <div x-data="initHeader()" @keydown.window.escape="searchOpen = false;" @private-content-loaded.window="getData(event.detail.data)" > <div class="bg-white text-gray-800 border-b border-gray-300 h-[46px] hidden lg:block"> <div class="max-w-full lg:max-w-5xl xl:max-w-7xl flex flex-wrap items-center justify-center w-full px-4 py-3 mx-auto mt-0 md:justify-end"> <!--Customer Info --> <a class="text-[13px] border-r border-gray-300 pl-0 px-4 hover:underline md:pl-4" onclick="hyva.setCookie && hyva.setCookie( 'login_redirect', window.location.href, 1 )" href="https://www.gigaparts.com/customer/account/index/"> Sign In </a> <a href="tel:+12563841008" class="text-[13px] border-r border-gray-300 px-4 hover:underline">&#43;1 256-384-1008</a> <a href="http://www.gigaparts.net/sweepstakes/" class="text-[13px] border-r border-gray-300 px-4 hidden md:block hover:underline">Sweepstakes</a> <a class="text-[13px] pl-4 hover:underline" href="https://www.gigaparts.com/customer/account/create/" > Create an Account </a> </div> </div> <div class="bg-white relative py-2 lg:py-0"> <div class="max-w-full lg:max-w-5xl xl:max-w-7xl w-full mx-auto px-4 flex lg:justify-between items-center lg:h-[82px]"> <div class="burger-icon mr-2 lg:hidden"> <div x-data="initMenuMobile_673eceb790674()" class="relative z-20 navigation order-first w-12 lg:hidden" > <!-- mobile --> <div @load.window="setActiveMenu($root)" class="" :class="{'h-screen overflow-x-hidden overflow-y-auto fixed top-0 left-0 w-full bg-container-lighter' : open}" @toggle-mobile-menu.window="open = !open" @keydown.window.escape="open=false" > <div class="flex items-baseline justify-between menu-icon"> <div class="flex justify-between w-full items-center" :class="{'bg-primary' : open}"> <div :class="{'hidden': !open, 'block': open}" class="hidden text-uppercase text-white pl-6 text-[14px]"> SHOP BY DEPARTMENT </div> <a @click="$dispatch('toggle-mobile-menu')" class="flex items-center justify-center cursor-pointer" :class="{ 'py-4 px-6': open }"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="hidden text-white" width="24" height="24" :class="{ 'hidden' : !open, 'block': open }" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> <title>x</title></svg> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="p-3" width="48" height="48" :class="{ 'hidden' : open, 'block': !open }" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M4 6h16M4 12h16M4 18h16"/> <title>menu</title></svg> </a> </div> </div> <nav class="hidden w-full duration-150 ease-in-out transform border-t transition-display border-container" :class="{ 'hidden' : !open }" > <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <a class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container level-0 text-[14px]" href="https://www.gigaparts.com/radio-gear" title="RADIO&#x20;GEAR"> RADIO GEAR </a> <a class="absolute right-0 flex justify-end items-center w-full h-full pr-6 cursor-pointer" @click="mobilePanelActiveId = mobilePanelActiveId === 'cms-hierarchy-node-114' ? 0 : 'cms-hierarchy-node-114'" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> <title>chevron-right</title></svg> </a> </span> <div class="absolute top-0 right-0 z-[1000] w-full h-full transition-transform duration-200 ease-in-out translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'cms-hierarchy-node-114', 'translate-x-0' : mobilePanelActiveId === 'cms-hierarchy-node-114', }" > <a class="flex items-center mx-3 px-3 py-4 border-b cursor-pointer border-container text-[14px]" @click="mobilePanelActiveId = 0" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/> <title>chevron-left</title></svg> <span class="ml-4"> RADIO GEAR </span> </a> <a href="https://www.gigaparts.com/amateur-radio-transceivers" title="AMATEUR&#x20;RADIO&#x20;TRANSCEIVERS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> AMATEUR RADIO TRANSCEIVERS </span> </a> <a href="https://www.gigaparts.com/antenna-systems#?Category1=Radios&amp;Category2=Antenna+Systems&amp;search_return=all&amp;res_per_page=60" title="ANTENNAS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> ANTENNAS </span> </a> <a href="https://www.gigaparts.com/wire-and-coax#?Category1=Radios&amp;Category2=Coax+and+Cables&amp;search_return=all&amp;res_per_page=60" title="COAX&#x20;&amp;&#x20;CABLES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> COAX &amp; CABLES </span> </a> <a href="https://www.gigaparts.com/gmrs-transceivers" title="GMRS&#x20;TRANSCEIVERS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> GMRS TRANSCEIVERS </span> </a> <a href="https://www.gigaparts.com/cb-radios#?Category1=Radios&amp;Category2=CB+Transceivers&amp;search_return=all&amp;res_per_page=60" title="CB&#x20;RADIOS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> CB RADIOS </span> </a> <a href="https://www.gigaparts.com/transceiver-accessories#?Category1=Radios&amp;Category2=Transceiver+Acc&amp;search_return=all&amp;res_per_page=60" title="TRANSCEIVER&#x20;ACCESSORIES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> TRANSCEIVER ACCESSORIES </span> </a> <a href="https://www.gigaparts.com/scanners-receivers-and-gps#?Category1=Radios&amp;Category2=Scanners%2C+Receivers+and+GPS&amp;search_return=all&amp;res_per_page=60" title="RECEIVERS&#x20;&amp;&#x20;SCANNERS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> RECEIVERS &amp; SCANNERS </span> </a> <a href="https://www.gigaparts.com/amplifiers#?Category1=Radios&amp;Category2=Amplifiers&amp;search_return=all&amp;res_per_page=60" title="AMPLIFIERS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> AMPLIFIERS </span> </a> <a href="https://www.gigaparts.com/radio-audio-devices#?Category1=Radios&amp;Category2=Radio+Audio+Devices&amp;search_return=all&amp;res_per_page=60" title="RADIO&#x20;AUDIO&#x20;DEVICES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> RADIO AUDIO DEVICES </span> </a> <a href="https://www.gigaparts.com/tower-and-shack-accessories#?Category1=Radios&amp;Category2=Tower+and+Shack+Acc&amp;search_return=all&amp;res_per_page=60" title="TOWER&#x20;&amp;&#x20;SHACK&#x20;ACCESSORIES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> TOWER &amp; SHACK ACCESSORIES </span> </a> <a href="https://www.gigaparts.com/power-supplies-accessories#?Category1=Radios&amp;Category2=Power+Solutions+and+Acc&amp;search_return=all&amp;res_per_page=60" title="POWER&#x20;SOLUTIONS&#x20;&amp;&#x20;ACCESSORIES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> POWER SOLUTIONS &amp; ACCESSORIES </span> </a> <a href="https://www.gigaparts.com/accessories#?Category1=Radios&amp;Category2=Accessories&amp;search_return=all&amp;res_per_page=60" title="ACCESSORIES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> ACCESSORIES </span> </a> <a href="https://www.gigaparts.com/software-and-pc-interface#?Category1=Radios&amp;Category2=Software+and+PC+Interface&amp;search_return=all&amp;res_per_page=60" title="SOFTWARE&#x20;&amp;&#x20;PC&#x20;INTERFACE" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> SOFTWARE &amp; PC INTERFACE </span> </a> <a href="/products/used-radio-gear" title="USED&#x20;EQUIPMENT" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> USED EQUIPMENT </span> </a> </div> </div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <a class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container level-0 text-[14px]" href="/photography" title="PHOTOGRAPHY&#x20;GEAR"> PHOTOGRAPHY GEAR </a> <a class="absolute right-0 flex justify-end items-center w-full h-full pr-6 cursor-pointer" @click="mobilePanelActiveId = mobilePanelActiveId === 'cms-hierarchy-node-325' ? 0 : 'cms-hierarchy-node-325'" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> <title>chevron-right</title></svg> </a> </span> <div class="absolute top-0 right-0 z-[1000] w-full h-full transition-transform duration-200 ease-in-out translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'cms-hierarchy-node-325', 'translate-x-0' : mobilePanelActiveId === 'cms-hierarchy-node-325', }" > <a class="flex items-center mx-3 px-3 py-4 border-b cursor-pointer border-container text-[14px]" @click="mobilePanelActiveId = 0" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/> <title>chevron-left</title></svg> <span class="ml-4"> PHOTOGRAPHY GEAR </span> </a> <a href="/photography/batteries-and-power-accessories" title="BATTERIES&#x20;&amp;&#x20;POWER&#x20;ACCESSORIES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> BATTERIES &amp; POWER ACCESSORIES </span> </a> <a href="/photography/cameras" title="CAMERAS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> CAMERAS </span> </a> <a href="/photography/camera-accessories" title="CAMERA&#x20;ACCESSORIES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> CAMERA ACCESSORIES </span> </a> <a href="/photography/lenses" title="LENSES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> LENSES </span> </a> <a href="/photography/lens-accessories" title="LENS&#x20;ACCESSORIES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> LENS ACCESSORIES </span> </a> <a href="/photography/photography-bags-and-cases" title="PHOTOGRAPHY&#x20;BAGS&#x20;&amp;&#x20;CASES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> PHOTOGRAPHY BAGS &amp; CASES </span> </a> <a href="/photography/studio-equipment-and-lighting" title="STUDIO&#x20;EQUIPMENT&#x20;&amp;&#x20;LIGHTING" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> STUDIO EQUIPMENT &amp; LIGHTING </span> </a> <a href="/photography/tripods-and-supports" title="TRIPODS&#x20;&amp;&#x20;SUPPORTS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> TRIPODS &amp; SUPPORTS </span> </a> </div> </div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <a class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container level-0 text-[14px]" href="/astronomy" title="ASTRONOMY&#x20;GEAR"> ASTRONOMY GEAR </a> <a class="absolute right-0 flex justify-end items-center w-full h-full pr-6 cursor-pointer" @click="mobilePanelActiveId = mobilePanelActiveId === 'cms-hierarchy-node-334' ? 0 : 'cms-hierarchy-node-334'" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> <title>chevron-right</title></svg> </a> </span> <div class="absolute top-0 right-0 z-[1000] w-full h-full transition-transform duration-200 ease-in-out translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'cms-hierarchy-node-334', 'translate-x-0' : mobilePanelActiveId === 'cms-hierarchy-node-334', }" > <a class="flex items-center mx-3 px-3 py-4 border-b cursor-pointer border-container text-[14px]" @click="mobilePanelActiveId = 0" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/> <title>chevron-left</title></svg> <span class="ml-4"> ASTRONOMY GEAR </span> </a> <a href="/astronomy/astrophotography-equipment" title="ASTROPHOTOGRAPHY&#x20;EQUIPMENT" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> ASTROPHOTOGRAPHY EQUIPMENT </span> </a> <a href="/astronomy/mounts-and-tripods" title="MOUNTS&#x20;AND&#x20;TRIPODS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> MOUNTS AND TRIPODS </span> </a> <a href="/astronomy/optical-accessories" title="OPTICAL&#x20;ACCESSORIES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> OPTICAL ACCESSORIES </span> </a> <a href="/astronomy/sport-optics" title="SPORT&#x20;OPTICS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> SPORT OPTICS </span> </a> <a href="/astronomy/star-charts-and-books" title="STAR&#x20;CHARTS&#x20;AND&#x20;BOOKS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> STAR CHARTS AND BOOKS </span> </a> <a href="/astronomy/telescope-accessories" title="TELESCOPE&#x20;ACCESSORIES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> TELESCOPE ACCESSORIES </span> </a> <a href="/astronomy/telescopes" title="TELESCOPES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> TELESCOPES </span> </a> </div> </div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <a class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container level-0 text-[14px]" href="/personalized-items" title="PERSONALIZED&#x20;ITEMS"> PERSONALIZED ITEMS </a> <a class="absolute right-0 flex justify-end items-center w-full h-full pr-6 cursor-pointer" @click="mobilePanelActiveId = mobilePanelActiveId === 'cms-hierarchy-node-127' ? 0 : 'cms-hierarchy-node-127'" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> <title>chevron-right</title></svg> </a> </span> <div class="absolute top-0 right-0 z-[1000] w-full h-full transition-transform duration-200 ease-in-out translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'cms-hierarchy-node-127', 'translate-x-0' : mobilePanelActiveId === 'cms-hierarchy-node-127', }" > <a class="flex items-center mx-3 px-3 py-4 border-b cursor-pointer border-container text-[14px]" @click="mobilePanelActiveId = 0" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/> <title>chevron-left</title></svg> <span class="ml-4"> PERSONALIZED ITEMS </span> </a> <a href="/nsearch/?lp=Personalized%20Gifts%20Under%20%2450" title="GIFTS&#x20;UNDER&#x20;&#x24;50" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> GIFTS UNDER $50 </span> </a> <a href="/nsearch/?lp=Personalized%20Bags#?lp=Personalized+Bags&amp;search_return=all&amp;res_per_page=60" title="BAGS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> BAGS </span> </a> <a href="/nsearch/?q=business+cards" title="BUSINESS&#x20;CARDS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> BUSINESS CARDS </span> </a> <a href="/nsearch/?q=santa" title="CHRISTMAS&#x20;GEAR" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> CHRISTMAS GEAR </span> </a> <a href="/drinkware" title="DRINKWARE" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> DRINKWARE </span> </a> <a href="/nsearch/?lp=BALLCAPS#?lp=BALLCAPS&amp;search_return=all&amp;res_per_page=60" title="HATS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> HATS </span> </a> <a href="/nsearch/?q=desk+lamp" title="LED&#x20;DESK&#x20;LAMPS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> LED DESK LAMPS </span> </a> <a href="/nsearch/?q=MY54" title="LEATHERETTE&#x20;GOODS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> LEATHERETTE GOODS </span> </a> <a href="/personalized-name-badges" title="NAME&#x20;BADGES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> NAME BADGES </span> </a> <a href="/nsearch/?lp=nike-hats#?lp=nike-hats&amp;search_return=all&amp;res_per_page=60" title="NIKE&#x20;GEAR" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> NIKE GEAR </span> </a> <a href="/nsearch/?lp=Outerwear" title="OUTERWEAR" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> OUTERWEAR </span> </a> <a href="/personalization/wearables/pocket-tools" title="POCKET&#x20;TOOLS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> POCKET TOOLS </span> </a> <a href="/nsearch/?q=personalized+posters#?keywords=personalized+posters&amp;search_return=all&amp;res_per_page=60" title="POSTERS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> POSTERS </span> </a> <a href="/nsearch/?q=personalized+qsl+cards" title="QSL&#x20;CARDS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> QSL CARDS </span> </a> <a href="https://www.gigaparts.com/nsearch/?lp=Shirts-Landing#?lp=Shirts-Landing&amp;search_return=all&amp;res_per_page=60" title="SHIRTS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> SHIRTS </span> </a> <a href="/nsearch/?q=personalized+stationery" title="STATIONERY" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> STATIONERY </span> </a> </div> </div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <a class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container level-0 text-[14px]" href="/computers" title="COMPUTER&#x20;GEAR"> COMPUTER GEAR </a> <a class="absolute right-0 flex justify-end items-center w-full h-full pr-6 cursor-pointer" @click="mobilePanelActiveId = mobilePanelActiveId === 'cms-hierarchy-node-128' ? 0 : 'cms-hierarchy-node-128'" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> <title>chevron-right</title></svg> </a> </span> <div class="absolute top-0 right-0 z-[1000] w-full h-full transition-transform duration-200 ease-in-out translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'cms-hierarchy-node-128', 'translate-x-0' : mobilePanelActiveId === 'cms-hierarchy-node-128', }" > <a class="flex items-center mx-3 px-3 py-4 border-b cursor-pointer border-container text-[14px]" @click="mobilePanelActiveId = 0" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/> <title>chevron-left</title></svg> <span class="ml-4"> COMPUTER GEAR </span> </a> <a href="/computers/core-components" title="CORE&#x20;COMPONENTS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> CORE COMPONENTS </span> </a> <a href="/computers/networking" title="NETWORKING" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> NETWORKING </span> </a> <a href="/computers/pcs" title="PCs" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> PCs </span> </a> <a href="/computers/peripherals" title="PERIPHERALS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> PERIPHERALS </span> </a> <a href="/computers/furniture" title="FURNITURE" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> FURNITURE </span> </a> <a href="/computers/cables-and-adapters" title="CABLES&#x20;AND&#x20;ADAPTERS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> CABLES AND ADAPTERS </span> </a> <a href="/computers/pc-cooling" title="PC&#x20;COOLING" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> PC COOLING </span> </a> <a href="/computers/portable-electronics" title="PORTABLE&#x20;ELECTRONICS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> PORTABLE ELECTRONICS </span> </a> <a href="/computers/storage-devices" title="STORAGE&#x20;DEVICES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> STORAGE DEVICES </span> </a> <a href="/computers/software" title="SOFTWARE" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> SOFTWARE </span> </a> <a href="/computers/power-protection" title="POWER&#x20;PROTECTION" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> POWER PROTECTION </span> </a> <a href="/computers/peripheral-accessories" title="PERIPHERAL&#x20;ACCESSORIES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> PERIPHERAL ACCESSORIES </span> </a> <a href="/computers/pc-accessories" title="PC&#x20;ACCESSORIES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> PC ACCESSORIES </span> </a> <a href="/refurbished-apple" title="REFURBISHED&#x20;APPLE&#x20;GEAR" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> REFURBISHED APPLE GEAR </span> </a> </div> </div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <a class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container level-0 text-[14px]" href="https://www.gigaparts.com/treasure-hunting" title="TREASURE&#x20;HUNTING"> TREASURE HUNTING </a> <a class="absolute right-0 flex justify-end items-center w-full h-full pr-6 cursor-pointer" @click="mobilePanelActiveId = mobilePanelActiveId === 'cms-hierarchy-node-130' ? 0 : 'cms-hierarchy-node-130'" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> <title>chevron-right</title></svg> </a> </span> <div class="absolute top-0 right-0 z-[1000] w-full h-full transition-transform duration-200 ease-in-out translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'cms-hierarchy-node-130', 'translate-x-0' : mobilePanelActiveId === 'cms-hierarchy-node-130', }" > <a class="flex items-center mx-3 px-3 py-4 border-b cursor-pointer border-container text-[14px]" @click="mobilePanelActiveId = 0" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/> <title>chevron-left</title></svg> <span class="ml-4"> TREASURE HUNTING </span> </a> <a href="/products/metal-detectors" title="METAL&#x20;DETECTORS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> METAL DETECTORS </span> </a> <a href="/products/detector-accessories" title="DETECTOR&#x20;ACCESSORIES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> DETECTOR ACCESSORIES </span> </a> <a href="/products/books-videos-and-maps" title="BOOKS,&#x20;VIDEOS,&#x20;&amp;&#x20;MAPS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> BOOKS, VIDEOS, &amp; MAPS </span> </a> <a href="/products/prospecting-equipment" title="PROSPECTING&#x20;EQUIPMENT" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> PROSPECTING EQUIPMENT </span> </a> </div> </div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <a class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container level-0 text-[14px]" href="/makers" title="MAKER&#x20;SUPPLIES"> MAKER SUPPLIES </a> <a class="absolute right-0 flex justify-end items-center w-full h-full pr-6 cursor-pointer" @click="mobilePanelActiveId = mobilePanelActiveId === 'cms-hierarchy-node-131' ? 0 : 'cms-hierarchy-node-131'" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> <title>chevron-right</title></svg> </a> </span> <div class="absolute top-0 right-0 z-[1000] w-full h-full transition-transform duration-200 ease-in-out translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'cms-hierarchy-node-131', 'translate-x-0' : mobilePanelActiveId === 'cms-hierarchy-node-131', }" > <a class="flex items-center mx-3 px-3 py-4 border-b cursor-pointer border-container text-[14px]" @click="mobilePanelActiveId = 0" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/> <title>chevron-left</title></svg> <span class="ml-4"> MAKER SUPPLIES </span> </a> <a href="/makers/3d-printing" title="3D&#x20;PRINTING" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> 3D PRINTING </span> </a> <a href="/makers/components" title="COMPONENTS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> COMPONENTS </span> </a> <a href="/makers/component-accessories" title="COMPONENT&#x20;ACCESSORIES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> COMPONENT ACCESSORIES </span> </a> <a href="/makers/development-boards" title="DEVELOPMENT&#x20;BOARDS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> DEVELOPMENT BOARDS </span> </a> <a href="/makers/educational-resources" title="EDUCATIONAL&#x20;RESOURCES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> EDUCATIONAL RESOURCES </span> </a> <a href="/makers/output-devices" title="OUTPUT&#x20;DEVICES" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> OUTPUT DEVICES </span> </a> <a href="/makers/tools-and-equipment" title="TOOLS&#x20;AND&#x20;EQUIPMENT" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> TOOLS AND EQUIPMENT </span> </a> </div> </div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <a class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container level-0 text-[14px]" href="https://www.gigaparts.com/emergency-prep" title="EMERGENCY&#x20;PREP"> EMERGENCY PREP </a> <a class="absolute right-0 flex justify-end items-center w-full h-full pr-6 cursor-pointer" @click="mobilePanelActiveId = mobilePanelActiveId === 'cms-hierarchy-node-132' ? 0 : 'cms-hierarchy-node-132'" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> <title>chevron-right</title></svg> </a> </span> <div class="absolute top-0 right-0 z-[1000] w-full h-full transition-transform duration-200 ease-in-out translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'cms-hierarchy-node-132', 'translate-x-0' : mobilePanelActiveId === 'cms-hierarchy-node-132', }" > <a class="flex items-center mx-3 px-3 py-4 border-b cursor-pointer border-container text-[14px]" @click="mobilePanelActiveId = 0" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/> <title>chevron-left</title></svg> <span class="ml-4"> EMERGENCY PREP </span> </a> <a href="https://www.gigaparts.com/emergency-prep" title="EMERGENCY&#x20;PREPAREDNESS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> EMERGENCY PREPAREDNESS </span> </a> <a href="/products/weather-radios-and-stations" title="WEATHER&#x20;RADIOS&#x20;&amp;&#x20;STATIONS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> WEATHER RADIOS &amp; STATIONS </span> </a> <a href="https://www.gigaparts.com/toys-and-gadgets/edc/flashlights" title="FLASHLIGHTS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> FLASHLIGHTS </span> </a> </div> </div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <a class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container level-0 text-[14px]" href="https://www.gigaparts.com/toys-and-gadgets" title="TOYS&#x20;&amp;&#x20;GADGETS"> TOYS &amp; GADGETS </a> <a class="absolute right-0 flex justify-end items-center w-full h-full pr-6 cursor-pointer" @click="mobilePanelActiveId = mobilePanelActiveId === 'cms-hierarchy-node-133' ? 0 : 'cms-hierarchy-node-133'" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> <title>chevron-right</title></svg> </a> </span> <div class="absolute top-0 right-0 z-[1000] w-full h-full transition-transform duration-200 ease-in-out translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'cms-hierarchy-node-133', 'translate-x-0' : mobilePanelActiveId === 'cms-hierarchy-node-133', }" > <a class="flex items-center mx-3 px-3 py-4 border-b cursor-pointer border-container text-[14px]" @click="mobilePanelActiveId = 0" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/> <title>chevron-left</title></svg> <span class="ml-4"> TOYS &amp; GADGETS </span> </a> <a href="https://www.gigaparts.com/toys-and-gadgets/edc" title="EDC" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> EDC </span> </a> <a href="https://www.gigaparts.com/toys-and-gadgets/gadgets" title="GADGETS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> GADGETS </span> </a> <a href="https://www.gigaparts.com/toys-and-gadgets/impulse" title="IMPULSE" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> IMPULSE </span> </a> <a href="https://www.gigaparts.com/toys-and-gadgets/magic-gear" title="MAGIC&#x20;GEAR" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> MAGIC GEAR </span> </a> <a href="https://www.gigaparts.com/toys-and-gadgets/stem-toys" title="STEM&#x20;TOYS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> STEM TOYS </span> </a> <a href="/stocking-stuffers" title="STOCKING&#x20;STUFFERS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> STOCKING STUFFERS </span> </a> <a href="https://www.gigaparts.com/toys-and-gadgets/toys" title="TOYS" class="flex items-center w-full mx-3 px-3 py-4 border-b cursor-pointer bg-container-lighter border-container text-[14px]" > <span class="w-6"></span> <span class="ml-4 text-base text-gray-700 lg:ml-0"> TOYS </span> </a> </div> </div> <div class="additional-mobile-menu"> <div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><style> .group:hover .group-hover\:visible { visibility: visible; } .gold-text { color: #ffd700; } </style> <div class="group relative cursor-pointer inline-block mr-2"> <div class="flex items-center justify-between space-x-5"> <a class="menu-hover gold-text">Tech Services</a> <span> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-4 w-4"> <path stroke-linecap="round" stroke-linejoin="round" d="M19.5 8.25l-7.5 7.5-7.5-7.5"/> </svg> </span> </div> <div class="invisible absolute z-50 flex w-full flex-col bg-white py-1 px-4 text-gray-500 shadow-xl group-hover:visible" style="min-width: 200px;"> <a href="/it" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Tech Solutions </a> <a href="/services/pc-repair" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> PC Repairs </a> </div> </div> <div class="group relative cursor-pointer inline-block mr-2"> <div class="flex items-center justify-between space-x-5 px-4"> <a class="menu-hover">Specials</a> <span> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-4 w-4"> <path stroke-linecap="round" stroke-linejoin="round" d="M19.5 8.25l-7.5 7.5-7.5-7.5" /> </svg> </span> </div> <div class="invisible absolute z-50 flex w-full flex-col bg-white py-1 px-4 text-gray-500 shadow-xl group-hover:visible" style="min-width: 200px;"> <a href="/used-open-box-and-refurbished-items" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Bargain Corner </a> <a href="/weekly-specials-at-gigaparts" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Weekly Specials </a> <a href="/clearance-items#?Onclearance=Yes&Stockstatusfilter=Currently+in+stock%21&search_return=all&res_per_page=60" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Clearance Items </a> <a href="/rebates" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Manufacturer Rebates </a> <a href="/sweepstakes" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Sweepstakes </a> </div> </div> <a href="https://events.gigaparts.com" class="mr-6 inline-block">Events</a> <div class="group relative cursor-pointer inline-block mr-2"> <div class="flex items-center justify-between space-x-5 px-4"> <a class="menu-hover">Visit Us</a> <span> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-4 w-4"> <path stroke-linecap="round" stroke-linejoin="round" d="M19.5 8.25l-7.5 7.5-7.5-7.5"/> </svg> </span> </div> <div class="invisible absolute z-50 flex w-full flex-col bg-white py-1 px-4 text-gray-500 shadow-xl group-hover:visible" style="min-width: 200px;"> <a href="/huntsville" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Huntsville, AL </a> </div> </div> </div> </div> </nav> </div> </div> <div class="fixed bottom-0 left-0 w-full z-20 bg-white flex justify-between border-t border-t-gray-300 h-14 px-4 md:hidden"> <a href="https://www.gigaparts.com/" class="flex flex-col items-center justify-center text-[14px] leading-4 px-2.5"> <i class="icon-home text-[18px] mb-1 mt-0.5"></i> Home </a> <a @click="$dispatch('toggle-mobile-menu')" class="flex flex-col items-center justify-center text-[14px] leading-4 px-2.5"> <i class="icon-menu text-[18px] mb-1 mt-0.5"></i> Menu </a> <a href="https://www.gigaparts.com/customer/account/" class="flex flex-col items-center justify-center text-[14px] leading-4 px-2.5"> <i class="icon-user text-[18px] mb-1 mt-0.5"></i> Account </a> <a href="https://www.gigaparts.com/checkout/cart/index/" class="flex flex-col items-center justify-center text-[14px] leading-4 px-2.5"> <i class="icon-handbag text-[18px] mb-1 mt-0.5"></i> Cart </a> </div> <script> 'use strict'; const initMenuMobile_673eceb790674 = () => { return { mobilePanelActiveId: null, open: false, setActiveMenu(menuNode) { Array.from(menuNode.querySelectorAll('a')).filter(link => { return link.href === window.location.href.split('?')[0]; }).map(item => { // item.closest('div.level-0') && // item.closest('div.level-0').querySelector('a.level-0').classList.add('underline'); }); } } } </script> </div> <!--Logo--> <div class="logo-wrapper flex justify-center max-w-[220px] lg:max-w-[initial]"> <a class="flex items-center justify-center text-xl font-medium tracking-wide text-gray-800 no-underline hover:no-underline font-title" href="https://www.gigaparts.com/" title="GigaParts.com" aria-label="store logo"> <img class="img-logo" src="https://www.gigaparts.com/static/version1732095243/frontend/GigaParts/hyva/en_US/images/logo.svg" title="GigaParts.com" alt="GigaParts.com" width="300" height="36" /> </a> </div> <div class="pr-6 pl-14 hidden lg:block"> <div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"></div> </div> <!--Search desktop--> <div x-ref="searchContainerDesktop" class="hidden lg:block lg:flex-1 lg:mx-4"> </div> <div class="flex gap-3 items-center ml-auto md:gap-4" id="menu-icons-group"> <div class="hidden lg:block"> </div> <!--Search icon--> <button id="menu-search-icon" class="outline-none focus:ring-blue-700 focus:ring-1 lg:hidden" @click.prevent=" searchOpen = !searchOpen; $dispatch('search-open'); " aria-label="Toggle&#x20;search&#x20;form" aria-haspopup="true" :aria-expanded="searchOpen" x-ref="searchButton" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="hidden w-[30px] h-[30px] stroke-[1.5px] lg:w-[36px] lg:h-[36px]" width="30" height="30" :class="{ 'hidden' : !searchOpen, 'block': searchOpen }" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> <title>x</title></svg> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="text-slate-800 hover:text-black w-[30px] h-[30px] stroke-[1.5px] lg:w-[36px] lg:h-[36px]" width="30" height="30" aria-hidden="true" :class="{ 'hidden' : searchOpen, 'block': !searchOpen }"> <path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/> </svg> </button> <a class="lg:hidden" id="menu-acc-icon" href="https://www.gigaparts.com/customer/account/" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="text-slate-800 hover:text-black w-[30px] h-[30px] stroke-[1.5px] lg:w-[36px] lg:h-[36px]" width="30" height="30" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M5.121 17.804A13.937 13.937 0 0112 16c2.5 0 4.847.655 6.879 1.804M15 10a3 3 0 11-6 0 3 3 0 016 0zm6 2a9 9 0 11-18 0 9 9 0 0118 0z"/> </svg> </a> <!--Compare Icon--> <a id="compare-link" x-cloak x-show="itemCount > 0" class="relative inline-block no-underline outline-none text-black hover:text-primary duration-300 transition-all ease-[ease]" href="https://www.gigaparts.com/catalog/product_compare/index/" title="Compare Products" x-data="initCompareHeader()" @private-content-loaded.window="receiveCompareData($event.detail.data)" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="text-slate-800 hover:text-black w-[30px] h-[30px] stroke-[1.5px] lg:w-[36px] lg:h-[36px]" width="30" height="30" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M3 6l3 1m0 0l-3 9a5.002 5.002 0 006.001 0M6 7l3 9M6 7l6-2m6 2l3-1m-3 1l-3 9a5.002 5.002 0 006.001 0M18 7l3 9m-3-9l-6-2m0-2v2m0 16V5m0 16H9m3 0h3"/> </svg> <span class="sr-only label"> Compare Products </span> <span class="absolute top-0 right-0 py-1 px-1.5 -mt-5 -mr-3 text-[10px] leading-none text-center text-white uppercase transform translate-y-1/2 rounded-full bg-primary min-w-[18px]" > <span x-text="itemCount"></span> <span x-show="itemCount === 1" class="sr-only"> item </span> <span x-show="itemCount > 1" class="sr-only"> items </span> </span> </a> <!--Cart Icon--> <a id="menu-cart-icon" @click.prevent.stop="$dispatch('toggle-cart',{});" class="relative outline-none text-black duration-300 transition-all ease-[ease] mr-1 hover:text-primary" href="https://www.gigaparts.com/checkout/cart/index/" > <span class="sr-only label"> Cart </span> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="text-slate-800 hover:text-black w-[30px] h-[30px] stroke-[1.5px] lg:w-[36px] lg:h-[36px]" width="30" height="30" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"/> </svg> <span x-text="cart.summary_count" class="absolute top-0 right-0 hidden py-1 px-1.5 -mt-4 -mr-1 text-[10px] leading-none text-center text-white uppercase transform translate-y-1/2 rounded-full bg-primary min-w-[18px]" :class="{ 'hidden': !cart.summary_count, 'block': cart.summary_count }" ></span> </a> </div> </div> </div> <div x-data="{atTop : true}" class="hidden fixed top-0 left-0 w-full z-30 bg-white border-b border-b-gray-300" @scroll.window="atTop = window.pageYOffset > 215 ? false : true" :class="(atTop === false) ? 'lg:!block' : 'hidden'"> <div class="max-w-[640px] md:max-w-3xl lg:max-w-5xl xl:max-w-7xl w-full mx-auto px-4"> <div class="flex items-center"> <div class="w-[300px] mr-[15%]"> <div class="logo-wrapper flex justify-center max-w-[220px] lg:max-w-[initial]"> <a class="flex items-center justify-center text-xl font-medium tracking-wide text-gray-800 no-underline hover:no-underline font-title" href="https://www.gigaparts.com/" title="GigaParts.com" aria-label="store logo"> <img class="img-logo" src="https://www.gigaparts.com/static/version1732095243/frontend/GigaParts/hyva/en_US/images/logo.svg" title="GigaParts.com" alt="GigaParts.com" width="300" height="36" /> </a> </div> </div> <div class="leading-[80px] font-medium uppercase"> <div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><style> .group:hover .group-hover\:visible { visibility: visible; } .gold-text { color: #ffd700; } </style> <div class="group relative cursor-pointer inline-block mr-2"> <div class="flex items-center justify-between space-x-5"> <a class="menu-hover gold-text">Tech Services</a> <span> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-4 w-4"> <path stroke-linecap="round" stroke-linejoin="round" d="M19.5 8.25l-7.5 7.5-7.5-7.5"/> </svg> </span> </div> <div class="invisible absolute z-50 flex w-full flex-col bg-white py-1 px-4 text-gray-500 shadow-xl group-hover:visible" style="min-width: 200px;"> <a href="/it" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Tech Solutions </a> <a href="/services/pc-repair" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> PC Repairs </a> </div> </div> <div class="group relative cursor-pointer inline-block mr-2"> <div class="flex items-center justify-between space-x-5 px-4"> <a class="menu-hover">Specials</a> <span> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-4 w-4"> <path stroke-linecap="round" stroke-linejoin="round" d="M19.5 8.25l-7.5 7.5-7.5-7.5" /> </svg> </span> </div> <div class="invisible absolute z-50 flex w-full flex-col bg-white py-1 px-4 text-gray-500 shadow-xl group-hover:visible" style="min-width: 200px;"> <a href="/used-open-box-and-refurbished-items" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Bargain Corner </a> <a href="/weekly-specials-at-gigaparts" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Weekly Specials </a> <a href="/clearance-items#?Onclearance=Yes&Stockstatusfilter=Currently+in+stock%21&search_return=all&res_per_page=60" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Clearance Items </a> <a href="/rebates" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Manufacturer Rebates </a> <a href="/sweepstakes" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Sweepstakes </a> </div> </div> <a href="https://events.gigaparts.com" class="mr-6 inline-block">Events</a> <div class="group relative cursor-pointer inline-block mr-2"> <div class="flex items-center justify-between space-x-5 px-4"> <a class="menu-hover">Visit Us</a> <span> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-4 w-4"> <path stroke-linecap="round" stroke-linejoin="round" d="M19.5 8.25l-7.5 7.5-7.5-7.5"/> </svg> </span> </div> <div class="invisible absolute z-50 flex w-full flex-col bg-white py-1 px-4 text-gray-500 shadow-xl group-hover:visible" style="min-width: 200px;"> <a href="/huntsville" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Huntsville, AL </a> </div> </div> </div> </div> <!--Cart Icon--> <a id="menu-cart-icon" @click.prevent.stop="$dispatch('toggle-cart',{});" class="relative outline-none text-black duration-300 transition-all ease-[ease] sm:ml-auto hover:text-primary" href="https://www.gigaparts.com/checkout/cart/index/" > <span class="sr-only label"> Cart </span> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="text-slate-800 hover:text-black stroke-[1.5px]" width="38" height="38" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"/> </svg> <span x-text="cart.summary_count" class="absolute top-0 right-0 hidden py-1 px-1.5 -mt-5 -mr-3 text-[10px] leading-none text-center text-white uppercase transform translate-y-1/2 rounded-full bg-primary" :class="{ 'hidden': !cart.summary_count, 'block': cart.summary_count }" ></span> </a> </div> </div> </div> <div class="bg-primary relative h-[55px] hidden lg:block"> <div class="max-w-[640px] md:max-w-3xl lg:max-w-5xl xl:max-w-7xl w-full mx-auto px-4"> <div class="hidden lg:flex items-center"> <div x-data="initMenuDesktop_673eceb7f149d()" class="z-20 w-[300px] pr-6 mr-6 border-r border-white navigation hidden lg:flex" > <!-- desktop --> <div @load.window="setActiveMenu($root)" class="justify-between mx-auto w-full" > <nav class="flex flex-wrap" > <div class="level-0 flex items-center transition-colors duration-500 relative" > <a href="#" title="SHOP&#x20;BY&#x20;DEPARTMENT" class="level-0 inline-flex uppercase shadow-sm font-semibold text-white whitespace-nowrap w-full leading-[55px]" @click="$dispatch('toggle-desktop-menu')"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="mr-3 mt-[15px] text-white" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M4 6h16M4 12h16M4 18h16"/> <title>menu</title></svg> <span>SHOP BY DEPARTMENT</span> </a> <div class="absolute left-0 top-full z-10 -mt-3 ease-out" :style="`margin-top: 0;`" x-data="{ showMenu: isOpen() }" x-cloak x-show="showMenu" @click.outside="showMenu = false" @keydown.window.escape="showMenu = false" @toggle-desktop-menu.window="showMenu = !showMenu" > <div x-data="{ open: false }" class="mx-auto relative min-h-[346px] overflow-hidden hover:w-[1024px]" :style="(open === false) ? 'height: 346px' : '`min-height: ${menuMinHeight}px`'" > <ul class="w-[300px] px-5 bg-white border border-gray-300 pb-[41px]" :class="(open === false) ? 'h-[346px]' : ''" > <!-- @todo Remove when we switch to new original category list --> <li class="group/child flex justify-between items-center w-full border-b border-b-gray-200 last:border-b-0" @mouseover.stop="setMenuMinHeight($event.currentTarget)" > <a href="https://www.gigaparts.com/radio-gear" class="w-full flex justify-between items-center py-2 px-2.5 z-10 font-[24px] relative break-words transition-all hover:text-primary" @focus="setMenuMinHeight($event.currentTarget.parentNode)" > RADIO GEAR <span class="inline-block z-10 relative pl-2"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> <path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"/> <title>chevron-right</title></svg> </span> </a> <div class="container left-0 absolute w-[850px] min-h-full top-0 opacity-0 group-hover/child:opacity-100 pointer-events-none group-hover/child:pointer-events-auto"> <div class="ml-[299px] w-[550px] absolute left-[20%] h-full transition-all duration-500 bg-white border border-gray-300 group-hover/child:left-0 flex-1"> <ul class="relative grid grid-cols-2 gap-x-8 p-4"> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/amateur-radio-transceivers" title="AMATEUR&#x20;RADIO&#x20;TRANSCEIVERS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> AMATEUR RADIO TRANSCEIVERS </a> </li> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/antenna-systems#?Category1=Radios&amp;Category2=Antenna+Systems&amp;search_return=all&amp;res_per_page=60" title="ANTENNAS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> ANTENNAS </a> </li> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/wire-and-coax#?Category1=Radios&amp;Category2=Coax+and+Cables&amp;search_return=all&amp;res_per_page=60" title="COAX&#x20;&amp;&#x20;CABLES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> COAX &amp; CABLES </a> </li> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/gmrs-transceivers" title="GMRS&#x20;TRANSCEIVERS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> GMRS TRANSCEIVERS </a> </li> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/cb-radios#?Category1=Radios&amp;Category2=CB+Transceivers&amp;search_return=all&amp;res_per_page=60" title="CB&#x20;RADIOS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> CB RADIOS </a> </li> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/transceiver-accessories#?Category1=Radios&amp;Category2=Transceiver+Acc&amp;search_return=all&amp;res_per_page=60" title="TRANSCEIVER&#x20;ACCESSORIES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> TRANSCEIVER ACCESSORIES </a> </li> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/scanners-receivers-and-gps#?Category1=Radios&amp;Category2=Scanners%2C+Receivers+and+GPS&amp;search_return=all&amp;res_per_page=60" title="RECEIVERS&#x20;&amp;&#x20;SCANNERS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> RECEIVERS &amp; SCANNERS </a> </li> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/amplifiers#?Category1=Radios&amp;Category2=Amplifiers&amp;search_return=all&amp;res_per_page=60" title="AMPLIFIERS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> AMPLIFIERS </a> </li> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/radio-audio-devices#?Category1=Radios&amp;Category2=Radio+Audio+Devices&amp;search_return=all&amp;res_per_page=60" title="RADIO&#x20;AUDIO&#x20;DEVICES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> RADIO AUDIO DEVICES </a> </li> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/tower-and-shack-accessories#?Category1=Radios&amp;Category2=Tower+and+Shack+Acc&amp;search_return=all&amp;res_per_page=60" title="TOWER&#x20;&amp;&#x20;SHACK&#x20;ACCESSORIES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> TOWER &amp; SHACK ACCESSORIES </a> </li> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/power-supplies-accessories#?Category1=Radios&amp;Category2=Power+Solutions+and+Acc&amp;search_return=all&amp;res_per_page=60" title="POWER&#x20;SOLUTIONS&#x20;&amp;&#x20;ACCESSORIES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> POWER SOLUTIONS &amp; ACCESSORIES </a> </li> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/accessories#?Category1=Radios&amp;Category2=Accessories&amp;search_return=all&amp;res_per_page=60" title="ACCESSORIES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> ACCESSORIES </a> </li> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/software-and-pc-interface#?Category1=Radios&amp;Category2=Software+and+PC+Interface&amp;search_return=all&amp;res_per_page=60" title="SOFTWARE&#x20;&amp;&#x20;PC&#x20;INTERFACE" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> SOFTWARE &amp; PC INTERFACE </a> </li> <li class="level-1 z-[2]"> <a href="/products/used-radio-gear" title="USED&#x20;EQUIPMENT" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> USED EQUIPMENT </a> </li> </ul> <div class="absolute right-0 bottom-0 z-[1] opacity-70"> <img src="https://www.gigaparts.com/media/wysiwyg/Root-Nav-BG/radio-cat-bg.jpg" loading="lazy" alt="" /> </div> </div> </div> </li> <li class="group/child flex justify-between items-center w-full border-b border-b-gray-200 last:border-b-0" @mouseover.stop="setMenuMinHeight($event.currentTarget)" > <a href="/photography" class="w-full flex justify-between items-center py-2 px-2.5 z-10 font-[24px] relative break-words transition-all hover:text-primary" @focus="setMenuMinHeight($event.currentTarget.parentNode)" > PHOTOGRAPHY GEAR <span class="inline-block z-10 relative pl-2"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> <path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"/> <title>chevron-right</title></svg> </span> </a> <div class="container left-0 absolute w-[850px] min-h-full top-0 opacity-0 group-hover/child:opacity-100 pointer-events-none group-hover/child:pointer-events-auto"> <div class="ml-[299px] w-[550px] absolute left-[20%] h-full transition-all duration-500 bg-white border border-gray-300 group-hover/child:left-0 flex-1"> <ul class="relative grid grid-cols-2 gap-x-8 p-4"> <li class="level-1 z-[2]"> <a href="/photography/batteries-and-power-accessories" title="BATTERIES&#x20;&amp;&#x20;POWER&#x20;ACCESSORIES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> BATTERIES &amp; POWER ACCESSORIES </a> </li> <li class="level-1 z-[2]"> <a href="/photography/cameras" title="CAMERAS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> CAMERAS </a> </li> <li class="level-1 z-[2]"> <a href="/photography/camera-accessories" title="CAMERA&#x20;ACCESSORIES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> CAMERA ACCESSORIES </a> </li> <li class="level-1 z-[2]"> <a href="/photography/lenses" title="LENSES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> LENSES </a> </li> <li class="level-1 z-[2]"> <a href="/photography/lens-accessories" title="LENS&#x20;ACCESSORIES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> LENS ACCESSORIES </a> </li> <li class="level-1 z-[2]"> <a href="/photography/photography-bags-and-cases" title="PHOTOGRAPHY&#x20;BAGS&#x20;&amp;&#x20;CASES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> PHOTOGRAPHY BAGS &amp; CASES </a> </li> <li class="level-1 z-[2]"> <a href="/photography/studio-equipment-and-lighting" title="STUDIO&#x20;EQUIPMENT&#x20;&amp;&#x20;LIGHTING" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> STUDIO EQUIPMENT &amp; LIGHTING </a> </li> <li class="level-1 z-[2]"> <a href="/photography/tripods-and-supports" title="TRIPODS&#x20;&amp;&#x20;SUPPORTS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> TRIPODS &amp; SUPPORTS </a> </li> </ul> <div class="absolute right-0 bottom-0 z-[1] opacity-70"> <img src="https://www.gigaparts.com/media/wysiwyg/Root-Nav-BG/photo-cat-bg.jpg" loading="lazy" alt="" /> </div> </div> </div> </li> <li class="group/child flex justify-between items-center w-full border-b border-b-gray-200 last:border-b-0" @mouseover.stop="setMenuMinHeight($event.currentTarget)" > <a href="/astronomy" class="w-full flex justify-between items-center py-2 px-2.5 z-10 font-[24px] relative break-words transition-all hover:text-primary" @focus="setMenuMinHeight($event.currentTarget.parentNode)" > ASTRONOMY GEAR <span class="inline-block z-10 relative pl-2"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> <path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"/> <title>chevron-right</title></svg> </span> </a> <div class="container left-0 absolute w-[850px] min-h-full top-0 opacity-0 group-hover/child:opacity-100 pointer-events-none group-hover/child:pointer-events-auto"> <div class="ml-[299px] w-[550px] absolute left-[20%] h-full transition-all duration-500 bg-white border border-gray-300 group-hover/child:left-0 flex-1"> <ul class="relative grid grid-cols-2 gap-x-8 p-4"> <li class="level-1 z-[2]"> <a href="/astronomy/astrophotography-equipment" title="ASTROPHOTOGRAPHY&#x20;EQUIPMENT" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> ASTROPHOTOGRAPHY EQUIPMENT </a> </li> <li class="level-1 z-[2]"> <a href="/astronomy/mounts-and-tripods" title="MOUNTS&#x20;AND&#x20;TRIPODS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> MOUNTS AND TRIPODS </a> </li> <li class="level-1 z-[2]"> <a href="/astronomy/optical-accessories" title="OPTICAL&#x20;ACCESSORIES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> OPTICAL ACCESSORIES </a> </li> <li class="level-1 z-[2]"> <a href="/astronomy/sport-optics" title="SPORT&#x20;OPTICS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> SPORT OPTICS </a> </li> <li class="level-1 z-[2]"> <a href="/astronomy/star-charts-and-books" title="STAR&#x20;CHARTS&#x20;AND&#x20;BOOKS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> STAR CHARTS AND BOOKS </a> </li> <li class="level-1 z-[2]"> <a href="/astronomy/telescope-accessories" title="TELESCOPE&#x20;ACCESSORIES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> TELESCOPE ACCESSORIES </a> </li> <li class="level-1 z-[2]"> <a href="/astronomy/telescopes" title="TELESCOPES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> TELESCOPES </a> </li> </ul> <div class="absolute right-0 bottom-0 z-[1] opacity-70"> <img src="https://www.gigaparts.com/media/wysiwyg/Root-Nav-BG/astronomy-cat-bg.jpg" loading="lazy" alt="" /> </div> </div> </div> </li> <li class="group/child flex justify-between items-center w-full border-b border-b-gray-200 last:border-b-0" @mouseover.stop="setMenuMinHeight($event.currentTarget)" > <a href="/personalized-items" class="w-full flex justify-between items-center py-2 px-2.5 z-10 font-[24px] relative break-words transition-all hover:text-primary" @focus="setMenuMinHeight($event.currentTarget.parentNode)" > PERSONALIZED ITEMS <span class="inline-block z-10 relative pl-2"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> <path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"/> <title>chevron-right</title></svg> </span> </a> <div class="container left-0 absolute w-[850px] min-h-full top-0 opacity-0 group-hover/child:opacity-100 pointer-events-none group-hover/child:pointer-events-auto"> <div class="ml-[299px] w-[550px] absolute left-[20%] h-full transition-all duration-500 bg-white border border-gray-300 group-hover/child:left-0 flex-1"> <ul class="relative grid grid-cols-2 gap-x-8 p-4"> <li class="level-1 z-[2]"> <a href="/nsearch/?lp=Personalized%20Gifts%20Under%20%2450" title="GIFTS&#x20;UNDER&#x20;&#x24;50" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> GIFTS UNDER $50 </a> </li> <li class="level-1 z-[2]"> <a href="/nsearch/?lp=Personalized%20Bags#?lp=Personalized+Bags&amp;search_return=all&amp;res_per_page=60" title="BAGS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> BAGS </a> </li> <li class="level-1 z-[2]"> <a href="/nsearch/?q=business+cards" title="BUSINESS&#x20;CARDS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> BUSINESS CARDS </a> </li> <li class="level-1 z-[2]"> <a href="/nsearch/?q=santa" title="CHRISTMAS&#x20;GEAR" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> CHRISTMAS GEAR </a> </li> <li class="level-1 z-[2]"> <a href="/drinkware" title="DRINKWARE" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> DRINKWARE </a> </li> <li class="level-1 z-[2]"> <a href="/nsearch/?lp=BALLCAPS#?lp=BALLCAPS&amp;search_return=all&amp;res_per_page=60" title="HATS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> HATS </a> </li> <li class="level-1 z-[2]"> <a href="/nsearch/?q=desk+lamp" title="LED&#x20;DESK&#x20;LAMPS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> LED DESK LAMPS </a> </li> <li class="level-1 z-[2]"> <a href="/nsearch/?q=MY54" title="LEATHERETTE&#x20;GOODS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> LEATHERETTE GOODS </a> </li> <li class="level-1 z-[2]"> <a href="/personalized-name-badges" title="NAME&#x20;BADGES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> NAME BADGES </a> </li> <li class="level-1 z-[2]"> <a href="/nsearch/?lp=nike-hats#?lp=nike-hats&amp;search_return=all&amp;res_per_page=60" title="NIKE&#x20;GEAR" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> NIKE GEAR </a> </li> <li class="level-1 z-[2]"> <a href="/nsearch/?lp=Outerwear" title="OUTERWEAR" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> OUTERWEAR </a> </li> <li class="level-1 z-[2]"> <a href="/personalization/wearables/pocket-tools" title="POCKET&#x20;TOOLS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> POCKET TOOLS </a> </li> <li class="level-1 z-[2]"> <a href="/nsearch/?q=personalized+posters#?keywords=personalized+posters&amp;search_return=all&amp;res_per_page=60" title="POSTERS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> POSTERS </a> </li> <li class="level-1 z-[2]"> <a href="/nsearch/?q=personalized+qsl+cards" title="QSL&#x20;CARDS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> QSL CARDS </a> </li> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/nsearch/?lp=Shirts-Landing#?lp=Shirts-Landing&amp;search_return=all&amp;res_per_page=60" title="SHIRTS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> SHIRTS </a> </li> <li class="level-1 z-[2]"> <a href="/nsearch/?q=personalized+stationery" title="STATIONERY" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> STATIONERY </a> </li> </ul> <div class="absolute right-0 bottom-0 z-[1] opacity-70"> <img src="https://www.gigaparts.com/media/wysiwyg/Root-Nav-BG/custom-items-cat-bg.jpg" loading="lazy" alt="" /> </div> </div> </div> </li> <li class="group/child flex justify-between items-center w-full border-b border-b-gray-200 last:border-b-0" @mouseover.stop="setMenuMinHeight($event.currentTarget)" > <a href="/computers" class="w-full flex justify-between items-center py-2 px-2.5 z-10 font-[24px] relative break-words transition-all hover:text-primary" @focus="setMenuMinHeight($event.currentTarget.parentNode)" > COMPUTER GEAR <span class="inline-block z-10 relative pl-2"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> <path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"/> <title>chevron-right</title></svg> </span> </a> <div class="container left-0 absolute w-[850px] min-h-full top-0 opacity-0 group-hover/child:opacity-100 pointer-events-none group-hover/child:pointer-events-auto"> <div class="ml-[299px] w-[550px] absolute left-[20%] h-full transition-all duration-500 bg-white border border-gray-300 group-hover/child:left-0 flex-1"> <ul class="relative grid grid-cols-2 gap-x-8 p-4"> <li class="level-1 z-[2]"> <a href="/computers/core-components" title="CORE&#x20;COMPONENTS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> CORE COMPONENTS </a> </li> <li class="level-1 z-[2]"> <a href="/computers/networking" title="NETWORKING" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> NETWORKING </a> </li> <li class="level-1 z-[2]"> <a href="/computers/pcs" title="PCs" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> PCs </a> </li> <li class="level-1 z-[2]"> <a href="/computers/peripherals" title="PERIPHERALS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> PERIPHERALS </a> </li> <li class="level-1 z-[2]"> <a href="/computers/furniture" title="FURNITURE" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> FURNITURE </a> </li> <li class="level-1 z-[2]"> <a href="/computers/cables-and-adapters" title="CABLES&#x20;AND&#x20;ADAPTERS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> CABLES AND ADAPTERS </a> </li> <li class="level-1 z-[2]"> <a href="/computers/pc-cooling" title="PC&#x20;COOLING" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> PC COOLING </a> </li> <li class="level-1 z-[2]"> <a href="/computers/portable-electronics" title="PORTABLE&#x20;ELECTRONICS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> PORTABLE ELECTRONICS </a> </li> <li class="level-1 z-[2]"> <a href="/computers/storage-devices" title="STORAGE&#x20;DEVICES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> STORAGE DEVICES </a> </li> <li class="level-1 z-[2]"> <a href="/computers/software" title="SOFTWARE" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> SOFTWARE </a> </li> <li class="level-1 z-[2]"> <a href="/computers/power-protection" title="POWER&#x20;PROTECTION" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> POWER PROTECTION </a> </li> <li class="level-1 z-[2]"> <a href="/computers/peripheral-accessories" title="PERIPHERAL&#x20;ACCESSORIES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> PERIPHERAL ACCESSORIES </a> </li> <li class="level-1 z-[2]"> <a href="/computers/pc-accessories" title="PC&#x20;ACCESSORIES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> PC ACCESSORIES </a> </li> <li class="level-1 z-[2]"> <a href="/refurbished-apple" title="REFURBISHED&#x20;APPLE&#x20;GEAR" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> REFURBISHED APPLE GEAR </a> </li> </ul> <div class="absolute right-0 bottom-0 z-[1] opacity-70"> <img src="https://www.gigaparts.com/media/wysiwyg/Root-Nav-BG/computers-cat-bg.jpg" loading="lazy" alt="" /> </div> </div> </div> </li> <li class="group/child flex justify-between items-center w-full border-b border-b-gray-200 last:border-b-0" @mouseover.stop="setMenuMinHeight($event.currentTarget)" > <a href="https://www.gigaparts.com/treasure-hunting" class="w-full flex justify-between items-center py-2 px-2.5 z-10 font-[24px] relative break-words transition-all hover:text-primary" @focus="setMenuMinHeight($event.currentTarget.parentNode)" > TREASURE HUNTING <span class="inline-block z-10 relative pl-2"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> <path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"/> <title>chevron-right</title></svg> </span> </a> <div class="container left-0 absolute w-[850px] min-h-full top-0 opacity-0 group-hover/child:opacity-100 pointer-events-none group-hover/child:pointer-events-auto"> <div class="ml-[299px] w-[550px] absolute left-[20%] h-full transition-all duration-500 bg-white border border-gray-300 group-hover/child:left-0 flex-1"> <ul class="relative grid grid-cols-2 gap-x-8 p-4"> <li class="level-1 z-[2]"> <a href="/products/metal-detectors" title="METAL&#x20;DETECTORS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> METAL DETECTORS </a> </li> <li class="level-1 z-[2]"> <a href="/products/detector-accessories" title="DETECTOR&#x20;ACCESSORIES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> DETECTOR ACCESSORIES </a> </li> <li class="level-1 z-[2]"> <a href="/products/books-videos-and-maps" title="BOOKS,&#x20;VIDEOS,&#x20;&amp;&#x20;MAPS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> BOOKS, VIDEOS, &amp; MAPS </a> </li> <li class="level-1 z-[2]"> <a href="/products/prospecting-equipment" title="PROSPECTING&#x20;EQUIPMENT" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> PROSPECTING EQUIPMENT </a> </li> </ul> <div class="absolute right-0 bottom-0 z-[1] opacity-70"> <img src="https://www.gigaparts.com/media/wysiwyg/Root-Nav-BG/treasure-cat-bg.jpg" loading="lazy" alt="" /> </div> </div> </div> </li> <li class="group/child flex justify-between items-center w-full border-b border-b-gray-200 last:border-b-0" @mouseover.stop="setMenuMinHeight($event.currentTarget)" > <a href="/makers" class="w-full flex justify-between items-center py-2 px-2.5 z-10 font-[24px] relative break-words transition-all hover:text-primary" @focus="setMenuMinHeight($event.currentTarget.parentNode)" > MAKER SUPPLIES <span class="inline-block z-10 relative pl-2"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> <path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"/> <title>chevron-right</title></svg> </span> </a> <div class="container left-0 absolute w-[850px] min-h-full top-0 opacity-0 group-hover/child:opacity-100 pointer-events-none group-hover/child:pointer-events-auto"> <div class="ml-[299px] w-[550px] absolute left-[20%] h-full transition-all duration-500 bg-white border border-gray-300 group-hover/child:left-0 flex-1"> <ul class="relative grid grid-cols-2 gap-x-8 p-4"> <li class="level-1 z-[2]"> <a href="/makers/3d-printing" title="3D&#x20;PRINTING" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> 3D PRINTING </a> </li> <li class="level-1 z-[2]"> <a href="/makers/components" title="COMPONENTS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> COMPONENTS </a> </li> <li class="level-1 z-[2]"> <a href="/makers/component-accessories" title="COMPONENT&#x20;ACCESSORIES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> COMPONENT ACCESSORIES </a> </li> <li class="level-1 z-[2]"> <a href="/makers/development-boards" title="DEVELOPMENT&#x20;BOARDS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> DEVELOPMENT BOARDS </a> </li> <li class="level-1 z-[2]"> <a href="/makers/educational-resources" title="EDUCATIONAL&#x20;RESOURCES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> EDUCATIONAL RESOURCES </a> </li> <li class="level-1 z-[2]"> <a href="/makers/output-devices" title="OUTPUT&#x20;DEVICES" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> OUTPUT DEVICES </a> </li> <li class="level-1 z-[2]"> <a href="/makers/tools-and-equipment" title="TOOLS&#x20;AND&#x20;EQUIPMENT" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> TOOLS AND EQUIPMENT </a> </li> </ul> <div class="absolute right-0 bottom-0 z-[1] opacity-70"> <img src="https://www.gigaparts.com/media/wysiwyg/Root-Nav-BG/makers-cat-bg.jpg" loading="lazy" alt="" /> </div> </div> </div> </li> <li class="group/child flex justify-between items-center w-full border-b border-b-gray-200 last:border-b-0" @mouseover.stop="setMenuMinHeight($event.currentTarget)" > <a href="https://www.gigaparts.com/emergency-prep" class="w-full flex justify-between items-center py-2 px-2.5 z-10 font-[24px] relative break-words transition-all hover:text-primary" @focus="setMenuMinHeight($event.currentTarget.parentNode)" > EMERGENCY PREP <span class="inline-block z-10 relative pl-2"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> <path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"/> <title>chevron-right</title></svg> </span> </a> <div class="container left-0 absolute w-[850px] min-h-full top-0 opacity-0 group-hover/child:opacity-100 pointer-events-none group-hover/child:pointer-events-auto"> <div class="ml-[299px] w-[550px] absolute left-[20%] h-full transition-all duration-500 bg-white border border-gray-300 group-hover/child:left-0 flex-1"> <ul class="relative grid grid-cols-2 gap-x-8 p-4"> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/emergency-prep" title="EMERGENCY&#x20;PREPAREDNESS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> EMERGENCY PREPAREDNESS </a> </li> <li class="level-1 z-[2]"> <a href="/products/weather-radios-and-stations" title="WEATHER&#x20;RADIOS&#x20;&amp;&#x20;STATIONS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> WEATHER RADIOS &amp; STATIONS </a> </li> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/toys-and-gadgets/edc/flashlights" title="FLASHLIGHTS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> FLASHLIGHTS </a> </li> </ul> </div> </div> </li> <li class="group/child flex justify-between items-center w-full border-b border-b-gray-200 last:border-b-0" @mouseover.stop="setMenuMinHeight($event.currentTarget)" > <a href="https://www.gigaparts.com/toys-and-gadgets" class="w-full flex justify-between items-center py-2 px-2.5 z-10 font-[24px] relative break-words transition-all hover:text-primary" @focus="setMenuMinHeight($event.currentTarget.parentNode)" > TOYS &amp; GADGETS <span class="inline-block z-10 relative pl-2"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" role="img"> <path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"/> <title>chevron-right</title></svg> </span> </a> <div class="container left-0 absolute w-[850px] min-h-full top-0 opacity-0 group-hover/child:opacity-100 pointer-events-none group-hover/child:pointer-events-auto"> <div class="ml-[299px] w-[550px] absolute left-[20%] h-full transition-all duration-500 bg-white border border-gray-300 group-hover/child:left-0 flex-1"> <ul class="relative grid grid-cols-2 gap-x-8 p-4"> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/toys-and-gadgets/edc" title="EDC" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> EDC </a> </li> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/toys-and-gadgets/gadgets" title="GADGETS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> GADGETS </a> </li> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/toys-and-gadgets/impulse" title="IMPULSE" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> IMPULSE </a> </li> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/toys-and-gadgets/magic-gear" title="MAGIC&#x20;GEAR" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> MAGIC GEAR </a> </li> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/toys-and-gadgets/stem-toys" title="STEM&#x20;TOYS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> STEM TOYS </a> </li> <li class="level-1 z-[2]"> <a href="/stocking-stuffers" title="STOCKING&#x20;STUFFERS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> STOCKING STUFFERS </a> </li> <li class="level-1 z-[2]"> <a href="https://www.gigaparts.com/toys-and-gadgets/toys" title="TOYS" class="level-1 p-[5px] block text-lg transition-all md:text-sm hover:text-primary"> TOYS </a> </li> </ul> </div> </div> </li> <li class="absolute left-[1px] bottom-[1px] group/child flex justify-between items-center w-[298px] px-5 bg-white z-[11]"> <button class="w-full flex justify-between items-center py-2 px-2.5 z-10 font-[24px] relative break-words transition-all hover:text-primary" @click="open = ! open" x-text="(open === false) ? '+ All Categories' : '- Less Categories'" ></button> </li> </ul> </div> </div> </div> </nav> </div> </div> <script> 'use strict'; const initMenuDesktop_673eceb7f149d = () => { return { menuMinHeight: 0, setMenuMinHeight(targetElement) { const childMenu = targetElement.querySelector('div.container.absolute'); childMenu && (this.menuMinHeight = childMenu.getBoundingClientRect().height); }, setActiveMenu(menuNode) { Array.from(menuNode.querySelectorAll('a')).filter(link => { return link.href === window.location.href.split('?')[0]; }).map(item => { item.closest('div.level-0') && item.closest('div.level-0').classList.add('border-secondary'); }); }, isOpen() { const home = document.querySelector("body.cms-index-index"); /** @todo Remove when we switch to the Home Page Hyva theme **/ const cmsHomeHyva = document.querySelector("body.cms-home-hyva"); if (home || cmsHomeHyva) { return true; } } } } </script> <div class="text-white leading-[55px]"> <div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><style> .group:hover .group-hover\:visible { visibility: visible; } .gold-text { color: #ffd700; } </style> <div class="group relative cursor-pointer inline-block mr-2"> <div class="flex items-center justify-between space-x-5"> <a class="menu-hover gold-text">Tech Services</a> <span> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-4 w-4"> <path stroke-linecap="round" stroke-linejoin="round" d="M19.5 8.25l-7.5 7.5-7.5-7.5"/> </svg> </span> </div> <div class="invisible absolute z-50 flex w-full flex-col bg-white py-1 px-4 text-gray-500 shadow-xl group-hover:visible" style="min-width: 200px;"> <a href="/it" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Tech Solutions </a> <a href="/services/pc-repair" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> PC Repairs </a> </div> </div> <div class="group relative cursor-pointer inline-block mr-2"> <div class="flex items-center justify-between space-x-5 px-4"> <a class="menu-hover">Specials</a> <span> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-4 w-4"> <path stroke-linecap="round" stroke-linejoin="round" d="M19.5 8.25l-7.5 7.5-7.5-7.5" /> </svg> </span> </div> <div class="invisible absolute z-50 flex w-full flex-col bg-white py-1 px-4 text-gray-500 shadow-xl group-hover:visible" style="min-width: 200px;"> <a href="/used-open-box-and-refurbished-items" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Bargain Corner </a> <a href="/weekly-specials-at-gigaparts" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Weekly Specials </a> <a href="/clearance-items#?Onclearance=Yes&Stockstatusfilter=Currently+in+stock%21&search_return=all&res_per_page=60" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Clearance Items </a> <a href="/rebates" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Manufacturer Rebates </a> <a href="/sweepstakes" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Sweepstakes </a> </div> </div> <a href="https://events.gigaparts.com" class="mr-6 inline-block">Events</a> <div class="group relative cursor-pointer inline-block mr-2"> <div class="flex items-center justify-between space-x-5 px-4"> <a class="menu-hover">Visit Us</a> <span> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-4 w-4"> <path stroke-linecap="round" stroke-linejoin="round" d="M19.5 8.25l-7.5 7.5-7.5-7.5"/> </svg> </span> </div> <div class="invisible absolute z-50 flex w-full flex-col bg-white py-1 px-4 text-gray-500 shadow-xl group-hover:visible" style="min-width: 200px;"> <a href="/huntsville" class="block border-b border-gray-100 py-2 text-gray-500 leading-6 hover:text-primary"> Huntsville, AL </a> </div> </div> </div> </div> </div> </div> </div> <div class="hidden mr-12"></div> <!--Search mobile--> <div x-ref="searchContainerMobile" id="search-content" x-cloak x-show="searchOpen" @click.outside="searchOpen = false" @keydown.escape=" searchOpen = false; $refs.searchButton.focus(); " class="max-w-full lg:max-w-5xl xl:max-w-7xl w-full mx-auto px-4 flex justify-end items-center lg:hidden"> <div x-ref="searchForm" class="max-w-full w-full mx-auto py-4"> <script> 'use strict'; function initMiniSearch() { return { focusElement(element) { if (element && element.nodeName === "DIV") { element.focus(); return true; } else { return false; } } } } </script> <div class="text-black" x-data="initMiniSearch()"> <form class="form minisearch w-full" id="search_mini_form" x-ref="form" @click.outside="open = false" action="https://www.gigaparts.com/nsearch/" method="get" > <label class="hidden" for="search" data-role="minisearch-label"> <span>Search</span> </label> <div class="flex w-full relative"> <input id="search" x-ref="searchInput" type="search" autocomplete="off" name="q" value="" placeholder="Search&#x20;entire&#x20;store&#x20;here..." maxlength="256" class="w-full py-0 pl-6 pr-[87px] text-base leading-normal transition appearance-none text-grey-800 focus:outline-none focus:shadow-none focus:ring-0 border-2 border-primary rounded-[30px] h-[50px] text-[12px] italic" @keydown.arrow-down.prevent="focusElement($root.querySelector('[tabindex]'))" /> <button type="submit" title="Search" class="text-white absolute right-0 top-0 h-[50px] bg-primary rounded-r-[50px] px-5 text-sm" aria-label="Search" > Search </button> </div> </form> </div> </div> </div> <!--Cart Drawer--> <script> function initCartDrawer() { return { open: false, isLoading: false, cart: {}, maxItemsToDisplay: 10, itemsCount: 0, getData(data) { if (data.cart) { this.cart = data.cart; this.itemsCount = data.cart.items && data.cart.items.length || 0; this.setCartItems(); } this.isLoading = false; }, cartItems: [], getItemCountTitle() { return hyva.strf('\u00250\u0020of\u0020\u00251\u0020products\u0020in\u0020cart\u0020displayed', this.maxItemsToDisplay, this.itemsCount) }, setCartItems() { this.cartItems = this.cart.items && this.cart.items.sort((a, b) => b.item_id - a.item_id) || []; if (this.maxItemsToDisplay > 0) { this.cartItems = this.cartItems.slice(0, parseInt(this.maxItemsToDisplay, 10)); } }, deleteItemFromCart(itemId) { this.isLoading = true; const formKey = hyva.getFormKey(); const postUrl = BASE_URL + 'checkout/sidebar/removeItem/'; fetch(postUrl, { "headers": { "content-type": "application/x-www-form-urlencoded; charset=UTF-8", }, "body": "form_key=" + formKey + "&item_id=" + itemId, "method": "POST", "mode": "cors", "credentials": "include" }).then(response => { if (response.redirected) { window.location.href = response.url; } else if (response.ok) { return response.json(); } else { window.dispatchMessages && window.dispatchMessages([{ type: 'warning', text: 'Could\u0020not\u0020remove\u0020item\u0020from\u0020quote.' }]); this.isLoading = false; } }).then(result => { window.dispatchMessages && window.dispatchMessages([{ type: result.success ? 'success' : 'error', text: result.success ? 'You\u0020removed\u0020the\u0020item.' : result.error_message }], result.success ? 5000 : 0) window.dispatchEvent(new CustomEvent('reload-customer-section-data')); }); }, scrollLock(use = true) { document.body.style.overflow = use ? "hidden" : ""; }, toggleCartDrawer(event) { if (event.detail && event.detail.isOpen !== undefined) { if (event.detail.isOpen) { this.openCartDrawer(); } else { this.open = false; this.scrollLock(false); this.$refs && this.$refs.cartDialogContent && hyva.releaseFocus(this.$refs.cartDialogContent); } } else { this.openCartDrawer() } }, openCartDrawer() { this.open = true; this.scrollLock(true); this.$nextTick(() => { this.$refs && this.$refs.cartDialogContent && hyva.trapFocus(this.$refs.cartDialogContent) }) }, closeCartDrawer() { this.$dispatch('toggle-cart', { isOpen: false }) }, getSectionDataExtraActions() { if (!this.cart.extra_actions) { return ''; } const contentNode = document.createElement('div'); contentNode.innerHTML = this.cart.extra_actions; hyva.activateScripts(contentNode); return contentNode.innerHTML; } } } </script> <section x-cloak x-show="cart" id="cart-drawer" x-data="initCartDrawer()" @private-content-loaded.window="getData($event.detail.data)" @toggle-cart.window="toggleCartDrawer($event)" @keydown.escape="closeCartDrawer" > <div role="dialog" aria-labelledby="cart-drawer-title" aria-modal="true" :aria-hidden="!open" class="fixed inset-y-0 right-0 z-30 flex max-w-full"> <div class="backdrop" x-show="open" x-transition:enter="ease-in-out duration-500" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in-out duration-500" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" role="button" @click="closeCartDrawer" aria-label="Close&#x20;minicart"></div> <div class="relative w-screen max-w-md shadow-2xl" x-show="open" x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700" x-transition:enter-start="translate-x-full" x-transition:enter-end="translate-x-0" x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700" x-transition:leave-start="translate-x-0" x-transition:leave-end="translate-x-full" x-ref="cartDialogContent" role="region" :tabindex="open ? 0 : -1" aria-label="My&#x20;Cart" > <div class="flex flex-col h-full max-h-screen bg-white shadow-xl"> <header class="relative px-4 py-6 sm:px-6"> <p id="cart-drawer-title" class="text-lg font-medium leading-7 text-gray-900"> My Cart <span class="items-total text-xs" x-show="maxItemsToDisplay && maxItemsToDisplay < itemsCount" x-text="getItemCountTitle()"> </span> </p> </header> <template x-if="!itemsCount"> <div class="relative px-4 py-6 bg-white border-bs sm:px-6 border-container overflow-y-auto overscroll-y-contain"> Cart is empty </div> </template> <template x-if="itemsCount"> <div class="relative grid gap-6 px-4 py-6 overflow-y-auto overscroll-y-contain bg-white border-b sm:gap-8 sm:px-6 border-container" > <template x-for="item in cartItems"> <div class="flex items-start p-3 -m-3 space-x-4 transition duration-150 ease-in-out rounded-lg hover:bg-gray-100"> <a :href="item.product_url" class="w-1/4" :aria-label="hyva.strf('Product\u0020\u0022\u00250\u0022', item.product_name)" > <img :src="item.product_image.src" :width="item.product_image.width" :height="item.product_image.height" loading="lazy" alt="" /> </a> <div class="w-3/4 space-y-2"> <div> <a :href="item.product_url" class="w-1/4" :aria-label="hyva.strf('Product\u0020\u0022\u00250\u0022', item.product_name)" > <p class="text-xl max-w-64 truncate"> <span x-html="item.qty"></span> x <span x-html="item.product_name"></span> </p> <p class="text-sm"><span x-html="item.product_sku"></span></p> </a> </div> <template x-for="option in item.options"> <div class="pt-2"> <p class="font-semibold" x-text="option.label + ':'"></p> <p class="text-secondary" x-html="option.value"></p> </div> </template> <p><span x-html="item.product_price"></span></p> <template x-if="item.product_backorders > 0"> <div class="message notice"> <span class="icon-warning"> &nbsp;This item may delay your order. </span> </div> </template> <div class="pt-4"> <button type="button" class="inline-flex p-2 btn btn-primary" @click="deleteItemFromCart(item.item_id)" :aria-label="hyva.strf('Remove\u0020product\u0020\u0022\u00250\u0022\u0020from\u0020cart', item.product_name)" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"/> </svg> </button> </div> </div> </div> </template> </div> </template> <template x-if="itemsCount"> <div> <div class="relative grid gap-6 px-4 py-6 bg-white sm:gap-8 sm:px-6"> <div class="w-full p-3 -m-3 space-x-4 transition duration-150 ease-in-out rounded-lg hover:bg-gray-100" > <p>Subtotal: <span x-html="cart.subtotal"></span></p> </div> <div class="w-full p-3 -m-3 space-x-4 transition duration-150 ease-in-out rounded-lg hover:bg-gray-100" > <a @click.prevent.stop="closeCartDrawer; $dispatch('toggle-authentication', {url: 'https://www.gigaparts.com/checkout/'});" href="https://www.gigaparts.com/checkout/" class="inline-flex btn btn-primary" > Checkout </a> <span>or</span> <a href="https://www.gigaparts.com/checkout/cart/" class="underline" > View and Edit Cart </a> </div> <div x-html="getSectionDataExtraActions()"></div> </div> </div> </template> </div> <button type="button" @click="closeCartDrawer" aria-label="Close&#x20;minicart" class="absolute top-0 right-2 p-4 mt-2 text-gray-300 transition-colors hover:text-black" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> </svg> </button> </div> <div class="flex flex-row justify-center items-center w-full h-full fixed select-none z-50" style="left: 50%;top: 50%;transform: translateX(-50%) translateY(-50%);background: rgba(255,255,255,0.7);" x-show="isLoading" x-cloak x-transition:enter="ease-out duration-200" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0"> <!-- By Sam Herbert (@sherb), for everyone. More @ http://goo.gl/7AJzbL --> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 57 57" stroke="currentColor" class="text-primary" width="57" height="57" role="img"> <g fill="none" fill-rule="evenodd"> <g transform="translate(1 1)" stroke-width="2"> <circle cx="5" cy="50" r="5"> <animate attributeName="cy" begin="0s" dur="2.2s" values="50;5;50;50" calcMode="linear" repeatCount="indefinite"/> <animate attributeName="cx" begin="0s" dur="2.2s" values="5;27;49;5" calcMode="linear" repeatCount="indefinite"/> </circle> <circle cx="27" cy="5" r="5"> <animate attributeName="cy" begin="0s" dur="2.2s" from="5" to="5" values="5;50;50;5" calcMode="linear" repeatCount="indefinite"/> <animate attributeName="cx" begin="0s" dur="2.2s" from="27" to="27" values="27;49;5;27" calcMode="linear" repeatCount="indefinite"/> </circle> <circle cx="49" cy="50" r="5"> <animate attributeName="cy" begin="0s" dur="2.2s" values="50;50;5;50" calcMode="linear" repeatCount="indefinite"/> <animate attributeName="cx" from="49" to="49" begin="0s" dur="2.2s" values="49;5;27;49" calcMode="linear" repeatCount="indefinite"/> </circle> </g> </g> <title>loader</title></svg> <div class="ml-10 text-primary text-xl"> Loading... </div> </div> </div> </section> <!--Authentication Pop-Up--> <script> function initAuthentication() { return { open: false, forceAuthentication: false, checkoutUrl: 'https://www.gigaparts.com/checkout/index/', errors: 0, hasCaptchaToken: 0, displayErrorMessage: false, errorMessages: [], setErrorMessages: function setErrorMessages(messages) { this.errorMessages = [messages]; this.displayErrorMessage = this.errorMessages.length; }, submitForm: function () { // Do not rename $form, the variable is expected to be declared in the recaptcha output const $form = document.querySelector('#login-form'); if (this.errors === 0) { this.dispatchLoginRequest($form); } }, onPrivateContentLoaded: function (data) { const isLoggedIn = data.customer && data.customer.firstname; if (data.cart && !isLoggedIn) { this.forceAuthentication = !data.cart.isGuestCheckoutAllowed; } }, redirectIfAuthenticated: function (event) { if (event.detail && event.detail.url) { this.checkoutUrl = event.detail.url; } if (!this.forceAuthentication) { window.location.href = this.checkoutUrl; } }, dispatchLoginRequest: function(form) { this.isLoading = true; const username = this.$refs['customer-email'].value; const password = this.$refs['customer-password'].value; const formKey = hyva.getFormKey(); const bodyFields = { 'username': username, 'password': password, 'formKey': formKey }; const fieldName = ''; const recaptchaField = fieldName && form[fieldName]; if (recaptchaField) { bodyFields[fieldName] = recaptchaField.value; } fetch('https://www.gigaparts.com/customer/ajax/login/', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Requested-With': 'XMLHttpRequest' }, body: JSON.stringify(bodyFields) } ).then(response => { return response.json() } ).then(data=> { this.isLoading = false; if (data.errors) { dispatchMessages([{ type: 'error', text: data.message }], 5000); this.errors = 1; this.hasCaptchaToken = 0; } else { window.location.href = this.checkoutUrl; } }); } } } </script> <section id="authentication-popup" x-data="initAuthentication()" @private-content-loaded.window="onPrivateContentLoaded($event.detail.data)" @toggle-authentication.window="open = forceAuthentication; redirectIfAuthenticated(event)" @keydown.window.escape="open = false" > <div class="backdrop" aria-hidden="true" x-cloak x-show="open" x-transition:enter="ease-in-out duration-500" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in-out duration-500" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" @click="open = false" ></div> <div role="dialog" aria-modal="true" @click.outside="open = false" class="inset-y-0 right-0 z-30 flex max-w-full fixed" x-cloak x-show="open" > <div class="relative w-screen max-w-md pt-16 bg-container-lighter" x-show="open" x-cloak="" x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700" x-transition:enter-start="translate-x-full" x-transition:enter-end="translate-x-0" x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700" x-transition:leave-start="translate-x-0" x-transition:leave-end="translate-x-full" > <div x-show="open" x-cloak="" x-transition:enter="ease-in-out duration-500" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in-out duration-500" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" class="absolute top-0 right-2 flex p-2 mt-2"> <button type="button" @click="open = false;" aria-label="Close&#x20;panel" class="p-2 text-gray-300 transition duration-150 ease-in-out hover:text-black" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> <title>Close panel</title></svg> </button> </div> <template x-if="open"> <div class="flex flex-col h-full py-6 space-y-6 bg-white shadow-xl overflow-y-auto"> <div class="block-customer-login bg-container border border-container mx-4 p-4 shadow-sm"> <p id="authenticate-customer-login" class="text-lg leading-7 text-gray-900"> <strong class="font-medium">Checkout using your account</strong> </p> <form class="form form-login" method="post" @submit.prevent="submitForm();" id="login-form" > <div class="fieldset login"> <div class="field email required"> <label class="label" for="form-login-username" form="login-form" > <span>Email Address</span> </label> <div class="control"> <input name="username" id="form-login-username" x-ref="customer-email" @change="errors = 0" type="email" required autocomplete="off" class="form-input input-text" > </div> </div> <div class="field password required"> <label for="form-login-password" class="label" form="login-form"> <span>Password</span> </label> <div class="control"> <input name="password" id="form-login-password" type="password" class="form-input input-text" required x-ref="customer-password" autocomplete="off" @change="errors = 0" > </div> </div> <input name="context" type="hidden" value="checkout" /> <div class="actions-toolbar flex justify-between pt-6 pb-2 items-center"> <button type="submit" class="inline-flex btn btn-primary disabled:opacity-75" > Sign In </button> <a href="https://www.gigaparts.com/customer/account/forgotpassword/" > Forgot Your Password? </a> </div> </div> </form> </div> <div class="mx-4"> </div> <div class="block-new-customer bg-container border border-container mx-4 p-4 shadow-sm"> <p id="authenticate-new-customer" class="text-lg mb-2 leading-7 text-gray-900"> <strong class="font-medium">Checkout as a new customer</strong> </p> <div class="block-content"> <p class="mb-1"> Creating an account has many benefits: </p> <ul class="list-disc pl-5"> <li> See order and shipping status</li> <li> Track order history</li> <li> Check out faster</li> </ul> <div class="actions-toolbar flex justify-between mt-6 mb-2 items-center"> <a href="https://www.gigaparts.com/customer/account/create/" class="inline-flex btn btn-primary"> Create an Account </a> </div> </div> </div> </div> </template> </div> </div> </section> </div> </header><div class="top-container"> <style> .top-container { max-width: unset; padding-left: unset; padding-right: unset; margin-bottom: 20px; } .nav-sections { margin-bottom: unset; } .banner-container { background-size: cover; } .gigaparts-sale-banner { background-size: auto 40px; background-color: white; text-align: center; overflow: hidden; background-repeat: no-repeat; background-position: center center; } @media only screen and (min-width: 768px) { .gigaparts-sale-banner { background-image: url(https://www.gigaparts.com/media/wysiwyg/Desktop_Website_Highlight_Banner-1002.jpg); width: 100%; height: 40px; margin-bottom: 15px; } } .gigaparts-sale-banner div { font-family: arial, serif; font-size: 20px; margin-top: 0; line-height: 40px; color: #FFFFFF; text-shadow: 0 0 7px #000000; } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(.97); } 100% { transform: scale(1); } } .pulse { animation-name: pulse; animation-duration: 1s; animation-iteration-count: infinite; } </style> <div class="banner-container"> <a href="https://www.gigaparts.com/join-connect-rewards"> <div class="gigaparts-sale-banner"> <div class="animated pulse"> <span style="color: #ffffff;"></span> </div> </div> </a> </div> <nav class="breadcrumbs hidden md:block lg:mt-0" aria-label="Breadcrumb"> <div class="container"> <ol class="items py-4 flex text-grey text-[13px]"> <li x-data="{ isFirst: true }" :class="isFirst ? 'flex-none' : 'flex-initial truncate'" class="item home truncate" data-debug="true" > <a href="https://www.gigaparts.com/" class="no-underline hover:text-primary" title="Go&#x20;to&#x20;Home&#x20;Page" >Home</a> </li> <li x-data="{ isFirst: false }" :class="isFirst ? 'flex-none' : 'flex-initial truncate'" class="item cms_page truncate" data-debug="NULL" > <span aria-hidden="true" class="separator text-primary px-2">&rsaquo;</span> <span class="text-primary" aria-current="page" >Keyboards Mice And Game Controllers</span> </li> </ol> </div> </nav> </div><main id="maincontent" class="page-main"><div id="contentarea" tabindex="-1"></div> <div class="page messages"><script> function initMessages() { "use strict"; return { messages: window.mageMessages || [], isEmpty() { return this.messages.reduce( function (isEmpty, message) { return isEmpty && message === undefined }, true ) }, removeMessage(messageIndex) { this.messages[messageIndex] = undefined; }, addMessages(messages, hideAfter) { messages.map((message) => { this.messages = this.messages.concat(message); if (hideAfter === undefined && message.type === 'success' && window.defaultSuccessMessageTimeout) { hideAfter = window.defaultSuccessMessageTimeout; } if (hideAfter) { this.setHideTimeOut(this.messages.length -1, hideAfter); } }); }, setHideTimeOut(messageIndex, hideAfter) { setTimeout((messageIndex) => { this.removeMessage(messageIndex); }, hideAfter, messageIndex); }, eventListeners: { ['@messages-loaded.window'](event) { this.addMessages(event.detail.messages, event.detail.hideAfter) }, ['@private-content-loaded.window'](event) { const data = event.detail.data; if ( data.messages && data.messages.messages && data.messages.messages.length ) { this.addMessages(data.messages.messages); } }, ['@clear-messages.window']() { this.messages = []; } } } } </script> <section id="messages" x-data="initMessages()" x-bind="eventListeners" aria-live="assertive" role="alert" > <template x-if="!isEmpty()"> <div class="w-full"> <div class="messages container mx-auto py-3"> <template x-for="(message, index) in messages" :key="index"> <div> <template x-if="message"> <div class="message" :class="message.type" :ui-id="'message-' + message.type" > <span x-html="message.text"></span> <button type="button" class="btn-close-msg text-gray-600 hover:text-black" aria-label="Close message" @click.prevent="removeMessage(index)" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-current" width="18" height="18" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> </svg> </button> </div> </template> </div> </template> </div> </div> </template> </section> </div><div class="columns"><div class="column main"><div id="nxt-content"><p>&nbsp;</p></div></div><aside class="sidebar sidebar-additional"><div id="nxt-refine"> <p>&nbsp;</p> </div></aside></div></main><footer class="page-footer"><div class="footer content"><script> addEventListener('DOMContentLoaded', () => { for (const [selector, label] of Object.entries({"aside.sidebar-main":"Sidebar Main","aside.sidebar-additional":"Sidebar Additional"})) { const target = document.querySelector(selector); target && target.setAttribute('aria-label', label); } }, {once: true}) </script> <div class="text-gray-600 text-base leading-6 bg-white relative pt-14 border-t border-t-gray-300"> <div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div class="footer-newsletter"> <div class="footer-newsletter-text"> <div class="footer-newsletter-title"> Subscribe Today </div> <div class="footer-newsletter-subtitle"> Sign up for all the news about our latest arrivals and exclusive discounts! </div> </div> <div class="footer-newsletter-form"> <div class="klaviyo-form-Y4C5ZC"></div> </div> </div></div> <div class="py-8"> <div class="max-w-full lg:max-w-5xl xl:max-w-7xl w-full mx-auto px-4 lg:flex lg:justify-between"> <div class="mb-6 lg:mb-0 lg:w-1/3"> <div class="mb-5 flex justify-center w-full md:block"> <img src="https://www.gigaparts.com/static/version1732095243/frontend/GigaParts/hyva/en_US/images/logo.svg" title="" alt="" height="40" class="h-10" /> </div> <div class="text-[14px] mb-5"> <div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true">We look forward to adding you to our long list of satisfied customers!</div> </div> <div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div class="flex items-center mb-5"> <div class="w-[60px] h-[60px] mr-2.5" style="margin-right: 10px;"> <img src="/media/wysiwyg/header/hotline_icon_60.png" width="60" height="60" loading="lazy" alt="Hotline icon" /> </div> <div class="font-medium text-[24px] text-gray-700"> <div class="text-gray-500 font-normal text-[14px]">Customer Service:</div> <div><a href="tel:+12563841008">1-256-384-1008 <br> 9am-6pm CST</a></div> </div> </div> </div> <div class="text-[14px] text-gray-700 font-semibold"> <span class="text-gray-500 font-normal"> Automated Attendant </span><br> <div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true">+1-866-535-4442 (US & Canada)</div> </div> <div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div class="text-gray-700 font-semibold mt-4"> <div class="text-[14px] text-gray-500 font-normal mb-1.5">We're on social media too!</div> <div style="font-size:24px"> <a href="https://twitter.com/gigaparts" target="_blank" class="icon-social-twitter text-[24px] hover:text-primary"></a> <a href="https://www.facebook.com/GigaPartsHuntsville" target="_blank" class="icon-social-facebook text-[24px] hover:text-primary"></a> <a href="https://www.instagram.com/gigaparts/" target="_blank" class="icon-social-instagram text-[24px] hover:text-primary"></a> </div> </div></div> </div> <div x-data="{ open: false }"> <a @click="open = ! open" class="flex justify-between align-middle cursor-pointer group lg:cursor-default" > <h4 class="uppercase font-semibold text-[14px] text-gray-700 group-hover:underline lg:group-hover:no-underline"> <div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true">Shop</div> </h4> <span class="transition-transform" :class="{ 'hidden': open }"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="text-gray-500 stroke-current w-4 h-4 lg:hidden" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M12 4v16m8-8H4"/> <title>plus</title></svg> </span> <span class="transition-transform" :class="{ 'hidden': ! open }"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="text-gray-500 stroke-current w-4 h-4 lg:hidden" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M20 12H4"/> <title>minus</title></svg> </span> </a> <ul class="flex-col gap-4 mt-4 mb-6 lg:flex" :class="{ 'flex': open, 'hidden': ! open }"> <div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><li> <a href="https://www.gigaparts.com/radio-gear" class="text-[14px] hover:underline">Amateur Radios</a> </li> <li> <a href="https://www.gigaparts.com/computers" class="text-[14px] hover:underline">Computers</a> </li> <li> <a href="https://www.gigaparts.com/personalized-items" class="text-[14px] hover:underline">Personalized Items</a> </li> <li> <a href="https://www.gigaparts.com/photography" class="text-[14px] hover:underline">Photography Gear</a> </li> <li> <a href="https://www.gigaparts.com/makers" class="text-[14px] hover:underline" >3D Printing</a> </li> <li> <a href="https://www.gigaparts.com/nsearch/?lp=NS-AMR#?lp=NS-AMR&res_per_page=60H&Stockstatusfilter=Currently+in+stock%21&sort_by_field=Price+High+to+Low&search_return=all" class="text-[14px] hover:underline">Clearance Sale</a> </li></div> </ul> </div> <div x-data="{ open: false }" class="pt-4 lg:p-0"> <a @click="open = ! open" class="flex justify-between align-middle cursor-pointer group lg:cursor-default" > <h4 class="uppercase font-semibold text-[14px] text-gray-700 group-hover:underline lg:group-hover:no-underline"> <div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true">Customer service</div> </h4> <span class="transition-transform" :class="{ 'hidden': open }"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="text-gray-500 stroke-current w-4 h-4 lg:hidden" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M12 4v16m8-8H4"/> <title>plus</title></svg> </span> <span class="transition-transform" :class="{ 'hidden': ! open }"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="text-gray-500 stroke-current w-4 h-4 lg:hidden" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M20 12H4"/> <title>minus</title></svg> </span> </a> <ul class="flex-col gap-4 mt-4 mb-6 lg:flex" :class="{ 'flex': open, 'hidden': ! open }"> <div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><li> <a href="https://www.gigaparts.net/orderstatus/" class="text-[14px] hover:underline"> Check Order Status </a> </li> <li> <a href="https://www.gigaparts.net/returns/" class="text-[14px] hover:underline"> Return Request </a> </li> <li> <a href="/order-policies" class="text-[14px] hover:underline"> Order Policy </a> </li> <li> <a href="/warranties-policy" class="text-[14px] hover:underline"> Warranty Policy </a> </li> <li> <a href="/trade-in" class="text-[14px] hover:underline"> Trade-In's </a> </li> <li> <a href="/contact" class="text-[14px] hover:underline"> Get in touch </a> </li></div> </ul> </div> <div x-data="{ open: false }" class="pt-4 lg:p-0"> <a @click="open = ! open" class="flex justify-between align-middle cursor-pointer group lg:cursor-default" > <h4 class="uppercase font-semibold text-[14px] text-gray-700 group-hover:underline lg:group-hover:no-underline"> <div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true">Our company</div> </h4> <span class="transition-transform" :class="{ 'hidden': open }"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="text-gray-500 stroke-current w-4 h-4 lg:hidden" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M12 4v16m8-8H4"/> <title>plus</title></svg> </span> <span class="transition-transform" :class="{ 'hidden': ! open }"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="text-gray-500 stroke-current w-4 h-4 lg:hidden" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M20 12H4"/> <title>minus</title></svg> </span> </a> <ul class="flex-col gap-4 mt-4 mb-6 lg:flex" :class="{ 'flex': open, 'hidden': ! open }"> <div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><li> <a href="/about-us" class="text-[14px] hover:underline"> About Us </a> </li> <li> <a href="/jobs" class="text-[14px] hover:underline"> Careers </a> </li> <li> <a href="/report-a-problem" class="text-[14px] hover:underline"> Report A Problem </a> </li></div> </ul> </div> <div x-data="{ open: false }" class="pt-4 lg:p-0"> <a @click="open = ! open" class="flex justify-between align-middle cursor-pointer group lg:cursor-default" > <h4 class="uppercase font-semibold text-[14px] text-gray-700 group-hover:underline lg:group-hover:no-underline"> <div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true">My account</div> </h4> <span class="transition-transform" :class="{ 'hidden': open }"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="text-gray-500 stroke-current w-4 h-4 lg:hidden" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M12 4v16m8-8H4"/> <title>plus</title></svg> </span> <span class="transition-transform" :class="{ 'hidden': ! open }"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="text-gray-500 stroke-current w-4 h-4 lg:hidden" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M20 12H4"/> <title>minus</title></svg> </span> </a> <ul class="flex-col gap-4 mt-4 mb-6 lg:flex" :class="{ 'flex': open, 'hidden': ! open }"> <div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><li><a href="/customer/account" class="text-[14px] hover:underline">My account</a></li> <li><a href="/sales/order/history" class="text-[14px] hover:underline">My orders</a></li></div> </ul> </div> </div> </div> <div class="bg-zinc-900"> <div class="py-6 text-sm sm:flex sm:justify-between max-w-[640px] md:max-w-3xl lg:max-w-5xl xl:max-w-7xl w-full mx-auto px-7"> <div class="text-gray-500"> 漏 GigaParts, Inc. </div> <div class="text-gray-400 mt-2 sm:mt-0"> <a href="https://www.gigaparts.com/privacy-policy-cookie-restriction-mode/" class="hover:underline" > Terms &amp; Conditions </a> | <a href="https://www.gigaparts.com/privacy-policy-cookie-restriction-mode/" class="hover:underline" > Privacy Policy </a> </div> </div> </div> </div> </div></footer><div data-role="signifyd-fingerprint" data-bind="scope: 'signifyd-fingerprint'"></div> <script type="text/x-magento-init"> { "[data-role=signifyd-fingerprint]": { "Magento_Ui/js/core/app": {"components":{"signifyd-fingerprint":{"component":"Signifyd_Connect\/js\/view\/signifyd-fingerprint"}}} } } </script> <script> function initWarrantyCart() { return { cart: {}, getData(data) { if (data.cart) { this.cart = data.cart } } } } function initWarrantyContent() { return { warrantyData: null, openWarrantyModal: false, selectedWarranty: false, isLoading: false, receiveWarrantyData(data) { if (data['warranty_popup']) { this.warrantyData = data['warranty_popup']; if (this.warrantyData['added_product']) { this.openWarrantyModal = true; } } }, removeWarrantyDataFromCustomerSection() { const browserStorage = hyva.getBrowserStorage(); const customerSection = JSON.parse(browserStorage.getItem('mage-cache-storage')); if (customerSection) { customerSection['warranty_popup'] = {}; browserStorage.setItem('mage-cache-storage', JSON.stringify(customerSection)); } }, addToCartWarranty(productId) { this.isLoading = true; const formKey = hyva.getFormKey(); const postUrl = BASE_URL + 'checkout/cart/add'; fetch(postUrl, { "headers": { "content-type": "application/x-www-form-urlencoded; charset=UTF-8", }, "body": "form_key=" + formKey + "&product=" + productId + "&uenc=" + hyva.getUenc(), "method": "POST", "mode": "cors", "credentials": "include" }).then(function (response) { if (response.redirected) { window.location.href = response.url; } }).catch(function (error) { typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [{ type: "error", text: error }], 5000 ); }); }, } } </script> <div x-data="{...initWarrantyContent(), ...initWarrantyCart()}" x-show="openWarrantyModal" class="fixed top-0 left-0 w-full h-full flex items-center justify-center z-50" style="background-color: rgba(0, 0, 0, 0.5);display:none;" > <div class="text-left bg-white h-auto p-4 shadow-xl rounded mx-2 overflow-y-auto max-h-full md:mx-0 md:w-full md:max-w-2xl md:p-8" @click.away="openWarrantyModal = false" > <div x-show="isLoading" class="flex flex-row justify-center items-center w-full h-full fixed select-none z-50" style="left: 50%;top: 50%;transform: translateX(-50%) translateY(-50%);background: rgba(255,255,255,0.7);" x-transition:enter="ease-out duration-200" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" > <!-- By Sam Herbert (@sherb), for everyone. More @ http://goo.gl/7AJzbL --> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 57 57" stroke="currentColor" class="text-primary" width="57" height="57" role="img"> <g fill="none" fill-rule="evenodd"> <g transform="translate(1 1)" stroke-width="2"> <circle cx="5" cy="50" r="5"> <animate attributeName="cy" begin="0s" dur="2.2s" values="50;5;50;50" calcMode="linear" repeatCount="indefinite"/> <animate attributeName="cx" begin="0s" dur="2.2s" values="5;27;49;5" calcMode="linear" repeatCount="indefinite"/> </circle> <circle cx="27" cy="5" r="5"> <animate attributeName="cy" begin="0s" dur="2.2s" from="5" to="5" values="5;50;50;5" calcMode="linear" repeatCount="indefinite"/> <animate attributeName="cx" begin="0s" dur="2.2s" from="27" to="27" values="27;49;5;27" calcMode="linear" repeatCount="indefinite"/> </circle> <circle cx="49" cy="50" r="5"> <animate attributeName="cy" begin="0s" dur="2.2s" values="50;50;5;50" calcMode="linear" repeatCount="indefinite"/> <animate attributeName="cx" from="49" to="49" begin="0s" dur="2.2s" values="49;5;27;49" calcMode="linear" repeatCount="indefinite"/> </circle> </g> </g> <title>loader</title></svg> </div> <div class="flex justify-between md:pb-4 md:mb-4 md:border-b md:border-b-gray-300"> <div class="flex-col hidden w-1/2 md:flex" @private-content-loaded.window="receiveWarrantyData($event.detail.data); $nextTick(() => {removeWarrantyDataFromCustomerSection()});" > <div class="text-green-500">Added to cart</div> <div class="flex items-center"> <span class="icon-check text-green-500 mr-1 -ml-[18px]"></span> <a href="#" :title="warrantyData?.added_product?.product_name"> <img :src="warrantyData?.added_product?.thumb_image?.src" :alt="warrantyData?.added_product?.thumb_image?.alt" class="h-16"> </a> </div> <div class="font-semibold text-sm" x-html="warrantyData?.added_product?.product_price"></div> </div> <div class="w-full flex flex-col items-end md:w-1/2" @private-content-loaded.window="getData(event.detail.data)" > <a class="text-primary" href="#" @click.prevent="openWarrantyModal = false">Continue Shopping</a> <div class="h-14 items-center text-sm hidden md:flex"> <div class="mr-2">Cart Subtotal (<span x-html="cart.summary_count"></span> items):</div> <div class="font-semibold" x-html="cart.subtotal"></div> </div> <a href="https://www.gigaparts.com/checkout/cart/" class="btn btn-primary w-auto hidden md:flex" > Go to Cart </a> </div> </div> <div class="md:flex md:flex-wrap" @private-content-loaded.window="receiveWarrantyData($event.detail.data)" > <div class="flex justify-center md:w-1/2 md:items-start"> <a href="#" :title="warrantyData?.added_product?.product_name"> <img :src="warrantyData?.added_product?.thumb_image?.src" :alt="warrantyData?.added_product?.thumb_image?.alt"> </a> </div> <div class="modal_warranty_description relative md:w-1/2"> <div class="icon-shield absolute left-0 top-0.5 text-xl"></div> <div x-html="warrantyData?.warranty_description"></div> <div class=""> <template x-for="(product, index) in warrantyData?.product_warranties" :key="product.product_id"> <div class="mb-2 flex justify-between"> <div> <input :id="'popup-warranty-' + index" type="radio" :value="product.product_id" name="warranty" class="mr-1" x-model="selectedWarranty"> <label :for="'popup-warranty-' + index" x-text="product.title" class="cursor-pointer"></label> </div> <div class="font-semibold" x-html="product.price"></div> </div> </template> <div class="pl-6 mb-4"> <a href="https://www.gigaparts.com/warranty-options/" target="_blank" class="text-primary underline"> Learn more about warranty options </a> </div> <div> <button class="btn w-full justify-center" :disabled="!selectedWarranty" :class="selectedWarranty ? 'btn-primary' : 'hover:bg-gray-500'" @click.prevent="addToCartWarranty(selectedWarranty)" > <template x-if="selectedWarranty"> <span class="mr-1"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="border-current" width="20" height="20" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"/> <title>shopping-cart</title></svg> </span> </template> <span x-text="selectedWarranty ? 'Add to Cart' : 'Select a warranty'"></span> </button> </div> </div> </div> <template x-if="warrantyData?.added_product && warrantyData?.also_bought.length"> <div class="w-full border-t border-t-gray-300 mt-4 pt-4"> <div class="mb-4"> <span class="text-lg font-semibold">People also bought</span> <span class="">(4 items):</span> </div> <div class="max-w-full"> <div class="flex overflow-x-auto pb-4"> <template x-for="(product, index) in warrantyData?.also_bought" :key="product.product_id"> <div class="w-1/4 flex-none px-2 border-r border-r-gray-300 last:border-r-0"> <div class="flex flex-col items-center"> <div> <a :href="product.product_url" :title="product.product_name"> <img :src="product?.product_image?.src" :alt="product?.product_image?.alt"> </a> </div> <div class="h-10 flex text-center my-1 overflow-hidden"> <span x-text="product.product_name"></span> </div> <div class="font-semibold text-center mb-2"> <span x-html="product.product_price"></span> </div> <button @click.prevent="addToCartWarranty(product.product_id)" class="btn btn-primary btn-size-sm">Add to Cart</button> </div> </div> </template> </div> </div> </div> </template> </div> </div> </div> <!-- Shopping Guarantee Seal --> <script> const script = document.createElement('script') script.src = '\u002F\u002Fguarantee\u002Dcdn.com\u002FSealCore\u002Fapi\u002Fgjs\u003FSN\u003D908309503\u0026t10'; script.type = 'text/javascript'; document.head.append(script); </script> <style> span[id='Kicker Custom Minimal2_1'], span[id='Kicker Custom Minimal2_2'] { display: none !important; } ._GUARANTEE_Kicker_Container { display: none !important; } </style> <!-- /Shopping Guarantee Seal --> <script src="https://apis.google.com/js/platform.js?onload=renderBadge" async defer></script> <script> var isDisabledForMobile = 1, badgeAvailable = true; if (isDisabledForMobile && window.innerWidth < 768) { badgeAvailable = false; } if (badgeAvailable) window.renderBadge = function () { var ratingBadgeContainer = document.createElement("div"); document.body.appendChild(ratingBadgeContainer); window.gapi.load('ratingbadge', function () { window.gapi.ratingbadge.render(ratingBadgeContainer, { "merchant_id": 10780, "position": "BOTTOM_RIGHT" }); }); } </script> <script> (() => { function src_default(Alpine) { Alpine.directive("intersect", (el, { value, expression, modifiers }, { evaluateLater, cleanup }) => { let evaluate = evaluateLater(expression); let options = { rootMargin: getRootMargin(modifiers), threshold: getThreshhold(modifiers) }; let observer = new IntersectionObserver((entries) => { entries.forEach((entry) => { if (entry.isIntersecting === (value === "leave")) return; evaluate(); modifiers.includes("once") && observer.disconnect(); }); }, options); observer.observe(el); cleanup(() => { observer.disconnect(); }); }); } function getThreshhold(modifiers) { if (modifiers.includes("full")) return 0.99; if (modifiers.includes("half")) return 0.5; if (!modifiers.includes("threshold")) return 0; let threshold = modifiers[modifiers.indexOf("threshold") + 1]; if (threshold === "100") return 1; if (threshold === "0") return 0; return Number(`.${threshold}`); } function getLengthValue(rawValue) { let match = rawValue.match(/^(-?[0-9]+)(px|%)?$/); return match ? match[1] + (match[2] || "px") : void 0; } function getRootMargin(modifiers) { const key = "margin"; const fallback = "0px 0px 0px 0px"; const index = modifiers.indexOf(key); if (index === -1) return fallback; let values = []; for (let i = 1; i < 5; i++) { values.push(getLengthValue(modifiers[index + i] || "")); } values = values.filter((v) => v !== void 0); return values.length ? values.join(" ").trim() : fallback; } document.addEventListener("alpine:init", () => { window.Alpine.plugin(src_default); }); })(); </script> <script> for (const [selector, deferUntil] of Object.entries({".product-slider section[x-data]":"intersect",".product-info [x-data]":"intersect","#filters-content [x-data]":"intersect","#review_form":"intersect","section[x-data^=initRecentlyViewedProductsComponent]":"intersect","div[x-data^=initBundleOptions]":"intersect","#product_addtocart_form [x-data]":"intersect","#notice-cookie-block":"intersect"})) { document.querySelectorAll(selector).forEach(el => el.setAttribute('x-defer', `${deferUntil}`)); } </script> <script> (function () { "use strict"; const hasAlpine = new Promise(resolve => { window.addEventListener('alpine:initialized', resolve, {once: true, passive: true}); }); const hasInteract = new Promise(resolve => { (events => { const onInteract = () => { resolve(); events.forEach(type => window.removeEventListener(type, onInteract)); } events.forEach(type => window.addEventListener(type, onInteract, {once: true, passive: true})) })(['touchstart', 'mouseover', 'wheel', 'scroll', 'keydown']) }); const onIntersect = (el) => { return new Promise(resolve => { const observer = new IntersectionObserver(entries => { for (const entry of entries) { if (entry.isIntersecting) { observer.disconnect() resolve(); } } }, {}); observer.observe(el); }); } function runComponent(el) { hasAlpine.then(() => { el.removeAttribute('x-ignore'); queueMicrotask(() => Alpine.initTree(el)); }); } function initDeferredComponents() { document.querySelectorAll('[x-data][x-defer]').forEach(el => { el.setAttribute('x-ignore', ''); const deferUntil = (el.getAttribute('x-defer') || '').trim(); switch (deferUntil) { case 'interact': hasInteract.then(() => runComponent(el)); break; case 'intersect': onIntersect(el).then(() => runComponent(el)) break; case 'idle': window.requestIdleCallback ? window.requestIdleCallback(() => runComponent(el), {timeout: 4000}) : setTimeout(() => runComponent(el), 4000); break; case 'eager': runComponent(el); break; default: if (deferUntil.startsWith('event:') && deferUntil.length > 6) { window.addEventListener(deferUntil.substring(6), () => runComponent(el), {once: true, passive: true}); } } }); } window.addEventListener('alpine:init', initDeferredComponents, {once: true, passive: true}); })() </script> <script type="module" src="https://www.gigaparts.com/static/version1732095243/frontend/GigaParts/hyva/en_US/Hyva_Theme/js/alpine3.min.js" defer crossorigin ></script> <script> 'use strict'; function dispatchMessages(messages, hideAfter) { const messagesEvent = new CustomEvent("messages-loaded", { detail: { messages: messages, hideAfter: hideAfter } }); window.dispatchEvent(messagesEvent); } if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) { console.warn("Hyv盲 helpers are not loaded yet. Make sure they are included before this script"); } (function( hyva, undefined ) { hyva.initFormKey = () => { const inputSelector = 'input[name="form_key"]', formKey = hyva.getFormKey(); Array.from(document.querySelectorAll(inputSelector)).map(function (input) { input.value = formKey }); } hyva.initMessages = () => { try { const messages = hyva.getCookie('mage-messages'); window.mageMessages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : []; dispatchMessages(window.mageMessages); // empty `mage-messages` cookie const skipSetDomain = true; hyva.setCookie('mage-messages','', -1, skipSetDomain); } catch (error) { console.warn('Error parsing Cookie Messages:', error); } } window.addEventListener('DOMContentLoaded', hyva.initFormKey); hyva.alpineInitialized(hyva.initMessages) }( window.hyva = window.hyva || {} )); </script> <script> 'use strict'; { const private_content_key = 'mage-cache-storage'; const private_content_expire_key = 'mage-cache-timeout'; const private_content_version_key = 'private_content_version'; const section_data_ids_key = 'section_data_ids'; const mage_cache_session_id_key = 'mage-cache-sessid'; const last_visited_store_key = 'last_visited_store'; const ttl = 3600; if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) { console.warn("Hyv盲 helpers are not loaded yet. Make sure they are included before this script"); } function loadSectionData () { const browserStorage = hyva.getBrowserStorage(); if (!browserStorage) { typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [{ type: "warning", text: "Please enable LocalStorage in your browser." }] ); return; } try { let isInvalid = false; if (hyva.getCookie(last_visited_store_key) !== CURRENT_STORE_CODE) { isInvalid = true; } hyva.setCookie(last_visited_store_key, CURRENT_STORE_CODE, false, false); if (!hyva.getCookie(mage_cache_session_id_key)) { isInvalid = true; browserStorage.removeItem(private_content_key); const skipSetDomain = true; const days = false; hyva.setCookie(mage_cache_session_id_key, true, days, skipSetDomain) } const cookieVersion = hyva.getCookie(private_content_version_key); const storageVersion = browserStorage.getItem(private_content_version_key); if (cookieVersion && !storageVersion || cookieVersion !== storageVersion) { isInvalid = true; } const privateContentExpires = browserStorage.getItem(private_content_expire_key); if (privateContentExpires && new Date(privateContentExpires) < new Date()) { browserStorage.removeItem(private_content_key); } if (isInvalid && cookieVersion) { fetchPrivateContent([]); } else if (cookieVersion && storageVersion && cookieVersion === storageVersion) { const privateContent = JSON.parse(browserStorage.getItem(private_content_key)); if ( privateContent && privateContentExpires && privateContent.cart && privateContent.customer ) { dispatchPrivateContent(privateContent); } else { fetchPrivateContent([]); } } else { if (document.getElementById('default-section-data')) { const privateContent = JSON.parse(document.getElementById('default-section-data').innerText.trim()); dispatchPrivateContent(privateContent); } else { dispatchPrivateContent({}); } } } catch (error) { console.warn('Error retrieving Private Content:', error); } } hyva.alpineInitialized(loadSectionData) window.addEventListener('reload-customer-section-data', loadSectionData); function dispatchPrivateContent(data) { const privateContentEvent = new CustomEvent("private-content-loaded", { detail: { data: data } }); window.dispatchEvent(privateContentEvent); } function fetchPrivateContent(sections) { fetch(`${BASE_URL}customer/section/load/?sections=${encodeURIComponent(sections.join(','))}`, { method: 'GET', headers: { 'Content-Type': 'application/json', 'X-Requested-With': 'XMLHttpRequest' } }) .then(response => response.json()) .then( data => { if (data) { try { const browserStorage = hyva.getBrowserStorage(); // merge new data preserving non-invalidated sections const oldSectionData = JSON.parse(browserStorage.getItem(private_content_key) || '{}') || {}; if ((! data.cart || ! data.cart.cartId) && oldSectionData['checkout-data']) { delete oldSectionData['checkout-data']; } const newSectionData = Object.assign(oldSectionData, data); dispatchPrivateContent(newSectionData); // don't persist messages, they've been dispatched already if (newSectionData.messages && newSectionData.messages.messages ) { newSectionData.messages.messages = []; } browserStorage.setItem(private_content_key, JSON.stringify(newSectionData)); const expiresAt = new Date(Date.now() + (ttl * 1000)).toISOString(); browserStorage.setItem(private_content_expire_key, expiresAt); const newCookieVersion = hyva.getCookie(private_content_version_key); browserStorage.setItem(private_content_version_key, newCookieVersion); // We don't need the section_data_ids in Hyv盲, but we store them for compatibility // with Luma Fallback. Otherwise, not all sections are loaded in Luma Checkout hyva.setCookie( section_data_ids_key, JSON.stringify( Object.keys(data).reduce((sectionDataIds, sectionKey) => { sectionDataIds[sectionKey] = data[sectionKey]['data_id']; return sectionDataIds; }, {}) ), false, true ); } catch (error) { console.warn("Couldn't store privateContent", error); } } } ); } } </script> <script> (() => { document.addEventListener('submit', event => event.target.action = event.target.action.replace('%25uenc%25', hyva.getUenc())); })() </script> <script> (events => { const dispatchUserInteractionEvent = () => { events.forEach(type => window.removeEventListener(type, dispatchUserInteractionEvent)) window.dispatchEvent(new Event('init-external-scripts')) }; events.forEach(type => window.addEventListener(type, dispatchUserInteractionEvent, {once: true, passive: true})) })(['touchstart', 'mouseover', 'wheel', 'scroll', 'keydown']) </script> <script> if (HTMLScriptElement.supports && HTMLScriptElement.supports('speculationrules')) { const specScript = document.createElement('script'); specScript.type = 'speculationrules'; specRules = { 'prerender': [{ 'where': { 'and': [ { 'href_matches': '/*.html' }, { 'not': {'selector_matches': '.do-not-prerender'}} ] }, 'eagerness': 'moderate' }] }; specScript.textContent = JSON.stringify(specRules); document.body.append(specScript); } </script> <script> function initConfigurableOptions(productId, optionConfig) { function findPathParam(key) { const baseUrl = (BASE_URL.substring(0, 2) === '//' ? 'http:' : '') + BASE_URL; const baseUrlParts = (new URL(baseUrl)).pathname.replace(/\/$/, '').split('/'); const pathParts = window.location.pathname.split('/').slice(baseUrlParts.length + 3); for (let i = 0; i < pathParts.length; i += 2) { if (pathParts[i] === key && pathParts.length > i) { return pathParts[i + 1]; } } } return { optionConfig, productId, itemId: (new URLSearchParams(window.location.search)).get('id') || findPathParam('id'), allowedAttributeOptions: [], selectedValues: [], init() { this.findAllowedAttributeOptions(); this.$nextTick(() => { if (typeof this.optionConfig.defaultValues === 'object') { for (const [attributeId, value] of Object.entries(this.optionConfig.defaultValues)) { this.changeOption(attributeId, value + ''); } } }); }, findSimpleIndex() { this.productIndex = this.calculateSimpleIndexForPartialSelection(this.selectedValues); }, calculateSimpleIndexForPartialSelection(selectedValues) { if (selectedValues.length === 0) return 0; let productIndexIds = Object.keys(this.optionConfig.index); Object.keys(this.optionConfig.attributes).forEach((attribute) => { const productsWithAttributeMatch = selectedValues[attribute] ? productIndexIds.filter((productIndex) => { return this.optionConfig.index[productIndex][attribute] === this.selectedValues[attribute] }) : []; productIndexIds = productsWithAttributeMatch.length ? productsWithAttributeMatch : productIndexIds }) return productIndexIds[0]; }, calculateSimpleIndexForFullSelection(selectedValues) { const productIndexes = this.optionConfig.index; return Object.keys(productIndexes).find(productIndex => { const productCandidateOptions = productIndexes[productIndex]; for (const productOption in productCandidateOptions) { if ( ! selectedValues[productOption] || selectedValues[productOption] !== productCandidateOptions[productOption] ) { return false; } } return productIndex; }); }, productIndex: 0, findAllowedAttributeOptions() { this.allowedAttributeOptions = this.calculateAllowedAttributeOptions(this.selectedValues); }, calculateAllowedAttributeOptions(selectedValues) { const allAttributes = this.optionConfig.attributes; const allAttributesSorted = Object.values(allAttributes).sort((a,b) => { return a.position - b.position }); const newAllowedAttributeOptions = []; allAttributesSorted.forEach(attribute => { const selectionWithoutAttr = Object.assign({}, this.removeAttrFromSelection(selectedValues, attribute.id)); const availableIndexes = this.calculateAvailableProductIndexes(selectionWithoutAttr); newAllowedAttributeOptions[attribute.id] = allAttributes[attribute.id].options.filter(option => { return !!option.products.find(product => { return availableIndexes.includes(product); }) }); }); return newAllowedAttributeOptions; }, calculateAvailableProductIndexes(selectedOptions) { if (Object.keys(selectedOptions).length === 0) { if (Object.values(this.optionConfig.salable || {}).length) { return [].concat.apply([], [].concat.apply([], Object.values(this.optionConfig.salable).map(Object.values))).filter((x, i, a) => a.indexOf(x) === i) } return Object.keys(this.optionConfig.index); } const selectedIds = Object.keys(selectedOptions); if (Object.values(this.optionConfig.salable || {}).length) { const selectedOptionIndexes = selectedIds.map(attrId => { const optionValue = selectedOptions[attrId]; return this.optionConfig.salable[attrId] && this.optionConfig.salable[attrId][optionValue] || [] }) return selectedOptionIndexes.reduce((acc, optionIndexes) => { return acc.filter(index => optionIndexes.includes(index)); }); } else { const productIndexes = this.optionConfig.index; return Object.keys(productIndexes).filter(index => { for (const attrId of selectedIds) { if (productIndexes[index][attrId] !== `${selectedOptions[attrId]}`) return false } return true }); } }, findAttributeByOptionId(optionId) { for (const attributeId in this.optionConfig.attributes) { const attributeOptions = this.optionConfig.attributes[attributeId].options || []; if (attributeOptions.find(option => option.id === optionId)) { return attributeId; } } }, getAllowedAttributeOptions(attributeId) { return this.allowedAttributeOptions[attributeId] || [] }, getProductIdsForOption(option) { const attributeId = this.findAttributeByOptionId(option.id); const allOptions = this.optionConfig.attributes[attributeId]; const opt = (allOptions && allOptions.options || []).find(o => o.id === option.id); return opt && opt.products ? opt.products : []; }, findProductIdsForPartialSelection(optionSelection) { const candidateProducts = Object.values(optionSelection).reduce((candidates, optionId) => { const newCandidates = this.getProductIdsForOption({id: optionId}); return candidates === null ? newCandidates : candidates.filter(productId => newCandidates.includes(productId)); }, null); return candidateProducts || []; }, findCheapestProductForPartialSelection(optionSelection) { const candidateProducts = this.findProductIdsForPartialSelection(optionSelection); return candidateProducts.reduce((cheapest, simpleIdx) => { // in the first iteration we start with simpleIdx as the currently cheapest product if (! this.optionConfig.optionPrices[cheapest]) return simpleIdx; const knownCheapestPrice = this.optionConfig.optionPrices[cheapest].finalPrice.amount; return knownCheapestPrice > this.optionConfig.optionPrices[simpleIdx].finalPrice.amount ? simpleIdx : cheapest; }, 0) }, findProductIdToUseForOptionPrice(option) { // try to find a product for a complete selection const attributeId = this.findAttributeByOptionId(option.id); const optionSelection = Object.assign({}, this.selectedValues, {[attributeId]: option.id}); const matchingSimpleIndex = this.calculateSimpleIndexForFullSelection(optionSelection); // if there is no complete selection, use the cheapest product for the option return matchingSimpleIndex || this.findCheapestProductForPartialSelection(optionSelection); }, getAttributeOptionLabel(option) { const optionProduct = this.findProductIdToUseForOptionPrice(option); if ((! optionProduct) || (optionProduct === this.productIndex)) { return option.label; } const currentPrice = this.getOptionPriceAdjustmentBasePrice(); if (this.optionConfig.optionPrices[optionProduct]) { const optionPrice = this.optionConfig.optionPrices[optionProduct].finalPrice.amount; if (optionPrice !== currentPrice){ return option.label + ' ' + hyva.formatPrice(optionPrice - currentPrice, true); } } return option.label; }, getOptionPriceAdjustmentBasePrice() { if (this.optionConfig.optionPrices[this.productIndex]) { return this.optionConfig.optionPrices[this.productIndex].finalPrice.amount } const cheapestForSelection = this.findCheapestProductForPartialSelection(this.selectedValues); return this.optionConfig.optionPrices[cheapestForSelection] ? this.optionConfig.optionPrices[cheapestForSelection].finalPrice.amount : this.optionConfig.prices.finalPrice.amount; // default price if no option selection }, clearOptionIfActive(optionId, value) { if (this.selectedValues[optionId] === value) { this.blurLabel() this.changeOption(optionId, '') } }, removeAttrFromSelection(selectedValues, attributeId) { attributeId = parseInt(attributeId); return selectedValues.reduce((newSelection, val, attr) => { if (attr !== attributeId) { newSelection[attr] = val; } return newSelection; }, []); }, changeOption(attributeId, value) { if (value === '') { this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId) } else if (value && this.getAllowedAttributeOptions(attributeId).find(option => option.id === value)) { this.selectedValues[attributeId] = value; } this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateGallery(); window.dispatchEvent( new CustomEvent( 'configurable-selection-changed', { detail: { productId: this.productId, optionId: attributeId, value: value, productIndex: this.productIndex, selectedValues: this.selectedValues, candidates: this.findProductIdsForPartialSelection(this.selectedValues), } } ) ); }, calculateIsMinimalPrice() { return ( this.selectedValues.filter(value => !!value).length < Object.keys(this.optionConfig.attributes).length ); }, updatePrices() { const value = this.productIndex ? this.optionConfig.optionPrices[this.productIndex] : this.optionConfig.prices; window.dispatchEvent( new CustomEvent( "update-prices-" + this.productId, { detail: Object.assign( value, { isMinimalPrice: this.calculateIsMinimalPrice() } ) } ) ); }, updateGallery () { if (this.productIndex) { const images = this.optionConfig.images[this.productIndex]; images && window.dispatchEvent(new CustomEvent( "update-gallery", { detail: this.sortImagesByPosition(images) } )); } else { window.dispatchEvent(new Event("reset-gallery")); } }, sortImagesByPosition(images) { return images.sort((x, y) => { return x.position === y.position ? 0 : (parseInt(x.position) > parseInt(y.position) ? 1 : -1) }); }, onGetCartData(data) { }, preselectCartItems(data) { // pre-select options based on cart data for current (quote) itemId const cart = data && data.cart; if (cart && cart.items) { const cartItem = cart.items.find((item) => { return ( item.item_id === this.itemId && item.product_id === this.productId ) }); if (cartItem && cartItem.options && cartItem.options.length) { cartItem.options.map(option => { this.changeOption(option.option_id, option.option_value); }) } } }, preselectQuerystringItems() { // pre-select option like ?size=167 const urlQueryParams = new URLSearchParams(window.location.search.replace('?','')); this.preselectItemsBasedOnLocation(attribute => urlQueryParams.get(attribute.code)); }, preselectLocationHashItems() { // pre-select option like #144=167 const urlHashParams = new URLSearchParams(window.location.hash.replace('#','')); this.preselectItemsBasedOnLocation(attribute => urlHashParams.get(attribute.id)); }, preselectItemsBasedOnLocation(getLocationValue) { Object.values(this.optionConfig.attributes).map(attribute => { this.changeOption(attribute.id, getLocationValue(attribute)) }); } } } </script> <script> function initSwatchOptions(swatchConfig) { return { swatchConfig, getAttributeSwatchData(attributeId) { const swatchConfig = Object.assign({}, this.swatchConfig[attributeId]); swatchConfig['details'] = JSON.parse(swatchConfig['additional_data']); return swatchConfig; }, getAllAttributeOptions(attributeId) { return ( this.optionConfig.attributes[attributeId] && this.optionConfig.attributes[attributeId].options ) || [] }, optionIsActive(attributeId, optionId) { // return true if a product with this option is in stock return !!this.getAllowedAttributeOptions(attributeId).find( option => option.id === optionId ) }, optionIsEnabled(attributeId, optionId) { // return true if a product with this option is enabled for (const productId in this.optionConfig.index) { if (this.optionConfig.index[productId][attributeId] === optionId) { return true; } } return false; }, mapSwatchTypeNumberToTypeCode(typeNumber) { switch ("" + typeNumber) { case "1": return "color" case "2": return "image" case "3": return "empty" case "0": default: return "text" } }, getTypeOfFirstOption(attributeId) { for (const optionId in this.swatchConfig[attributeId]) { const option = this.swatchConfig[attributeId][optionId]; if (typeof option.type !== 'undefined') { return this.mapSwatchTypeNumberToTypeCode(option.type); } } }, getVisualSwatchType(attributeId, targetOptionId) { // If a type configuration is present for the given option id, use it const config = this.swatchConfig[attributeId]; if (config[targetOptionId] && typeof config[targetOptionId].type !== 'undefined') { return this.mapSwatchTypeNumberToTypeCode(config[targetOptionId].type); } // Otherwise - if no config is present for the target option - use the type of the first option // with a type property from the attribute, thus assuming its the same type as the target option. // (This edge case condition can occur on single swatch products if some options are not salable) return this.getTypeOfFirstOption(attributeId); }, getSwatchType(attributeId, optionId) { // Deserialize the attribute details the first time they are used if (this.swatchConfig[attributeId] && ! this.swatchConfig[attributeId].details) { this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId); } const type = this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details && this.swatchConfig[attributeId].details.swatch_input_type || "empty"; return type === 'visual' ? this.getVisualSwatchType(attributeId, optionId) : type; }, isTextSwatch(attributeId, optionId) { return this.getSwatchType(attributeId, optionId) === 'text'; }, isVisualSwatch(attributeId, optionId) { const type = this.getSwatchType(attributeId, optionId); return ['image', 'color'].includes(type); }, getSwatchBackgroundStyle(attributeId, optionId) { const config = this.getSwatchConfig(attributeId, optionId); const type = this.getSwatchType(attributeId, optionId); if (type === "color") { return 'background-color:' + config.value; } else if (type === "image") { return "background: #ffffff url('" + config.value + "') no-repeat center"; } else { return ''; } }, getSwatchText(attributeId, optionId) { const config = this.getSwatchConfig(attributeId, optionId); return config.label || config.value || this.getOptionLabelFromOptionConfig(attributeId, optionId); }, getOptionLabelFromOptionConfig(attributeId, optionId) { // Fallback if no value is present in swatchConfig data // Reference issue https://gitlab.hyva.io/hyva-themes/magento2-default-theme/-/issues/190 const option = this.getAllAttributeOptions(attributeId).filter(option => option.id === optionId); return option && option[0] && option[0].label ||''; }, getSwatchConfig(attributeId, optionId) { return this.swatchConfig[attributeId] && this.swatchConfig[attributeId][optionId] ? this.swatchConfig[attributeId][optionId] : false; }, activeTooltipItem: false, tooltipPositionElement: false, isTooltipVisible() { return this.activeTooltipItem && this.getSwatchConfig( this.activeTooltipItem.attribute, this.activeTooltipItem.item ); }, isFirstItemCol() { return this.activeTooltipItem.index === 0; }, getTooltipImageStyle(attributeId, optionId) { const config = this.getSwatchConfig(attributeId, optionId); const type = this.getSwatchType(attributeId, optionId); if (type === "color") { return 'background-color:' + config.value + '; width: 110px; height: 90px;'; } else if (type === "image") { return "background: #ffffff url('" + config.thumb + "') center center no-repeat; width: 110px; height: 90px;"; } else { return 'display:none'; } }, getTooltipPosition() { return this.tooltipPositionElement ? `top: ${this.tooltipPositionElement.offsetTop}px;` + `left: ${ this.tooltipPositionElement.offsetLeft - ( this.tooltipPositionElement.closest('.snap') && this.tooltipPositionElement.closest('.snap').scrollLeft || 0 ) }px;` : '' }, getTooltipLabel() { return this.getSwatchConfig(this.activeTooltipItem.attribute, this.activeTooltipItem.item).label }, focusedLabel: false, focusLabel(optionId) { this.focusedLabel = optionId; }, blurLabel() { this.focusedLabel = false; }, showSwatches: false, initShowSwatchesIntersect() { if ('IntersectionObserver' in window && !window.scrollY) { let io = new IntersectionObserver( entries => { entries.map(entry => { if (entry.isIntersecting) { this.showSwatches = true; io.unobserve(this.$root); } }) } ); io.observe(this.$root); } else { this.showSwatches = true } } } } </script> <script> 'use strict'; const grecaptchaV2LoadCallbacks = []; function executeRecaptchaLoadCallbacks () { while (window.grecaptcha && grecaptchaV2LoadCallbacks.length > 0) { const callback = grecaptchaV2LoadCallbacks.pop(); typeof callback === 'string' ? window[callback]() : callback(); } } (function() { const loadRecaptchaScript = (event) => { if (window.grecaptcha || !event.target.form) { return; } const url = 'https://www.google.com/recaptcha/api.js?onload=executeRecaptchaLoadCallbacks'; const siteKey = '6LflH5QcAAAAAGBdVEeVSQMyM68HonV_Q83noWZb'; const script = document.createElement('script'); script.type = 'text/javascript'; script.src = siteKey ? `${url}&render=${siteKey}` : `${url}&render=explicit`; script.async = true; document.head.appendChild(script); script.addEventListener('load', () => { Array.from(document.querySelectorAll('button[data-recaptcha-btn]:disabled')).forEach(btn => btn.removeAttribute('disabled')); }); } window.forceLoadRecaptchaScript = (form) => { loadRecaptchaScript({target: {form: form || 'dummy'}}); executeRecaptchaLoadCallbacks(); }; document.body.addEventListener('input', loadRecaptchaScript, { once: true }); document.body.addEventListener('focus', loadRecaptchaScript, { once: true }); }()); </script> <script type="application/json" id="default-section-data"> {"messages":[],"customer":[],"compare-products":[],"last-ordered-items":[],"cart":[],"directory-data":{"AD":{"name":"Andorra"},"AE":{"name":"United Arab Emirates"},"AF":{"name":"Afghanistan"},"AG":{"name":"Antigua & Barbuda"},"AI":{"name":"Anguilla"},"AL":{"name":"Albania","regions":{"609":{"code":"AL-01","name":"Berat"},"610":{"code":"AL-09","name":"Dib\u00ebr"},"611":{"code":"AL-02","name":"Durr\u00ebs"},"612":{"code":"AL-03","name":"Elbasan"},"613":{"code":"AL-04","name":"Fier"},"614":{"code":"AL-05","name":"Gjirokast\u00ebr"},"615":{"code":"AL-06","name":"Kor\u00e7\u00eb"},"616":{"code":"AL-07","name":"Kuk\u00ebs"},"617":{"code":"AL-08","name":"Lezh\u00eb"},"618":{"code":"AL-10","name":"Shkod\u00ebr"},"619":{"code":"AL-11","name":"Tiran\u00eb"},"620":{"code":"AL-12","name":"Vlor\u00eb"}}},"AM":{"name":"Armenia"},"AN":{"name":null},"AO":{"name":"Angola"},"AQ":{"name":"Antarctica"},"AR":{"name":"Argentina","regions":{"622":{"code":"AR-B","name":"Buenos Aires"},"623":{"code":"AR-K","name":"Catamarca"},"624":{"code":"AR-H","name":"Chaco"},"625":{"code":"AR-U","name":"Chubut"},"621":{"code":"AR-C","name":"Ciudad Aut\u00f3noma de Buenos Aires"},"626":{"code":"AR-X","name":"C\u00f3rdoba"},"627":{"code":"AR-W","name":"Corrientes"},"628":{"code":"AR-E","name":"Entre R\u00edos"},"629":{"code":"AR-P","name":"Formosa"},"630":{"code":"AR-Y","name":"Jujuy"},"631":{"code":"AR-L","name":"La Pampa"},"632":{"code":"AR-F","name":"La Rioja"},"633":{"code":"AR-M","name":"Mendoza"},"634":{"code":"AR-N","name":"Misiones"},"635":{"code":"AR-Q","name":"Neuqu\u00e9n"},"636":{"code":"AR-R","name":"R\u00edo Negro"},"637":{"code":"AR-A","name":"Salta"},"638":{"code":"AR-J","name":"San Juan"},"639":{"code":"AR-D","name":"San Luis"},"640":{"code":"AR-Z","name":"Santa Cruz"},"641":{"code":"AR-S","name":"Santa Fe"},"642":{"code":"AR-G","name":"Santiago del Estero"},"643":{"code":"AR-V","name":"Tierra del Fuego"},"644":{"code":"AR-T","name":"Tucum\u00e1n"}}},"AS":{"name":"American Samoa"},"AT":{"name":"Austria","regions":{"102":{"code":"BL","name":"Burgenland"},"99":{"code":"KN","name":"K\u00e4rnten"},"96":{"code":"NO","name":"Nieder\u00f6sterreich"},"97":{"code":"OO","name":"Ober\u00f6sterreich"},"98":{"code":"SB","name":"Salzburg"},"100":{"code":"ST","name":"Steiermark"},"101":{"code":"TI","name":"Tirol"},"103":{"code":"VB","name":"Vorarlberg"},"95":{"code":"WI","name":"Wien"}}},"AU":{"name":"Australia","regions":{"569":{"code":"ACT","name":"Australian Capital Territory"},"570":{"code":"NSW","name":"New South Wales"},"576":{"code":"NT","name":"Northern Territory"},"572":{"code":"QLD","name":"Queensland"},"573":{"code":"SA","name":"South Australia"},"574":{"code":"TAS","name":"Tasmania"},"571":{"code":"VIC","name":"Victoria"},"575":{"code":"WA","name":"Western Australia"}}},"AW":{"name":"Aruba"},"AX":{"name":"\u00c5land Islands"},"AZ":{"name":"Azerbaijan"},"BA":{"name":"Bosnia & Herzegovina"},"BB":{"name":"Barbados"},"BD":{"name":"Bangladesh"},"BE":{"name":"Belgium","regions":{"645":{"code":"VAN","name":"Antwerpen"},"646":{"code":"WBR","name":"Brabant wallon"},"647":{"code":"BRU","name":"Brussels-Capital Region"},"648":{"code":"WHT","name":"Hainaut"},"650":{"code":"WLG","name":"Li\u00e8ge"},"649":{"code":"VLI","name":"Limburg"},"651":{"code":"WLX","name":"Luxembourg"},"652":{"code":"WNA","name":"Namur"},"653":{"code":"VOV","name":"Oost-Vlaanderen"},"654":{"code":"VBR","name":"Vlaams-Brabant"},"655":{"code":"VWV","name":"West-Vlaanderen"}}},"BF":{"name":"Burkina Faso"},"BG":{"name":"Bulgaria","regions":{"665":{"code":"BG-01","name":"Blagoevgrad"},"666":{"code":"BG-02","name":"Burgas"},"672":{"code":"BG-08","name":"Dobrich"},"671":{"code":"BG-07","name":"Gabrovo"},"690":{"code":"BG-26","name":"Haskovo"},"673":{"code":"BG-09","name":"Kardzhali"},"674":{"code":"BG-10","name":"Kyustendil"},"675":{"code":"BG-11","name":"Lovech"},"676":{"code":"BG-12","name":"Montana"},"677":{"code":"BG-13","name":"Pazardzhik"},"678":{"code":"BG-14","name":"Pernik"},"679":{"code":"BG-15","name":"Pleven"},"680":{"code":"BG-16","name":"Plovdiv"},"681":{"code":"BG-17","name":"Razgrad"},"682":{"code":"BG-18","name":"Ruse"},"691":{"code":"BG-27","name":"Shumen"},"683":{"code":"BG-19","name":"Silistra"},"684":{"code":"BG-20","name":"Sliven"},"685":{"code":"BG-21","name":"Smolyan"},"686":{"code":"BG-22","name":"Sofia City"},"687":{"code":"BG-23","name":"Sofia Province"},"688":{"code":"BG-24","name":"Stara Zagora"},"689":{"code":"BG-25","name":"Targovishte"},"667":{"code":"BG-03","name":"Varna"},"668":{"code":"BG-04","name":"Veliko Tarnovo"},"669":{"code":"BG-05","name":"Vidin"},"670":{"code":"BG-06","name":"Vratsa"},"692":{"code":"BG-28","name":"Yambol"}}},"BH":{"name":"Bahrain"},"BI":{"name":"Burundi"},"BJ":{"name":"Benin"},"BL":{"name":"St. Barth\u00e9lemy"},"BM":{"name":"Bermuda"},"BN":{"name":"Brunei"},"BO":{"name":"Bolivia","regions":{"657":{"code":"BO-H","name":"Chuquisaca"},"656":{"code":"BO-C","name":"Cochabamba"},"658":{"code":"BO-B","name":"El Beni"},"659":{"code":"BO-L","name":"La Paz"},"660":{"code":"BO-O","name":"Oruro"},"661":{"code":"BO-N","name":"Pando"},"662":{"code":"BO-P","name":"Potos\u00ed"},"663":{"code":"BO-S","name":"Santa Cruz"},"664":{"code":"BO-T","name":"Tarija"}}},"BQ":{"name":"Caribbean Netherlands"},"BR":{"name":"Brazil","regions":{"485":{"code":"AC","name":"Acre"},"486":{"code":"AL","name":"Alagoas"},"487":{"code":"AP","name":"Amap\u00e1"},"488":{"code":"AM","name":"Amazonas"},"489":{"code":"BA","name":"Bahia"},"490":{"code":"CE","name":"Cear\u00e1"},"511":{"code":"DF","name":"Distrito Federal"},"491":{"code":"ES","name":"Esp\u00edrito Santo"},"492":{"code":"GO","name":"Goi\u00e1s"},"493":{"code":"MA","name":"Maranh\u00e3o"},"494":{"code":"MT","name":"Mato Grosso"},"495":{"code":"MS","name":"Mato Grosso do Sul"},"496":{"code":"MG","name":"Minas Gerais"},"497":{"code":"PA","name":"Par\u00e1"},"498":{"code":"PB","name":"Para\u00edba"},"499":{"code":"PR","name":"Paran\u00e1"},"500":{"code":"PE","name":"Pernambuco"},"501":{"code":"PI","name":"Piau\u00ed"},"502":{"code":"RJ","name":"Rio de Janeiro"},"503":{"code":"RN","name":"Rio Grande do Norte"},"504":{"code":"RS","name":"Rio Grande do Sul"},"505":{"code":"RO","name":"Rond\u00f4nia"},"506":{"code":"RR","name":"Roraima"},"507":{"code":"SC","name":"Santa Catarina"},"508":{"code":"SP","name":"S\u00e3o Paulo"},"509":{"code":"SE","name":"Sergipe"},"510":{"code":"TO","name":"Tocantins"}}},"BS":{"name":"Bahamas"},"BT":{"name":"Bhutan"},"BV":{"name":"Bouvet Island"},"BW":{"name":"Botswana"},"BY":{"name":"Belarus","regions":{"1101":{"code":"BY-BR","name":"Bresckaja voblas\u0107"},"1102":{"code":"BY-HO","name":"Homie\u013askaja voblas\u0107"},"1103":{"code":"BY-HM","name":"Horad Minsk"},"1104":{"code":"BY-HR","name":"Hrodzienskaja voblas\u0107"},"1105":{"code":"BY-MA","name":"Mahilio\u016dskaja voblas\u0107"},"1106":{"code":"BY-MI","name":"Minskaja voblas\u0107"},"1107":{"code":"BY-VI","name":"Viciebskaja voblas\u0107"}}},"BZ":{"name":"Belize"},"CA":{"name":"Canada","regions":{"66":{"code":"AB","name":"Alberta"},"67":{"code":"BC","name":"British Columbia"},"68":{"code":"MB","name":"Manitoba"},"70":{"code":"NB","name":"New Brunswick"},"69":{"code":"NL","name":"Newfoundland and Labrador"},"72":{"code":"NT","name":"Northwest Territories"},"71":{"code":"NS","name":"Nova Scotia"},"73":{"code":"NU","name":"Nunavut"},"74":{"code":"ON","name":"Ontario"},"75":{"code":"PE","name":"Prince Edward Island"},"76":{"code":"QC","name":"Quebec"},"77":{"code":"SK","name":"Saskatchewan"},"78":{"code":"YT","name":"Yukon Territory"}}},"CC":{"name":"Cocos (Keeling) Islands"},"CD":{"name":"Congo - Kinshasa"},"CF":{"name":"Central African Republic"},"CG":{"name":"Congo - Brazzaville"},"CH":{"name":"Switzerland","regions":{"104":{"code":"AG","name":"Aargau"},"106":{"code":"AR","name":"Appenzell Ausserrhoden"},"105":{"code":"AI","name":"Appenzell Innerrhoden"},"108":{"code":"BL","name":"Basel-Landschaft"},"109":{"code":"BS","name":"Basel-Stadt"},"107":{"code":"BE","name":"Bern"},"110":{"code":"FR","name":"Friburg"},"111":{"code":"GE","name":"Geneva"},"112":{"code":"GL","name":"Glarus"},"113":{"code":"GR","name":"Graub\u00fcnden"},"114":{"code":"JU","name":"Jura"},"115":{"code":"LU","name":"Lucerne"},"116":{"code":"NE","name":"Neuch\u00e2tel"},"117":{"code":"NW","name":"Nidwalden"},"118":{"code":"OW","name":"Obwalden"},"120":{"code":"SH","name":"Schaffhausen"},"122":{"code":"SZ","name":"Schwyz"},"121":{"code":"SO","name":"Solothurn"},"119":{"code":"SG","name":"St. Gallen"},"123":{"code":"TG","name":"Thurgau"},"124":{"code":"TI","name":"Ticino"},"125":{"code":"UR","name":"Uri"},"126":{"code":"VD","name":"Vaud"},"127":{"code":"VS","name":"Wallis"},"128":{"code":"ZG","name":"Zug"},"129":{"code":"ZH","name":"Z\u00fcrich"}}},"CI":{"name":"C\u00f4te d\u2019Ivoire"},"CK":{"name":"Cook Islands"},"CL":{"name":"Chile","regions":{"693":{"code":"CL-AI","name":"Ais\u00e9n del General Carlos Iba\u00f1ez del Campo"},"694":{"code":"CL-AN","name":"Antofagasta"},"695":{"code":"CL-AP","name":"Arica y Parinacota"},"697":{"code":"CL-AT","name":"Atacama"},"698":{"code":"CL-BI","name":"Biob\u00edo"},"699":{"code":"CL-CO","name":"Coquimbo"},"696":{"code":"CL-AR","name":"La Araucan\u00eda"},"700":{"code":"CL-LI","name":"Libertador General Bernardo O'Higgins"},"701":{"code":"CL-LL","name":"Los Lagos"},"702":{"code":"CL-LR","name":"Los R\u00edos"},"703":{"code":"CL-MA","name":"Magallanes"},"704":{"code":"CL-ML","name":"Maule"},"705":{"code":"CL-NB","name":"\u00d1uble"},"706":{"code":"CL-RM","name":"Regi\u00f3n Metropolitana de Santiago"},"707":{"code":"CL-TA","name":"Tarapac\u00e1"},"708":{"code":"CL-VS","name":"Valpara\u00edso"}}},"CM":{"name":"Cameroon"},"CN":{"name":"China","regions":{"709":{"code":"CN-AH","name":"Anhui Sheng"},"710":{"code":"CN-BJ","name":"Beijing Shi"},"711":{"code":"CN-CQ","name":"Chongqing Shi"},"712":{"code":"CN-FJ","name":"Fujian Sheng"},"713":{"code":"CN-GS","name":"Gansu Sheng"},"714":{"code":"CN-GD","name":"Guangdong Sheng"},"715":{"code":"CN-GX","name":"Guangxi Zhuangzu Zizhiqu"},"716":{"code":"CN-GZ","name":"Guizhou Sheng"},"717":{"code":"CN-HI","name":"Hainan Sheng"},"718":{"code":"CN-HE","name":"Hebei Sheng"},"719":{"code":"CN-HL","name":"Heilongjiang Sheng"},"720":{"code":"CN-HA","name":"Henan Sheng"},"721":{"code":"CN-HK","name":"Hong Kong SAR"},"722":{"code":"CN-HB","name":"Hubei Sheng"},"723":{"code":"CN-HN","name":"Hunan Sheng"},"724":{"code":"CN-JS","name":"Jiangsu Sheng"},"725":{"code":"CN-JX","name":"Jiangxi Sheng"},"726":{"code":"CN-JL","name":"Jilin Sheng"},"727":{"code":"CN-LN","name":"Liaoning Sheng"},"728":{"code":"CN-MO","name":"Macao SAR"},"729":{"code":"CN-NM","name":"Nei Mongol Zizhiqu"},"730":{"code":"CN-NX","name":"Ningxia Huizi Zizhiqu"},"731":{"code":"CN-QH","name":"Qinghai Sheng"},"732":{"code":"CN-SN","name":"Shaanxi Sheng"},"733":{"code":"CN-SD","name":"Shandong Sheng"},"734":{"code":"CN-SH","name":"Shanghai Shi"},"735":{"code":"CN-SX","name":"Shanxi Sheng"},"736":{"code":"CN-SC","name":"Sichuan Sheng"},"737":{"code":"CN-TW","name":"Taiwan Sheng"},"738":{"code":"CN-TJ","name":"Tianjin Shi"},"739":{"code":"CN-XJ","name":"Xinjiang Uygur Zizhiqu"},"740":{"code":"CN-XZ","name":"Xizang Zizhiqu"},"741":{"code":"CN-YN","name":"Yunnan Sheng"},"742":{"code":"CN-ZJ","name":"Zhejiang Sheng"}}},"CO":{"name":"Colombia","regions":{"743":{"code":"CO-AMA","name":"Amazonas"},"744":{"code":"CO-ANT","name":"Antioquia"},"745":{"code":"CO-ARA","name":"Arauca"},"746":{"code":"CO-ATL","name":"Atl\u00e1ntico"},"747":{"code":"CO-BOL","name":"Bol\u00edvar"},"748":{"code":"CO-BOY","name":"Boyac\u00e1"},"749":{"code":"CO-CAL","name":"Caldas"},"750":{"code":"CO-CAQ","name":"Caquet\u00e1"},"751":{"code":"CO-CAS","name":"Casanare"},"752":{"code":"CO-CAU","name":"Cauca"},"753":{"code":"CO-CES","name":"Cesar"},"754":{"code":"CO-CHO","name":"Choc\u00f3"},"755":{"code":"CO-COR","name":"C\u00f3rdoba"},"756":{"code":"CO-CUN","name":"Cundinamarca"},"757":{"code":"CO-GUA","name":"Guain\u00eda"},"758":{"code":"CO-GUV","name":"Guaviare"},"759":{"code":"CO-HUL","name":"Huila"},"760":{"code":"CO-LAG","name":"La Guajira"},"761":{"code":"CO-MAG","name":"Magdalena"},"762":{"code":"CO-MET","name":"Meta"},"763":{"code":"CO-NAR","name":"Nari\u00f1o"},"764":{"code":"CO-NSA","name":"Norte de Santander"},"765":{"code":"CO-PUT","name":"Putumayo"},"766":{"code":"CO-QUI","name":"Quind\u00edo"},"767":{"code":"CO-RIS","name":"Risaralda"},"768":{"code":"CO-SAP","name":"San Andr\u00e9s y Providencia"},"769":{"code":"CO-SAN","name":"Santander"},"770":{"code":"CO-SUC","name":"Sucre"},"771":{"code":"CO-TOL","name":"Tolima"},"772":{"code":"CO-VAC","name":"Valle del Cauca"},"773":{"code":"CO-VAU","name":"Vaup\u00e9s"},"774":{"code":"CO-VID","name":"Vichada"}}},"CR":{"name":"Costa Rica"},"CU":{"name":"Cuba"},"CV":{"name":"Cape Verde"},"CW":{"name":"Cura\u00e7ao"},"CX":{"name":"Christmas Island"},"CY":{"name":"Cyprus"},"CZ":{"name":"Czechia"},"DE":{"name":"Germany","regions":{"80":{"code":"BAW","name":"Baden-W\u00fcrttemberg"},"81":{"code":"BAY","name":"Bayern"},"82":{"code":"BER","name":"Berlin"},"83":{"code":"BRG","name":"Brandenburg"},"84":{"code":"BRE","name":"Bremen"},"85":{"code":"HAM","name":"Hamburg"},"86":{"code":"HES","name":"Hessen"},"87":{"code":"MEC","name":"Mecklenburg-Vorpommern"},"79":{"code":"NDS","name":"Niedersachsen"},"88":{"code":"NRW","name":"Nordrhein-Westfalen"},"89":{"code":"RHE","name":"Rheinland-Pfalz"},"90":{"code":"SAR","name":"Saarland"},"91":{"code":"SAS","name":"Sachsen"},"92":{"code":"SAC","name":"Sachsen-Anhalt"},"93":{"code":"SCN","name":"Schleswig-Holstein"},"94":{"code":"THE","name":"Th\u00fcringen"}}},"DJ":{"name":"Djibouti"},"DK":{"name":"Denmark","regions":{"775":{"code":"DK-84","name":"Hovedstaden"},"776":{"code":"DK-82","name":"Midtjylland"},"777":{"code":"DK-81","name":"Nordjylland"},"778":{"code":"DK-85","name":"Sj\u00e6lland"},"779":{"code":"DK-83","name":"Syddanmark"}}},"DM":{"name":"Dominica"},"DO":{"name":"Dominican Republic"},"DZ":{"name":"Algeria"},"EC":{"name":"Ecuador","regions":{"780":{"code":"EC-A","name":"Azuay"},"781":{"code":"EC-B","name":"Bol\u00edvar"},"782":{"code":"EC-F","name":"Ca\u00f1ar"},"783":{"code":"EC-C","name":"Carchi"},"784":{"code":"EC-H","name":"Chimborazo"},"785":{"code":"EC-X","name":"Cotopaxi"},"786":{"code":"EC-O","name":"El Oro"},"787":{"code":"EC-E","name":"Esmeraldas"},"788":{"code":"EC-W","name":"Gal\u00e1pagos"},"789":{"code":"EC-G","name":"Guayas"},"790":{"code":"EC-I","name":"Imbabura"},"791":{"code":"EC-L","name":"Loja"},"792":{"code":"EC-R","name":"Los R\u00edos"},"793":{"code":"EC-M","name":"Manab\u00ed"},"794":{"code":"EC-S","name":"Morona Santiago"},"795":{"code":"EC-N","name":"Napo"},"796":{"code":"EC-D","name":"Orellana"},"797":{"code":"EC-Y","name":"Pastaza"},"798":{"code":"EC-P","name":"Pichincha"},"799":{"code":"EC-SE","name":"Santa Elena"},"800":{"code":"EC-SD","name":"Santo Domingo de los Ts\u00e1chilas"},"801":{"code":"EC-U","name":"Sucumb\u00edos"},"802":{"code":"EC-T","name":"Tungurahua"},"803":{"code":"EC-Z","name":"Zamora Chinchipe"}}},"EE":{"name":"Estonia","regions":{"340":{"code":"EE-37","name":"Harjumaa"},"341":{"code":"EE-39","name":"Hiiumaa"},"342":{"code":"EE-44","name":"Ida-Virumaa"},"344":{"code":"EE-51","name":"J\u00e4rvamaa"},"343":{"code":"EE-49","name":"J\u00f5gevamaa"},"346":{"code":"EE-59","name":"L\u00e4\u00e4ne-Virumaa"},"345":{"code":"EE-57","name":"L\u00e4\u00e4nemaa"},"348":{"code":"EE-67","name":"P\u00e4rnumaa"},"347":{"code":"EE-65","name":"P\u00f5lvamaa"},"349":{"code":"EE-70","name":"Raplamaa"},"350":{"code":"EE-74","name":"Saaremaa"},"351":{"code":"EE-78","name":"Tartumaa"},"352":{"code":"EE-82","name":"Valgamaa"},"353":{"code":"EE-84","name":"Viljandimaa"},"354":{"code":"EE-86","name":"V\u00f5rumaa"}}},"EG":{"name":"Egypt"},"EH":{"name":"Western Sahara"},"ER":{"name":"Eritrea"},"ES":{"name":"Spain","regions":{"130":{"code":"A Coru\u0441a","name":"A Coru\u00f1a"},"131":{"code":"Alava","name":"Alava"},"132":{"code":"Albacete","name":"Albacete"},"133":{"code":"Alicante","name":"Alicante"},"134":{"code":"Almeria","name":"Almeria"},"135":{"code":"Asturias","name":"Asturias"},"136":{"code":"Avila","name":"Avila"},"137":{"code":"Badajoz","name":"Badajoz"},"138":{"code":"Baleares","name":"Baleares"},"139":{"code":"Barcelona","name":"Barcelona"},"140":{"code":"Burgos","name":"Burgos"},"141":{"code":"Caceres","name":"Caceres"},"142":{"code":"Cadiz","name":"Cadiz"},"143":{"code":"Cantabria","name":"Cantabria"},"144":{"code":"Castellon","name":"Castellon"},"145":{"code":"Ceuta","name":"Ceuta"},"146":{"code":"Ciudad Real","name":"Ciudad Real"},"147":{"code":"Cordoba","name":"Cordoba"},"148":{"code":"Cuenca","name":"Cuenca"},"149":{"code":"Girona","name":"Girona"},"150":{"code":"Granada","name":"Granada"},"151":{"code":"Guadalajara","name":"Guadalajara"},"152":{"code":"Guipuzcoa","name":"Guipuzcoa"},"153":{"code":"Huelva","name":"Huelva"},"154":{"code":"Huesca","name":"Huesca"},"155":{"code":"Jaen","name":"Jaen"},"156":{"code":"La Rioja","name":"La Rioja"},"157":{"code":"Las Palmas","name":"Las Palmas"},"158":{"code":"Leon","name":"Leon"},"159":{"code":"Lleida","name":"Lleida"},"160":{"code":"Lugo","name":"Lugo"},"161":{"code":"Madrid","name":"Madrid"},"162":{"code":"Malaga","name":"Malaga"},"163":{"code":"Melilla","name":"Melilla"},"164":{"code":"Murcia","name":"Murcia"},"165":{"code":"Navarra","name":"Navarra"},"166":{"code":"Ourense","name":"Ourense"},"167":{"code":"Palencia","name":"Palencia"},"168":{"code":"Pontevedra","name":"Pontevedra"},"169":{"code":"Salamanca","name":"Salamanca"},"170":{"code":"Santa Cruz de Tenerife","name":"Santa Cruz de Tenerife"},"171":{"code":"Segovia","name":"Segovia"},"172":{"code":"Sevilla","name":"Sevilla"},"173":{"code":"Soria","name":"Soria"},"174":{"code":"Tarragona","name":"Tarragona"},"175":{"code":"Teruel","name":"Teruel"},"176":{"code":"Toledo","name":"Toledo"},"177":{"code":"Valencia","name":"Valencia"},"178":{"code":"Valladolid","name":"Valladolid"},"179":{"code":"Vizcaya","name":"Vizcaya"},"180":{"code":"Zamora","name":"Zamora"},"181":{"code":"Zaragoza","name":"Zaragoza"}}},"ET":{"name":"Ethiopia"},"FI":{"name":"Finland","regions":{"339":{"code":"Ahvenanmaa","name":"Ahvenanmaa"},"333":{"code":"Etel\u00e4-Karjala","name":"Etel\u00e4-Karjala"},"326":{"code":"Etel\u00e4-Pohjanmaa","name":"Etel\u00e4-Pohjanmaa"},"325":{"code":"Etel\u00e4-Savo","name":"Etel\u00e4-Savo"},"337":{"code":"It\u00e4-Uusimaa","name":"It\u00e4-Uusimaa"},"322":{"code":"Kainuu","name":"Kainuu"},"335":{"code":"Kanta-H\u00e4me","name":"Kanta-H\u00e4me"},"330":{"code":"Keski-Pohjanmaa","name":"Keski-Pohjanmaa"},"331":{"code":"Keski-Suomi","name":"Keski-Suomi"},"338":{"code":"Kymenlaakso","name":"Kymenlaakso"},"320":{"code":"Lappi","name":"Lappi"},"334":{"code":"P\u00e4ij\u00e4t-H\u00e4me","name":"P\u00e4ij\u00e4t-H\u00e4me"},"328":{"code":"Pirkanmaa","name":"Pirkanmaa"},"327":{"code":"Pohjanmaa","name":"Pohjanmaa"},"323":{"code":"Pohjois-Karjala","name":"Pohjois-Karjala"},"321":{"code":"Pohjois-Pohjanmaa","name":"Pohjois-Pohjanmaa"},"324":{"code":"Pohjois-Savo","name":"Pohjois-Savo"},"329":{"code":"Satakunta","name":"Satakunta"},"336":{"code":"Uusimaa","name":"Uusimaa"},"332":{"code":"Varsinais-Suomi","name":"Varsinais-Suomi"}}},"FJ":{"name":"Fiji"},"FK":{"name":"Falkland Islands"},"FM":{"name":"Micronesia"},"FO":{"name":"Faroe Islands"},"FR":{"name":"France","regions":{"182":{"code":"1","name":"Ain"},"183":{"code":"2","name":"Aisne"},"184":{"code":"3","name":"Allier"},"185":{"code":"4","name":"Alpes-de-Haute-Provence"},"187":{"code":"6","name":"Alpes-Maritimes"},"188":{"code":"7","name":"Ard\u00e8che"},"189":{"code":"8","name":"Ardennes"},"190":{"code":"9","name":"Ari\u00e8ge"},"191":{"code":"10","name":"Aube"},"192":{"code":"11","name":"Aude"},"193":{"code":"12","name":"Aveyron"},"249":{"code":"67","name":"Bas-Rhin"},"194":{"code":"13","name":"Bouches-du-Rh\u00f4ne"},"195":{"code":"14","name":"Calvados"},"196":{"code":"15","name":"Cantal"},"197":{"code":"16","name":"Charente"},"198":{"code":"17","name":"Charente-Maritime"},"199":{"code":"18","name":"Cher"},"200":{"code":"19","name":"Corr\u00e8ze"},"201":{"code":"2A","name":"Corse-du-Sud"},"203":{"code":"21","name":"C\u00f4te-d'Or"},"204":{"code":"22","name":"C\u00f4tes-d'Armor"},"205":{"code":"23","name":"Creuse"},"261":{"code":"79","name":"Deux-S\u00e8vres"},"206":{"code":"24","name":"Dordogne"},"207":{"code":"25","name":"Doubs"},"208":{"code":"26","name":"Dr\u00f4me"},"273":{"code":"91","name":"Essonne"},"209":{"code":"27","name":"Eure"},"210":{"code":"28","name":"Eure-et-Loir"},"211":{"code":"29","name":"Finist\u00e8re"},"212":{"code":"30","name":"Gard"},"214":{"code":"32","name":"Gers"},"215":{"code":"33","name":"Gironde"},"250":{"code":"68","name":"Haut-Rhin"},"202":{"code":"2B","name":"Haute-Corse"},"213":{"code":"31","name":"Haute-Garonne"},"225":{"code":"43","name":"Haute-Loire"},"234":{"code":"52","name":"Haute-Marne"},"252":{"code":"70","name":"Haute-Sa\u00f4ne"},"256":{"code":"74","name":"Haute-Savoie"},"269":{"code":"87","name":"Haute-Vienne"},"186":{"code":"5","name":"Hautes-Alpes"},"247":{"code":"65","name":"Hautes-Pyr\u00e9n\u00e9es"},"274":{"code":"92","name":"Hauts-de-Seine"},"216":{"code":"34","name":"H\u00e9rault"},"217":{"code":"35","name":"Ille-et-Vilaine"},"218":{"code":"36","name":"Indre"},"219":{"code":"37","name":"Indre-et-Loire"},"220":{"code":"38","name":"Is\u00e8re"},"221":{"code":"39","name":"Jura"},"222":{"code":"40","name":"Landes"},"223":{"code":"41","name":"Loir-et-Cher"},"224":{"code":"42","name":"Loire"},"226":{"code":"44","name":"Loire-Atlantique"},"227":{"code":"45","name":"Loiret"},"228":{"code":"46","name":"Lot"},"229":{"code":"47","name":"Lot-et-Garonne"},"230":{"code":"48","name":"Loz\u00e8re"},"231":{"code":"49","name":"Maine-et-Loire"},"232":{"code":"50","name":"Manche"},"233":{"code":"51","name":"Marne"},"235":{"code":"53","name":"Mayenne"},"236":{"code":"54","name":"Meurthe-et-Moselle"},"237":{"code":"55","name":"Meuse"},"238":{"code":"56","name":"Morbihan"},"239":{"code":"57","name":"Moselle"},"240":{"code":"58","name":"Ni\u00e8vre"},"241":{"code":"59","name":"Nord"},"242":{"code":"60","name":"Oise"},"243":{"code":"61","name":"Orne"},"257":{"code":"75","name":"Paris"},"244":{"code":"62","name":"Pas-de-Calais"},"245":{"code":"63","name":"Puy-de-D\u00f4me"},"246":{"code":"64","name":"Pyr\u00e9n\u00e9es-Atlantiques"},"248":{"code":"66","name":"Pyr\u00e9n\u00e9es-Orientales"},"251":{"code":"69","name":"Rh\u00f4ne"},"253":{"code":"71","name":"Sa\u00f4ne-et-Loire"},"254":{"code":"72","name":"Sarthe"},"255":{"code":"73","name":"Savoie"},"259":{"code":"77","name":"Seine-et-Marne"},"258":{"code":"76","name":"Seine-Maritime"},"275":{"code":"93","name":"Seine-Saint-Denis"},"262":{"code":"80","name":"Somme"},"263":{"code":"81","name":"Tarn"},"264":{"code":"82","name":"Tarn-et-Garonne"},"272":{"code":"90","name":"Territoire-de-Belfort"},"277":{"code":"95","name":"Val-d'Oise"},"276":{"code":"94","name":"Val-de-Marne"},"265":{"code":"83","name":"Var"},"266":{"code":"84","name":"Vaucluse"},"267":{"code":"85","name":"Vend\u00e9e"},"268":{"code":"86","name":"Vienne"},"270":{"code":"88","name":"Vosges"},"271":{"code":"89","name":"Yonne"},"260":{"code":"78","name":"Yvelines"}}},"GA":{"name":"Gabon"},"GB":{"name":"United Kingdom"},"GD":{"name":"Grenada"},"GE":{"name":"Georgia"},"GF":{"name":"French Guiana"},"GG":{"name":"Guernsey"},"GH":{"name":"Ghana"},"GI":{"name":"Gibraltar"},"GL":{"name":"Greenland"},"GM":{"name":"Gambia"},"GN":{"name":"Guinea"},"GP":{"name":"Guadeloupe"},"GQ":{"name":"Equatorial Guinea"},"GR":{"name":"Greece","regions":{"817":{"code":"GR-69","name":"\u00c1gion \u00d3ros"},"804":{"code":"GR-A","name":"Anatolik\u00ed Makedon\u00eda kai Thr\u00e1ki"},"805":{"code":"GR-I","name":"Attik\u00ed"},"806":{"code":"GR-G","name":"Dytik\u00ed Ell\u00e1da"},"807":{"code":"GR-C","name":"Dytik\u00ed Makedon\u00eda"},"808":{"code":"GR-F","name":"Ion\u00eda N\u00edsia"},"809":{"code":"GR-D","name":"\u00cdpeiros"},"810":{"code":"GR-B","name":"Kentrik\u00ed Makedon\u00eda"},"811":{"code":"GR-M","name":"Kr\u00edti"},"812":{"code":"GR-L","name":"N\u00f3tio Aiga\u00edo"},"813":{"code":"GR-J","name":"Pelop\u00f3nnisos"},"814":{"code":"GR-H","name":"Stere\u00e1 Ell\u00e1da"},"815":{"code":"GR-E","name":"Thessal\u00eda"},"816":{"code":"GR-K","name":"V\u00f3reio Aiga\u00edo"}}},"GS":{"name":"South Georgia & South Sandwich Islands"},"GT":{"name":"Guatemala"},"GU":{"name":"Guam"},"GW":{"name":"Guinea-Bissau"},"GY":{"name":"Guyana","regions":{"818":{"code":"GY-BA","name":"Barima-Waini"},"819":{"code":"GY-CU","name":"Cuyuni-Mazaruni"},"820":{"code":"GY-DE","name":"Demerara-Mahaica"},"821":{"code":"GY-EB","name":"East Berbice-Corentyne"},"822":{"code":"GY-ES","name":"Essequibo Islands-West Demerara"},"823":{"code":"GY-MA","name":"Mahaica-Berbice"},"824":{"code":"GY-PM","name":"Pomeroon-Supenaam"},"825":{"code":"GY-PT","name":"Potaro-Siparuni"},"826":{"code":"GY-UD","name":"Upper Demerara-Berbice"},"827":{"code":"GY-UT","name":"Upper Takutu-Upper Essequibo"}}},"HK":{"name":"Hong Kong SAR China"},"HM":{"name":"Heard & McDonald Islands"},"HN":{"name":"Honduras"},"HR":{"name":"Croatia","regions":{"518":{"code":"HR-07","name":"Bjelovarsko-bilogorska \u017eupanija"},"523":{"code":"HR-12","name":"Brodsko-posavska \u017eupanija"},"530":{"code":"HR-19","name":"Dubrova\u010dko-neretvanska \u017eupanija"},"532":{"code":"HR-21","name":"Grad Zagreb"},"529":{"code":"HR-18","name":"Istarska \u017eupanija"},"515":{"code":"HR-04","name":"Karlova\u010dka \u017eupanija"},"517":{"code":"HR-06","name":"Koprivni\u010dko-kri\u017eeva\u010dka \u017eupanija"},"513":{"code":"HR-02","name":"Krapinsko-zagorska \u017eupanija"},"520":{"code":"HR-09","name":"Li\u010dko-senjska \u017eupanija"},"531":{"code":"HR-20","name":"Me\u0111imurska \u017eupanija"},"525":{"code":"HR-14","name":"Osje\u010dko-baranjska \u017eupanija"},"522":{"code":"HR-11","name":"Po\u017ee\u0161ko-slavonska \u017eupanija"},"519":{"code":"HR-08","name":"Primorsko-goranska \u017eupanija"},"526":{"code":"HR-15","name":"\u0160ibensko-kninska \u017eupanija"},"514":{"code":"HR-03","name":"Sisa\u010dko-moslava\u010dka \u017eupanija"},"528":{"code":"HR-17","name":"Splitsko-dalmatinska \u017eupanija"},"516":{"code":"HR-05","name":"Vara\u017edinska \u017eupanija"},"521":{"code":"HR-10","name":"Viroviti\u010dko-podravska \u017eupanija"},"527":{"code":"HR-16","name":"Vukovarsko-srijemska \u017eupanija"},"524":{"code":"HR-13","name":"Zadarska \u017eupanija"},"512":{"code":"HR-01","name":"Zagreba\u010dka \u017eupanija"}}},"HT":{"name":"Haiti"},"HU":{"name":"Hungary"},"ID":{"name":"Indonesia"},"IE":{"name":"Ireland"},"IL":{"name":"Israel"},"IM":{"name":"Isle of Man"},"IN":{"name":"India","regions":{"533":{"code":"AN","name":"Andaman and Nicobar Islands"},"534":{"code":"AP","name":"Andhra Pradesh"},"535":{"code":"AR","name":"Arunachal Pradesh"},"536":{"code":"AS","name":"Assam"},"537":{"code":"BR","name":"Bihar"},"538":{"code":"CH","name":"Chandigarh"},"539":{"code":"CT","name":"Chhattisgarh"},"540":{"code":"DN","name":"Dadra and Nagar Haveli"},"541":{"code":"DD","name":"Daman and Diu"},"542":{"code":"DL","name":"Delhi"},"543":{"code":"GA","name":"Goa"},"544":{"code":"GJ","name":"Gujarat"},"545":{"code":"HR","name":"Haryana"},"546":{"code":"HP","name":"Himachal Pradesh"},"547":{"code":"JK","name":"Jammu and Kashmir"},"548":{"code":"JH","name":"Jharkhand"},"549":{"code":"KA","name":"Karnataka"},"550":{"code":"KL","name":"Kerala"},"551":{"code":"LD","name":"Lakshadweep"},"552":{"code":"MP","name":"Madhya Pradesh"},"553":{"code":"MH","name":"Maharashtra"},"554":{"code":"MN","name":"Manipur"},"555":{"code":"ML","name":"Meghalaya"},"556":{"code":"MZ","name":"Mizoram"},"557":{"code":"NL","name":"Nagaland"},"558":{"code":"OR","name":"Odisha"},"559":{"code":"PY","name":"Puducherry"},"560":{"code":"PB","name":"Punjab"},"561":{"code":"RJ","name":"Rajasthan"},"562":{"code":"SK","name":"Sikkim"},"563":{"code":"TN","name":"Tamil Nadu"},"564":{"code":"TG","name":"Telangana"},"565":{"code":"TR","name":"Tripura"},"566":{"code":"UP","name":"Uttar Pradesh"},"567":{"code":"UT","name":"Uttarakhand"},"568":{"code":"WB","name":"West Bengal"}}},"IO":{"name":"British Indian Ocean Territory"},"IQ":{"name":"Iraq"},"IR":{"name":"Iran"},"IS":{"name":"Iceland","regions":{"834":{"code":"IS-07","name":"Austurland"},"828":{"code":"IS-01","name":"H\u00f6fu\u00f0borgarsv\u00e6\u00f0i"},"833":{"code":"IS-06","name":"Nor\u00f0urland eystra"},"832":{"code":"IS-05","name":"Nor\u00f0urland vestra"},"835":{"code":"IS-08","name":"Su\u00f0urland"},"829":{"code":"IS-02","name":"Su\u00f0urnes"},"831":{"code":"IS-04","name":"Vestfir\u00f0ir"},"830":{"code":"IS-03","name":"Vesturland"}}},"IT":{"name":"Italy","regions":{"836":{"code":"AG","name":"Agrigento"},"837":{"code":"AL","name":"Alessandria"},"838":{"code":"AN","name":"Ancona"},"839":{"code":"AO","name":"Aosta"},"841":{"code":"AR","name":"Arezzo"},"842":{"code":"AP","name":"Ascoli-Piceno"},"843":{"code":"AT","name":"Asti"},"844":{"code":"AV","name":"Avellino"},"845":{"code":"BA","name":"Bari"},"846":{"code":"BT","name":"Barletta-Andria-Trani"},"847":{"code":"BL","name":"Belluno"},"848":{"code":"BN","name":"Benevento"},"849":{"code":"BG","name":"Bergamo"},"850":{"code":"BI","name":"Biella"},"851":{"code":"BO","name":"Bologna"},"852":{"code":"BZ","name":"Bolzano"},"853":{"code":"BS","name":"Brescia"},"854":{"code":"BR","name":"Brindisi"},"855":{"code":"CA","name":"Cagliari"},"856":{"code":"CL","name":"Caltanissetta"},"857":{"code":"CB","name":"Campobasso"},"858":{"code":"CI","name":"Carbonia Iglesias"},"859":{"code":"CE","name":"Caserta"},"860":{"code":"CT","name":"Catania"},"861":{"code":"CZ","name":"Catanzaro"},"862":{"code":"CH","name":"Chieti"},"863":{"code":"CO","name":"Como"},"864":{"code":"CS","name":"Cosenza"},"865":{"code":"CR","name":"Cremona"},"866":{"code":"KR","name":"Crotone"},"867":{"code":"CN","name":"Cuneo"},"868":{"code":"EN","name":"Enna"},"869":{"code":"FM","name":"Fermo"},"870":{"code":"FE","name":"Ferrara"},"871":{"code":"FI","name":"Firenze"},"872":{"code":"FG","name":"Foggia"},"873":{"code":"FC","name":"Forli-Cesena"},"874":{"code":"FR","name":"Frosinone"},"875":{"code":"GE","name":"Genova"},"876":{"code":"GO","name":"Gorizia"},"877":{"code":"GR","name":"Grosseto"},"878":{"code":"IM","name":"Imperia"},"879":{"code":"IS","name":"Isernia"},"840":{"code":"AQ","name":"L'Aquila"},"880":{"code":"SP","name":"La-Spezia"},"881":{"code":"LT","name":"Latina"},"882":{"code":"LE","name":"Lecce"},"883":{"code":"LC","name":"Lecco"},"884":{"code":"LI","name":"Livorno"},"885":{"code":"LO","name":"Lodi"},"886":{"code":"LU","name":"Lucca"},"887":{"code":"MC","name":"Macerata"},"888":{"code":"MN","name":"Mantova"},"889":{"code":"MS","name":"Massa-Carrara"},"890":{"code":"MT","name":"Matera"},"891":{"code":"VS","name":"Medio Campidano"},"892":{"code":"ME","name":"Messina"},"893":{"code":"MI","name":"Milano"},"894":{"code":"MO","name":"Modena"},"895":{"code":"MB","name":"Monza-Brianza"},"896":{"code":"NA","name":"Napoli"},"897":{"code":"NO","name":"Novara"},"898":{"code":"NU","name":"Nuoro"},"899":{"code":"OG","name":"Ogliastra"},"900":{"code":"OT","name":"Olbia Tempio"},"901":{"code":"OR","name":"Oristano"},"902":{"code":"PD","name":"Padova"},"903":{"code":"PA","name":"Palermo"},"904":{"code":"PR","name":"Parma"},"905":{"code":"PV","name":"Pavia"},"906":{"code":"PG","name":"Perugia"},"907":{"code":"PU","name":"Pesaro-Urbino"},"908":{"code":"PE","name":"Pescara"},"909":{"code":"PC","name":"Piacenza"},"910":{"code":"PI","name":"Pisa"},"911":{"code":"PT","name":"Pistoia"},"912":{"code":"PN","name":"Pordenone"},"913":{"code":"PZ","name":"Potenza"},"914":{"code":"PO","name":"Prato"},"915":{"code":"RG","name":"Ragusa"},"916":{"code":"RA","name":"Ravenna"},"917":{"code":"RC","name":"Reggio-Calabria"},"918":{"code":"RE","name":"Reggio-Emilia"},"919":{"code":"RI","name":"Rieti"},"920":{"code":"RN","name":"Rimini"},"921":{"code":"RM","name":"Roma"},"922":{"code":"RO","name":"Rovigo"},"923":{"code":"SA","name":"Salerno"},"924":{"code":"SS","name":"Sassari"},"925":{"code":"SV","name":"Savona"},"926":{"code":"SI","name":"Siena"},"927":{"code":"SR","name":"Siracusa"},"928":{"code":"SO","name":"Sondrio"},"929":{"code":"TA","name":"Taranto"},"930":{"code":"TE","name":"Teramo"},"931":{"code":"TR","name":"Terni"},"932":{"code":"TO","name":"Torino"},"933":{"code":"TP","name":"Trapani"},"934":{"code":"TN","name":"Trento"},"935":{"code":"TV","name":"Treviso"},"936":{"code":"TS","name":"Trieste"},"937":{"code":"UD","name":"Udine"},"938":{"code":"VA","name":"Varese"},"939":{"code":"VE","name":"Venezia"},"940":{"code":"VB","name":"Verbania"},"941":{"code":"VC","name":"Vercelli"},"942":{"code":"VR","name":"Verona"},"943":{"code":"VV","name":"Vibo-Valentia"},"944":{"code":"VI","name":"Vicenza"},"945":{"code":"VT","name":"Viterbo"}}},"JE":{"name":"Jersey"},"JM":{"name":"Jamaica"},"JO":{"name":"Jordan"},"JP":{"name":"Japan"},"KE":{"name":"Kenya"},"KG":{"name":"Kyrgyzstan"},"KH":{"name":"Cambodia"},"KI":{"name":"Kiribati"},"KM":{"name":"Comoros"},"KN":{"name":"St. Kitts & Nevis"},"KP":{"name":"North Korea"},"KR":{"name":"South Korea"},"KW":{"name":"Kuwait"},"KY":{"name":"Cayman Islands"},"KZ":{"name":"Kazakhstan"},"LA":{"name":"Laos"},"LB":{"name":"Lebanon"},"LC":{"name":"St. Lucia"},"LI":{"name":"Liechtenstein"},"LK":{"name":"Sri Lanka"},"LR":{"name":"Liberia"},"LS":{"name":"Lesotho"},"LT":{"name":"Lithuania","regions":{"475":{"code":"LT-AL","name":"Alytaus Apskritis"},"476":{"code":"LT-KU","name":"Kauno Apskritis"},"477":{"code":"LT-KL","name":"Klaip\u0117dos Apskritis"},"478":{"code":"LT-MR","name":"Marijampol\u0117s Apskritis"},"479":{"code":"LT-PN","name":"Panev\u0117\u017eio Apskritis"},"480":{"code":"LT-SA","name":"\u0160iauli\u0173 Apskritis"},"481":{"code":"LT-TA","name":"Taurag\u0117s Apskritis"},"482":{"code":"LT-TE","name":"Tel\u0161i\u0173 Apskritis"},"483":{"code":"LT-UT","name":"Utenos Apskritis"},"484":{"code":"LT-VL","name":"Vilniaus Apskritis"}}},"LU":{"name":"Luxembourg"},"LV":{"name":"Latvia","regions":{"471":{"code":"\u0100da\u017eu novads","name":"\u0100da\u017eu novads"},"366":{"code":"Aglonas novads","name":"Aglonas novads"},"367":{"code":"LV-AI","name":"Aizkraukles novads"},"368":{"code":"Aizputes novads","name":"Aizputes novads"},"369":{"code":"Akn\u012bstes novads","name":"Akn\u012bstes novads"},"370":{"code":"Alojas novads","name":"Alojas novads"},"371":{"code":"Alsungas novads","name":"Alsungas novads"},"372":{"code":"LV-AL","name":"Al\u016bksnes novads"},"373":{"code":"Amatas novads","name":"Amatas novads"},"374":{"code":"Apes novads","name":"Apes novads"},"375":{"code":"Auces novads","name":"Auces novads"},"376":{"code":"Bab\u012btes novads","name":"Bab\u012btes novads"},"377":{"code":"Baldones novads","name":"Baldones novads"},"378":{"code":"Baltinavas novads","name":"Baltinavas novads"},"379":{"code":"LV-BL","name":"Balvu novads"},"380":{"code":"LV-BU","name":"Bauskas novads"},"381":{"code":"Bever\u012bnas novads","name":"Bever\u012bnas novads"},"382":{"code":"Broc\u0113nu novads","name":"Broc\u0113nu novads"},"383":{"code":"Burtnieku novads","name":"Burtnieku novads"},"384":{"code":"Carnikavas novads","name":"Carnikavas novads"},"387":{"code":"LV-CE","name":"C\u0113su novads"},"385":{"code":"Cesvaines novads","name":"Cesvaines novads"},"386":{"code":"Ciblas novads","name":"Ciblas novads"},"388":{"code":"Dagdas novads","name":"Dagdas novads"},"355":{"code":"LV-DGV","name":"Daugavpils"},"389":{"code":"LV-DA","name":"Daugavpils novads"},"390":{"code":"LV-DO","name":"Dobeles novads"},"391":{"code":"Dundagas novads","name":"Dundagas novads"},"392":{"code":"Durbes novads","name":"Durbes novads"},"393":{"code":"Engures novads","name":"Engures novads"},"472":{"code":"\u0112rg\u013cu novads","name":"\u0112rg\u013cu novads"},"394":{"code":"Garkalnes novads","name":"Garkalnes novads"},"395":{"code":"Grobi\u0146as novads","name":"Grobi\u0146as novads"},"396":{"code":"LV-GU","name":"Gulbenes novads"},"397":{"code":"Iecavas novads","name":"Iecavas novads"},"398":{"code":"Ik\u0161\u0137iles novads","name":"Ik\u0161\u0137iles novads"},"399":{"code":"Il\u016bkstes novads","name":"Il\u016bkstes novads"},"400":{"code":"In\u010dukalna novads","name":"In\u010dukalna novads"},"401":{"code":"Jaunjelgavas novads","name":"Jaunjelgavas novads"},"402":{"code":"Jaunpiebalgas novads","name":"Jaunpiebalgas novads"},"403":{"code":"Jaunpils novads","name":"Jaunpils novads"},"357":{"code":"J\u0113kabpils","name":"J\u0113kabpils"},"405":{"code":"LV-JK","name":"J\u0113kabpils novads"},"356":{"code":"LV-JEL","name":"Jelgava"},"404":{"code":"LV-JL","name":"Jelgavas novads"},"358":{"code":"LV-JUR","name":"J\u016brmala"},"406":{"code":"Kandavas novads","name":"Kandavas novads"},"412":{"code":"K\u0101rsavas novads","name":"K\u0101rsavas novads"},"473":{"code":"\u0136eguma novads","name":"\u0136eguma novads"},"474":{"code":"\u0136ekavas novads","name":"\u0136ekavas novads"},"407":{"code":"Kokneses novads","name":"Kokneses novads"},"410":{"code":"LV-KR","name":"Kr\u0101slavas novads"},"408":{"code":"Krimuldas novads","name":"Krimuldas novads"},"409":{"code":"Krustpils novads","name":"Krustpils novads"},"411":{"code":"LV-KU","name":"Kuld\u012bgas novads"},"413":{"code":"Lielv\u0101rdes novads","name":"Lielv\u0101rdes novads"},"359":{"code":"LV-LPX","name":"Liep\u0101ja"},"360":{"code":"LV-LE","name":"Liep\u0101jas novads"},"417":{"code":"L\u012bgatnes novads","name":"L\u012bgatnes novads"},"414":{"code":"LV-LM","name":"Limba\u017eu novads"},"418":{"code":"L\u012bv\u0101nu novads","name":"L\u012bv\u0101nu novads"},"415":{"code":"Lub\u0101nas novads","name":"Lub\u0101nas novads"},"416":{"code":"LV-LU","name":"Ludzas novads"},"419":{"code":"LV-MA","name":"Madonas novads"},"421":{"code":"M\u0101lpils novads","name":"M\u0101lpils novads"},"422":{"code":"M\u0101rupes novads","name":"M\u0101rupes novads"},"420":{"code":"Mazsalacas novads","name":"Mazsalacas novads"},"423":{"code":"Nauk\u0161\u0113nu novads","name":"Nauk\u0161\u0113nu novads"},"424":{"code":"Neretas novads","name":"Neretas novads"},"425":{"code":"N\u012bcas novads","name":"N\u012bcas novads"},"426":{"code":"LV-OG","name":"Ogres novads"},"427":{"code":"Olaines novads","name":"Olaines novads"},"428":{"code":"Ozolnieku novads","name":"Ozolnieku novads"},"432":{"code":"P\u0101rgaujas novads","name":"P\u0101rgaujas novads"},"433":{"code":"P\u0101vilostas novads","name":"P\u0101vilostas novads"},"434":{"code":"P\u013cavi\u0146u novads","name":"P\u013cavi\u0146u novads"},"429":{"code":"LV-PR","name":"Prei\u013cu novads"},"430":{"code":"Priekules novads","name":"Priekules novads"},"431":{"code":"Prieku\u013cu novads","name":"Prieku\u013cu novads"},"435":{"code":"Raunas novads","name":"Raunas novads"},"361":{"code":"LV-REZ","name":"R\u0113zekne"},"442":{"code":"LV-RE","name":"R\u0113zeknes novads"},"436":{"code":"Riebi\u0146u novads","name":"Riebi\u0146u novads"},"362":{"code":"LV-RIX","name":"R\u012bga"},"363":{"code":"LV-RI","name":"R\u012bgas novads"},"437":{"code":"Rojas novads","name":"Rojas novads"},"438":{"code":"Ropa\u017eu novads","name":"Ropa\u017eu novads"},"439":{"code":"Rucavas novads","name":"Rucavas novads"},"440":{"code":"Rug\u0101ju novads","name":"Rug\u0101ju novads"},"443":{"code":"R\u016bjienas novads","name":"R\u016bjienas novads"},"441":{"code":"Rund\u0101les novads","name":"Rund\u0101les novads"},"444":{"code":"Salacgr\u012bvas novads","name":"Salacgr\u012bvas novads"},"445":{"code":"Salas novads","name":"Salas novads"},"446":{"code":"Salaspils novads","name":"Salaspils novads"},"447":{"code":"LV-SA","name":"Saldus novads"},"448":{"code":"Saulkrastu novads","name":"Saulkrastu novads"},"455":{"code":"S\u0113jas novads","name":"S\u0113jas novads"},"449":{"code":"Siguldas novads","name":"Siguldas novads"},"451":{"code":"Skr\u012bveru novads","name":"Skr\u012bveru novads"},"450":{"code":"Skrundas novads","name":"Skrundas novads"},"452":{"code":"Smiltenes novads","name":"Smiltenes novads"},"453":{"code":"Stopi\u0146u novads","name":"Stopi\u0146u novads"},"454":{"code":"Stren\u010du novads","name":"Stren\u010du novads"},"456":{"code":"LV-TA","name":"Talsu novads"},"458":{"code":"T\u0113rvetes novads","name":"T\u0113rvetes novads"},"457":{"code":"LV-TU","name":"Tukuma novads"},"459":{"code":"Vai\u0146odes novads","name":"Vai\u0146odes novads"},"460":{"code":"LV-VK","name":"Valkas novads"},"364":{"code":"Valmiera","name":"Valmiera"},"461":{"code":"LV-VM","name":"Valmieras novads"},"462":{"code":"Varak\u013c\u0101nu novads","name":"Varak\u013c\u0101nu novads"},"469":{"code":"V\u0101rkavas novads","name":"V\u0101rkavas novads"},"463":{"code":"Vecpiebalgas novads","name":"Vecpiebalgas novads"},"464":{"code":"Vecumnieku novads","name":"Vecumnieku novads"},"365":{"code":"LV-VEN","name":"Ventspils"},"465":{"code":"LV-VE","name":"Ventspils novads"},"466":{"code":"Vies\u012btes novads","name":"Vies\u012btes novads"},"467":{"code":"Vi\u013cakas novads","name":"Vi\u013cakas novads"},"468":{"code":"Vi\u013c\u0101nu novads","name":"Vi\u013c\u0101nu novads"},"470":{"code":"Zilupes novads","name":"Zilupes novads"}}},"LY":{"name":"Libya"},"MA":{"name":"Morocco"},"MC":{"name":"Monaco"},"MD":{"name":"Moldova"},"ME":{"name":"Montenegro"},"MF":{"name":"St. Martin"},"MG":{"name":"Madagascar"},"MH":{"name":"Marshall Islands"},"MK":{"name":"North Macedonia"},"ML":{"name":"Mali"},"MM":{"name":"Myanmar (Burma)"},"MN":{"name":"Mongolia"},"MO":{"name":"Macao SAR China"},"MP":{"name":"Northern Mariana Islands"},"MQ":{"name":"Martinique"},"MR":{"name":"Mauritania"},"MS":{"name":"Montserrat"},"MT":{"name":"Malta"},"MU":{"name":"Mauritius"},"MV":{"name":"Maldives"},"MW":{"name":"Malawi"},"MX":{"name":"Mexico","regions":{"577":{"code":"AGU","name":"Aguascalientes"},"578":{"code":"BCN","name":"Baja California"},"579":{"code":"BCS","name":"Baja California Sur"},"580":{"code":"CAM","name":"Campeche"},"581":{"code":"CHP","name":"Chiapas"},"582":{"code":"CHH","name":"Chihuahua"},"583":{"code":"CMX","name":"Ciudad de M\u00e9xico"},"584":{"code":"COA","name":"Coahuila"},"585":{"code":"COL","name":"Colima"},"586":{"code":"DUR","name":"Durango"},"587":{"code":"MEX","name":"Estado de M\u00e9xico"},"588":{"code":"GUA","name":"Guanajuato"},"589":{"code":"GRO","name":"Guerrero"},"590":{"code":"HID","name":"Hidalgo"},"591":{"code":"JAL","name":"Jalisco"},"592":{"code":"MIC","name":"Michoac\u00e1n"},"593":{"code":"MOR","name":"Morelos"},"594":{"code":"NAY","name":"Nayarit"},"595":{"code":"NLE","name":"Nuevo Le\u00f3n"},"596":{"code":"OAX","name":"Oaxaca"},"597":{"code":"PUE","name":"Puebla"},"598":{"code":"QUE","name":"Quer\u00e9taro"},"599":{"code":"ROO","name":"Quintana Roo"},"600":{"code":"SLP","name":"San Luis Potos\u00ed"},"601":{"code":"SIN","name":"Sinaloa"},"602":{"code":"SON","name":"Sonora"},"603":{"code":"TAB","name":"Tabasco"},"604":{"code":"TAM","name":"Tamaulipas"},"605":{"code":"TLA","name":"Tlaxcala"},"606":{"code":"VER","name":"Veracruz"},"607":{"code":"YUC","name":"Yucat\u00e1n"},"608":{"code":"ZAC","name":"Zacatecas"}}},"MY":{"name":"Malaysia"},"MZ":{"name":"Mozambique"},"NA":{"name":"Namibia"},"NC":{"name":"New Caledonia"},"NE":{"name":"Niger"},"NF":{"name":"Norfolk Island"},"NG":{"name":"Nigeria"},"NI":{"name":"Nicaragua"},"NL":{"name":"Netherlands"},"NO":{"name":"Norway"},"NP":{"name":"Nepal"},"NR":{"name":"Nauru"},"NU":{"name":"Niue"},"NZ":{"name":"New Zealand"},"OM":{"name":"Oman"},"PA":{"name":"Panama"},"PE":{"name":"Peru","regions":{"965":{"code":"PE-AMA","name":"Amazonas"},"966":{"code":"PE-ANC","name":"Ancash"},"967":{"code":"PE-APU","name":"Apur\u00edmac"},"968":{"code":"PE-ARE","name":"Arequipa"},"969":{"code":"PE-AYA","name":"Ayacucho"},"970":{"code":"PE-CAJ","name":"Cajamarca"},"971":{"code":"PE-CUS","name":"Cusco"},"972":{"code":"PE-CAL","name":"El Callao"},"973":{"code":"PE-HUV","name":"Huancavelica"},"974":{"code":"PE-HUC","name":"Hu\u00e1nuco"},"975":{"code":"PE-ICA","name":"Ica"},"976":{"code":"PE-JUN","name":"Jun\u00edn"},"977":{"code":"PE-LAL","name":"La Libertad"},"978":{"code":"PE-LAM","name":"Lambayeque"},"979":{"code":"PE-LIM","name":"Lima"},"980":{"code":"PE-LOR","name":"Loreto"},"981":{"code":"PE-MDD","name":"Madre de Dios"},"982":{"code":"PE-MOQ","name":"Moquegua"},"964":{"code":"PE-LMA","name":"Municipalidad Metropolitana de Lima"},"983":{"code":"PE-PAS","name":"Pasco"},"984":{"code":"PE-PIU","name":"Piura"},"985":{"code":"PE-PUN","name":"Puno"},"986":{"code":"PE-SAM","name":"San Mart\u00edn"},"987":{"code":"PE-TAC","name":"Tacna"},"988":{"code":"PE-TUM","name":"Tumbes"},"989":{"code":"PE-UCA","name":"Ucayali"}}},"PF":{"name":"French Polynesia"},"PG":{"name":"Papua New Guinea"},"PH":{"name":"Philippines"},"PK":{"name":"Pakistan"},"PL":{"name":"Poland","regions":{"990":{"code":"PL-02","name":"dolno\u015bl\u0105skie"},"991":{"code":"PL-04","name":"kujawsko-pomorskie"},"992":{"code":"PL-06","name":"lubelskie"},"993":{"code":"PL-08","name":"lubuskie"},"996":{"code":"PL-14","name":"mazowieckie"},"995":{"code":"PL-12","name":"ma\u0142opolskie"},"997":{"code":"PL-16","name":"opolskie"},"998":{"code":"PL-18","name":"podkarpackie"},"999":{"code":"PL-20","name":"podlaskie"},"1000":{"code":"PL-22","name":"pomorskie"},"1001":{"code":"PL-24","name":"\u015bl\u0105skie"},"1002":{"code":"PL-26","name":"\u015bwi\u0119tokrzyskie"},"1003":{"code":"PL-28","name":"warmi\u0144sko-mazurskie"},"1004":{"code":"PL-30","name":"wielkopolskie"},"1005":{"code":"PL-32","name":"zachodniopomorskie"},"994":{"code":"PL-10","name":"\u0142\u00f3dzkie"}}},"PM":{"name":"St. Pierre & Miquelon"},"PN":{"name":"Pitcairn Islands"},"PR":{"name":"Puerto Rico"},"PS":{"name":"Palestinian Territories"},"PT":{"name":"Portugal","regions":{"1006":{"code":"PT-01","name":"Aveiro"},"1007":{"code":"PT-02","name":"Beja"},"1008":{"code":"PT-03","name":"Braga"},"1009":{"code":"PT-04","name":"Bragan\u00e7a"},"1010":{"code":"PT-05","name":"Castelo Branco"},"1011":{"code":"PT-06","name":"Coimbra"},"1012":{"code":"PT-07","name":"\u00c9vora"},"1013":{"code":"PT-08","name":"Faro"},"1014":{"code":"PT-09","name":"Guarda"},"1015":{"code":"PT-10","name":"Leiria"},"1016":{"code":"PT-11","name":"Lisboa"},"1017":{"code":"PT-12","name":"Portalegre"},"1018":{"code":"PT-13","name":"Porto"},"1025":{"code":"PT-30","name":"Regi\u00e3o Aut\u00f3noma da Madeira"},"1024":{"code":"PT-20","name":"Regi\u00e3o Aut\u00f3noma dos A\u00e7ores"},"1019":{"code":"PT-14","name":"Santar\u00e9m"},"1020":{"code":"PT-15","name":"Set\u00fabal"},"1021":{"code":"PT-16","name":"Viana do Castelo"},"1022":{"code":"PT-17","name":"Vila Real"},"1023":{"code":"PT-18","name":"Viseu"}}},"PW":{"name":"Palau"},"PY":{"name":"Paraguay","regions":{"947":{"code":"PY-16","name":"Alto Paraguay"},"948":{"code":"PY-10","name":"Alto Paran\u00e1"},"949":{"code":"PY-13","name":"Amambay"},"946":{"code":"PY-ASU","name":"Asunci\u00f3n"},"950":{"code":"PY-19","name":"Boquer\u00f3n"},"951":{"code":"PY-5","name":"Caaguaz\u00fa"},"952":{"code":"PY-6","name":"Caazap\u00e1"},"953":{"code":"PY-14","name":"Canindey\u00fa"},"954":{"code":"PY-11","name":"Central"},"955":{"code":"PY-1","name":"Concepci\u00f3n"},"956":{"code":"PY-3","name":"Cordillera"},"957":{"code":"PY-4","name":"Guair\u00e1"},"958":{"code":"PY-7","name":"Itap\u00faa"},"959":{"code":"PY-8","name":"Misiones"},"960":{"code":"PY-12","name":"\u00d1eembuc\u00fa"},"961":{"code":"PY-9","name":"Paraguar\u00ed"},"962":{"code":"PY-15","name":"Presidente Hayes"},"963":{"code":"PY-2","name":"San Pedro"}}},"QA":{"name":"Qatar"},"RE":{"name":"R\u00e9union"},"RO":{"name":"Romania","regions":{"278":{"code":"AB","name":"Alba"},"279":{"code":"AR","name":"Arad"},"280":{"code":"AG","name":"Arge\u015f"},"281":{"code":"BC","name":"Bac\u0103u"},"282":{"code":"BH","name":"Bihor"},"283":{"code":"BN","name":"Bistri\u0163a-N\u0103s\u0103ud"},"284":{"code":"BT","name":"Boto\u015fani"},"286":{"code":"BR","name":"Br\u0103ila"},"285":{"code":"BV","name":"Bra\u015fov"},"287":{"code":"B","name":"Bucure\u015fti"},"288":{"code":"BZ","name":"Buz\u0103u"},"290":{"code":"CL","name":"C\u0103l\u0103ra\u015fi"},"289":{"code":"CS","name":"Cara\u015f-Severin"},"291":{"code":"CJ","name":"Cluj"},"292":{"code":"CT","name":"Constan\u0163a"},"293":{"code":"CV","name":"Covasna"},"294":{"code":"DB","name":"D\u00e2mbovi\u0163a"},"295":{"code":"DJ","name":"Dolj"},"296":{"code":"GL","name":"Gala\u0163i"},"297":{"code":"GR","name":"Giurgiu"},"298":{"code":"GJ","name":"Gorj"},"299":{"code":"HR","name":"Harghita"},"300":{"code":"HD","name":"Hunedoara"},"301":{"code":"IL","name":"Ialomi\u0163a"},"302":{"code":"IS","name":"Ia\u015fi"},"303":{"code":"IF","name":"Ilfov"},"304":{"code":"MM","name":"Maramure\u015f"},"305":{"code":"MH","name":"Mehedin\u0163i"},"306":{"code":"MS","name":"Mure\u015f"},"307":{"code":"NT","name":"Neam\u0163"},"308":{"code":"OT","name":"Olt"},"309":{"code":"PH","name":"Prahova"},"311":{"code":"SJ","name":"S\u0103laj"},"310":{"code":"SM","name":"Satu-Mare"},"312":{"code":"SB","name":"Sibiu"},"313":{"code":"SV","name":"Suceava"},"314":{"code":"TR","name":"Teleorman"},"315":{"code":"TM","name":"Timi\u015f"},"316":{"code":"TL","name":"Tulcea"},"318":{"code":"VL","name":"V\u00e2lcea"},"317":{"code":"VS","name":"Vaslui"},"319":{"code":"VN","name":"Vrancea"}}},"RS":{"name":"Serbia"},"RU":{"name":"Russia"},"RW":{"name":"Rwanda"},"SA":{"name":"Saudi Arabia"},"SB":{"name":"Solomon Islands"},"SC":{"name":"Seychelles"},"SD":{"name":"Sudan"},"SE":{"name":"Sweden","regions":{"1036":{"code":"SE-K","name":"Blekinge l\u00e4n"},"1037":{"code":"SE-W","name":"Dalarnas l\u00e4n"},"1039":{"code":"SE-X","name":"G\u00e4vleborgs l\u00e4n"},"1038":{"code":"SE-I","name":"Gotlands l\u00e4n"},"1040":{"code":"SE-N","name":"Hallands l\u00e4n"},"1041":{"code":"SE-Z","name":"J\u00e4mtlands l\u00e4n"},"1042":{"code":"SE-F","name":"J\u00f6nk\u00f6pings l\u00e4n"},"1043":{"code":"SE-H","name":"Kalmar l\u00e4n"},"1044":{"code":"SE-G","name":"Kronobergs l\u00e4n"},"1045":{"code":"SE-BD","name":"Norrbottens l\u00e4n"},"1055":{"code":"SE-T","name":"\u00d6rebro l\u00e4n"},"1056":{"code":"SE-E","name":"\u00d6sterg\u00f6tlands l\u00e4n"},"1046":{"code":"SE-M","name":"Sk\u00e5ne l\u00e4n"},"1048":{"code":"SE-D","name":"S\u00f6dermanlands l\u00e4n"},"1047":{"code":"SE-AB","name":"Stockholms l\u00e4n"},"1049":{"code":"SE-C","name":"Uppsala l\u00e4n"},"1050":{"code":"SE-S","name":"V\u00e4rmlands l\u00e4n"},"1051":{"code":"SE-AC","name":"V\u00e4sterbottens l\u00e4n"},"1052":{"code":"SE-Y","name":"V\u00e4sternorrlands l\u00e4n"},"1053":{"code":"SE-U","name":"V\u00e4stmanlands l\u00e4n"},"1054":{"code":"SE-O","name":"V\u00e4stra G\u00f6talands l\u00e4n"}}},"SG":{"name":"Singapore"},"SH":{"name":"St. Helena"},"SI":{"name":"Slovenia"},"SJ":{"name":"Svalbard & Jan Mayen"},"SK":{"name":"Slovakia"},"SL":{"name":"Sierra Leone"},"SM":{"name":"San Marino"},"SN":{"name":"Senegal"},"SO":{"name":"Somalia"},"SR":{"name":"Suriname","regions":{"1026":{"code":"SR-BR","name":"Brokopondo"},"1027":{"code":"SR-CM","name":"Commewijne"},"1028":{"code":"SR-CR","name":"Coronie"},"1029":{"code":"SR-MA","name":"Marowijne"},"1030":{"code":"SR-NI","name":"Nickerie"},"1031":{"code":"SR-PR","name":"Para"},"1032":{"code":"SR-PM","name":"Paramaribo"},"1033":{"code":"SR-SA","name":"Saramacca"},"1034":{"code":"SR-SI","name":"Sipaliwini"},"1035":{"code":"SR-WA","name":"Wanica"}}},"ST":{"name":"S\u00e3o Tom\u00e9 & Pr\u00edncipe"},"SV":{"name":"El Salvador"},"SX":{"name":"Sint Maarten"},"SY":{"name":"Syria"},"SZ":{"name":"Eswatini"},"TC":{"name":"Turks & Caicos Islands"},"TD":{"name":"Chad"},"TF":{"name":"French Southern Territories"},"TG":{"name":"Togo"},"TH":{"name":"Thailand"},"TJ":{"name":"Tajikistan"},"TK":{"name":"Tokelau"},"TL":{"name":"Timor-Leste"},"TM":{"name":"Turkmenistan"},"TN":{"name":"Tunisia"},"TO":{"name":"Tonga"},"TR":{"name":"Turkey"},"TT":{"name":"Trinidad & Tobago"},"TV":{"name":"Tuvalu"},"TW":{"name":"Taiwan, Province of China"},"TZ":{"name":"Tanzania"},"UA":{"name":"Ukraine"},"UG":{"name":"Uganda"},"UM":{"name":"U.S. Outlying Islands"},"US":{"name":"United States","regions":{"1":{"code":"AL","name":"Alabama"},"2":{"code":"AK","name":"Alaska"},"3":{"code":"AS","name":"American Samoa"},"4":{"code":"AZ","name":"Arizona"},"5":{"code":"AR","name":"Arkansas"},"6":{"code":"AE","name":"Armed Forces Africa"},"7":{"code":"AA","name":"Armed Forces Americas"},"8":{"code":"AE","name":"Armed Forces Canada"},"9":{"code":"AE","name":"Armed Forces Europe"},"10":{"code":"AE","name":"Armed Forces Middle East"},"11":{"code":"AP","name":"Armed Forces Pacific"},"12":{"code":"CA","name":"California"},"13":{"code":"CO","name":"Colorado"},"14":{"code":"CT","name":"Connecticut"},"15":{"code":"DE","name":"Delaware"},"16":{"code":"DC","name":"District of Columbia"},"17":{"code":"FM","name":"Federated States Of Micronesia"},"18":{"code":"FL","name":"Florida"},"19":{"code":"GA","name":"Georgia"},"20":{"code":"GU","name":"Guam"},"21":{"code":"HI","name":"Hawaii"},"22":{"code":"ID","name":"Idaho"},"23":{"code":"IL","name":"Illinois"},"24":{"code":"IN","name":"Indiana"},"25":{"code":"IA","name":"Iowa"},"26":{"code":"KS","name":"Kansas"},"27":{"code":"KY","name":"Kentucky"},"28":{"code":"LA","name":"Louisiana"},"29":{"code":"ME","name":"Maine"},"30":{"code":"MH","name":"Marshall Islands"},"31":{"code":"MD","name":"Maryland"},"32":{"code":"MA","name":"Massachusetts"},"33":{"code":"MI","name":"Michigan"},"34":{"code":"MN","name":"Minnesota"},"35":{"code":"MS","name":"Mississippi"},"36":{"code":"MO","name":"Missouri"},"37":{"code":"MT","name":"Montana"},"38":{"code":"NE","name":"Nebraska"},"39":{"code":"NV","name":"Nevada"},"40":{"code":"NH","name":"New Hampshire"},"41":{"code":"NJ","name":"New Jersey"},"42":{"code":"NM","name":"New Mexico"},"43":{"code":"NY","name":"New York"},"44":{"code":"NC","name":"North Carolina"},"45":{"code":"ND","name":"North Dakota"},"46":{"code":"MP","name":"Northern Mariana Islands"},"47":{"code":"OH","name":"Ohio"},"48":{"code":"OK","name":"Oklahoma"},"49":{"code":"OR","name":"Oregon"},"50":{"code":"PW","name":"Palau"},"51":{"code":"PA","name":"Pennsylvania"},"52":{"code":"PR","name":"Puerto Rico"},"53":{"code":"RI","name":"Rhode Island"},"54":{"code":"SC","name":"South Carolina"},"55":{"code":"SD","name":"South Dakota"},"56":{"code":"TN","name":"Tennessee"},"57":{"code":"TX","name":"Texas"},"58":{"code":"UT","name":"Utah"},"59":{"code":"VT","name":"Vermont"},"60":{"code":"VI","name":"Virgin Islands"},"61":{"code":"VA","name":"Virginia"},"62":{"code":"WA","name":"Washington"},"63":{"code":"WV","name":"West Virginia"},"64":{"code":"WI","name":"Wisconsin"},"65":{"code":"WY","name":"Wyoming"}}},"UY":{"name":"Uruguay","regions":{"1057":{"code":"UY-AR","name":"Artigas"},"1058":{"code":"UY-CA","name":"Canelones"},"1059":{"code":"UY-CL","name":"Cerro Largo"},"1060":{"code":"UY-CO","name":"Colonia"},"1061":{"code":"UY-DU","name":"Durazno"},"1062":{"code":"UY-FS","name":"Flores"},"1063":{"code":"UY-FD","name":"Florida"},"1064":{"code":"UY-LA","name":"Lavalleja"},"1065":{"code":"UY-MA","name":"Maldonado"},"1066":{"code":"UY-MO","name":"Montevideo"},"1067":{"code":"UY-PA","name":"Paysandu"},"1068":{"code":"UY-RN","name":"R\u00edo Negro"},"1069":{"code":"UY-RV","name":"Rivera"},"1070":{"code":"UY-RO","name":"Rocha"},"1071":{"code":"UY-SA","name":"Salto"},"1072":{"code":"UY-SJ","name":"San Jos\u00e9"},"1073":{"code":"UY-SO","name":"Soriano"},"1074":{"code":"UY-TA","name":"Tacuaremb\u00f3"},"1075":{"code":"UY-TT","name":"Treinta y Tres"}}},"UZ":{"name":"Uzbekistan"},"VA":{"name":"Vatican City"},"VC":{"name":"St. Vincent & Grenadines"},"VE":{"name":"Venezuela","regions":{"1078":{"code":"VE-Z","name":"Amazonas"},"1079":{"code":"VE-B","name":"Anzo\u00e1tegui"},"1080":{"code":"VE-C","name":"Apure"},"1081":{"code":"VE-D","name":"Aragua"},"1082":{"code":"VE-E","name":"Barinas"},"1083":{"code":"VE-F","name":"Bol\u00edvar"},"1084":{"code":"VE-G","name":"Carabobo"},"1085":{"code":"VE-H","name":"Cojedes"},"1086":{"code":"VE-Y","name":"Delta Amacuro"},"1076":{"code":"VE-W","name":"Dependencias Federales"},"1077":{"code":"VE-A","name":"Distrito Capital"},"1087":{"code":"VE-I","name":"Falc\u00f3n"},"1088":{"code":"VE-J","name":"Gu\u00e1rico"},"1089":{"code":"VE-K","name":"Lara"},"1090":{"code":"VE-L","name":"M\u00e9rida"},"1091":{"code":"VE-M","name":"Miranda"},"1092":{"code":"VE-N","name":"Monagas"},"1093":{"code":"VE-O","name":"Nueva Esparta"},"1094":{"code":"VE-P","name":"Portuguesa"},"1095":{"code":"VE-R","name":"Sucre"},"1096":{"code":"VE-S","name":"T\u00e1chira"},"1097":{"code":"VE-T","name":"Trujillo"},"1098":{"code":"VE-X","name":"Vargas"},"1099":{"code":"VE-U","name":"Yaracuy"},"1100":{"code":"VE-V","name":"Zulia"}}},"VG":{"name":"British Virgin Islands"},"VI":{"name":"U.S. Virgin Islands"},"VN":{"name":"Vietnam"},"VU":{"name":"Vanuatu"},"WF":{"name":"Wallis & Futuna"},"WS":{"name":"Samoa"},"XK":{"name":"Kosovo"},"YE":{"name":"Yemen"},"YT":{"name":"Mayotte"},"ZA":{"name":"South Africa"},"ZM":{"name":"Zambia"},"ZW":{"name":"Zimbabwe"},"data_id":1732171986},"instant-purchase":[],"loggedAsCustomer":[],"captcha":[],"persistent":[],"review":[],"wishlist":{"items":[]},"ammessages":[],"signifyd-fingerprint":[],"warranty_popup":[],"rewards":[],"wp_ga4":[],"recently_viewed_product":[],"recently_compared_product":[],"product_data_storage":[],"paypal-billing-agreement":[]}</script> <div x-data="dataAmMessage()" x-bind="eventListeners" x-spread="eventListeners" x-init="initAmMessage()"></div> <script> function dataAmMessage() { return { initAmMessage(){}, eventListeners: { ['@private-content-loaded.window'](event) { const detail = event.detail.data, body = document.getElementById('html-body'); const classList = body.classList.value; const messages = detail.ammessages && detail.ammessages.messages; if (classList.indexOf('checkout-') === -1 && messages && messages.notice) { dispatchMessages([ { type: detail.ammessages.messages.notice.type, text: detail.ammessages.messages.notice.text } ]); } } } } } </script> </div> <script> const wpGA4ServerSide = { pushClick: function(productId, listId, listName, index, elm) { if (elm && elm.hasAttribute('onclick')) { var requestUrl = 'https://www.gigaparts.com/weltpixel_ga4/track/productclick/'; if (productId && listId && listName) { fetch(requestUrl, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest' }, body: 'product_id=' + productId + '&list_id=' + listId +'&list_name=' + listName + '&index=' + index }) .then(res => res.json()) .then(data => { }); } } }, pushViewItemList: function(hashId) { if (hashId && document.getElementById('wp_ga4_server_side_view_item_list')) { var requestUrl = 'https://www.gigaparts.com/weltpixel_ga4/track/viewitemlist/'; fetch(requestUrl, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest' }, body: 'hash_id='+hashId }) .then(res => res.json()) .then(data => { }); } } }; window.wpGA4ServerSide = wpGA4ServerSide; const { fetch: originalFetch } = window; window.fetch = async (...args) => { let [resource, config] = args; let response = await originalFetch(resource, config); if (resource.search('/customer\/section\/load/') > 0) { response.clone().json().then( data => { if (data.wp_ga4.datalayer) { const dataLayerData = JSON.parse(data.wp_ga4.datalayer); dataLayerData.forEach((dataLayerItem) => { window.dataLayer.push({ecommerce: null}); window.dataLayer.push(dataLayerItem); }); } }); } return response; }; </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10