Kona Libre ELSierra Leone (SLLLe)
- 1 Tristan da Cunha (GBP£)
- 2 Tunisia (GBP£)
- Türkiye (GBP£) 3
- Uganda (UGXUSh) 4 Ukraine (UAH₴)
- 5 United Kingdom (GBP£)
- 6 United States (GBP£)
- Vatican City (EUR€) 7
- Western Sahara (MADد.م.) 8 Zambia (GBP£)
- 9 Zimbabwe (USD$)
- 10 +
Looking to purchase with a cycle to work scheme?
Click here to get in touch and get the ball rolling!
The Libre EL has made itself known as a go-to adventure bike for people of all abilities. Looking to up your distance? Want a tool that allows you to ride farther in less time? The Libre EL is a versatile machine that has the legs to go just about anywhere. Built on our wildly popular Libre platform, the Libre EL features an aluminum frame and Verso Full Carbon Flat Mount Disc fork. Like its CR DL sibling, it runs a gravel-specific drivetrain and brakes, ensuring the grime that you’ll inevitably get from a mucky ride doesn’t affect shifting and braking performance. Unlike its analog sibling it gets a power boost from a Shimano motor and internal battery. In other words, it’ll get you to the top of that insanely steep mountain you’ve been eyeing up, and let you enjoy the benefits of rippin’ gravel on the way down!
“Throughout all our test rides, probably the most glaring and consistent observation riders made was how balanced the Kona’s handling felt… On the way back down that very trail, we literally almost forgot it was an e-bike.” - Road Bike Action
SPECS & GEOMETRY
SPECIFICATIONS
| FRAME MATERIAL | Kona 6061 Aluminum ButtedClose |
| SIZES | 50, 52, 54, 56, 58 |
| REAR SHOCK | n/a |
| FORK | Kona Verso Full Carbon Flat Mount Disc |
| CRANKARMS | Shimano E8000 |
| CHAINRINGS | Direct Mount Samox 38t |
| B/B | n/a |
| PEDALS | n/a |
| CHAIN | CloseShimano 105 |
| CASSETTE | Shimano Deore 11-42t 11spd |
| 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')
try {
const _stoqInitConfig = window._RestockRocketConfig;
const _stoqDetectedVariantIds = (_stoqInitConfig.product && Array.isArray(_stoqIn/anitConfig.product.variants))
? _stoqInitConfig.product.variants.map(function(v) { return v.id })
: [];
const _stoqSelectedVariantId = _stoqInitConfig.selected_variant_id;
var _stoqPageSeq = 0;
try {
_stoqPageSeq = (parseInt(window.sessionStorage.getItem('_stoq_pls') || '0', 10) || 0) + 1;
window.sessionStorage.setItem('_stoq_pls', String(_stoqPageSeq));
} catch (e) { }
Shopify?.analytics?.publish?.('stoq_initialized', {
cart_token: _stoqInitConfig.cartToken || '',
page_url: window.location.href,
page_type: _stoqInitConfig.pageType || '',
shop_domain: _stoqInitConfig.shop || '',
market_id: _stoqInitConfig.marketId || '',
country_code: _stoqInitConfig.countryIsoCode || '',
detected_variant_ids: _stoqDetectedVariantIds,
selected_variant_id: _stoqSelectedVariantId || '',
page_load_seq: _stoqPageSeq,
liquid_rendered_at: _stoqInitConfig.liquidRenderedAt || 0,
app_version: _stoqInitConfig.appVersion || '',
| liquid_cache_age: _stoqInitConfig.liquidCacheAge,
inventory_policy: (_stoqInitConfig.variantsInventoryPolicy || {})[_stoqSelectedVariantId] || '',
inventory_quantity: (_stoqInitConfig.variantsInventoryQuantity || {})[_stoqSelectedVariantId],
});
} catch (e) {
console.debug('STOQ - stoq_initialized publish failed:', e);
}
try {
var _sqTrack = window._RestockRocketConfig;
if (_sqTrack.preordersConfigured) {
document.addEventListener('click', function (e) {
try {
var t = e.target;
if (!t || !t.closest) return;
var host = t.closest('.shopify-payment-button, shopify-payment-terms');
if (!host) return;
var channel = host.matches && host.matches('shopify-payment-terms')
? 'shop_pay_installments' : 'buy_now';
var form = host.closest('form');
var vidEl = form && form.querySelector('[name="id"]');
var variantId = (vidEl && vidEl.value) || _sqTrack.selected_variant_id || '';
var _sqVidNum = Number(variantId);
var _sqPlan = null;
var _sqPlans = Array.isArray(_sqTrack.sellingPlans) ? _sqTrack.sellingPlans : [];
var _sqMktId = Number(_sqTrack.marketId);
var _sqForVariant = function (pl) {
return pl && pl.enabled && Array.isArray(pl.variant_ids) &&
pl.variant_ids.indexOf(_sqVidNum) !== -1;
};
_sqPlans.forEach(function (pl) {
if (!_sqPlan && _sqForVariant(pl) && pl.markets_enabled &&
Array.isArray(pl.shopify_market_ids) &&
pl.shopify_market_ids.indexOf(_sqMktId) !== -1) { _sqPlan = pl; }
});
if (!_sqPlan) {
_sqPlans.forEach(function (pl) {
if (!_sqPlan && _sqForVariant(pl) && !pl.markets_enabled) { _sqPlan = pl; }
});
}
Shopify?.analytics?.publish?.('stoq_accelerated_checkout_clicked', {
variant_id: variantId,
product_id: (_sqTrack.product && _sqTra |
| g('STOQ - no cart selling plan updates needed'); } }) .catch(error => { console.error('STOQ - error updating cart selling plans:', error); }); } }); } function storefrontGraphql(query, variables) { const cfg = window._RestockRocketConfig; if (!cfg.storefrontAccessToken || cfg.disableStorefrontApi === true) { return Promise.reject(new Error('Storefront API unavailable')); } return fetch( `https://${cfg.shop}/api/${cfg.storefrontApiVersion}/graphql.json`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Shopify-Storefront-Access-Token': cfg.storefrontAccessToken, }, body: JSON.stringify({ query: query, variables: variables }), } ) .then(function(response) { if (!response.ok) { throw new Error('Storefront API HTTP ' + response.status); } return response.json(); }) .then(function(body) { if (body && bodyF/D.errors && body.errors.length) { throw new Error('Storefront API errors: ' + body.errors.map(function(e) { return e && e.message; }).join(', ')); } return body && body.data; }); } function fetchStorefrontShopMetafield(key) { const cfg = window._RestockRocketConfig; const query = 'query StoqShopMetafield($namespace: String!, $key: String!) { shop { metafield(namespace: $namespace, key: $key) { value } } }'; return storefrontGraphql(query, { namespace: cfg.metafieldNamespace, key: key }) .then(function(data) { const value = data && data.shop && data.shop.metafield && data.shop.metafield.value; if (!value) { throw new Error('Storefront API returned no ' + key + ' metafield value'); } return JSON.parse(value); }); } (function loadStorefrontSettings() { const cfg = window._RestockRocketConfig; if (!cfg.storefrontAccessToken || cfg.disableStorefrontApi === true) return; function run() { // The live-settings read is one more shop | -level metafield fetch, so it // shares fetchStorefrontShopMetafield with the integrations/selling_plans // reads rather than re-issuing the same query + parse. fetchStorefrontShopMetafield('settings') .then(function(settings) { cfg.storefrontSettings = settings; console.debug('STOQ - stored live settings from Storefront API on config.storefrontSettings'); }) .catch(function(e) { console.debug('STOQ - Storefront settings fetch failed (non-fatal):', e && e.message); }); } if (typeof window.requestIdleCallback === 'function') { window.requestIdleCallback(run, { timeout: 5000 }); } else { setTimeout(run, 0); } })(); const cachedSettings = window._RestockRocketConfig.cachedSettings; const validCachedSettings = cachedSettings ? checkSettingsExpiry(cachedSettings) : null; if (validCachedSettings) { console.debug('STOQ - using cached settings'); initializeScripts(validCachedSettings); } else { consol e.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(error) { if (cachedSettings) { console.debug('STOQ - using expired cached settingsas fallback'); initializeScripts(cachedSettings); } else { console.error('STOQ - failed to load settings:', error); } }) .catch(function(e) { console.error(e) }) } function fetchEmbedConfig(endpoint, apply) { return fn/aetch( `${window._RestockRocketConfig.host}/api/v1/embed/${endpoint}.json`, { headers: { 'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop, 'ngrok-skip-browser-warning': 'skip' } } ) .then(function(response) { if (!response.ok) throw new Error(`Failed to fetch ${endpoint}`); return response.json(); }) .then(function(data) { try { apply(data); } catch (applyError) { console.error('STOQ - apply failed for ' + endpoint + ':', applyError); throw applyError; } }) .catch(function(error) { console.debug(`STOQ - using cached ${endpoint}:`, error.message); }); } function refreshShopConfig(source) { const cfg = window._RestockRocketConfig; const viaEmbed = function() { return fetchEmbedConfig(source.endpoint, source.apply); }; const flagOn = !!cfg.readFlags && cfg.readFlags[source.flag] === true; if (!flagOn || source.embedOnly == | = true) { return viaEmbed(); } return fetchStorefrontShopMetafield(source.metafieldKey) .then(function(value) { if (!source.isValid(value)) { throw new Error(source.metafieldKey + ' metafield is not a valid ' + source.endpoint + ' payload'); } source.apply(value); console.debug('STOQ - refreshed ' + source.endpoint + ' from the Storefront API'); }) .catch(function(error) { console.debug('STOQ - Storefront ' + source.endpoint + ' read failed, using embed:', error.message); return viaEmbed(); }); } function refreshIntegrations() { const cfg = window._RestockRocketConfig; return refreshShopConfig({ endpoint: 'integrations', metafieldKey: 'integrations', flag: 'enable_storefront_integrations_read', isValid: function(value) { return Array.isArray(value); }, apply: function(data) { cfg.integrations = data; } }); } function refreshSellingPlans(embedOnly) { const cfg = window._Resto ckRocketConfig; return refreshShopConfig({ embedOnly: embedOnly === true, endpoint: 'selling_plans', metafieldKey: 'cachedSellingPlans', flag: 'enable_storefront_selling_plans_read', isValid: function(value) { return !!value && Array.isArray(value.plans); }, apply: function(data) { cfg.sellingPlans = data.plans; cfg.disabledSellingPlanIds = data.disabled_plan_ids || []; if (data && data.read_flags && typeof data.read_flags === 'object' && !Array.isArray(data.read_flags)) { cfg.readFlags = data.read_flags; } } }); } function initializeScripts(settings) { settings = applyTranslations(settings); window._RestockRocketConfig.settings = settings; console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`); const forceEmbedSellingPlans = settings.force_embed_selling_plans === true; const staleRefresh = !window._RestockRocketConfig.isLiquidCacheFresh && !settings.disable_ref
| Shimano GRX 812 | |
| SHIFTERS | Shimano GRX 810 |
| BRAKE CALIPERS | Shimano GRX 810 |
| FRONT BRAKE ROTOR | Shimano RT66 160mm |
| REAR BRAKE ROTOR | Shimano RT66 160mm |
| BRAKE LEVERS | Shimano GRX 810 |
| HEADSET | Orbit 1.5 ZS, No.57-T |
| HANDLEBAR | Kona Road |
| STEM | Kona Road Deluxe |
| SEATPOST | TranzX Dropper +RAD Internal w/ Shimano Lever 31.6mm |
| SEAT CLAMP | Kona Clamp |
| GRIPS | Kona Cork Tape |
| SADDLE | WTB Volt |
| FRONT HUB | Formula 100x12mm |
| REAR HUB | Formula 142x12mm |
| SPOKES | Stainless 14g |
| RIMS | WTB HTZ i25 TCS 2.0 |
| FRONT TIRE | WTB Venture TCS w/ Puncture Protection 650x47c |
| REAR TIRE | WTB Venture TCS w/ Puncture Protection 650x47c |
| DRIVEUNIT | Shimano E7000 20MPH |
| BATTERY | Shimano 504Wh |
| DISPLAY | Shimano SC-E7000 Display |
| CHARGER | Shimano STEPS 2A |
| BATTERYLOCK | n/a |
| PAINT COLOR | Gloss Metallic Blue w/ Charcoal & Turquoise Decals |
| EXTRAS | n/a |
GEOMETRY
| SIZE | 50 | 52 | 54 | 56 | 58 | |
| 1 | ST LENGTH | 455 | 490 | 510 | 540 | 550 |
| 2 | TT LENGTH | 543 | 558 | 573 | 588 | 608 |
| 3 | REACH | 378 | 383 | 386 | 389 | 394 |
| 4 | STACK | 575 | 590 | 610 | 630 | 660 |
| 5 | STANDOVER | 721 | 749 | 772 | 799 | 818 |
| 6 | HT ANGLE | 70.5 | 70.5 | 71.0 | 71.0 | 71.0 |
| 7 | HT LENGTH | 137 | 153 | 175 | 197 | 230 |
| 8 | ST ANGLE | 74.0 | 73.5 | 73.0 | 72.5 | 72.0 |
| 9 | CS LENGTH | 440 | 440 | 440 | 440 | 440 |
| 10 | BB DROP | 75 | 75 | 72 | 72 | 70 |
| 11 | BB HEIGHT | 268 | 268 | 271 | 271 | 273 |
| 12 | WHEELBASE | 1042 | 1052 | 1058 | 1068 | 1084 |
| 13 | FRONT CENTER | 613 | 623 | 628 | 638 | 654 |
| 14 | FORK LENGTH | 410 | 410 | 410 | 410 | 410 |
| 15 | FORK OFFSET | 50 | 50 | 50 | 50 | 50 |

Frequently Asked Questions
-
Please get in touch with a member of the team either by phone (01313745324) or email ([email protected]) where on of the team will be more than happy to help.
ProjektRide Bike Shop Edinburgh
-
If the item is showing in stock, we aim to post the product within 24 hours. Please allow 5 working days to receive the item.
Postage is free on orders over £50. Orders under £50, our postage charge is £3.99.
We also have a physical store, if you are local please pop in -
ProjektRide Bike Shop Edinburgh



Motor :
Namibia (GBP£)
San Marino (EUR€)