Geometry

Contact Us
e reach\u003c\/th\u003e\n\u003cth class=\"sizing-table__header px-2 py-25 text-xs font-semibold\"\u003e\n\u003cspan class=\"sizing-table__alias\"\u003eN —\u003cspan\u003e \u003c\/span\u003e\u003c\/span\u003eFrame stack\u003c\/th\u003e\n\u003cth class=\"sizing-table__header px-2 py-25 text-xs font-semibold\"\u003eSaddle rail height min (w\/short mast)\u003c\/th\u003e\n\u003cth class=\"sizing-table__header px-2 py-25 text-xs font-semibold\"\u003eSaddle rail height max (w\/short mast)\u003c\/th\u003e\n\u003cth class=\"sizing-table__header px-2 py-25 text-xs font-semibold\"\u003eSaddle rail height min (w\/tall mast)\u003c\/th\u003e\n\u003cth class=\"sizing-table__header px-2 py-25 text-xs font-semibold\"\u003eSaddle rail height max (w\/tall mast)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody class=\"sizing-table__body\"\u003e\n\u003ctr data-v-05762449=\"\" class=\"sizing-table__body-row\"\u003e\n\u003ctd data-v-05762449=\"\" class=\"sizing-table__data px-2 py-25 text-xs\"\u003e54cm\u003c\
Workshop Prices Delivery & Returns
Header Image
Email
[email protected]

lieb Light Weight Dry-Bag - Colour - Black","handle":"ortlieb-light-weight-dry-bag-colour-black","description":"\u003cmeta charset=\"utf-8\"\u003e\n\u003cp data-mce-fragment=\"1\"\u003eWhere can you store dirty laundry, wet socks or toys? PS10 dry bags are the perfect solution. Colour coding helps organize and locate items quickly. Each pack displays its volume in litres. Endless storage options inside backpacks or panniers. These robust dry bags store, organize and protect your gear from water, dust and dirt and save you from endless searching.\u003c\/p\u003e\n\u003cul data-mce-fragment=\"1\"\u003e\n\u003cli data-mce-fragment=\"1\"\u003eBroad base loop for easy unpacking\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003eReinforced circular base made of folding and abrasion-resistant PS21 fabric\u003c\/li\u003e\n\u003c\/ul\u003e","published_at":"2022-06-19T21:34:22+01:00","created_at":"2022-06-19T21:34:21+01:00","vendor":"ortlieb","type":"","tags":["Bags and Transportation","Bike Packing","spo-cs-disableTrek Allant+ 7 Gen 2d","spo-default","spo-disabled","spo-notify-me-disabled"],"price":1600,"price_min":1600,"price_max":1600,"available":true,"price_varies":false,"compare_at_price":1800,"compare_at_price_min":1800,"compare_at_price_max":1800,"compare_at_price_varies":false,"variants":[{"id":43010895675618,"title":"3 Litre","option1":"3 Litre","option2":null,"option3":null,"sku":"OK20507","requires_shipping":true,"taxable":true,"featured_image":{"id":37555940688098,"product_id":7772928803042,"position":2,"created_at":"2022-06-19T21:34:21+01:00","updated_at":"2022-06-29T22:22:24+01:00","alt":null,"width":1152,"height":1330,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-06-19at21.32.15.png?v=1656537744","variant_ids":[43010895675618]},"available":true,"name":"Ortlieb Light Weight Dry-Bag - Colour - Black - 3 Litre","public_title":"3 Litre","options":["3 Litre"],"price":1600,"weight":200,"compare_at_price":1800,"inventory_management":"shopify","barcode":"","featured_media":{"alt":null,"id":30125445316834,"positio

n":2,"preview_image":{"aspect_ratio":0.866,"height":1330,"width":1152,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-06-19at21.32.15.png?v=1656537744"}},"requires_selling_plan":false,"selling_plan_allocations":[]},{"id":43010895708386,"title":"7 Litre","option1":"7 Litre","option2":null,"option3":null,"sku":"OK20207","requires_shipping":true,"taxable":true,"featured_image":{"id":37555945799906,"product_id":7772928803042,"position":3,"created_at":"2022-06-19T21:35:00+01:00","updated_at":"2022-06-29T22:22:24+01:00","alt":null,"width":1156,"height":1330,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot_2022-06-19_at_21.34.43.png?v=1656537744","variant_ids":[43010895708386]},"available":true,"name":"Ortlieb Light Weight Dry-Bag - Colour - Black - 7 Litre","public_title":"7 Litre","options":["7 Litre"],"price":1600,"weight":200,"compare_at_price":1800,"inventory_management":"shopify","barcode":"","featured_media":{"alt":null,"id":30125450494178,"position":3,"preview_image":{"aspect_r atio":0.869,"height":1330,"width":1156,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot_2022-06-19_at_21.34.43.png?v=1656537744"}},"requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-06-29at22.22.00.png?v=1656537744","\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-06-19at21.32.15.png?v=1656537744","\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot_2022-06-19_at_21.34.43.png?v=1656537744"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-06-29at22.22.00.png?v=1656537744","options":["Size"],"media":[{"alt":null,"id":30206934188258,"position":1,"preview_image":{"aspect_ratio":0.957,"height":1246,"width":1192,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-06-29at22.22.00.png?v=1656537744"},"aspect_ratio":0.957,"height":1246,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-06-29at22.22.00.png?v=1656537744","width":1192},{"

alt":null,"id":30125445316834,"position":2,"preview_image":{"aspect_ratio":0.866,"height":1330,"width":1152,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-06-19at21.32.15.png?v=1656537744"},"aspect_ratio":0.866,"height":1330,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-06-19at21.32.15.png?v=1656537744","width":1152},{"alt":null,"id":30125450494178,"position":3,"preview_image":{"aspect_ratio":0.869,"height":1330,"width":1156,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot_2022-06-19_at_21.34.43.png?v=1656537744"},"aspect_ratio":0.869,"height":1330,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot_2022-06-19_at_21.34.43.png?v=1656537744","width":1156}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cmeta charset=\"utf-8\"\u003e\n\u003cp data-mce-fragment=\"1\"\u003eWhere can you store dirty laundry, wet socks or toys? PS10 dry bags are the perfect solution. Colour coding helps orga£3,700.00nize and locate items quickly. Each pack displays its volume in litres. Endless storage options inside backpacks or panniers. These robust dry bags store, organize and protect your gear from water, dust and dirt and save you from endless searching.\u003c\/p\u003e\n\u003cul data-mce-fragment=\"1\"\u003e\n\u003cli data-mce-fragment=\"1\"\u003eBroad base loop for easy unpacking\u003c\/li\u003e\n\u003cli data-mce-fragment=\"1\"\u003eReinforced circular base made of folding and abrasion-resistant PS21 fabric\u003c\/li\u003e\n\u003c\/ul\u003e"}; window._RestockRocketConfig.variantsInventoryPolicy = {43010895675618 : "deny",43010895708386 : "deny",}; window._RestockRocketConfig.variantsInventoryQuantity = {43010895675618 : parseInt("2"),43010895708386 : parseInt("2"),}; window._RestockRocketConfig.variantsPreorderCount = {43010895675618 : parseInt(""),43010895708386 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderCountForMarket = {43010895675618 : null,43010895708386 : null,}; windo

w._RestockRocketConfig.variantsPreorderMaxCount = {43010895675618 : parseInt(""),43010895708386 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderMaxCountForMarket = {43010895675618 : null,43010895708386 : null,}; window._RestockRocketConfig.variantsShippingText = {43010895675618 : "",43010895708386 : "",}; window._RestockRocketConfig.variantsShippingTextForMarket = {43010895675618 : null,43010895708386 : null,}; window._RestockRocketConfig.selected_variant_id = 43010895675618; window._RestockRocketConfig.selected_variant_available = window._RestockRocketConfig.product.variants.find(function(variant) { return variant.id == window._RestockRocketConfig.selected_variant_id }).available;window._RestockRocketConfig.scriptUrlProduct = 'https://cdn.shopify.com/extensions/019b1405-52e0-7e89-a6c1-1ac7fea6dd8f/restock-rocket-shopify-410/assets/restockrocket-product.js' window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/019b1405-52e0-7e89-a6c1-1ac7fea6 dd8f/restock-rocket-shopify-410/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; } // 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 translation data in metafield // Me
tafield hasn't been backfilled yet - force refresh console.debug('STOQ - multi-language enabled but no translation data in cache, fetching fresh'); return null; } // Translations object exists in metafield - cache is valid // If current locale isn't translated, applyTranslations will gracefully use default locale from base fields if (window._RestockRocketConfig.normalizedLocale && !Object.prototype.hasOwnProperty.call(settings.translations, window._RestockRocketConfig.normalizedLocale)) { console.debug('STOQ - locale not explicitly translated, will use default language from cache'); } // Don't return null - continue 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 ||
!settings.multi_language_enabled) { return settings; } if (!settings.translations) { console.debug('STOQ - No translations found, skipping translation'); return settings; } const normalizedLocale = window._RestockRocketConfig.normalizedLocale; const translations = settings.translations; if (!normalizedLocale) { // No matching locale has translations; drop payload to save memory console.debug('STOQ - No matching locale for translations. Available:', Object.keys(translations || {})); delete settings.translations; return settings; } console.debug(`STOQ - Applying 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; } } // First try to get settings from metafields with expiry check const cachedSettings = window._RestockRocketConfig.cachedSettings; const validCachedSettings = cachedSettings ? checkSettingsExpiry(cachedSettings) : null; if (validCachedSettings) { console.debug('STOQ - 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?.them
e?.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(error) { // If request failed and we have cached settings (even if expired), use them as fallback if (cachedSettings) { console.debug('STOQ - using expired cached settings as fallback'); initializeScripts(cachedSettings); } else { console.error('STOQ - failed to load settings SKU: 5294611 :', error); } }) .catch(function(e) { console.error(e) }) } function initializeScripts(settings) { settings = applyTranslations(settings); window._RestockRocketConfig.settings = settings; console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`); if(settings.enable_app) { const hijackIntegration = window._RestockRocketConfig.integrations.find(function(integration) { return integration.type === 'hijack' && integration.enabled && integration.page_types.includes(window._RestockRocketConfig.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._RestockRock
etConfig.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') { createRestockRocketScript(window._RestockRocketConfig.scriptUrlProduct); } else if(hijackIntegration) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else { console.debug(`STOQ - no scripts enabled for ${window._RestockRocketConfig.pageType}`); } // Check and update cart selling plans after scripts are loaded if (settings.preorder_enabled) { updateCartSellingPlans(); } // Dispatch custom event when app is loaded const appLoadedEvent = new CustomEvent('stoq:loaded', { detail: { pageType: window._RestockRocketConfig.pageType, enabled: settings.enable_app, settings: settings } }); console.debug('STOQ - dispatching app loaded event'); window.dispatchEvent(appLoadedEvent); } } function updateCartSellingPlans() { // Wait for the API to be available with retries const maxRetries = 10; const retryDelay = 500; function attemptCartCheck(attempt = 1) { if (window._RestockRocket && window._RestockRocket.updateCartSellingPlans) { window._RestockRocket.updateCartSellingPlans() .then(hasUpdates => { if (hasUpdates) { console.debug('STOQ - cart selling plans updated successfully'); } else { console.debug('STOQ - no cart selling plan updates needed'); } }) .catch(error => { con
sole.error('STOQ - error updating cart selling plans:', error); }); } else if (attempt <
.restock-rocket-button,.restock-rocket-button-float{opacity:1!important;border:none!important;cursor:pointer!important;background-image:none!important;box-shadow:none!important;padding:15px 20px;font-size:16px;width:100%;font-family:inherit}@font-face{font-family:OpenSans;font-weight:200;src:url(https://d382hokyqag45a.cloudfront.net/assets/OpenSans-Light.woff)}@font-face{font-family:OpenSans;font-weight:300;src:url(https://d382hokyqag45a.cloudfront.net/assets/OpenSans-Regular.woff)}@font-face{font-family:OpenSa ns;font-weight:600;src:url(https://d382hokyqag45a.cloudfront.net/assets/OpenSans-SemiBold.woff)}.restock-rocket-button-container{position:relative;z-index:1;width:100%}.restock-rocket-button-container-float-right{position:fixed;z-index:123123;top:calc(50% - 200px);right:0;transform:rotate(270deg);transform-origin:bottom right}.restock-rocket-button-container-float-left{position:fixed;z-index:123123;top:calc(50% - 200px);left:40px;transform:rotate(90deg);transform-origin:top left}.restock-rocket-button-container-float-left:hover,.restock-rocket-button-container-float-right:hover,.restock-rocket-button-container:hover,.restock-rocket-button-float:hover,.restock-rocket-button:hover{opacity:.8}.restock-rocket-button{min-height:50px;margin-top:10px;margin-bottom:10px}.restock-rocket-button-collection{position:relative;font-size:13px;line-height:1;padding:7px;height:auto;z-index:3}.restock-rocket-wrapper{background-color:rgba(0,0,0,.5);z-index:123123123;width:100%;height:100%;overflow:auto;position:fixed;right:0;top:0;transition-property:all;transition-duration:.3s;display:flex;flex-direction:column;justify-content:center;}.restock-rocket-wrapper-inline{width:100%;height:100%;margin-top:20px}.restock-rocket-preorder-description{padding:10px 15px;margin-top:20px;display:flex;flex-direction:column;gap:10px;}.preorder-description-details{margin-bottom:0;display:flex;flex-direction:column;gap:10px;}.preorder-detail-item{display:flex;flex-direction:row;justify-content:start;gap:8px;align-items:center;}.restock-rocket-payment-widget{border:1px solid #ebebeb;margin-bottom:20px;}.restock-rocket-payment-option{display:flex;flex-wrap:wrap;align-items:center;gap:5px;padding:15px 20px;}.restock-rocket-payment-option:not(:last-child){border-bottom:1px solid #ebebeb;}.restock-rocket-payment-input-container{flex:1 1 auto;min-width:0}.restock-rocket-preorder-discount-badge{background:#ebebeb;height:25px;line-height:25px;padding:0 15px;border-radius:25px;font-size:0.8rem;flex:0 0 auto}.restock-rocket-payment-input{margin-right:10px;mar gin-top:-3px;vertical-align:middle;margin-left:0;accent-color:#202223}.restock-rocket-payment-description{margin-top:4px;flex:1 1 100%}.restock-rocket-preorder-badge{font-size:13px;line-height:1;padding:5px 13px 6px;border-radius:40px;height:auto;border:none;width:auto;z-index:2;margin:0;background:0 0}.preorder-badge-collection{position:absolute;top:10px;right:10px}.preorder-badge-product{margin-left:10px}.restock-rocket-price-strike{text-decoration:line-through;color: #666666;}.restock-rocket-discounted-price{margin-left:10px;}.restock-rocket-acknowledgement-checkbox{margin-bottom:12px;display:flex;align-items:flex-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-ro

Product Details

The Allant+ 7 is an award-winning e-bike built for riders and commuters who want a stylish, durable e-bike with the added road-smoothing benefits of a suspension fork. The powerful and connected Bosch smart system, quality parts and a wealth of thoughtful design details make this electric bike a great solution for getting around town every day

*Please note – spec applies to all sizes unless listed separately

Frameset
Frame High-performance hydroformed e-bike frame, Removable Integrated Battery, Motor Armor, internal cable routing, post-mount disc
Fork SR Suntour XCR32, coil spring, preload adjuster, lockout,100 mm QR, 63 mm travel
Max compatible fork travel 63mm
Wheels
Hub front Shimano Tourney HB-QC300, centerlock
Hub rear Shimano FH-QC300-HM, 32-hole, CentreLock, 8-/9-/10-/11-speed, 135x5 mm QR
Rim Bontrager Line TLR 30, Tubeless-Ready, 32-hole, Presta valve
Tyre Schwalbe G-One, Performance, RaceGuard, with reflective strip, 57-584
Max tyre size 27.5 x 2.40"
E-system
Battery Bosch PowerTube 625Wh, smart system
Charger Bosch standard 4A, 230V, smart system
Computer Bosch Purion 200
Motor Bosch Performance Line CX, smart system, magnesium motor body, 85 Nm
Drivetrain
Close Home HireTrek Domane SL 6 Gen 3 – ProjektRide
Shifter Shimano CUES U6000 w/optical gear display, 10-speed
Rear derailleur Shimano CUES U6000 GS
*Crank Size: M
ProWheel alloy, 170 mm length
Size:ENVE G27 650b Gravel Wheelset – ProjektRide L, XL
ProWheel alloy, 175 mm length
Chainring ProWheel 40T narrow/wide steel, w/alloy guard
Shimano CUES LG300, LINKGLIDE, 11-48, 10-speed
Chain Shimano LG500, 9/10/11-speed
Hire Yeti Mountain Bikes Ridgeback Brother Kids Bikes Genesis Singular See MoreEnigma
Bikes

AmflowL, XL
Bontrager alloy, 31.6 mm, 12 mm offset, 400 mm length Hybrid / City Bikes
Handlebar Alloy lowriser, 31.8 mm, 25 mm rise, 11-degree backsweep, 690 mm width Electric Bikes
Grips Herrmans Clik, ergonomic, lock-on Frames
*Stem Shop by Brand



Enve CockpitCycle


18HopeSee More
Cargo rack Custom Builds MIK-compatible alloy rear rack, maximum load 25 kg


BrakesSee More
Complete Brakes
Brake Rotors
Brake Pads
Brake Spares
ForksSee MoreFront SuspensionFinishing KitSee More
Rear Suspension

  • Open cart
Brands