>
p class="result__title">{{ it.item.text }}
Hybrid / City Bikes
Forks
apping single items securely for rapid deployment when necessary. We’re naming this first version the Tube Strap because it’s the perfect strap length (13″) and width (1″) for securing a spare tube to your bike. Paired with a spare, a hand pump, and maybe even a banana for quick calories, the Tube Strap might be your new best friend.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003eThese Voile Straps® are made of the same tough stretch polyurethane, including the UV-resistant additive that increases their lifespan.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003e• 20% Thicker\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003e• 25% Wider\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003e• Strap Keeper included\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003e• Non-Marring\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003e• Won’t Slip\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003e• Holds Tight\u003c\/b\u003e\u003c\/p\u003e\
pping":true,"taxable":true,"featured_image":null,"available":true,"name":"Voile 13″ Tube Strap – XL series Nylon Buckle","public_title":null,"options":["Default Title"],"price":1500,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/projektride.co.uk\/cdn\/shop\/files\/voile-tube-strap-13in.jpg?v=1720097751"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/files\/voile-tube-strap-13in.jpg?v=1720097751","options":["Title"],"media":[{"alt":null,"id":34187052908770,"position":1,"preview_image":{"aspect_ratio":1.0,"height":2000,"width":2000,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/voile-tube-strap-13in.jpg?v=1720097751"},"aspect_ratio":1.0,"height":2000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/voile-tube-strap-13in.jpg?v=1720097751","width":2000}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cp\u003e \u003c\/p\u003e\n\u003cdiv class=\"wooc
e UV-resistant additive that increases their lifespan.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003e• 20% Thicker\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003e• 25% Wider\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003e• Strap Keeper included\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003e• Non-Marring\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003e• Won’t Slip\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003e• Holds Tight\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003e• Super Strong\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003e• UV Resistant\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003e• Works in Extreme Weather\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003e• Daisy Chain Together\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003e• Time-Tested Design\u003c\/b\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003csection class=\"related products\"\u003e\u003c\/
}).available;window._RestockRocketConfig.scriptUrlProduct = 'https://cdn.shopify.com/extensions/019bf9e0-3016-7510-aaea-4318e35b6645/restock-rocket-shopify-436/assets/restockrocket-product.js' window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/019bf9e0-3016-7510-aaea-4318e35b6645/restock-rocket-shopify-436/assets/restockrocket-collection.js' window._RestockRocketConfig.scriptHost = window._RestockRocketConfig.scriptUrlProduct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1) window._RestockRocketConfig.host = 'https://app.restockrocket.io' const SETTINGS_CACHE_DURATION = 15 * 60 * 1000; // 15 minutes in milliseconds function checkSettingsExpiry(settings) { try { if (!settings || !settings.updated_at) { console.debug('STOQ - Invalid settings data structure'); return null; } if (!settings.cache) { console.debug('STOQ - settings caching disabled'); return null; } // Chenue using cache even for untranslated locales } const updatedAt = new Date(settings.updated_at); if (isNaN(updatedAt.getTime())) { console.debug('STOQ - Invalid updated_at date format in settings'); return null; } const age = Date.now() - updatedAt.getTime(); if (age
SETTINGS_CACHE_DURATION) { console.debug('STOQ - settings changed recently, skipping cache'); return null; } return settings; } catch (error) { console.debug('STOQ - Error checking settings cache:', error); return null; } } function createRestockRocketContainer() { const restockRocketContainer = document.createElement('div'); restockRocketContainer.id = 'restock-rocket'; document.body.appendChild(restockRocketContainer); } function createRestockRocketScript(scriptUrl) { const restockRocketScriptElement = document.createElement('script'); restockRocketScriptElement.setAttribute('defer', 'defer'); restockRocketScriptElement.src = scriptUrl; document.body.appendChild(restockRocketScriptElement); } createRestockRocketContainer() console.debug('STOQ - extension activated') function applyTranslations(settings) { try { // Skip translation logic entirely if multi-language is not enabled if (!settings ||]; if (value !== null && value !== undefined && value !== '') { settings[key] = value; } }); } else { console.debug('STOQ - No translated fields found for locale:', normalizedLocale); } delete settings.translations; return settings; } catch (e) { console.debug('STOQ - error applying translations:', e); return settings; } } // Setup event listener for cart selling plan updates // This must be called before any scripts are loaded to avoid race conditions function setupCartSellingPlanUpdater(settings) { if (!settings || !settings.preorder_enabled) { return; } // Listen for sto
TOQ - using cached settings'); initializeScripts(validCachedSettings); } else { console.debug('STOQ - fetching fresh settings'); const headers = { 'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop, 'ngrok-skip-browser-warning': 'skip' }; if (window.Shopify?.theme?.role === 'main') { headers['X-Shopify-Theme-Schema-Name'] = window.Shopify.theme.schema_name; headers['X-Shopify-Theme-Schema-Version'] = window.Shopify.theme.schema_version; headers['X-Shopify-Theme-Store-Id'] = window.Shopify.theme.theme_store_id; } fetch( `${window._RestockRocketConfig.host}/api/v1/setting.json?translation_locale=${window._RestockRocketConfig.normalizedLocale}`, { headers } ) .then(function(response) { if (!response.ok) { throw new Error('Network response was not ok'); } return response.json(); }) .then(function(settings) { initializeScripts(settings); }) .catch(function(cketConfig.pageType); }) if(window._RestockRocketConfig.pageType === 'collection' && (settings.show_button_on_collection || settings.preorder_collection_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'index' && (settings.show_button_on_index || settings.preorder_index_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'search' && (settings.show_button_on_search || settings.preorder_search_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'page' && (settings.show_button_on_page || settings.preorder_page_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'product') { createRestockRocke
ex-start;gap:8px;font-size:14px;line-height: 1.5;}.restock-rocket-acknowledge-checkbox-input{width:18px;height:18px;margin-top:2px;cursor:pointer;flex-shrink:0;accent-color: #0d0d0d;}.restock-rocket-acknowledge-checkbox-label{flex:1;cursor:pointer;}.restock-rocket-preorder-countdown-timer{display:flex;flex-direction:column;align-items:center;padding:16px;margin:8px 0;font-family:inherit;}.restock-rocket-preorder-countdown-timer .countdown-header{font-size:16px;margin-bottom:6px;text-align:center}.restock-rocket-preorder-countdown-timer .countdown-units{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}.restock-rocket-preorder-countdown-timer .countdown-unit{display:flex;flex-direction:column;align-items:center;gap:6px}.restock-rocket-preorder-countdown-timer .countdown-box{min-width:40px;padding:10px 6px;text-align:center;font-size:20px;line-height:1}.restock-rocket-preorder-countdown-timer .countdown-label{font-size:14px;font-weight:500;text-align:center;text-transform:capitalize;opacity:.7}@media
:20px;}.restock-rocket-toast-top{top:60px}.restock-rocket-toast-bottom{bottom:75px}.restock-rocket-toast-left,.restock-rocket-toast-right{-webkit-animation:.5s forwards slide;animation:.5s forwards slide}.restock-rocket-toast-left{left:0;transform:translateX(-100%);-webkit-transform:translateX(-100%);border-radius:0 10px 10px 0}.restock-rocket-toast-left.slide-out{-webkit-animation:.5s forwards slide-out-left;animation:.5s forwards slide-out-left}.restock-rocket-toast-right{right:0;transform:translateX(100%);-webkit-transform:translateX(100%);border-radius:10px 0 0 10px}.restock-rocket-toast-right.slide-out{-webkit-animation:.5s forwards slide-out-right;animation:.5s forwards slide-out-right}@keyframes slide{100%{transform:translateX(0)}}@-webkit-keyframes slide{100%{-webkit-transform:translateX(0)}}@keyframes slide-out-left{0%{transform:translateX(0)}100%{transform:translateX(-100%)}}@-webkit-keyframes slide-out-left{0%{-webkit-transform:translateX(0)}100%{-webkit-transform:translateX(-100%)}}@keyframes slid
Ocean Blue
Satin Blue
Colour
See Morediv class="result__image" data-aspectratio="{{ it.product.image.aspectRatio }}" data-product-image>
div class="product__tag{{ it.product.badgeClasses }}">
>
{{/if}}
>
See More