Warranty:

RSI (Revolution Supply Inc.) guarantees our lug nuts and bolts to be free of structural defects for the life of the fastener, and offer to the original purchaser a guarantee that our chrome finish will not peel, chip or rust, under normal use and wear, for a period of 1 year from the time of purchase. It is the customer’s responsibility to care for the product after purchase. Corrosion of finish due to neglect, abuse, adverse weather conditions or chemicals is not covered. Proof of purchase required. All claims on defective parts may be subject to examination prior to warranty.

Loading... `; return loader; } function addAjaxLoader(button, loader) { button.setAttribute('data-label', button.getAttribute('aria-label')); button.removeAttribute('aria-label'); button.prepend(loader); button.classList.add('relative', '[&>:not(.loader)]:invisible'); button.disabled = true; } function removeAjaxLoader(button, loader) { button.setAttribute('aria-label', button.getAttribute('data-label')); button.removeAttribute('data-label'); loader.remove(); button.classList.remove('[&>:not(.loader)]:invisible'); button.disabled = false; } window.setAjaxCart = ({ formSelectors = ['#product_addtocart_form', '.product_addtocart_form'], extraDelay = 500 } = {}) => { const forms = document.querySelectorAll(formSelectors.toString()); forms.forEach(form => { form.addEventListener('submit', async (event) => { event.preventDefault(); const formData = new FormData(form); const button = form.querySelector('button') ? form.querySelector('button') : document.getElementById('product-addtocart-button'); const loader = createAjaxLoader(button); const postUrl = event.target.action; let bodyUrl = new URLSearchParams(formData); bodyUrl.append("uenc", hyva.getUenc()); addAjaxLoader(button, loader); try { const response = await fetch(postUrl, { method: 'POST', body: bodyUrl.toString(), mode: "cors", credentials: "include", headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 'X-Requested-With': 'XMLHttpRequest' } }); if (!response.ok) { return form.submit(); } if (response.redirected) { return window.location.href = response.url; } window.dispatchEvent(new CustomEvent("reload-customer-section-data")); const productFormData = { productId: formData.get("product"), options: {} } for (const formEntry of formData.entries()) { if (!formEntry[0].startsWith('super_attribute')) continue; const formEntryOption = { [formEntry[0].match(/\[(\d+)\]/)[1]]: formEntry[1] }; productFormData.options = { ...productFormData.options, ...formEntryOption }; } window.dispatchEvent(new CustomEvent('toggle-ajax-cart', { detail: productFormData })); } catch (err) { console.warn(err); window.dispatchEvent(new CustomEvent('product-addtocart-error')); if (typeof window.dispatchMessages === "undefined") return; window.dispatchMessages([{ text:'There\u0020was\u0020a\u0020problem\u0020adding\u0020your\u0020item\u0020to\u0020the\u0020cart.', type: 'error' }], 5000); } finally { setTimeout(() => removeAjaxLoader(button, loader), extraDelay); } }); }); } window.setAjaxCart(); function initAjaxCartModal() { return { open: false, cart: {}, totalCartAmount: 0, cartItem: null, showSku: true, sortObjectByNumberKey(obj) { let keys = Object.keys(obj).map(Number).sort((a, b) => a - b); let sortedObj = {}; keys.forEach(key => sortedObj[key] = obj[key]); return sortedObj; }, getCurrentProductFromCart(productData) { if (!this.cart.items) return; this.cartItem = this.cart.items.filter((item) => { if (item.product_id !== productData.productId) return; if (item.product_type !== "configurable") { return item; } let cartItemOptions = {}; for (const option of item.options) { const filterOptions = { [option.option_id]: option.option_value }; cartItemOptions = { ...cartItemOptions, ...filterOptions } } const cartItemOptionsCompare = JSON.stringify(this.sortObjectByNumberKey(cartItemOptions)); const productDataOptionsCompare = JSON.stringify(this.sortObjectByNumberKey(productData.options)); if (cartItemOptionsCompare === productDataOptionsCompare) { return item; } }); if (this.cartItem > 1) { this.cartItem = this.cartItem.slice(0, 1); } this.cartItem = this.cartItem[0]; }, getData(data, productData) { if (!data.cart) return; this.cart = data.cart; this.totalCartAmount = this.cart.summary_count; this.getCurrentProductFromCart(productData); }, getItemCountText() { if (this.totalCartAmount > 1) { return hyva.strf('(\u00250\u0020items)', this.totalCartAmount); } return hyva.strf('(\u00250\u0020item)', this.totalCartAmount); }, openDialog() { if (!this.cartItem) return; this.$root.showModal(); this.open = true; this.scrollLock(this.open); }, closeDialog() { this.$root.close(); this.open = false; this.scrollLock(this.open); }, scrollLock(use = true) { document.body.style.overflow = use ? "hidden" : ""; }, onDialogBackdropClickHelper(event, target) { const rect = target.getBoundingClientRect(); const isInDialog = rect.top <= event.clientY && event.clientY <= rect.top + rect.height && rect.left <= event.clientX && event.clientX <= rect.left + rect.width; return isInDialog; }, dialogListeners: { ['@keydown.window.escape']() { this.closeDialog(); }, ['@click'](event) { if (this.onDialogBackdropClickHelper(event, this.$root)) return; this.closeDialog(); }, ['@toggle-ajax-cart.window'](event) { if (!event.detail) return; const productData = event.detail; window.addEventListener('private-content-loaded', (event) => { this.getData(event.detail.data, productData); if (!this.open) { this.openDialog(); } else { this.closeDialog(); } }, { once: true }); } } } } -->