Brake Rotors



TubelessRear Suspension



| < | |
| 0) { console.debug(`STOQ - Client clock appears ahead of server by ${Math.abs(Math.round(liquidCacheAge / 60))} minutes, assuming cache fresh`); window._RestockRocketConfig.isLiquidCacheFresh = true; } else if (liquidCacheAge << | |
| <
|
|
| < | |
| < | |
| < | |
| SKU: CT03000A16100 |
|
| 1 |
1+ |
| Decrease quantity |
| Increase quantity
| >
s, sales, discounts & offers too","show_button_on_collection":false,"sms_default_country":"us","sms_allowed_countries":[],"sms_restrict_country":false,"sms_default_channel":true,"optin_required":false,"optin_success_text":"Registration confirmed! You'll receive an alert when the product is restocked.","storefront_button_border_radius":0,"storefront_button_disable_tag_hides_button":true,"storefront_button_disable_tag_enabled":false,"quantity_required":false,"storefront_form_quantity_label":"Quantity","enable_alerts":true,"sms_allowed":false,"email_allowed":true,"collect_promotion_consent_default":true,"insert_button_after_selector":null,"insert_button_after_selector_type":"afterend","storefront_button_position_type":"float-right","storefront_form_duplicate_error":"You've already subscribed for alerts to this product.","storefront_mixed_cart_error":"This item needs to be purchased separately. Please check out or clear your cart before adding this item.","storefront_error_heading":"Error","default_locale":"en"," collection_page_button_text_color":"#FFFFFF","collection_page_button_background_color":"#202223","show_button_if_any_out_of_stock":false,"show_button_if_any_variant_out_of_stock_collection":false,"show_button_on_index":false,"insert_button_after_selector_collection":null,"insert_button_after_selector_index":null,"push_enabled":false,"push_allowed":false,"storefront_form_push_label":"Push","storefront_form_push_description":"Click 'Allow' to be notified via push notification","storefront_form_push_error":"Permission rejected! Please review notification settings and try again","storefront_font_family":"OpenSans","insert_button_after_selector_collection_type":"afterend","show_channel_selector":false,"storefront_form_empty_error":"Please fill in one or more of the options above","storefront_form_push_input":"Send notification to your browser","insert_button_after_selector_page":null,"show_button_on_page":false,"insert_button_after_selector_search":null,"show_button_on_search":false,"app_proxy_path_prefix":"/apps/Full-length cable housing guides for derailleurs and brakes<< restockrocket-production","collection_link_selector":"","index_link_selector":"","page_link_selector":"","search_link_selector":"","collection_check_link_visibility":true,"collection_buttons_container":null,"index_buttons_container":null,"page_buttons_container":null,"search_buttons_container":null,"extension_enable_url_variant_detection":true,"extension_enable_value_variant_detection":true,"extension_value_variant_selector":"[name='id']","resubscribe_text":"This product is out of stock. Get notified when it's restocked again by entering your details below!","preorder_enabled":true,"preorder_buy_button_selector":null,"preorder_add_to_cart_button_selector":"","preorder_badge_selector":"","preorder_button_out_of_stock_text":"Out of stock","preorder_button_add_to_cart_text":"Add to cart","preorder_form_selector":"form[action*=\"/cart/add\"]","preorder_collection_enabled":false,"preorder_collection_form_selector":"form[action*=\"/cart/add\"]","preorder_collection_add_to_cart_button_selector":"form[action*=\"/cart "preorder_price_container_selector":"","preorder_price_container_selector_insert_type":"afterend","preorder_terms_insert_selector":"","preorder_terms_insert_selector_type":"afterend","preorder_original_price_selector":"","preorder_price_format":"{{amount}} {{currency}}","show_badge_if_any_variant_is_preorder":false,"enable_console_debug":false,"inline_form_enabled":false,"inline_form_selector":null,"inline_form_selector_type":"afterend","storefront_form_prefill_customer":true,"storefront_form_show_image":false,"storefront_form_text_color":"#202223","storefront_form_background_color":"#FFFFFF","storefront_form_border_radius":0,"market_setup_type":"single_market","shopify_app_id":5940125,"preorder_progress_bar_insert_selector":null,"preorder_progress_bar_insert_selector_type":"beforebegin","countdown_timer_insert_selector":null,"countdown_timer_insert_selector_type":"afterend","cache":true,"cached_at":"2026-01-08T16:12:13.364Z","multi_language_enabled":false,"translation_locale":"en"};window._RestockRocketConfi4402,43936362889442,43936362922210,43936388153570,43936389333218,43936395526370,43936398508258,43936401522914,43936408568034,43936414400738,43936700727522,43936706101474,43936706134242,43936706167010,43936706199778,43936706232546,43936706265314,43938308587746,43938308653282,43938308718818,43938308751586,43938308784354,43938308817122,43938322612450,43938322645218,43938322677986,43981336051938,43981336084706,43981336117474,43981336150242,43981345587426,43981345620194,43981345652962,43981345685730,43981357580514,43981357613282,43981362462946,43981362495714,43981362528482,43981369016546,43981369049314,43981374914786,43981374947554,43981374980322,43981392773346,43981392838882,43981392904418,43981695844578,43981695877346,43981695910114,43981695942882,43981986070754,43981987905762,43981987938530,43981989085410,43981989118178,43981989150946,43981990887650,43981990920418,43981990953186,44052906967266,44052907327714,44052907360482,44052907393250,44052907426018,44052907458786,44052907491554,44052909097186,44052909129954 Life Systems Pocket First Aid Kit - HIREed":false,"preorder_location_filter_ids":[],"collection_id":null};window._RestockRocketConfig.cachedInStockVariantIds = { in_stock_variant_ids: [] };window._RestockRocketConfig.cachedOutOfStockVariantIds = { out_of_stock_variant_ids: [] };window._RestockRocketConfig.cachedVariantPreorderLimits = {"variant_preorder_limits":{},"updated_at":"2026-02-17T03:08:27Z","shopify_market_id":382140642,"market_locations_enabled":false}; window._RestockRocketConfig.cachedVariantPreorderLimitsMarketKey = "variant_preorder_limits_for_market_382140642";window._RestockRocketConfig.cachedVariantShippingTexts = {"variant_shipping_texts":{},"updated_at":"2026-02-17T03:08:27Z","shopify_market_id":382140642,"market_locations_enabled":false}; window._RestockRocketConfig.cachedVariantShippingTextsMarketKey = "variant_shipping_texts_for_market_382140642";window._RestockRocketConfig.sellingPlans = [{"shopify_selling_plan_group_id":98590196095,"shopify_selling_plan_id":713071886719,"enabled":true,"variant_ids":[55569712382335,55 |
e,"shipping_text":"Estimated to ship within 2 months","payment_type":"full","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"discount_text":"Save {{ discount }}","billing_title":"Full payment","billing_description":null,"enable_billing_widget":false,"inventory_provider":"stoq","preorder_badge_enabled":false,"preorder_badge_text":"Preorder","preorder_badge_text_color":"#FFFFFF","preorder_badge_background_color":"#000000","preorder_discounted_price_enabled":null,"payment_line_item_property_enabled":false,"shipping_line_item_property_enabled":true,"custom_line_item_property_text":null,"preorder_button_text_color":"#ffffff","preorder_button_background_color":"#565557","preorder_button_colors_enabled":true,"markets_enabled":false,"market_id":13779632354,"shopify_market_ids":[],"use_shopify_selling_plan":true,"use_simplified_shipping_text":false,"translations":{£0.00"countdown_timer_use_schedule_dates":true,"countdown_timer_custom_start_date":null,"countdown_timer_custom_end_date":null,"countdown_timer_starts_text":null,"countdown_timer_ends_text":null,"schedule_offer":false,"schedule_start_date":null,"schedule_end_date":null,"updated_at":"2025-08-19T10:05:43.042Z","allow_mixed_cart":true,"mixed_cart_error_message":"Preorders must be purchased separately from regular items. Please complete your current order first, or clear your cart to continue.","b2b_enabled":true,"preorder_progress_bar_enabled":false,"preorder_progress_bar_text":"{{ sold }} of {{ total }} claimed","preorder_progress_bar_fill_color":"#000000","preorder_progress_bar_background_color":"#e5e5e5","preorder_progress_bar_text_color":"#FFFFFF","preorder_progress_bar_border_radius":4,"preorder_progress_bar_show_percentage":false}];window._RestockRocketConfig.integrations = [{"id":"15c94526-b6b8-4de1-9bc1-23b1ca52ddb0","shop_id":38436,"enabled":true,"page_types":["product","collection","index","search","page"," < yle=\"BFHJ9QH\"\u003e\n\u003cdiv class=\"pagebuilder-column-group\" data-background-images=\"{}\" data-content-type=\"column-group\" data-appearance=\"default\" data-grid-size=\"12\" data-element=\"main\" data-pb-style=\"XGCTCKU\"\u003e\n\u003cdiv class=\"pagebuilder-column-line\" data-content-type=\"column-line\" data-element=\"main\" data-pb-style=\"N6CC18O\"\u003e\n\u003cdiv class=\"pagebuilder-column\" data-content-type=\"column\" data-appearance=\"full-height\" data-background-images=\"{}\" data-element=\"main\" data-pb-style=\"LAL6A0W\"\u003e\n\u003ch2 data-content-type=\"heading\" data-appearance=\"default\" data-element=\"main\"\u003eOne Bike Many Hats\u003c\/h2\u003e\n\u003cdiv data-content-type=\"text\" data-appearance=\"default\" data-element=\"main\"\u003e\n\u003cp\u003e\u003cspan\u003eOur most popular model within the Croix De Fer range, the 20 is a fantastically adaptable all-rounder.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003eMudguard \u0026amp; rack mounts, generous tyre cl =\"\" src=\"https:\/\/www.freewheel.co.uk\/media\/headless_websites\/genesis\/cdf\/cdf_20\/800x1000-cdf20-keyfeature-a.jpg\" data-element=\"lazy_image\"\u003e\u003c\/picture\u003e\u003c\/figure\u003e\n\u003ch3 class=\"text-xl font-medium\" data-content-type=\"heading\" data-appearance=\"default\" data-element=\"main\" data-pb-style=\"CH8F2A9\"\u003eShimano GRX\u003c\/h3\u003e\n\u003cdiv class=\"h-40\" data-content-type=\"text\" data-appearance=\"default\" data-element=\"main\" data-pb-style=\"RDB7V4A\"\u003e\n\u003cp id=\"NM8TUA9\"\u003eA Shimano GRX 2 x 10-speed drivetrain combined with Tiagra levers delivers great ratios for gravel riding, longer adventures and urban riding.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/li\u003e\n\u003cli class=\"carousel__slide carousel__slide--clone\" aria-hidden=\"true\"\u003e\n\u003cdiv class=\"carousel__item pagebuilder-column\" data-content-type=\"slide\"\u003e\n\u003cfigure class=\"pagebuilder-image\" data-content-type=\"image\" data-appearance=\"full |
\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/li\u003e\n\u003cli class=\"carousel__slide carousel__slide--clone\" aria-hidden=\"true\"\u003e\n\u003cdiv class=\"carousel__item pagebuilder-column\" data-content-type=\"slide\"\u003e\n\u003cfigure class=\"pagebuilder-image\" data-content-type=\"image\" data-appearance=\"full-width\" data-element=\"main\" data-pb-style=\"E07AP8Q\"\u003e\u003cpicture\u003e\u003csource media=\"(max-width: 768px)\" srcset=\"https:\/\/www.freewheel.co.uk\/media\/headless_websites\/genesis\/cdf\/cdf_20\/800x1000-cdf20-keyfeature-c.jpg\" data-element=\"lazy_mobile_image\"\u003e\u003cimg alt=\"\" title=\"\" src=\"https:\/\/www.freewheel.co.uk\/media\/headless_websites\/genesis\/cdf\/cdf_20\/800x1000-cdf20-keyfeature-c.jpg\" data-element=\"lazy_image\"\u003e\u003c\/picture\u003e\u003c\/figure\u003e\n\u003ch3 class=\"text-xl font-medium\" data-content-type=\"heading\" data-appearance=\"default\" data-element=\"main\" data-pb-style=\"HKB7Q5V\"\u003eChunky Tyres\u003c\/h3\u0
|
" data-appearance=\"default\" data-element=\"main\"\u003e\n\u003cul\u003e\n\u003cli\u003eAmplitude G100\u003c\/li\u003e\n\u003cli\u003eSix-Bolt Rotor Mounts\u003c\/li\u003e\n\u003cli\u003eQR Front \u0026amp; Rear\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pagebuilder-column\" data-content-type=\"column\" data-appearance=\"full-height\" data-background-images=\"{}\" data-element=\"main\" data-pb-style=\"WHXENOE\"\u003e\n\u003ch3 class=\"text-xl font-semibold\" data-content-type=\"heading\" data-appearance=\"default\" data-element=\"main\" data-pb-style=\"S9DL2MC\"\u003eBrakes\u003c\/h3\u003e\n\u003cdiv class=\"leading-normal text-lg\" data-content-type=\"text\" data-appearance=\"default\" data-element=\"main\"\u003e\n\u003cul\u003e\n\u003cli\u003eTRP Spyre Mechanical Discs\u003c\/li\u003e\n\u003cli\u003e160mm Rotors Front \u0026amp; Rear\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pagebuilder-column\" data-content-ty < u003cdiv class=\"carousel__item pagebuilder-column\" data-content-type=\"slide\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c!----\u003e","published_at":"2024-08-15T12:10:55+01:00","created_at":"2024-08-15T12:11:12+01:00","vendor":"Genesis","type":"Bicycles","tags":["bicycle","Croix De Fer","spo-cs-disabled","spo-default","spo-disabled","spo-notify-me-disabled"],"price":142700,"price_min":142700,"price_max":142700,"available":true,"price_varies":false,"compare_at_price":169900,"compare_at_price_min":169900,"compare_at_price_max":169900,"compare_at_price_varies":false,"variants":[{"id":45817753338082,"title":"Extra Small","option1":"Extra Small","option2":null,"option3":null,"sku":"GN10810XS","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Genesis Croix De Fer 20 - Extra Small","public a class="product__media product__media--featured" href="/collections/maintenance-cleaners-degreasers-and-lubrication/products/kryptolok-standard-u-lock-with-4-foot-kryptoflex-cable-hire" title="Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable" aria-label="Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable" style="background-image: url(//projektride.co.uk/cdn/shop/files/Screenshot2022-03-09at20.04.46_560e2033-8232-4bd3-a423-3ce8c9f11849_600x.png?v=1691610428)"> ng_plan":false,"selling_plan_allocations":[]},{"id":45817753436386,"title":"Large","option1":"Large","option2":null,"option3":null,"sku":"GN21140LG","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Genesis Croix De Fer 20 - Large","public_title":"Large","options":["Large"],"price":142700,"weight":0,"compare_at_price":169900,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":45817753469154,"title":"Extra Large","option1":"Extra Large","option2":null,"option3":null,"sku":"GN21140XL","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Genesis Croix De Fer 20 - Extra Large","public_title":"Extra Large","options":["Extra Large"],"price":142700,"weight":0,"compare_at_price":169900,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/projektride.co.uk\/cdn\/shop\/files\/gn10810_detail_01.jpg?v=1723720272","\/span class="visually-hidden">Hire Kryptolok Standard U-Lock & 4 foot Kryptoflex cable272","options":["Size"],"media":[{"alt":null,"id":34464617824482,"position":1,"preview_image":{"aspect_ratio":1.0,"height":1800,"width":1800,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/gn10810_detail_01.jpg?v=1723720272"},"aspect_ratio":1.0,"height":1800,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/gn10810_detail_01.jpg?v=1723720272","width":1800},{"alt":null,"id":34464617857250,"position":2,"preview_image":{"aspect_ratio":1.0,"height":1800,"width":1800,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/gn10810_detail_02.jpg?v=1723720272"},"aspect_ratio":1.0,"height":1800,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/gn10810_detail_02.jpg?v=1723720272","width":1800},{"alt":null,"id":34464617890018,"position":3,"preview_image":{"aspect_ratio":1.0,"height":1800,"width":1800,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/gn10810_detail_03.jpg?v=1723720272"},"aspect_ratio":1.0,"height":1800,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/gn1081 > dn\/shop\/files\/gn10810_detail_06.jpg?v=1723720272","width":1800},{"alt":null,"id":34464618021090,"position":7,"preview_image":{"aspect_ratio":1.503,"height":1198,"width":1800,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/gn10810_detail_07.jpg?v=1723720272"},"aspect_ratio":1.503,"height":1198,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/gn10810_detail_07.jpg?v=1723720272","width":1800},{"alt":null,"id":34464618053858,"position":8,"preview_image":{"aspect_ratio":1.503,"height":1198,"width":1800,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/gn10810_detail_08.jpg?v=1723720272"},"aspect_ratio":1.503,"height":1198,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/gn10810_detail_08.jpg?v=1723720272","width":1800},{"alt":null,"id":34464618086626,"position":9,"preview_image":{"aspect_ratio":1.0,"height":1800,"width":1800,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/gn10810_detail_09.jpg?v=1723720272"},"aspect_ratio":1.0,"height":1800,"media_type":"image","src":"\/\/p | >
type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/gn10810_detail_12.jpg?v=1723720272","width":1800},{"alt":null,"id":34464618217698,"position":13,"preview_image":{"aspect_ratio":1.503,"height":1198,"width":1800,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/gn10810_detail_13.jpg?v=1723720273"},"aspect_ratio":1.503,"height":1198,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/gn10810_detail_13.jpg?v=1723720273","width":1800}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cul class=\"description-overview\"\u003e\n\u003cli\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003cdiv data-content-type=\"row\" data-appearance=\"contained\" data-element=\"main\"\u003e\n\u003cdiv class=\"col-pr-4\" data-enable-parallax=\"0\" data-parallax-speed=\"0.5\" data-background-images=\"{}\" data-background-type=\"image\" data-video-loop=\"true\" data-video-play-only-visible=\"true\" data-video-lazy-load=\"true\" data-video-fallback-src=\"\" data-element=\"inner\" data-pb-styarance, dynamo cable routing and cage options galore. This super versatile machine is as adept at the morning rush as it is a week long quest.\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003csection class=\"carousel\" dir=\"ltr\" aria-label=\"Gallery\" tabindex=\"0\"\u003e\n\u003cdiv class=\"carousel__viewport\"\u003e\n\u003col class=\"carousel__track\"\u003e\n\u003cli class=\"carousel__slide carousel__slide--clone\" aria-hidden=\"true\"\u003e\n\u003cdiv class=\"carousel__item pagebuilder-column\" data-content-type=\"slide\"\u003e\n\u003cfigure class=\"pagebuilder-image\" data-content-type=\"image\" data-appearance=\"full-width\" data-element=\"main\" data-pb-style=\"D3LLYH4\"\u003e\u003cpicture\u003e\u003csource media=\"(max-width: 768px)\" srcset=\"https:\/\/www.freewheel.co.uk\/media\/headless_websites\/genesis\/cdf\/cdf_20\/800x1000-cdf20-keyfeature-a.jpg\" data-element=\"lazy_mobile_image\"\u003e\u003cimg alt=\"\" title= |
| data-content-type=\"column-line\" data-element=\"main\" data-pb-style=\"EMGT3WK\"\u003e\n\u003cdiv class=\"pagebuilder-column\" data-content-type=\"column\" data-appearance=\"full-height\" data-background-images=\"{}\" data-element=\"main\" data-pb-style=\"BFOYQV4\"\u003e\n\u003ch3 class=\"text-xl font-semibold\" data-content-type=\"heading\" data-appearance=\"default\" data-element=\"main\" data-pb-style=\"TBL3F9P\"\u003eFrame \u0026amp; Fork\u003c\/h3\u003e\n\u003cdiv class=\"leading-normal text-lg\" data-content-type=\"text\" data-appearance=\"default\" data-element=\"main\"\u003e\n\u003cul\u003e\n\u003cli\u003eGenesis Mjolnir Chromoly Tubing\u003c\/li\u003e\n\u003cli\u003eAmplitude G100 Chromoly Fork\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pagebuilder-column\" data-content-type=\"column\" data-appearance=\"full-height\" data-background-images=\"{}\" data-element=\"main\" data-pb-style=\"Q0IVXSE\"\u003e\n\u003ch3 class=\"text-xl font-semibold\" data-conte | £0.00\"main\"\u003e\n\u003cul\u003e\n\u003cli\u003eAmplitude G100 Finishing Kit\u003c\/li\u003e\n\u003cli\u003eMadison Flux Switch Saddle\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pagebuilder-column-group\" data-background-images=\"{}\" data-content-type=\"column-group\" data-appearance=\"default\" data-grid-size=\"12\" data-element=\"main\" data-pb-style=\"IBXNDMI\"\u003e\n\u003cdiv class=\"pagebuilder-column-line\" data-content-type=\"column-line\" data-element=\"main\" data-pb-style=\"VEM08K2\"\u003e\n\u003cdiv class=\"pagebuilder-column\" data-content-type=\"column\" data-appearance=\"full-height\" data-background-images=\"{}\" data-element=\"main\" data-pb-style=\"IBUASY2\"\u003e\n\u003ch3 class=\"text-xl font-semibold\" data-content-type=\"heading\" data-appearance=\"default\" data-element=\"main\" data-pb-style=\"TSE5AA7\"\u003eWheelset\u003c\/h3\u003e\n\u003cdiv class=\"leading-normal text-lg\" data-content-type=\"text\"
e=\"column\" data-appearance=\"full-height\" data-background-images=\"{}\" data-element=\"main\" data-pb-style=\"LXY30CJ\"\u003e\n\u003ch3 class=\"text-xl font-semibold\" data-content-type=\"heading\" data-appearance=\"default\" data-element=\"main\" data-pb-style=\"Q896WCO\"\u003eTyres\u003c\/h3\u003e\n\u003cdiv class=\"leading-normal text-lg\" data-content-type=\"text\" data-appearance=\"default\" data-element=\"main\"\u003e\n\u003cul\u003e\n\u003cli\u003eMaxxis Rambler 700x45mm Tubeless Ready\u003c\/li\u003e\n\u003cli\u003ePre-taped Tubeless Ready Rims\u003c\/li\u003e\n\u003cli\u003eTubeless Valves Included\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cpicture\u003e\u003csource media=\"(max-width: 768px)\" srcset=\"https:\/\/www.freewheel.co.uk\/media\/headless_websites\/genesis\/cdf\/cdf_20\/800x1000-cdf20-keyfeature-a.jpg\" data-element=\"lazy_mobile_image\"\u003e\u003c\/picture\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u ull,45817753370850 : null,45817753403618 : null,45817753436386 : null,45817753469154 : null,}; window._RestockRocketConfig.variantsPreorderMaxCount = {45817753338082 : parseInt(""),45817753370850 : parseInt(""),45817753403618 : parseInt(""),45817753436386 : parseInt(""),45817753469154 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderMaxCountForMarket = {45817753338082 : null,45817753370850 : null,45817753403618 : null,45817753436386 : null,45817753469154 : null,}; window._RestockRocketConfig.variantsShippingText = {45817753338082 : "",45817753370850 : "",45817753403618 : "",45817753436386 : "",45817753469154 : "",}; window._RestockRocketConfig.variantsShippingTextForMarket = {45817753338082 : null,45817753370850 : null,45817753403618 : null,45817753436386 : null,45817753469154 : null,}; window._RestockRocketConfig.selected_variant_id = 45817753338082; window._RestockRocketConfig.selected_variant_available = window._RestockRocketConfig.product.variants.find(function(variant < f (!liquidRenderedAt || typeof liquidRenderedAt !== 'number' || isNaN(liquidRenderedAt)) { console.debug('STOQ - Invalid or missing liquidRenderedAt timestamp, assuming fresh'); window._RestockRocketConfig.isLiquidCacheFresh = true; } else { const now = Math.floor(Date.now() / 1000); // Current time in seconds const liquidCacheAge = now - liquidRenderedAt; // Age in seconds // Handle client clock ahead of server if (liquidCacheAge |
0) {
console.debug(`STOQ - Client clock appears ahead of server by ${Math.abs(Math.round(liquidCacheAge / 60))} minutes, assuming cache fresh`);
window._RestockRocketConfig.isLiquidCacheFresh = true;
} else if (liquidCacheAge
ndle client clock ahead of server if (liquidCacheAge Postage is free on orders over £50. Orders under £50, our postage charge is £3.99. 0) { console.debug(`STOQ - Client clock appears ahead of server by ${Math.abs(Math.round(liquidCacheAge / 60))} minutes, assuming cache fresh`); window._RestockRocketConfig.isLiquidCacheFresh = true; } else if (liquidCacheAge We also have a physical store, if you are local please pop in -= LIQUID_CACHE_MAX_AGE) { console.debug(`STOQ - Liquid cache is fresh (${Math.round(liquidCacheAge / 60)} minutes old)`); window._RestockRocketConfig.isLiquidCacheFresh = true; } else { console.debug(`STOQ - Liquid cache is stale (${Math.round(liquidCacheAge / 60)} minutes old, max ${Math.round(LIQUID_CACHE_MAX_AGE / 60)} minutes)`); window._RestockRocketConfig.isLiquidCacheFresh = false; } } 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; } // Check if translations are enabled but missing from cache // This handles the backfill period where DB has translations but metafield doesn't if (settings.multi_language_enabled) { if (!settings.translations) { // Translations enabled but no ProjektRide Bike Shop Edinburghage = Date.now() - updatedAt.getTime(); if (age 82 Newington Road, EH91QN, Edinburgh. 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 ||
pplying translations for normalized locale: ${normalizedLocale} (original: ${window._RestockRocketConfig.locale})`); const translatedFields = translations[normalizedLocale]; if (translatedFields && typeof translatedFields === 'object') { Object.keys(translatedFields).forEach(function(key) { const value = translatedFields[key]; 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) { re