colinappleyard.com Ads.txt file
<!doctype html>
<!--[if lt IE 7 ]><html class="ie ie6 no-js" lang="en"><![endif]-->
<!--[if IE 7 ]><html class="ie ie7 no-js" lang="en"><![endif]-->
<!--[if IE 8 ]><html class="ie ie8 no-js" lang="en"><![endif]-->
<!--[if IE 9 ]><html class="ie ie9 no-js" lang="en"><![endif]-->
<!--[if (gte IE 10)|!(IE)]><!-->
<html lang="en"
class="no-js">
<!--<![endif]-->
<head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><title>
DM Keith - New & Used Cars & Vans for sale | D. M. Keith
</title><meta name="description" content="DM Keith - Built on a strong passion for motor vehicles and an even stronger passion for excellent customer service." /><meta name="author" content="Bluesky Interactive" /><meta name="robots" content="index,follow,noodp,noydir" /><meta charset="utf-8" /><link rel="canonical" href="https://www.dmkeith.com/" />
<meta name="viewport"
content="width=device-width, initial-scale=1, user-scalable=yes" />
<!-- Favicons -->
<link rel="apple-touch-icon"
href="/assets/img/favicons/apple-touch-icon.png"
sizes="180x180">
<link rel="icon"
href="/assets/img/favicons/favicon-32-32.png"
sizes="32x32"
type="image/png">
<link rel="icon"
href="/assets/img/favicons/favicon-16-16.png"
sizes="16x16"
type="image/png">
<link rel="manifest"
href="/assets/img/favicons/manifest.json">
<link rel="mask-icon"
href="/assets/img/favicons/safari-pinned-tab.svg"
color="#2b6fad">
<link rel="icon"
href="/favicon.ico">
<meta name="msapplication-config"
content="/assets/img/favicons/browserconfig.xml">
<meta name="theme-color"
content="#2b6fad">
<!-- DNS Prefetch -->
<link rel="dns-prefetch"
href="https://ajax.googleapis.com/" />
<link rel="dns-prefetch"
href="https://cdnjs.cloudflare.com/" />
<link rel="dns-prefetch"
href="https://stackpath.bootstrapcdn.com/" />
<link rel="dns-prefetch"
href="https://bluesky-cogstock.cdn.imgeng.in/" />
<script>
window.bsk = {
pageType: 'default'
}
</script>
<!--[if lt IE 9]>
<script>
document.createElement('figure');
document.createElement('details');
document.createElement('figcaption');
document.createElement('main');
document.createElement('header');
document.createElement('nav');
document.createElement('section');
document.createElement('article');
document.createElement('aside');
document.createElement('footer');
</script>
<![endif]-->
<script type="application/ld+json">
{
"@context" : "https://schema.org",
"@type" : "Organization",
"name" : "DM Keith",
"url" : "https://www.dmkeith.com",
"sameAs" : [
]
}
</script>
<script>
// set cookie prefences
var CookiePreferencesExpiryDays = 7; // expiry days
</script>
<!-- Vendor Files --><script src="/dist/jquery.3fef7975a8fa58ae42e4.js"></script><link rel="preload" href="/dist/bskels.6ad741319b1d133996ae.js" as="script"><script defer="defer" src="/dist/bskels.6ad741319b1d133996ae.js"></script><script defer="defer" src="/dist/main.220135da4332a0223d10.js"></script><link href="/dist/vendor.ee7007c720eef852d912.css" rel="stylesheet"><link href="/dist/bootstrap.84bb4ee04501409f24cc.css" rel="stylesheet"><link href="/dist/main.0a435f1a76ce58f96636.css" rel="stylesheet">
<script>
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'dataLayerLoad': true,
'visitorPrimarySegment' : '',
'viewPort' : [{
'width' : Math.max(document.documentElement.clientWidth, window.innerWidth || 0),
'height' : Math.max(document.documentElement.clientHeight, window.innerHeight || 0),
}],
});
// key-text tracking for CMS
window.addEventListener('DOMContentLoaded', (event) => {
var keyTextEls = document.querySelectorAll(".tracking__key-text");
if (keyTextEls.length !== 0){
var keyTextArray = [];
for (var i = 0; i < keyTextEls.length; i++) {
keyTextArray.push(keyTextEls[i].innerHTML);
}
window.dataLayer.push({
'trackingKeyText' : keyTextArray
});
}
});
</script>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-TKM3RFP');</script>
<!-- End Google Tag Manager -->
<script>
window.dataLayer.push({
'pageType': 'Home'
});
window.bsk = {
pageType: 'Home'
}
</script>
<style>
.ae-hero {
order: 1;
}
.ae-search {
order: 2;
}
.ae-intro {
order: 3;
}
.ae-brands {
order: 4;
}
.ae-spotlights-top {
order: 5;
}
.ae-find-us {
order: 6;
}
.ae-spotlights {
order: 7;
}
.ae-stock {
order: 8;
}
.ae-reviews {
order: 9;
}
.ae-about {
order: 10;
}
.ae-timeline {
order: 11;
}
</style>
<script>
console.log("You are viewing: ")
console.log("VisitorPrimarySegment: ")
</script></head>
<body v-cloak
class="page">
<form method="post" action="/" id="form1">
<input type="hidden" name="__VSTATE" id="__VSTATE" value="BcFJYoIwAADAB3kAKoscekC2EBAiymJvCcFCoiAEsPH1nam3lS3ZfE8W9xGSlARP9+d0X8cVf0o1TbOIeopzaqbFDEKdGKzXL8u2rbdMFAKQffv3iALjKkG5t3c83+aLiuOvadZ3rYb6KpPOLLz3djSteHIKDREo8mEYszpoIP8MHu3aAk2SR7rvci08FhxXsSh9z5aBt5AVt0uqIsuDAaQXbr6WDWoNZjlG+sEG3DTCRAHsalyhVorE8t337qXEND4hO8JV5fcUMCOnz7ymmndQO3FLbGs864/R6s0WyW34ZQpYDzdeNk3tDJWA8X1Syo5WsmwImzs0Uwnij4Tn738=" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="" />
<script src="/ScriptResource.axd?d=qph9tUZ6hGPLbkznkRkqTW2DtLx4UZiB6nIO8r0q5sF4jSMyz0f5ot7lvTfg2SgkEtq96hdqqofDdDFp_sSj8MP0xW_-T8ApJbCoP5aOPmdCeDBEicIw3Comnb6qkGk90&t=7a2ecbb7" type="text/javascript"></script>
<a class="skippy visually-hidden visually-hidden-focusable"
href="#main"><span class="skippy__text">Skip to main
content</span></a>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-TKM3RFP"
height="0"
width="0"
style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<header class="shadow-sm header header_theme_default fixed-top">
<bsk-header-top>
<span slot="right-nav"
class="ms-auto">
<ul class="nav text-white align-items-center">
<li class="nav-item me-4">
<a href="/meet-the-family/"
class="text-decoration-underline text-white fw-bold"><i class="fa-solid fa-award me-2"></i>About us</a>
</li>
<li class="nav-item me-4">
<a href="/value-plus/"
class="text-decoration-underline text-white fw-bold"><i class="fa-solid fa-circle-plus me-2"></i>Value plus</a>
</li>
<li class="nav-item me-4">
<a href="https://dmkeith.zohorecruit.eu/jobs/Careers"
class="text-decoration-underline text-white fw-bold"
target="_blank"><i class="fa-solid fa-screen-users me-2"></i>Careers</a>
</li>
<li class="nav-item me-4">
<a href="/news/"
class="text-decoration-underline text-white fw-bold"><i class="fa-regular fa-newspaper me-2"></i>News</a>
</li>
<li class="nav-item me-4">
<bsk-shortlist-global-heart child-class="text-white fw-bold"></bsk-shortlist-global-heart>
</li>
<li class="nav-item me-4">
<a href="/contact-us/"
class="btn btn-primary btn-sm fw-bold"><i class="fa-light fa-envelope me-2"></i>Contact us</a>
</li>
<li class="nav-item">
<a href="/find-us/"
class="btn btn-secondary btn-sm fw-bold"><i class="fa-light fa-location-pin me-2"></i>Find us</a>
</li>
</ul>
</span>
</bsk-header-top>
<bsk-header hamburger="spin"
expand="navbar-expand-1xl"
img-src="https://bluesky.sirv.com/Websites/DM%20Keith/Images/Logos/logo.png"
img-width="213"
img-height="78">
<span slot="nav"
class="ms-auto">
<ul class="navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle"
href="/new-cars/"
id="cars-dd"
role="button"
data-bs-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false">Cars</a>
<ul class="dropdown-menu"
aria-labelledby="cars-dd">
<li>
<a class="dropdown-item"
href="/search/?hasImages=1">Search All Stock</a>
</li>
<li>
<a class="dropdown-item"
href="/search/?hasImages=1&newUsed=New">New Cars in Stock</a>
</li>
<li>
<a class="dropdown-item"
href="/new-cars/">New Cars</a>
</li>
<li>
<a class="dropdown-item"
href="/search/?hasImages=1&newUsed=Used">Used Cars</a>
</li>
<li>
<a class="dropdown-item"
href="/value-my-car/">Value Your Car</a>
</li>
<li>
<a class="dropdown-item"
href="/finance/">Finance Your New Car</a>
</li>
<li>
<a class="dropdown-item"
href="/protect-your-vehicle/">Protect My Vehicle</a>
</li>
<li>
<a class="dropdown-item"
href="/coming-soon/">Coming Soon</a>
</li>
<li>
<a class="dropdown-item"
href="/offers/?filter=New+Cars">New Car Offers</a>
</li>
<li>
<a class="dropdown-item"
href="/used-car-offers/">Used Car Offers</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle"
href="/"
id="vans-dd"
role="button"
data-bs-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false">Vans</a>
<ul class="dropdown-menu"
aria-labelledby="vans-dd">
<li>
<a class="dropdown-item"
href="/search/?hasImages=1&vehicleType=Van">Search all Van Stock</a>
</li>
<li>
<a class="dropdown-item"
href="/search/?hasImages=1&newUsed=New&vehicleType=Van">New Vans in Stock</a>
</li>
<li>
<a class="dropdown-item"
href="/ford-pro/new-vans/">New Vans</a>
</li>
<li>
<a class="dropdown-item"
href="/search/?hasImages=1&newUsed=Used&vehicleType=Van">Used Vans</a>
</li>
<li>
<a class="dropdown-item"
href="/value-my-car/">Value Your Vehicle</a>
</li>
<li>
<a class="dropdown-item"
href="/offers/?filter=New+Vans">Van Offers</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle"
href="/motability/"
id="vans-dd"
role="button"
data-bs-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false">Motability</a>
<ul class="dropdown-menu"
aria-labelledby="vans-dd">
<li>
<a class="dropdown-item"
href="/motability/">Motability Explained</a>
</li>
<li>
<a class="dropdown-item"
href="/electric-vehicle/ ">Motability Electric Vehicles</a>
</li>
<li>
<a class="dropdown-item"
href="/offers/?filter=Motability">Motability Offers</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle"
href="/electric/"
id="vans-dd"
role="button"
data-bs-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false">Electric</a>
<ul class="dropdown-menu"
aria-labelledby="vans-dd">
<li>
<a class="dropdown-item"
href="/electric/clear-simple-advice/">Electric Explained</a>
</li>
<li>
<a class="dropdown-item"
href="/search/?hasImages=1&fuelType=Electric">Electric Vehicles in Stock</a>
</li>
<li>
<a class="
dropdown-item"
href="/search/?hasImages=1&newUsed=Used&fuelType=Petrol+Hybrid,Petrol+Parallel+PHEV,Petrol+Plug-In+Hybrid,Petrol%2FElectric+Hybrid">Hybrid Vehicles in Stock</a>
</li>
<li>
<a class="dropdown-item"
href="/offers/?filter=Electric+Hybrid">Electric & Hybrid Offers</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle"
href="/"
id="vans-dd"
role="button"
data-bs-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false">Brands</a>
<ul class="dropdown-menu"
aria-labelledby="vans-dd">
<li>
<a class="dropdown-item"
href="/skoda/">Skoda</a>
</li>
<li>
<a class="dropdown-item"
href="/seat/">SEAT</a>
</li>
<li>
<a class="dropdown-item"
href="/honda/">Honda</a>
</li>
<li>
<a class="dropdown-item"
href="/cupra/">CUPRA</a>
</li>
<li>
<a class="dropdown-item"
href="/ford/">Ford</a>
</li>
<li>
<a class="dropdown-item"
href="/ford-pro/">Ford Pro</a>
</li>
<li>
<a class="dropdown-item"
href="/kia/">Kia</a>
</li>
<li>
<a class="dropdown-item"
href="/byd/">BYD</a>
</li>
<li>
<a class="dropdown-item"
href="/suzuki/">Suzuki</a>
</li>
<li>
<a class="dropdown-item"
href="/nissan/">Nissan</a>
</li>
<li>
<a class="dropdown-item"
href="/subaru/">Subaru</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle"
href="/"
id="vans-dd"
role="button"
data-bs-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false">Service & MOT</a>
<ul class="dropdown-menu"
aria-labelledby="vans-dd">
<li>
<a class="dropdown-item"
href="https://dmkeithltd.service123.co.uk/"
target="_blank">Make a Booking</a>
</li>
<li><a class="dropdown-item"
href="/parts-and-accessories/">
Parts & Accessories
</a></li>
<li><a class="dropdown-item"
href="/service-plans/">
Service Plans
</a></li>
<li><a class="dropdown-item"
href="/our-promise/">
Our Promise
</a></li>
<li><a class="dropdown-item"
href="/its-fixed-servicing/">
It's Fixed Servicing
</a></li>
<li><a class="dropdown-item"
href="/why-choose-dm-keith/">
Why Choose Us
</a></li>
<li><a class="dropdown-item"
href="/flexible-payment-options/">
Buy Now Pay Later
</a></li>
<li>
<a class="dropdown-item"
href="/offers/?filter=Servicing+and+Repairs">Service Offers</a>
</li>
<li>
<a class="dropdown-item"
href="/offers/?filter=Parts">Parts Offers</a>
</li>
<li>
<a class="dropdown-item"
href="/offers/?filter=Accessories">Accessories Offers</a>
</li>
</ul>
</li>
<li class="nav-item"><a class="nav-link"
href="/bodyshop/">Body Shop</a></li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle"
href="/dm-keith-business/"
id="vans-dd"
role="button"
data-bs-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false">Business</a>
<ul class="dropdown-menu"
aria-labelledby="vans-dd">
<li>
<a class="dropdown-item"
href="/dm-keith-business/">D M Keith Fleet & Business</a>
</li>
<li>
<a class="dropdown-item"
href="/offers/?filter=Business">Business Leasing Offers</a>
</li>
<li>
<a class="dropdown-item"
href="/dm-keith-business/faqs/">FAQs</a>
</li>
<li>
<a class="dropdown-item"
href="/ev-benefits-for-business/">EV Benefits for Business</a>
</li>
<li>
<a class="dropdown-item"
href="/business-finance-options/">Business Finance Options</a>
</li>
</ul>
</li>
<li class="nav-item"><a class="nav-link pe-xl-0"
href="/value-my-car/">Sell your car</a></li>
<span class="d-lg-none">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle"
href="/meet-the-family/"
id="vans-dd"
role="button"
data-bs-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false">About Us</a>
<ul class="dropdown-menu"
aria-labelledby="vans-dd">
<li>
<a class="dropdown-item"
href="/value-plus/">Value Plus</a>
</li>
<li>
<a class="dropdown-item"
href="https://dmkeith.zohorecruit.eu/jobs/Careers"
target="_blank">Careers</a>
</li>
<li>
<a class="dropdown-item"
href="/news/">News</a>
</li>
<li>
<a class="dropdown-item"
href="/find-us/">Find us</a>
</li>
</ul>
</li>
<li class="nav-item"><a class="nav-link pe-xl-0"
href="/contact-us/">Contact us</a></li>
<li class="nav-item"><a class="nav-link pe-xl-0"
href="/shortlist/">Shortlist</a></li>
</span>
</ul>
</span>
</bsk-header>
</header>
<main class="main ae-wrapper"
id="main">
<!-- Banner Slider : START -->
<div class="container-fluid ae-hero">
<bsk-carousel-banner dots="true"
arrows="false"
v-cloak>
<span slot="slides">
<bsk-carousel-banner-slide v-cloak
headline="Welcome to"
subheading="D. M. Keith"
synopsis="Owned and run by our family for over 60 years, we have a reputation for friendly, personal service and great value"
button-text=""
link-url=""
img-src="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/gjxlowln/tartan.png"
img-src-small="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/matjqat5/home-banner.jpg"
img-src-large="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/lzjdwzyu/home-banner-large.jpg"
youtube-id="jtLv8ycdZN8"
delay-video-load="false">
</bsk-carousel-banner-slide>
</span>
</bsk-carousel-banner>
</div>
<!-- Banner Slider : END --><!-- Speedy Search : START -->
<section class="bg-primary-tint ae-search">
<div class="container">
<section>
<div class="py-5 home-search"
id="speedy-search">
<bsk-tabs-toggle tab-one-label="Keyword"
tab-two-label="Advanced Search"
target="#tabs"
class="search-toggle"></bsk-tabs-toggle>
<bsk-tabs id="tabs"
tabs="Keyword,Advanced"
active-index="0">
<div slot="keyword">
<div class="row justify-content-between">
<script defer="defer" src="/dist/tinysearch.a6d8a2726dfd80efdc7e.js"></script><link href="/dist/tinysearch.c4708e23f6169896dddf.css" rel="stylesheet">
<div id="hs-tiny-search"
class="hs-asset"
data-search-url="/home-search"
></div>
</div>
</div>
<div slot="advanced">
<div id="tinysearch-advanced"></div>
</div>
</bsk-tabs>
<span class="container sm mt-4">
<div class="d-flex flex-row flex-wrap justify-content-center align-items-center gap-3">
<a class="btn btn-sm btn-outline-white"
id="toggle-icon"
data-bs-toggle="collapse"
href="#collapseLifestyle"
role="button"
aria-expanded="false"
aria-controls="collapseLifestyle">Lifestyle search</a>
<a class="btn btn-sm btn-outline-white"
href="/value-my-car/">Sell your car</a>
<a class="btn btn-sm btn-outline-white"
href="/search/?hasImages=1&vehicleType=Van">Used Vans</a>
<a class="btn btn-sm btn-outline-white"
href="/search/?hasImages=1&transmissionType=Automatic">Automatic</a>
</div>
<div class="collapse"
id="collapseLifestyle">
<div class="px-0 bg-transparent">
<div class="lifestyle-search pt-5">
<ul class="d-flex align-items-end justify-content-center gap-3 flex-wrap list-unstyled">
<li>
<a href="/search/?hasImages=1&bodyType=Hatchback"
class="text-decoration-none px-4 py-5 bg-white rounded-circle">
<img src="https://bluesky.sirv.com/Websites/DM%20Keith/Images/search/hatchback.png"
alt=""
loading="lazy"
width="70">
<span>Hatchback</span>
</a>
</li>
<li>
<a href="/search/?hasImages=1&bodyType=Estate"
class="text-decoration-none px-4 py-5 bg-white rounded-circle">
<img src="https://bluesky.sirv.com/Websites/DM%20Keith/Images/search/estate.png"
alt=""
loading="lazy"
width="70">
<span>Estate</span>
</a>
</li>
<li>
<a href="/search/?hasImages=1&bodyType=Saloon"
class="text-decoration-none px-4 py-5 bg-white rounded-circle">
<img src="https://bluesky.sirv.com/Websites/DM%20Keith/Images/search/saloon.png"
alt=""
loading="lazy"
width="70">
<span>Saloon</span>
</a>
</li>
<li>
<a href="/search/?hasImages=1&bodyType=SUV"
class="text-decoration-none px-4 py-5 bg-white rounded-circle">
<img src="https://bluesky.sirv.com/Websites/DM%20Keith/Images/search/suv.png"
alt=""
loading="lazy"
width="70">
<span>SUV</span>
</a>
</li>
<li>
<a href="/search/?hasImages=1&bodyType=MPV"
class="text-decoration-none px-4 py-5 bg-white rounded-circle">
<img src="https://bluesky.sirv.com/Websites/DM%20Keith/Images/search/mpv.png"
alt=""
loading="lazy"
width="70">
<span>MPV</span>
</a>
</li>
<li>
<a href="/search/?hasImages=1&bodyType=Double+Cab+Pick-up"
class="text-decoration-none px-4 py-5 bg-white rounded-circle">
<img src="https://bluesky.sirv.com/Websites/DM%20Keith/Images/search/pick-up.png"
alt=""
loading="lazy"
width="70">
<span>Pick-up</span>
</a>
</li>
<li>
<a href="/search/?hasImages=1&fuelType=Electric,Hybrid"
class="text-decoration-none px-4 py-5 bg-white rounded-circle">
<img src="https://bluesky.sirv.com/Websites/DM%20Keith/Images/search/electric.png"
alt=""
loading="lazy"
width="70">
<span>Electric & Hybrid</span>
</a>
</li>
</ul>
</div>
</div>
</div>
</span>
</div>
</section>
</div>
</section>
<!-- Speedy Search : END -->
<section class="home-brands section-mb-2 ae-intro">
<div class="container">
<bsk-cms-grid><span slot='cms-grid'><div class="umb-grid">
<div class="grid-section">
<div >
<div class="container">
<div class="row c">
<div class="col-lg-12 column">
<div class='text-align-center'>
<h2>World’s leading manufacturers</h2>
<div class="tl-grid-html-embed">
<p class="h5">Consistently delivering quality and expertise you can depend on. Whether you're in the market for your ideal vehicle or it's time for a service, our dedicated team is here to guide you at every step.</p>
</div>
<div class="advanced__textarea">
<p>With 15 locations across Yorkshire and Lincolnshire, we offer an extensive selection of new and used vehicles. Our inventory features an impressive lineup of top brands, including Å koda, SEAT, Honda, Cupra, Ford, Ford Pro, Kia, BYD, Suzuki, Subaru, Nissan Aftersales and Motability, ensuring we have the right vehicle to meet your needs and lifestyle.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></span></bsk-cms-grid>
</div>
</section>
<section class="home-brands section-mb-2 ae-brands">
<div class="container">
<div class="row justify-content-center brands">
<bsk-brands transition-speed="1s"
is="logo"
class="col-6 col-lg-4 col-xl-2 mb-0 mb-lg-6 p-0 brand-logo"
img-src="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/jpxpotte/skoda.png"
title=""
link-url="/skoda"
body=""
btn-text="">
</bsk-brands>
<bsk-brands transition-speed="1s"
is="logo"
class="col-6 col-lg-4 col-xl-2 mb-0 mb-lg-6 p-0 brand-logo"
img-src="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/s5hmyq3w/seat.png"
title=""
link-url="/seat"
body=""
btn-text="">
</bsk-brands>
<bsk-brands transition-speed="1s"
is="logo"
class="col-6 col-lg-4 col-xl-2 mb-0 mb-lg-6 p-0 brand-logo"
img-src="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/qnbhk4de/honda.png"
title=""
link-url="/honda/"
body=""
btn-text="">
</bsk-brands>
<bsk-brands transition-speed="1s"
is="logo"
class="col-6 col-lg-4 col-xl-2 mb-0 mb-lg-6 p-0 brand-logo"
img-src="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/fb5d3qn4/cupra.png"
title=""
link-url="/cupra"
body=""
btn-text="">
</bsk-brands>
<bsk-brands transition-speed="1s"
is="logo"
class="col-6 col-lg-4 col-xl-2 mb-0 mb-lg-6 p-0 brand-logo"
img-src="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/3rcjj2ul/ford.png"
title=""
link-url="/ford/"
body=""
btn-text="">
</bsk-brands>
<bsk-brands transition-speed="1s"
is="logo"
class="col-6 col-lg-4 col-xl-2 mb-0 mb-lg-6 p-0 brand-logo"
img-src="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/hphjyb1c/ford-pro.png"
title=""
link-url="/ford-pro/"
body=""
btn-text="">
</bsk-brands>
<bsk-brands transition-speed="1s"
is="logo"
class="col-6 col-lg-4 col-xl-2 mb-0 mb-lg-6 p-0 brand-logo"
img-src="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/sepdos5a/kia.png"
title=""
link-url="/kia"
body=""
btn-text="">
</bsk-brands>
<bsk-brands transition-speed="1s"
is="logo"
class="col-6 col-lg-4 col-xl-2 mb-0 mb-lg-6 p-0 brand-logo"
img-src="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/2uobzn0p/byd.png"
title=""
link-url="/byd"
body=""
btn-text="">
</bsk-brands>
<bsk-brands transition-speed="1s"
is="logo"
class="col-6 col-lg-4 col-xl-2 mb-0 mb-lg-6 p-0 brand-logo"
img-src="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/nbjpvezf/suzuki.png"
title=""
link-url="/suzuki"
body=""
btn-text="">
</bsk-brands>
<bsk-brands transition-speed="1s"
is="logo"
class="col-6 col-lg-4 col-xl-2 mb-0 mb-lg-6 p-0 brand-logo"
img-src="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/ugsaxwq5/nissan.png"
title=""
link-url="/nissan"
body=""
btn-text="">
</bsk-brands>
<bsk-brands transition-speed="1s"
is="logo"
class="col-6 col-lg-4 col-xl-2 mb-0 mb-lg-6 p-0 brand-logo"
img-src="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/rmualco3/subaru-logo.png"
title=""
link-url="/subaru"
body=""
btn-text="">
</bsk-brands>
</div>
</div>
</section>
<section class="section-mb-2 ae-spotlights-top">
<div class="container-fluid">
<div class="row justify-content-center px-1">
<div class="col-12 col-lg-6 col-xl-4 mb-3 px-2">
<a href="/new-cars"
class="spotlight__link"
>
<div class="mb-1 mb-lg-2 overflow-hidden border-0 flex-row large-spotlight">
<div class="card-body p-0 gap-2 overflow-hidden flex-col">
<picture>
<img src="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/chfmf5kq/new-cars.png"
alt="New Cars" />
</picture>
<div class="text__inner">
<div class="overlay"></div>
<h3 class="card-title mb-0 text-shadow">
New Cars
<i class="fa-light fa-arrow-right fa-border d-none d-md-block"></i>
</h3>
<p class="card-text mb-0 d-none d-md-block">
View our award-winning range of new Škoda, SEAT, CUPRA, Honda, Ford, Kia, BYD & now Suzuki and Subaru cars. Book your test drive today or reserve online for just £99.
</p>
</div>
</div>
</div>
</a>
</div><div class="col-12 col-lg-6 col-xl-4 mb-3 px-2">
<a href="/search"
class="spotlight__link"
>
<div class="mb-1 mb-lg-2 overflow-hidden border-0 flex-row large-spotlight">
<div class="card-body p-0 gap-2 overflow-hidden flex-col">
<picture>
<img src="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/sffckmup/used-cars.png"
alt="Used Cars" />
</picture>
<div class="text__inner">
<div class="overlay"></div>
<h3 class="card-title mb-0 text-shadow">
Used Cars
<i class="fa-light fa-arrow-right fa-border d-none d-md-block"></i>
</h3>
<p class="card-text mb-0 d-none d-md-block">
Driving made easy at D. M. Keith. All of our used cars come with a minimum 12 month warranty and up to an 88 point safety check.
</p>
</div>
</div>
</div>
</a>
</div><div class="col-12 col-lg-6 col-xl-4 mb-3 px-2">
<a href="/value-plus/"
class="spotlight__link"
>
<div class="mb-1 mb-lg-2 overflow-hidden border-0 flex-row large-spotlight">
<div class="card-body p-0 gap-2 overflow-hidden flex-col">
<picture>
<img src="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/bkadz04z/loyalty.jpg"
alt="Loyalty Scheme " />
</picture>
<div class="text__inner">
<div class="overlay"></div>
<h3 class="card-title mb-0 text-shadow">
Loyalty Scheme
<i class="fa-light fa-arrow-right fa-border d-none d-md-block"></i>
</h3>
<p class="card-text mb-0 d-none d-md-block">
Reduced price MOTs*, £250 towards next purchase, priority access and multiple more offers available when you join our loyalty scheme.Loyalty Scheme
</p>
</div>
</div>
</div>
</a>
</div><div class="col-12 col-lg-6 col-xl-4 mb-3 px-2">
<a href="https://dmkeithltd.service123.co.uk/"
class="spotlight__link"
target="_blank"
>
<div class="mb-1 mb-lg-2 overflow-hidden border-0 flex-row large-spotlight">
<div class="card-body p-0 gap-2 overflow-hidden flex-col">
<picture>
<img src="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/4u5pvrmg/book-a-service.jpg"
alt="Book a service or MOT" />
</picture>
<div class="text__inner">
<div class="overlay"></div>
<h3 class="card-title mb-0 text-shadow">
Book a service or MOT
<i class="fa-light fa-arrow-right fa-border d-none d-md-block"></i>
</h3>
<p class="card-text mb-0 d-none d-md-block">
Book your service or MOT with us with a few quick and easy steps.
</p>
</div>
</div>
</div>
</a>
</div><div class="col-12 col-lg-6 col-xl-4 mb-3 px-2">
<a href="/value-my-car"
class="spotlight__link"
>
<div class="mb-1 mb-lg-2 overflow-hidden border-0 flex-row large-spotlight">
<div class="card-body p-0 gap-2 overflow-hidden flex-col">
<picture>
<img src="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/bx2hyn2f/sell-your-car.jpg"
alt="Sell my car" />
</picture>
<div class="text__inner">
<div class="overlay"></div>
<h3 class="card-title mb-0 text-shadow">
Sell my car
<i class="fa-light fa-arrow-right fa-border d-none d-md-block"></i>
</h3>
<p class="card-text mb-0 d-none d-md-block">
Whether it’s time for you to upgrade your car or you simply don’t need your vehicle anymore, you will want to know how much your car is worth.
</p>
</div>
</div>
</div>
</a>
</div><div class="col-12 col-lg-6 col-xl-4 mb-3 px-2">
<a href="/electric/clear-simple-advice/"
class="spotlight__link"
>
<div class="mb-1 mb-lg-2 overflow-hidden border-0 flex-row large-spotlight">
<div class="card-body p-0 gap-2 overflow-hidden flex-col">
<picture>
<img src="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/azwfjwzr/electric-hybrid.jpg"
alt="Electric and hybrid" />
</picture>
<div class="text__inner">
<div class="overlay"></div>
<h3 class="card-title mb-0 text-shadow">
Electric and hybrid
<i class="fa-light fa-arrow-right fa-border d-none d-md-block"></i>
</h3>
<p class="card-text mb-0 d-none d-md-block">
Electric vehicles can be a confusing subject, but don’t worry we’re here to help you with clear advice to find the right vehicle for you.
</p>
</div>
</div>
</div>
</a>
</div>
</div>
</div>
</section>
<section class="ae-spotlights">
<div class="umb-grid">
<div class="grid-section">
<div class='info-spotlights bg-info'>
<div class="container">
<div class="row c">
<div class="col-md-4 column">
<div >
<div class="tl-grid-html-embed">
<i class="fa-light fa-shield-check fa-2xl text-accent pt-4 pb-6"></i>
</div>
<h3>12 Month warranty on used vehicles</h3>
<div class="advanced__textarea">
<p>Ensuring you can drive with confidence. With our 12-month warranty, you can be assured that your vehicle is in good hands, backed by our commitment to quality and customer satisfaction. Drive away knowing you're covered for the year ahead!</p>
</div>
</div>
</div>
<div class="col-md-4 column">
<div >
<div class="tl-grid-html-embed">
<i class="fa-light fa-people-group fa-2xl text-accent pt-4 pb-6"></i>
</div>
<h3>Family owned and run since 1946</h3>
<div class="advanced__textarea">
<p>Proudly serving the community for generations. We understand the importance of relationships and we are committed to treating every customer like part of our own family. Experience the difference that decades of family tradition can make!</p>
</div>
</div>
</div>
<div class="col-md-4 column">
<div >
<div class="tl-grid-html-embed">
<i class="fa-light fa-circle-plus fa-2xl text-accent pt-4 pb-6"></i>
</div>
<h3>D.M. Keith value plus loyalty card</h3>
<div class="advanced__textarea">
<p>Packed with amazing offers and discounts, the D. M. Keith Value Plus Card is our way of welcoming you to the family. Provided free of charge to all retail customers who take a D. M. Keith Service Plan. The Value Plus Card also entitles you to priority access for all our group VIP events and product launches.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section><section id="find-us"
class="section-my-2 ae-find-us">
<bsk-cta-section is="find-us"
title="Find our convenient locations"
btn-text="Find your nearest"
single="false"
aspectRatio="4/3"
link="/find-us/">
<span slot="body-image">
<div class="umb-grid">
<div class="grid-section">
<div >
<div class="container">
<div class="row c">
<div class="col-md-12 column">
<div >
<div class="image-with-accreditation-wrapper">
<img src="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/1henjdod/ret_april_25_dmk_map_graphic_1024x576.png?&width=1500&center=0.5,0.5&mode=crop&scale=both" class="full-image">
</div>
<div class="c"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</span>
<span slot="body-text">
<div class="umb-grid">
<div class="grid-section">
<div >
<div class="container">
<div class="row c">
<div class="col-md-12 column">
<div class='text-center text-lg-start'>
<div class="tl-grid-html-embed">
<p class="h5">Across Yorkshire, Manchester and Lincolnshire, we’re never far away.</p>
</div>
<div class="advanced__textarea">
<p>Our widespread presence ensures that you have easy access to our range of services, whether you're looking to purchase a vehicle or need expert care from our Aftersales teams. No matter which location you visit, you can expect the same high standards of quality, expertise, and friendly service that define D. M. Keith.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</span>
</bsk-cta-section>
</section> <!-- Featured Cars : START -->
<section class="section-pt-2 section-pb-3 bg-light used-stock ae-stock">
<div class="container-xxl">
<bsk-cms-grid><span slot='cms-grid'><div class="umb-grid">
<div class="grid-section">
<div class='d-flex flex-column justify-content-center justify-content-lg-start mt-0 mb-4 container-wrapper-md text-align-center'>
<div class="container">
<div class="row c">
<div class="col-lg-12 column">
<div >
<h2>Explore our latest stock</h2>
<div class="advanced__textarea">
<p>Featuring a diverse selection of makes and models. Whether you're looking for the latest technology, fuel efficiency, or luxury features, our inventory offers something for everyone.</p>
<p><a href="/used-cars/" class="btn btn-primary d-lg-none">View all stock</a></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></span></bsk-cms-grid>
<bsk-tabs id="tabs"
tabs="Cars,Vans,Available Now"
active-index="0">
<a href="/search/?hasImages=1"
class="btn btn-primary d-none d-lg-block">View all stock</a>
<div slot="cars">
<div class="stock-carousel carousel-dark card-carousel slick">
<div id="Repeater_CarouselCars_RepeaterUpdatePanel">
<bsk-vehicle-card theme="bp"
id="car_4132416829350171969">
<script type="application/json"
id="vehicleCardData_4132416829350171969"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/pin-baa60c7cddc813e60da00e2f892036d4cfac2e1b.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "2019",
"manufacturer": "Suzuki",
"model": "Swift",
"version": "1.2 Dualjet SZ3 5dr",
"price": "9,250",
"stockid": "4132416829350171969",
"monthly": "~",
"url": "/used-car-details/used-suzuki-swift-12-dualjet-sz3-5dr-hatchback-burning-red-pearl-manual-petrol-hybrid/id-4132416829350171969/",
"colour" : "Burning Red pearl",
"index": 1,
"imgCount": 40,
"hasVideo": false,
"vat": "~"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/used-suzuki-swift-12-dualjet-sz3-5dr-hatchback-burning-red-pearl-manual-petrol-hybrid/id-4132416829350171969/','manufacturer' : 'Suzuki','model' : 'Swift','version' : '1.2 Dualjet SZ3 5dr','reg' : '~','year' : '2019','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-baa60c7cddc813e60da00e2f892036d4cfac2e1b.jpg?imgeng=/w_400/','price' : '9,250','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-baa60c7cddc813e60da00e2f892036d4cfac2e1b.jpg?imgeng=/w_400/','colour' : 'Burning Red pearl','mileage' : '14,236','fuelType' : 'Petrol Hybrid','fuelType' : 'Petrol Hybrid','transmission' : 'Manual','stockId' : '4132416829350171969'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="14,236 miles | Petrol Hybrid | Manual"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/suzuki/locations/9268/d-m-keith-suzuki-huddersfield/"><small>D. M. Keith Suzuki Huddersfield</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01484514954"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9268"><small>01484 514954</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_3916237432920234330">
<script type="application/json"
id="vehicleCardData_3916237432920234330"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/pin-3efb5f41bb5f31af1bb2c825ac587971ca6e10fd.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "2025",
"manufacturer": "Ford",
"model": "Capri",
"version": "210kW Premium 77kWh 5dr Auto",
"price": "33,676",
"stockid": "3916237432920234330",
"monthly": "~",
"url": "/used-car-details/used-ford-capri-210kw-premium-77kwh-5dr-auto-suv-grey-automatic-electric/id-3916237432920234330/",
"colour" : "Grey",
"index": 2,
"imgCount": 40,
"hasVideo": false,
"vat": "~"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/used-ford-capri-210kw-premium-77kwh-5dr-auto-suv-grey-automatic-electric/id-3916237432920234330/','manufacturer' : 'Ford','model' : 'Capri','version' : '210kW Premium 77kWh 5dr Auto','reg' : '~','year' : '2025','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-3efb5f41bb5f31af1bb2c825ac587971ca6e10fd.jpg?imgeng=/w_400/','price' : '33,676','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-3efb5f41bb5f31af1bb2c825ac587971ca6e10fd.jpg?imgeng=/w_400/','colour' : 'Grey','mileage' : '12,174','fuelType' : 'Electric','fuelType' : 'Electric','transmission' : 'Automatic','stockId' : '3916237432920234330'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="12,174 miles | Electric | Automatic"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/ford/locations/9276/d-m-keith-ford-leeds/"><small>D. M. Keith Ford Leeds</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01132634222"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9276"><small>0113 2634222</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_3700065750318336586">
<script type="application/json"
id="vehicleCardData_3700065750318336586"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/pin-51089047c7e41e9a749ae3a72329f310a2ec92d8.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "2025",
"manufacturer": "Ford",
"model": "Puma Gen-E",
"version": "123kW Premium 43kWh 5dr Auto",
"price": "24,673",
"stockid": "3700065750318336586",
"monthly": "~",
"url": "/used-car-details/used-ford-puma-gen-e-123kw-premium-43kwh-5dr-auto-suv-yellow-automatic-electric/id-3700065750318336586/",
"colour" : "Yellow",
"index": 3,
"imgCount": 40,
"hasVideo": false,
"vat": "~"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/used-ford-puma-gen-e-123kw-premium-43kwh-5dr-auto-suv-yellow-automatic-electric/id-3700065750318336586/','manufacturer' : 'Ford','model' : 'Puma Gen-E','version' : '123kW Premium 43kWh 5dr Auto','reg' : '~','year' : '2025','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-51089047c7e41e9a749ae3a72329f310a2ec92d8.jpg?imgeng=/w_400/','price' : '24,673','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-51089047c7e41e9a749ae3a72329f310a2ec92d8.jpg?imgeng=/w_400/','colour' : 'Yellow','mileage' : '2,740','fuelType' : 'Electric','fuelType' : 'Electric','transmission' : 'Automatic','stockId' : '3700065750318336586'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="2,740 miles | Electric | Automatic"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/ford/locations/9276/d-m-keith-ford-leeds/"><small>D. M. Keith Ford Leeds</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01132634222"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9276"><small>0113 2634222</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_4058674762008186436">
<script type="application/json"
id="vehicleCardData_4058674762008186436"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/pin-ab39dbfa756f3977ed8dad7ed8841a8418e54e49.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "2018",
"manufacturer": "Ford",
"model": "Focus",
"version": "St-2 Turbo",
"price": "14,300",
"stockid": "4058674762008186436",
"monthly": "331.66",
"url": "/used-car-details/used-ford-focus-st-2-turbo-hatchback-blue-manual-petrol/id-4058674762008186436/",
"colour" : "Blue",
"index": 4,
"imgCount": 40,
"hasVideo": false,
"vat": "~"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/used-ford-focus-st-2-turbo-hatchback-blue-manual-petrol/id-4058674762008186436/','manufacturer' : 'Ford','model' : 'Focus','version' : 'St-2 Turbo','reg' : '18','year' : '2018','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-ab39dbfa756f3977ed8dad7ed8841a8418e54e49.jpg?imgeng=/w_400/','price' : '14,300','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-ab39dbfa756f3977ed8dad7ed8841a8418e54e49.jpg?imgeng=/w_400/','colour' : 'Blue','mileage' : '48,178','fuelType' : 'Petrol','fuelType' : 'Petrol','transmission' : 'Manual','stockId' : '4058674762008186436'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="48,178 miles | Petrol | Manual"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/ford/locations/9276/d-m-keith-ford-leeds/"><small>D. M. Keith Ford Leeds</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01132634222"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9276"><small>0113 2634222</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_3700061369485841734">
<script type="application/json"
id="vehicleCardData_3700061369485841734"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/pin-e6ec9c9bd5cf8327810dd106cb18af9c5499f8f7.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "2017",
"manufacturer": "Skoda",
"model": "Kodiaq",
"version": "2.0 TDI Edition 4x4 5dr [7 Seat]",
"price": "16,995",
"stockid": "3700061369485841734",
"monthly": "366.08",
"url": "/used-car-details/used-skoda-kodiaq-20-tdi-edition-4x4-5dr-7-sea-suv-white-manual-diesel/id-3700061369485841734/",
"colour" : "White",
"index": 5,
"imgCount": 4,
"hasVideo": false,
"vat": "~"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/used-skoda-kodiaq-20-tdi-edition-4x4-5dr-7-sea-suv-white-manual-diesel/id-3700061369485841734/','manufacturer' : 'Skoda','model' : 'Kodiaq','version' : '2.0 TDI Edition 4x4 5dr [7 Seat]','reg' : '67','year' : '2017','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-e6ec9c9bd5cf8327810dd106cb18af9c5499f8f7.jpg?imgeng=/w_400/','price' : '16,995','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-e6ec9c9bd5cf8327810dd106cb18af9c5499f8f7.jpg?imgeng=/w_400/','colour' : 'White','mileage' : '63,345','fuelType' : 'Diesel','fuelType' : 'Diesel','transmission' : 'Manual','stockId' : '3700061369485841734'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="63,345 miles | Diesel | Manual"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/skoda/locations/9271/d-m-keith-skoda-leeds/"><small>D. M. Keith Škoda Leeds</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01132771777"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9271"><small>0113 2771777</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_3772124443867759701">
<script type="application/json"
id="vehicleCardData_3772124443867759701"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/pin-2fdb812f00f1703204b4f5fd22c07c114e19caa9.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "2025",
"manufacturer": "Skoda",
"model": "Kamiq",
"version": "1.0 TSI Monte Carlo Edition 5dr DSG",
"price": "22,495",
"stockid": "3772124443867759701",
"monthly": "292.28",
"url": "/used-car-details/used-skoda-kamiq-10-tsi-monte-carlo-edition-5d-suv-race-blue-automatic-petrol/id-3772124443867759701/",
"colour" : "Race Blue",
"index": 6,
"imgCount": 4,
"hasVideo": false,
"vat": "~"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/used-skoda-kamiq-10-tsi-monte-carlo-edition-5d-suv-race-blue-automatic-petrol/id-3772124443867759701/','manufacturer' : 'Skoda','model' : 'Kamiq','version' : '1.0 TSI Monte Carlo Edition 5dr DSG','reg' : '25','year' : '2025','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-2fdb812f00f1703204b4f5fd22c07c114e19caa9.jpg?imgeng=/w_400/','price' : '22,495','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-2fdb812f00f1703204b4f5fd22c07c114e19caa9.jpg?imgeng=/w_400/','colour' : 'Race Blue','mileage' : '13,102','fuelType' : 'Petrol','fuelType' : 'Petrol','transmission' : 'Automatic','stockId' : '3772124443867759701'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="13,102 miles | Petrol | Automatic"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/skoda/locations/9271/d-m-keith-skoda-leeds/"><small>D. M. Keith Škoda Leeds</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01132771777"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9271"><small>0113 2771777</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_3700063572736104012">
<script type="application/json"
id="vehicleCardData_3700063572736104012"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/pin-1736834d3cf06993a7642f95b4a2a4a2814481c0.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "2023",
"manufacturer": "Skoda",
"model": "Fabia",
"version": "1.0 TSI Colour Edition 5dr",
"price": "13,995",
"stockid": "3700063572736104012",
"monthly": "202.74",
"url": "/used-car-details/used-skoda-fabia-10-tsi-colour-edition-5dr-hatchback-silver-manual-petrol/id-3700063572736104012/",
"colour" : "Silver",
"index": 7,
"imgCount": 4,
"hasVideo": false,
"vat": "~"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/used-skoda-fabia-10-tsi-colour-edition-5dr-hatchback-silver-manual-petrol/id-3700063572736104012/','manufacturer' : 'Skoda','model' : 'Fabia','version' : '1.0 TSI Colour Edition 5dr','reg' : '73','year' : '2023','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-1736834d3cf06993a7642f95b4a2a4a2814481c0.jpg?imgeng=/w_400/','price' : '13,995','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-1736834d3cf06993a7642f95b4a2a4a2814481c0.jpg?imgeng=/w_400/','colour' : 'Silver','mileage' : '30,421','fuelType' : 'Petrol','fuelType' : 'Petrol','transmission' : 'Manual','stockId' : '3700063572736104012'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="30,421 miles | Petrol | Manual"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/skoda/locations/9271/d-m-keith-skoda-leeds/"><small>D. M. Keith Škoda Leeds</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01132771777"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9271"><small>0113 2771777</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_3700072368795505497">
<script type="application/json"
id="vehicleCardData_3700072368795505497"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/pin-2dd7c1d339c7d8cbf17a7ecdbf1a6a91084ce2e5.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "2021",
"manufacturer": "Skoda",
"model": "Octavia",
"version": "2.0 TSI vRS 5dr DSG",
"price": "26,795",
"stockid": "3700072368795505497",
"monthly": "451.18",
"url": "/used-car-details/used-skoda-octavia-20-tsi-vrs-5dr-dsg-estate-blue-automatic-petrol/id-3700072368795505497/",
"colour" : "Blue",
"index": 8,
"imgCount": 4,
"hasVideo": false,
"vat": "~"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/used-skoda-octavia-20-tsi-vrs-5dr-dsg-estate-blue-automatic-petrol/id-3700072368795505497/','manufacturer' : 'Skoda','model' : 'Octavia','version' : '2.0 TSI vRS 5dr DSG','reg' : '71','year' : '2021','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-2dd7c1d339c7d8cbf17a7ecdbf1a6a91084ce2e5.jpg?imgeng=/w_400/','price' : '26,795','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-2dd7c1d339c7d8cbf17a7ecdbf1a6a91084ce2e5.jpg?imgeng=/w_400/','colour' : 'Blue','mileage' : '24,918','fuelType' : 'Petrol','fuelType' : 'Petrol','transmission' : 'Automatic','stockId' : '3700072368795505497'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="24,918 miles | Petrol | Automatic"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/skoda/locations/9271/d-m-keith-skoda-leeds/"><small>D. M. Keith Škoda Leeds</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01132771777"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9271"><small>0113 2771777</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
</div>
</div>
</div>
<div slot="vans">
<div class="stock-carousel carousel-dark card-carousel slick">
<div id="Repeater_Carouselvans_RepeaterUpdatePanel">
<bsk-vehicle-card theme="bp"
id="car_92787427643">
<script type="application/json"
id="vehicleCardData_92787427643"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/b041dfba76404429b8dcba90d431e6e7.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "~",
"manufacturer": "Ford",
"model": "Transit Custom",
"version": "2.5 320 Duratec 11.8kWh Limited Crew Van Double Cab 5dr Petrol Plug-in Hybrid Auto L2 H1 Euro 6 (232 ps)",
"price": "38,475",
"stockid": "92787427643",
"monthly": "~",
"url": "/used-car-details/new-ford-transit-custom-25-320-duratec-118kwh-limite-combi-van-grey-automatic-petrol-plug-in-hybrid/id-92787427643/",
"colour" : "Grey",
"index": 1,
"imgCount": 9,
"hasVideo": false,
"vat": "~"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/new-ford-transit-custom-25-320-duratec-118kwh-limite-combi-van-grey-automatic-petrol-plug-in-hybrid/id-92787427643/','manufacturer' : 'Ford','model' : 'Transit Custom','version' : '2.5 320 Duratec 11.8kWh Limited Crew Van Double Cab 5dr Petrol Plug-in Hybrid Auto L2 H1 Euro 6 (232 ps)','reg' : '~','year' : '~','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/b041dfba76404429b8dcba90d431e6e7.jpg?imgeng=/w_400/','price' : '38,475','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/b041dfba76404429b8dcba90d431e6e7.jpg?imgeng=/w_400/','colour' : 'Grey','mileage' : '50','fuelType' : 'Petrol Plug-In Hybrid','fuelType' : 'Petrol Plug-In Hybrid','transmission' : 'Automatic','stockId' : '92787427643'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="50 miles | Petrol Plug-In Hybrid | Automatic"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/ford-pro/locations/9278/d-m-keith-ford-leeds-commercial-vehicles/"><small>D. M. Keith Ford Leeds Commercial Vehicles</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01132634222"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9278"><small> 0113 263 4222</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_92781540645">
<script type="application/json"
id="vehicleCardData_92781540645"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/08245af3b9ae409db57f24e9a212b24c.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "~",
"manufacturer": "Ford",
"model": "Ranger",
"version": "2.0 TD EcoBlue Tremor Auto 4WD Euro 6 (s/s) 4dr",
"price": "37,975",
"stockid": "92781540645",
"monthly": "~",
"url": "/used-car-details/new-ford-ranger-20-td-ecoblue-tremor-auto-4wd-pickup-grey-automatic-diesel/id-92781540645/",
"colour" : "Grey",
"index": 2,
"imgCount": 21,
"hasVideo": false,
"vat": "~"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/new-ford-ranger-20-td-ecoblue-tremor-auto-4wd-pickup-grey-automatic-diesel/id-92781540645/','manufacturer' : 'Ford','model' : 'Ranger','version' : '2.0 TD EcoBlue Tremor Auto 4WD Euro 6 (s/s) 4dr','reg' : '~','year' : '~','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/08245af3b9ae409db57f24e9a212b24c.jpg?imgeng=/w_400/','price' : '37,975','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/08245af3b9ae409db57f24e9a212b24c.jpg?imgeng=/w_400/','colour' : 'Grey','mileage' : '10','fuelType' : 'Diesel','fuelType' : 'Diesel','transmission' : 'Automatic','stockId' : '92781540645'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="10 miles | Diesel | Automatic"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/ford-pro/locations/9278/d-m-keith-ford-leeds-commercial-vehicles/"><small>D. M. Keith Ford Leeds Commercial Vehicles</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01132634222"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9278"><small> 0113 263 4222</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_92789490050">
<script type="application/json"
id="vehicleCardData_92789490050"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/a737f241d0be4a9e9516fe3d9ec8dc8c.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "~",
"manufacturer": "Ford",
"model": "Transit Custom",
"version": "2.5 320 Duratec 11.8kWh MS-RT Crew Van Auto L1 H1 Euro 6 5dr",
"price": "48,775",
"stockid": "92789490050",
"monthly": "~",
"url": "/used-car-details/new-ford-transit-custom-25-320-duratec-118kwh-ms-rt-combi-van-grey-automatic-petrol-plug-in-hybrid/id-92789490050/",
"colour" : "Grey",
"index": 3,
"imgCount": 18,
"hasVideo": false,
"vat": "~"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/new-ford-transit-custom-25-320-duratec-118kwh-ms-rt-combi-van-grey-automatic-petrol-plug-in-hybrid/id-92789490050/','manufacturer' : 'Ford','model' : 'Transit Custom','version' : '2.5 320 Duratec 11.8kWh MS-RT Crew Van Auto L1 H1 Euro 6 5dr','reg' : '~','year' : '~','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/a737f241d0be4a9e9516fe3d9ec8dc8c.jpg?imgeng=/w_400/','price' : '48,775','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/a737f241d0be4a9e9516fe3d9ec8dc8c.jpg?imgeng=/w_400/','colour' : 'Grey','mileage' : '5','fuelType' : 'Petrol Plug-In Hybrid','fuelType' : 'Petrol Plug-In Hybrid','transmission' : 'Automatic','stockId' : '92789490050'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="5 miles | Petrol Plug-In Hybrid | Automatic"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/ford-pro/locations/9278/d-m-keith-ford-leeds-commercial-vehicles/"><small>D. M. Keith Ford Leeds Commercial Vehicles</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01132634222"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9278"><small> 0113 263 4222</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_92798451705">
<script type="application/json"
id="vehicleCardData_92798451705"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/04510e5765874c758121856a3875c057.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "~",
"manufacturer": "Ford",
"model": "Transit Custom",
"version": "2.0 320 EcoBlue Limited L2 H1 Euro 6 (s/s) 5dr",
"price": "31,500",
"stockid": "92798451705",
"monthly": "~",
"url": "/used-car-details/new-ford-transit-custom-20-320-ecoblue-limited-l2-h1-panel-van-silver-manual-diesel/id-92798451705/",
"colour" : "Silver",
"index": 4,
"imgCount": 39,
"hasVideo": false,
"vat": "~"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/new-ford-transit-custom-20-320-ecoblue-limited-l2-h1-panel-van-silver-manual-diesel/id-92798451705/','manufacturer' : 'Ford','model' : 'Transit Custom','version' : '2.0 320 EcoBlue Limited L2 H1 Euro 6 (s/s) 5dr','reg' : '~','year' : '~','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/04510e5765874c758121856a3875c057.jpg?imgeng=/w_400/','price' : '31,500','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/04510e5765874c758121856a3875c057.jpg?imgeng=/w_400/','colour' : 'Silver','mileage' : '20','fuelType' : 'Diesel','fuelType' : 'Diesel','transmission' : 'Manual','stockId' : '92798451705'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="20 miles | Diesel | Manual"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/ford-pro/locations/9279/d-m-keith-ford-bradford-commercial-vehicles/"><small>D. M. Keith Ford Bradford Commercial Vehicles</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01274214389"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9279"><small> 01274 214 389</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_4132409111244461387">
<script type="application/json"
id="vehicleCardData_4132409111244461387"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/pin-8a0415ac2123d4f5f6de3c180309cfd2b0e4c514.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "2016",
"manufacturer": "Isuzu",
"model": "D-Max",
"version": "2.5TD Yukon Double Cab 4x4",
"price": "11,700",
"stockid": "4132409111244461387",
"monthly": "~",
"url": "/used-car-details/used-isuzu-d-max-25td-yukon-double-cab-4x4-pickup-navy-blue-manual-diesel/id-4132409111244461387/",
"colour" : "Navy Blue",
"index": 5,
"imgCount": 40,
"hasVideo": false,
"vat": "NO VAT"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/used-isuzu-d-max-25td-yukon-double-cab-4x4-pickup-navy-blue-manual-diesel/id-4132409111244461387/','manufacturer' : 'Isuzu','model' : 'D-Max','version' : '2.5TD Yukon Double Cab 4x4','reg' : '16','year' : '2016','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-8a0415ac2123d4f5f6de3c180309cfd2b0e4c514.jpg?imgeng=/w_400/','price' : '11,700','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-8a0415ac2123d4f5f6de3c180309cfd2b0e4c514.jpg?imgeng=/w_400/','colour' : 'Navy Blue','mileage' : '73,893','fuelType' : 'Diesel','fuelType' : 'Diesel','transmission' : 'Manual','stockId' : '4132409111244461387'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="73,893 miles | Diesel | Manual"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/locations/9258/d-m-keith-trade-car-outlet-bradford/"><small>D. M. Keith Trade Car Outlet Bradford</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01274086667"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9258"><small>01274 086667</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_3555954981747315802">
<script type="application/json"
id="vehicleCardData_3555954981747315802"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/pin-347df968efa1d650431121834003670ffc08ab10.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "2024",
"manufacturer": "Ford",
"model": "Ranger",
"version": "Pick Up Double Cab MS-RT 3.0 EcoBlue V6 240 Auto",
"price": "44,995",
"stockid": "3555954981747315802",
"monthly": "1,034.68",
"url": "/used-car-details/used-ford-ranger-pick-up-double-cab-ms-rt-30-e-pickup-blue-automatic-diesel/id-3555954981747315802/",
"colour" : "Blue",
"index": 6,
"imgCount": 42,
"hasVideo": true,
"vat": "+VAT"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/used-ford-ranger-pick-up-double-cab-ms-rt-30-e-pickup-blue-automatic-diesel/id-3555954981747315802/','manufacturer' : 'Ford','model' : 'Ranger','version' : 'Pick Up Double Cab MS-RT 3.0 EcoBlue V6 240 Auto','reg' : '74','year' : '2024','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-347df968efa1d650431121834003670ffc08ab10.jpg?imgeng=/w_400/','price' : '44,995','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-347df968efa1d650431121834003670ffc08ab10.jpg?imgeng=/w_400/','colour' : 'Blue','mileage' : '9,621','fuelType' : 'Diesel','fuelType' : 'Diesel','transmission' : 'Automatic','stockId' : '3555954981747315802'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="9,621 miles | Diesel | Automatic"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/ford-pro/locations/9279/d-m-keith-ford-bradford-commercial-vehicles/"><small>D. M. Keith Ford Bradford Commercial Vehicles</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01274214389"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9279"><small> 01274 214 389</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_3698374701435213379">
<script type="application/json"
id="vehicleCardData_3698374701435213379"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/pin-b7a6dd57f4deb0fd2b9743f3d02b6da7726d26c3.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "2025",
"manufacturer": "Ford",
"model": "Transit Courier",
"version": "1.0 EcoBoost Leader Van",
"price": "17,495",
"stockid": "3698374701435213379",
"monthly": "402.31",
"url": "/used-car-details/used-ford-transit-courier-10-ecoboost-leader-van-panel-van-white-manual-petrol/id-3698374701435213379/",
"colour" : "White",
"index": 7,
"imgCount": 40,
"hasVideo": true,
"vat": "+VAT"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/used-ford-transit-courier-10-ecoboost-leader-van-panel-van-white-manual-petrol/id-3698374701435213379/','manufacturer' : 'Ford','model' : 'Transit Courier','version' : '1.0 EcoBoost Leader Van','reg' : '25','year' : '2025','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-b7a6dd57f4deb0fd2b9743f3d02b6da7726d26c3.jpg?imgeng=/w_400/','price' : '17,495','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-b7a6dd57f4deb0fd2b9743f3d02b6da7726d26c3.jpg?imgeng=/w_400/','colour' : 'White','mileage' : '3,394','fuelType' : 'Petrol','fuelType' : 'Petrol','transmission' : 'Manual','stockId' : '3698374701435213379'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="3,394 miles | Petrol | Manual"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/ford-pro/locations/9279/d-m-keith-ford-bradford-commercial-vehicles/"><small>D. M. Keith Ford Bradford Commercial Vehicles</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01274214389"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9279"><small> 01274 214 389</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_3986612774084625474">
<script type="application/json"
id="vehicleCardData_3986612774084625474"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/pin-b2eeaae429d9f5bd21cb0c9b56193448f2448523.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "2020",
"manufacturer": "Ford",
"model": "Transit Custom",
"version": "2.0 EcoBlue 170ps Low Roof D/Cab Limited Van Auto",
"price": "20,500",
"stockid": "3986612774084625474",
"monthly": "440.27",
"url": "/used-car-details/used-ford-transit-custom-20-ecoblue-170ps-low-roof-dc-combi-van-silver-automatic-diesel/id-3986612774084625474/",
"colour" : "Silver",
"index": 8,
"imgCount": 40,
"hasVideo": false,
"vat": "No VAT"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/used-ford-transit-custom-20-ecoblue-170ps-low-roof-dc-combi-van-silver-automatic-diesel/id-3986612774084625474/','manufacturer' : 'Ford','model' : 'Transit Custom','version' : '2.0 EcoBlue 170ps Low Roof D/Cab Limited Van Auto','reg' : '20','year' : '2020','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-b2eeaae429d9f5bd21cb0c9b56193448f2448523.jpg?imgeng=/w_400/','price' : '20,500','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/pin-b2eeaae429d9f5bd21cb0c9b56193448f2448523.jpg?imgeng=/w_400/','colour' : 'Silver','mileage' : '56,102','fuelType' : 'Diesel','fuelType' : 'Diesel','transmission' : 'Automatic','stockId' : '3986612774084625474'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="56,102 miles | Diesel | Automatic"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/ford/locations/9276/d-m-keith-ford-leeds/"><small>D. M. Keith Ford Leeds</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01132634222"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9276"><small>0113 2634222</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
</div>
</div>
</div>
<div slot="available-now">
<div class="stock-carousel carousel-dark card-carousel slick">
<div id="Repeater_Carousel_available_RepeaterUpdatePanel">
<bsk-vehicle-card theme="bp"
id="car_92787427643">
<script type="application/json"
id="vehicleCardData_92787427643"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/b041dfba76404429b8dcba90d431e6e7.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "~",
"manufacturer": "Ford",
"model": "Transit Custom",
"version": "2.5 320 Duratec 11.8kWh Limited Crew Van Double Cab 5dr Petrol Plug-in Hybrid Auto L2 H1 Euro 6 (232 ps)",
"price": "38,475",
"stockid": "92787427643",
"monthly": "~",
"url": "/used-car-details/new-ford-transit-custom-25-320-duratec-118kwh-limite-combi-van-grey-automatic-petrol-plug-in-hybrid/id-92787427643/",
"colour" : "Grey",
"index": 1,
"imgCount": 9,
"hasVideo": false,
"vat": "~"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/new-ford-transit-custom-25-320-duratec-118kwh-limite-combi-van-grey-automatic-petrol-plug-in-hybrid/id-92787427643/','manufacturer' : 'Ford','model' : 'Transit Custom','version' : '2.5 320 Duratec 11.8kWh Limited Crew Van Double Cab 5dr Petrol Plug-in Hybrid Auto L2 H1 Euro 6 (232 ps)','reg' : '~','year' : '~','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/b041dfba76404429b8dcba90d431e6e7.jpg?imgeng=/w_400/','price' : '38,475','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/b041dfba76404429b8dcba90d431e6e7.jpg?imgeng=/w_400/','colour' : 'Grey','mileage' : '50','fuelType' : 'Petrol Plug-In Hybrid','fuelType' : 'Petrol Plug-In Hybrid','transmission' : 'Automatic','stockId' : '92787427643'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="50 miles | Petrol Plug-In Hybrid | Automatic"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/ford-pro/locations/9278/d-m-keith-ford-leeds-commercial-vehicles/"><small>D. M. Keith Ford Leeds Commercial Vehicles</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01132634222"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9278"><small> 0113 263 4222</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_93684193605">
<script type="application/json"
id="vehicleCardData_93684193605"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/14fd48c094fb44c1b1dbe3e11a3f064b.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "2025",
"manufacturer": "BYD",
"model": "Seal U",
"version": "1.5 DM-i 18.3kWh Boost CVT Auto Euro 6 (s/s) 5dr",
"price": "30,990",
"stockid": "93684193605",
"monthly": "~",
"url": "/used-car-details/new-byd-seal-u-15-dm-i-183kwh-boost-cvt-aut-suv-grey-automatic-petrol-plug-in-hybrid/id-93684193605/",
"colour" : "Grey",
"index": 2,
"imgCount": 50,
"hasVideo": false,
"vat": "~"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/new-byd-seal-u-15-dm-i-183kwh-boost-cvt-aut-suv-grey-automatic-petrol-plug-in-hybrid/id-93684193605/','manufacturer' : 'BYD','model' : 'Seal U','version' : '1.5 DM-i 18.3kWh Boost CVT Auto Euro 6 (s/s) 5dr','reg' : '~','year' : '2025','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/14fd48c094fb44c1b1dbe3e11a3f064b.jpg?imgeng=/w_400/','price' : '30,990','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/14fd48c094fb44c1b1dbe3e11a3f064b.jpg?imgeng=/w_400/','colour' : 'Grey','mileage' : '~','fuelType' : 'Petrol Plug-In Hybrid','fuelType' : 'Petrol Plug-In Hybrid','transmission' : 'Automatic','stockId' : '93684193605'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="~ miles | Petrol Plug-In Hybrid | Automatic"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/byd/locations/9368/d-m-keith-byd-bradford/"><small>D. M. Keith BYD Bradford</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01274649598"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9368"><small>01274 649 598</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_93682301822">
<script type="application/json"
id="vehicleCardData_93682301822"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/7ada6b3cfe2f470f8b5c2a016a46170a.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "~",
"manufacturer": "BYD",
"model": "Sealion 7",
"version": "91.3kWh Excellence Auto AWD 5dr",
"price": "52,490",
"stockid": "93682301822",
"monthly": "~",
"url": "/used-car-details/new-byd-sealion-7-913kwh-excellence-auto-awd-5d-suv-grey-automatic-electric/id-93682301822/",
"colour" : "Grey",
"index": 3,
"imgCount": 40,
"hasVideo": false,
"vat": "~"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/new-byd-sealion-7-913kwh-excellence-auto-awd-5d-suv-grey-automatic-electric/id-93682301822/','manufacturer' : 'BYD','model' : 'Sealion 7','version' : '91.3kWh Excellence Auto AWD 5dr','reg' : '~','year' : '~','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/7ada6b3cfe2f470f8b5c2a016a46170a.jpg?imgeng=/w_400/','price' : '52,490','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/7ada6b3cfe2f470f8b5c2a016a46170a.jpg?imgeng=/w_400/','colour' : 'Grey','mileage' : '~','fuelType' : 'Electric','fuelType' : 'Electric','transmission' : 'Automatic','stockId' : '93682301822'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="~ miles | Electric | Automatic"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/byd/locations/9368/d-m-keith-byd-bradford/"><small>D. M. Keith BYD Bradford</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01274649598"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9368"><small>01274 649 598</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_92571277372">
<script type="application/json"
id="vehicleCardData_92571277372"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/5b1743505627443ea0beafbd46666b3d.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "2025",
"manufacturer": "Skoda",
"model": "Scala",
"version": "1.0 TSI SE Edition Euro 6 (s/s) 5dr",
"price": "21,245",
"stockid": "92571277372",
"monthly": "~",
"url": "/used-car-details/new-skoda-scala-10-tsi-se-edition-euro-6-ss-hatchback-grey-manual-petrol/id-92571277372/",
"colour" : "Grey",
"index": 4,
"imgCount": 4,
"hasVideo": false,
"vat": "~"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/new-skoda-scala-10-tsi-se-edition-euro-6-ss-hatchback-grey-manual-petrol/id-92571277372/','manufacturer' : 'Skoda','model' : 'Scala','version' : '1.0 TSI SE Edition Euro 6 (s/s) 5dr','reg' : '~','year' : '2025','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/5b1743505627443ea0beafbd46666b3d.jpg?imgeng=/w_400/','price' : '21,245','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/5b1743505627443ea0beafbd46666b3d.jpg?imgeng=/w_400/','colour' : 'Grey','mileage' : '~','fuelType' : 'Petrol','fuelType' : 'Petrol','transmission' : 'Manual','stockId' : '92571277372'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="~ miles | Petrol | Manual"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/skoda/locations/9257/d-m-keith-skoda-huddersfield/"><small>D. M. Keith Å koda Huddersfield</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01484435499"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9257"><small> 01484 435499</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_92576440022">
<script type="application/json"
id="vehicleCardData_92576440022"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/9e927efb92004fb6bc76bd6e765b8842.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "2025",
"manufacturer": "Skoda",
"model": "Scala",
"version": "1.0 TSI SE Edition Euro 6 (s/s) 5dr",
"price": "21,245",
"stockid": "92576440022",
"monthly": "~",
"url": "/used-car-details/new-skoda-scala-10-tsi-se-edition-euro-6-ss-hatchback-grey-manual-petrol/id-92576440022/",
"colour" : "Grey",
"index": 5,
"imgCount": 4,
"hasVideo": false,
"vat": "~"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/new-skoda-scala-10-tsi-se-edition-euro-6-ss-hatchback-grey-manual-petrol/id-92576440022/','manufacturer' : 'Skoda','model' : 'Scala','version' : '1.0 TSI SE Edition Euro 6 (s/s) 5dr','reg' : '~','year' : '2025','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/9e927efb92004fb6bc76bd6e765b8842.jpg?imgeng=/w_400/','price' : '21,245','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/9e927efb92004fb6bc76bd6e765b8842.jpg?imgeng=/w_400/','colour' : 'Grey','mileage' : '~','fuelType' : 'Petrol','fuelType' : 'Petrol','transmission' : 'Manual','stockId' : '92576440022'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="~ miles | Petrol | Manual"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/skoda/locations/9257/d-m-keith-skoda-huddersfield/"><small>D. M. Keith Å koda Huddersfield</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01484435499"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9257"><small> 01484 435499</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_92576579022">
<script type="application/json"
id="vehicleCardData_92576579022"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/83b9e3dfda3541b4aed5787242ac518f.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "2025",
"manufacturer": "Skoda",
"model": "Kamiq",
"version": "1.0 TSI SE Edition Euro 6 (s/s) 5dr",
"price": "20,750",
"stockid": "92576579022",
"monthly": "~",
"url": "/used-car-details/new-skoda-kamiq-10-tsi-se-edition-euro-6-ss-suv-blue-manual-petrol/id-92576579022/",
"colour" : "Blue",
"index": 6,
"imgCount": 4,
"hasVideo": false,
"vat": "~"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/new-skoda-kamiq-10-tsi-se-edition-euro-6-ss-suv-blue-manual-petrol/id-92576579022/','manufacturer' : 'Skoda','model' : 'Kamiq','version' : '1.0 TSI SE Edition Euro 6 (s/s) 5dr','reg' : '~','year' : '2025','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/83b9e3dfda3541b4aed5787242ac518f.jpg?imgeng=/w_400/','price' : '20,750','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/83b9e3dfda3541b4aed5787242ac518f.jpg?imgeng=/w_400/','colour' : 'Blue','mileage' : '~','fuelType' : 'Petrol','fuelType' : 'Petrol','transmission' : 'Manual','stockId' : '92576579022'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="~ miles | Petrol | Manual"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/skoda/locations/9257/d-m-keith-skoda-huddersfield/"><small>D. M. Keith Å koda Huddersfield</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01484435499"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9257"><small> 01484 435499</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_92573381835">
<script type="application/json"
id="vehicleCardData_92573381835"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/f0a0812dfd2045df9261495c4da46c51.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "2025",
"manufacturer": "Skoda",
"model": "Kamiq",
"version": "1.0 TSI SE Edition DSG Euro 6 (s/s) 5dr",
"price": "23,000",
"stockid": "92573381835",
"monthly": "~",
"url": "/used-car-details/new-skoda-kamiq-10-tsi-se-edition-dsg-euro-6-suv-white-automatic-petrol/id-92573381835/",
"colour" : "White",
"index": 7,
"imgCount": 4,
"hasVideo": false,
"vat": "~"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/new-skoda-kamiq-10-tsi-se-edition-dsg-euro-6-suv-white-automatic-petrol/id-92573381835/','manufacturer' : 'Skoda','model' : 'Kamiq','version' : '1.0 TSI SE Edition DSG Euro 6 (s/s) 5dr','reg' : '~','year' : '2025','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/f0a0812dfd2045df9261495c4da46c51.jpg?imgeng=/w_400/','price' : '23,000','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/f0a0812dfd2045df9261495c4da46c51.jpg?imgeng=/w_400/','colour' : 'White','mileage' : '~','fuelType' : 'Petrol','fuelType' : 'Petrol','transmission' : 'Automatic','stockId' : '92573381835'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="~ miles | Petrol | Automatic"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/skoda/locations/9257/d-m-keith-skoda-huddersfield/"><small>D. M. Keith Å koda Huddersfield</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01484435499"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9257"><small> 01484 435499</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
<bsk-vehicle-card theme="bp"
id="car_93688055565">
<script type="application/json"
id="vehicleCardData_93688055565"
class="d-none">
{
"imgSrc": "https://bluesky.cdn.imgeng.in/cogstock-images/d3215755269c4b79b05aaa6f62dc3d17.jpg?imgeng=%2fw_400%2f&quality=1",
"regyear": "2025",
"manufacturer": "BYD",
"model": "Dolphin",
"version": "60.48kWh Comfort Auto 5dr",
"price": "27,399",
"stockid": "93688055565",
"monthly": "~",
"url": "/used-car-details/new-byd-dolphin-6048kwh-comfort-auto-5dr-hatchback-black-automatic-electric/id-93688055565/",
"colour" : "Black",
"index": 8,
"imgCount": 50,
"hasVideo": false,
"vat": "~"
}
</script>
<bsk-vehicle-card-img>
<bsk-shortlist-local-heart data="{'url' : '/used-car-details/new-byd-dolphin-6048kwh-comfort-auto-5dr-hatchback-black-automatic-electric/id-93688055565/','manufacturer' : 'BYD','model' : 'Dolphin','version' : '60.48kWh Comfort Auto 5dr','reg' : '~','year' : '2025','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/d3215755269c4b79b05aaa6f62dc3d17.jpg?imgeng=/w_400/','price' : '27,399','image' : 'https://bluesky.cdn.imgeng.in/cogstock-images/d3215755269c4b79b05aaa6f62dc3d17.jpg?imgeng=/w_400/','colour' : 'Black','mileage' : '~','fuelType' : 'Electric','fuelType' : 'Electric','transmission' : 'Automatic','stockId' : '93688055565'}"
child-class="text-dark"></bsk-shortlist-local-heart>
</bsk-vehicle-card-img>
<bsk-vehicle-card-body>
<bsk-vehicle-card-titles></bsk-vehicle-card-titles>
<bsk-vehicle-card-specs specs="~ miles | Electric | Automatic"
icons="far fa-gauge-high | fal fa-gas-pump | fal fa-gears">
</bsk-vehicle-card-specs>
<bsk-vehicle-card-pricing></bsk-vehicle-card-pricing>
<bsk-vehicle-card-actions></bsk-vehicle-card-actions>
<div class="border-top pt-3 d-flex flex-sm-row flex-column gap-2 justify-content-between">
<span><i class="fa-regular fa-location-pin me-1 text-secondary"></i><a class="gtm-track--btn_location text-decoration-underline"
href="/byd/locations/9368/d-m-keith-byd-bradford/"><small>D. M. Keith BYD Bradford</small></a></span>
<span><i class="fa-regular fa-phone me-1 text-secondary"></i><a href="tel:01274649598"
class="text-decoration-underline dealership-card-telephone gtm-track--tel gtm-track--tel_9368"><small>01274 649 598</small></a></span>
</div>
</bsk-vehicle-card-body>
</bsk-vehicle-card>
</div>
</div>
</div>
</bsk-tabs>
<div class="representative-example mt-7">
<bsk-cms-grid><span slot='cms-grid'><div class="umb-grid">
<div class="grid-section">
<div class='my-3'>
<div class="container">
<div class="row c">
<div class="col-lg-12 column">
<div class='text-align-center'>
<div class="advanced__textarea">
<table border="0" cellspacing="0" cellpadding="0" width="100%" style="height: 108px;">
<tbody>
<tr style="height: 36px;">
<td valign="bottom" style="height: 36px;"><strong>Representative Example</strong></td>
<td valign="bottom" style="height: 36px;"><strong>Product</strong></td>
<td valign="bottom" style="height: 36px;"><strong>Price</strong></td>
<td valign="bottom" style="height: 36px;"><strong>Deposit</strong></td>
<td valign="bottom" style="height: 36px;"><strong>Balance to Finance</strong></td>
<td valign="bottom" style="height: 36px;"><strong>Term (Months)</strong></td>
<td valign="bottom" style="height: 36px;"><strong>48 Monthly Payments</strong></td>
</tr>
<tr style="height: 18px;">
<td style="height: 18px;">10.9% APR</td>
<td style="height: 18px;">PCP</td>
<td style="height: 18px;">£16,423</td>
<td style="height: 18px;">£527</td>
<td style="height: 18px;">£15,896</td>
<td style="height: 18px;">49</td>
<td style="height: 18px;">£277.21</td>
</tr>
<tr style="height: 36px;">
<td valign="bottom" style="height: 36px;"><strong>Optional Final Payment</strong></td>
<td valign="bottom" style="height: 36px;"><strong>Total Charge for Credit</strong></td>
<td valign="bottom" style="height: 36px;"><strong>Total Amount Payable</strong></td>
<td valign="bottom" style="height: 36px;"><strong>Interest Rate (Fixed)</strong></td>
<td valign="bottom" style="height: 36px;"><strong>Mileage Per Annum</strong></td>
<td valign="bottom" style="height: 36px;"><strong>Excess Mileage Charge</strong></td>
<td valign="bottom" style="height: 36px;"><strong>Option to Purchase Fee</strong></td>
</tr>
<tr style="height: 18px;">
<td style="height: 18px;">£7,650.00</td>
<td style="height: 18px;">£5,070.08</td>
<td style="height: 18px;">£21,493.08</td>
<td style="height: 18px;">10.9%</td>
<td style="height: 18px;">10,000</td>
<td style="height: 18px;">3.6 pence per mile</td>
<td style="height: 18px;">£10.00</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></span></bsk-cms-grid>
</div>
</div>
</section>
<!-- Featured Cars : END --><section class="container section-my-2 ae-reviews">
<div class="row text-center">
<h2>What Our Customers Say</h2>
<script src="https://static.elfsight.com/platform/platform.js"
async></script>
<div class="elfsight-app-dfda33b4-dc95-4704-b7aa-56bfc927c5e3"
data-elfsight-app-lazy></div>
</div>
</section><!-- CMS Grid : START -->
<section class="ae-about">
<div class="container">
<div class="row home-intro g-0">
<div class="col-12">
<bsk-cms-grid><span slot='cms-grid'><div class="umb-grid">
<div class="grid-section">
<div >
<div class="container">
<div class="row c">
<div class="col-lg-6 column">
<div >
<div class="image-with-accreditation-wrapper">
<img src="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/dugh0zvq/dm-keith.jpg?&width=1500&center=0.5,0.5&mode=crop&scale=both" alt="DM Keith" class="full-image">
</div>
</div>
</div>
<div class="col-lg-6 column">
<div class='text-center text-lg-start'>
<h2>Let our family look after you</h2>
<div class="advanced__textarea">
<p class="fs-5 lh-sm">Welcome to D. M. Keith, the home of new Škoda, SEAT, CUPRA, Honda, Ford, Kia, BYD, Suzuki, and Subaru vehicles across Yorkshire and Greater Manchester. As a family-run dealership since 1946, we pride ourselves on offering a huge range of models available immediately, with specialists in both business sales and Motability. So whether you’re looking to buy a new or used vehicle, book a service or buy parts, we look forward to welcoming you into the Keith family soon!</p>
</div>
<div class="tl-grid-html-embed">
<img width="265" height="89" class="signatures" src="https://bluesky.sirv.com/Websites/DM%20Keith/Images/signature.png" alt="DM Keith signatures" />
</div>
<a href="/meet-the-family/" class="tl-grid-button _vm_btn _vm_btn--primary">Find Out More</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div></span></bsk-cms-grid>
</div>
</div>
</div>
</section>
<!-- CMS Grid : END -->
<bsk-timeline class="ae-timeline">
<div slot="cms-grid">
<div class="umb-grid">
<div class="grid-section">
<div class='pb-4 pb-xl-7 pt-0 bg-light'>
<div class="container">
<div class="row c">
<div class="col-md-12 column">
<div class='text-align-center'>
<h2>D. M. Keith family history</h2>
<div class="advanced__textarea">
<p>Family-owned since 1946, our business has been proudly serving the community for generations. With years of dedication and experience, we have built a reputation based on trust, quality, and exceptional customer service. Our rich history and strong values drive us to deliver the best experience.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="timeline-nav mb-6"
slot="timeline-nav">
<div
class="active time-input"
>
<span data-year="1946 - 1976"></span>
</div>
<div
class="time-input"
>
<span data-year="1977 - 1999"></span>
</div>
<div
class="time-input"
>
<span data-year="2000 - 2010"></span>
</div>
<div
class="time-input"
>
<span data-year="2011 - 2018"></span>
</div>
<div
class="time-input"
>
<span data-year="2019 - 2022"></span>
</div>
<div
class="time-input"
>
<span data-year="2023 - 2024"></span>
</div>
</div>
<div class="timeline-for p-5 bg-white rounded-1 mb-7 mb-lg-0"
slot="timeline-for">
<span class="timeline-text-wrapper"
class="active px-sm-8"
>
<p class="fw-bold h4 mb-5">1946 - 1976</p>
<p class="mb-5 timeline-text">FROM HUMBLE BEGINNINGS
Duncan Keith - Angus and Dougal’s father - started the company immediately after WW2 doing servicing and repairs. But his technical skill and business acumen meant that business blossomed and in 1972 he started selling Russian built Moskvich cars, and then Lada. But in 1976 he switched to Czech-built ŠKODA (a wise move!) which has remained the cornerstone of the company's operations ever since.
BOYS AND THEIR TOYS...
The lads were always daft about cars; here they are with their first garage which was cheap to build, but didn’t last long in Yorkshire rain! And there’s Angus grinning away in the muckiest mechanic’s overalls imaginable, and Dougal proudly showing off his Clubmans race car. That was just before he blew the engine up and replaced it with one from an Escort van…</p>
<!--<a href=""
class="text-decoration-underline"> <i class="fa-thin fa-chevron-right ms-2"></i></a>-->
</span>
<span class="timeline-text-wrapper"
class="px-sm-8"
>
<p class="fw-bold h4 mb-5">1977 - 1999</p>
<p class="mb-5 timeline-text">THE NEW GENERATION
In the early 80’s Dougal and Angus joined the company and father Duncan gradually handed responsibility to the next generation. By the time Volkswagen acquired ŠKODA in 1991 it was clear to the family that the future of ŠKODA would be very different and they decided to invest in the site at Thwaite Gate.</p>
<!--<a href=""
class="text-decoration-underline"> <i class="fa-thin fa-chevron-right ms-2"></i></a>-->
</span>
<span class="timeline-text-wrapper"
class="px-sm-8"
>
<p class="fw-bold h4 mb-5">2000 - 2010</p>
<p class="mb-5 timeline-text">ONWARDS AND UPWARDS
Since the millennium, D. M. Keith has grown from strength to strength with the group expanding with showrooms in Bradford, Wakefield, Huddersfield and York. In 2010 our Leeds branch was named Å KODA Retailer of the year. We extended our hand of support to good local causes like the Yorkshire Air Ambulance, which we have backed for over 10 years.</p>
<!--<a href=""
class="text-decoration-underline"> <i class="fa-thin fa-chevron-right ms-2"></i></a>-->
</span>
<span class="timeline-text-wrapper"
class="px-sm-8"
>
<p class="fw-bold h4 mb-5">2011 - 2018</p>
<p class="mb-5 timeline-text">BUILDING FOR THE BETTER
Our expansion continued with the addition of the showroom in Hull. In 2015 we redeveloped all of our sites to provide state-of-the-art facilities. In 2018 the business grew by a third with the addition of Grimsby Å KODA, SEAT and Honda. With multiple industry awards, we continue to offer unparalleled family customer service.</p>
<!--<a href=""
class="text-decoration-underline"> <i class="fa-thin fa-chevron-right ms-2"></i></a>-->
</span>
<span class="timeline-text-wrapper"
class="px-sm-8"
>
<p class="fw-bold h4 mb-5">2019 - 2022</p>
<p class="mb-5 timeline-text">THE FAMILY GETTING BIGGER
D. M. Keith Ltd increased its representation across Yorkshire with the acquisition of Ringways Motor Group in 2021.
We now represent six brands, with thirteen showrooms across ten Yorkshire & Lincolnshire locations. The company continues to grow with franchised partners Å KODA, SEAT, CUPRA, and Honda and now with the addition of Ford and Kia to the extensive brand portfolio.
The acquisition was a great strategic fit for D. M. Keith as both businesses are culturally aligned, with a focus on family values and a similar age with a strong emphasis on delivering exceptional customer service with a personal touch.</p>
<!--<a href=""
class="text-decoration-underline"> <i class="fa-thin fa-chevron-right ms-2"></i></a>-->
</span>
<span class="timeline-text-wrapper"
class="px-sm-8"
>
<p class="fw-bold h4 mb-5">2023 - 2024</p>
<p class="mb-5 timeline-text">D. M. Keith announces partnership with BYD Electric Vehicles
D. M. Keith, are proud to announce its partnership with Build Your Dreams, as the North of England retailer. BYD is the world’s top-selling EV maker. With this collaboration, family-owned D. M. Keith will be one of the first to bring the latest and most advanced electric vehicles to its customers in the United Kingdom.
The partnership between D. M. Keith and BYD represents a significant step forward towards a greener and more sustainable future for transportation. BYD is known for its innovative and eco-friendly electric Lithium Iron Phosphate battery technology. D. M. Keith is committed to providing the highest quality products and services to its customers and is excited to offer a range of electric vehicles starting with the compact and affordable Atto3 & followed by the Dolphin and Seal.
The new electric vehicles from BYD will be available for test drive and purchase at D. M. Keith BYD Leeds, from the 1st of June 2023.
"BYD’s journey is impeccable and to join them in their dream and mission to change the automotive world is an honour and in line with our vision and values at D. M. Keith."
– Dougal & Angus Keith, Managing Directors of D. M. Keith</p>
<!--<a href=""
class="text-decoration-underline"> <i class="fa-thin fa-chevron-right ms-2"></i></a>-->
</span>
</div>
</bsk-timeline>
</main>
<bsk-footer>
<div slot="one">
<bsk-footer-content>
<span slot="content">
<bsk-cms-grid><span slot='cms-grid'><div class="umb-grid">
<div class="grid-section">
<div >
<div class="container">
<div class="row c">
<div class="col-lg-12 column">
<div class='footer-address'>
<div class="advanced__textarea">
<p><span>D. M. Keith Ltd,</span> Thwaite Gate, <span>Leeds,</span> <span>LS10 1DY</span></p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class='pt-5'>
<div class="container">
<div class="row c">
<div class="col-lg-12 column">
<div class='footer-contact'>
<div class="tl-grid-html-embed">
<span class="d-block mb-2"><i class="fa-light fa-envelope me-2 text-secondary"></i><a href="/contact-us/" class="fw-bold text-decoration-underline">Contact Us</a></span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></span></bsk-cms-grid>
</span>
</bsk-footer-content>
<ul class="social-icons d-flex justify-content-center justify-content-lg-start mb-0 gap-3 px-3 pb-4 pb-xl-0">
<li class="mb-0">
<a target="_blank"
href="https://www.facebook.com/D.M.KeithLtd/ ">
<i class="fa-brands fa-facebook-f"></i>
</a>
</li>
<li class="mb-0">
<a target="_blank"
href="https://www.instagram.com/dm_keith/ ">
<i class="fa-brands fa-instagram"></i>
</a>
</li>
<li class="mb-0">
<a target="_blank"
href="https://www.linkedin.com/company/d.m.keith-ltd ">
<i class="fa-brands fa-linkedin"></i>
</a>
</li>
<li class="mb-0">
<a target="_blank"
href="https://twitter.com/dmkeithgroup ">
<i class="fa-brands fa-x-twitter"></i>
</a>
</li>
<li class="mb-0">
<a target="_blank"
href="https://www.youtube.com/channel/UClz1RhdbAiLKjb-PVfeRHnQ ">
<i class="fa-brands fa-youtube"></i>
</a>
</li>
</ul>
</div>
<div slot="two">
<bsk-footer-content>
<span slot="content">
<bsk-cms-grid><span slot='cms-grid'><div class="umb-grid">
<div class="grid-section">
<div >
<div class="container">
<div class="row c">
<div class="col-lg-6 column">
<div >
<div class="advanced__textarea">
<ul>
<li><a href="/BYD/new-cars/">New BYD</a></li>
<li><a href="/cupra/new-cars/">New Cupra</a></li>
<li><a href="/ford/new-cars/">New Ford</a></li>
<li><a href="/honda/new-cars/">New Honda</a></li>
<li><a href="/kia/new-cars/">New Kia</a></li>
<li><a href="/seat/new-cars/">New SEAT</a></li>
<li><a href="/skoda/new-cars/">New Å koda</a></li>
<li><a href="/subaru/new-cars/">New Subaru</a></li>
<li><a href="/suzuki/new-cars/">New Suzuki</a></li>
</ul>
</div>
</div>
</div>
<div class="col-lg-6 column">
<div >
<div class="advanced__textarea">
<ul>
<li><a href="/search/?newUsed=Used" data-anchor="?newUsed=Used">Used Cars</a></li>
<li><a href="/search/?vehicleType=Van?bodyType=%25van,Panel+Van,Van,Tipper&newUsed=Used" data-anchor="?bodyType=%25van,Panel+Van,Van,Tipper&newUsed=Used">Used Vans </a></li>
<li><a href="/bodyshop/accident-aftercare/">Accident Aftercare</a></li>
<li><a href="/contact-us/">Contact Us</a></li>
<li><a href="/shortlist/">Shortlist</a></li>
<li><a href="/news/">News</a></li>
<li><a href="/finance/">Finance</a></li>
<li><a rel="noopener" href="https://dmkeith.zohorecruit.eu/jobs/Careers" target="_blank">Careers</a></li>
<li><a href="/why-buy-from-us/">Customer Service</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></span></bsk-cms-grid>
</span>
</bsk-footer-content>
</div>
<div slot="three">
<bsk-footer-content>
<span slot="content">
<bsk-cms-grid><span slot='cms-grid'><div class="umb-grid">
<div class="grid-section">
<div >
<div class="container">
<div class="row c">
<div class="col-lg-12 column">
<div >
<div class="advanced__textarea">
<ul>
<li><a href="/website-privacy-and-legal-information/">Privacy & Legal</a></li>
<li><a href="/dmkeith-data-protection-policy/">Cookie Policy</a></li>
<li><a href="/communications/">Update Communication Preferences</a></li>
<li><a href="/d-m-keith-treating-customers-fairly-policy/">Treating Customers Fairly</a></li>
<li><a href="/anti-slavery-human-trafficking-statement/">Anti Slavery Statement</a></li>
<li><a rel="noopener" href="https://bluesky-cogcms-prodb.cdn.imgeng.in/media/re2hdas4/d-m-keith-gpg-infographic-2023.pdf" target="_blank">Download Gender Pay Gap Statement</a></li>
<li><a href="/conditions-of-sale/">Conditions of Sale</a></li>
<li><a href="/pages/uk-tax-strategy-statement/">UK Tax Strategy Statement</a></li>
<li><a href="/status-disclosure/">Status Disclosure</a></li>
<li><a href="/complaints-policy/">Complaints Policy</a></li>
<li><a href="/sitemap">Sitemap</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></span></bsk-cms-grid>
</span>
</bsk-footer-content>
</div>
<div slot="four">
<bsk-footer-content>
<bsk-accordion-item class="d-block d-lg-none mt-3"
title="Financial Conduct Authority">
<div slot="content">
<bsk-cms-grid><span slot='cms-grid'><div class="umb-grid">
<div class="grid-section">
<div >
<div class="container">
<div class="row c">
<div class="col-lg-12 column">
<div >
<div class="advanced__textarea">
<p>D. M. Keith Limited, D. M. Keith (RGL) Limited, D. M. Keith (RGD) Limited, D. M. Keith (CA) Limited & Ringways (Hire & Leasing) Ltd are an appointed representative of <a rel="noopener" href="https://www.itccompliance.co.uk/welcome/" target="_blank">ITC Compliance Limited</a> which is authorised and regulated by the Financial Conduct Authority (their registration number is 313486). Permitted activities include advising on and arranging general insurance contracts and acting as a credit broker not a lender.</p>
<p>We can introduce you to a limited number of finance providers. We do not charge a fee for our Consumer Credit services. We do not act as a financial adviser, or fiduciary. We act in our own interest, whichever lender we introduce you to, we will typically receive commission from them based on either a fixed fee or a fixed percentage of the amount you borrow. Any and all commission amounts will be fully disclosed to you as part of your sales journey. You will be required to give your fully informed consent to our receipt of this commission. By doing this, you acknowledge that you understand our role as a credit broker, and that we will receive a financial incentive if you take out a loan from a lender that we introduce you to.</p>
<p>All finance applications are subject to status, terms and conditions apply, UK residents only, 18s or over, Guarantees may be required. All group companies VAT registration No. GB169785889.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></span></bsk-cms-grid>
</div>
</bsk-accordion-item>
<div class="d-none d-lg-block">
<bsk-cms-grid><span slot='cms-grid'><div class="umb-grid">
<div class="grid-section">
<div >
<div class="container">
<div class="row c">
<div class="col-lg-12 column">
<div >
<div class="advanced__textarea">
<p>D. M. Keith Limited, D. M. Keith (RGL) Limited, D. M. Keith (RGD) Limited, D. M. Keith (CA) Limited & Ringways (Hire & Leasing) Ltd are an appointed representative of <a rel="noopener" href="https://www.itccompliance.co.uk/welcome/" target="_blank">ITC Compliance Limited</a> which is authorised and regulated by the Financial Conduct Authority (their registration number is 313486). Permitted activities include advising on and arranging general insurance contracts and acting as a credit broker not a lender.</p>
<p>We can introduce you to a limited number of finance providers. We do not charge a fee for our Consumer Credit services. We do not act as a financial adviser, or fiduciary. We act in our own interest, whichever lender we introduce you to, we will typically receive commission from them based on either a fixed fee or a fixed percentage of the amount you borrow. Any and all commission amounts will be fully disclosed to you as part of your sales journey. You will be required to give your fully informed consent to our receipt of this commission. By doing this, you acknowledge that you understand our role as a credit broker, and that we will receive a financial incentive if you take out a loan from a lender that we introduce you to.</p>
<p>All finance applications are subject to status, terms and conditions apply, UK residents only, 18s or over, Guarantees may be required. All group companies VAT registration No. GB169785889.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></span></bsk-cms-grid>
</div>
</bsk-footer-content>
</div>
<div slot="bottom">
<bsk-footer-bottom>
<p class="mb-0 text-center text-lg-start"
slot="text-content">© 2025 DM Keith, Automotive website provided by <a href="https://www.blueskyinteractive.co.uk"
target="_blank"
rel="noopener"
class="footer__website-provider website-provider">Bluesky Interactive Ltd</a> Registered in England. Company Reg. No: 1234523 VAT Reg. No: 12345674</p>
</bsk-footer-bottom>
</div>
</bsk-footer>
<div class="sidebar">
<div id="toggleDiv">
<a class="sidebar-item mb-2 d-block d-md-none"
href="/search/?hasImages=1">
<div class="sidebar-item-wrap sidebar-item-wrap-1">
<div class="icon-circle">
<i class="fa-light fa-magnifying-glass"></i>
</div>
</div>
</a>
<a class="sidebar-item mb-2"
href="/contact-us/">
<div class="sidebar-item-wrap sidebar-item-wrap-1">
<div class="icon-circle">
<i class="fa-light fa-envelope"></i>
</div>
<span class="text">
<p>Contact us</p>
</span>
</div>
</a>
<a class="sidebar-item mb-2"
href="/find-us/">
<div class="sidebar-item-wrap sidebar-item-wrap-2">
<div class="icon-circle">
<i class="fa-light fa-location-pin"></i>
</div>
<span class="text">
<p>Find us</p>
</span>
</div>
</a>
<a class="sidebar-item mb-2"
href="https://dmkeithltd.service123.co.uk/"
target="_blank">
<div class="sidebar-item-wrap sidebar-item-wrap-3">
<div class="icon-circle">
<i class="fa-light fa-wrench"></i>
</div>
<span class="text">
<p>Book a service</p>
</span>
</div>
</a>
<a class="sidebar-item mb-2"
href="/value-my-car/">
<div class="sidebar-item-wrap sidebar-item-wrap-4">
<div class="icon-circle">
<i class="fa-light fa-car"></i>
</div>
<span class="text">
<p>Sell my car</p>
</span>
</div>
</a>
</div>
<a class="sidebar-item d-block d-md-none"
id="toggleButton">
<div class="sidebar-item-wrap sidebar-item-wrap-4">
<div class="icon-circle">
<i class="fa-light fa-plus"></i>
</div>
</div>
</a>
</div>
<script>
$(document).ready(function () {
$("#toggleButton").click(function () {
let target = $("#toggleDiv");
let icon = $(this).find("i");
console.log("Before Toggle:", icon.attr("class")); // Debugging
target.stop(true, true).slideToggle(300);
if (icon.hasClass("fa-plus")) {
icon.removeClass("fa-plus").addClass("fa-minus");
} else {
icon.removeClass("fa-minus").addClass("fa-plus");
}
console.log("After Toggle:", icon.attr("class")); // Debugging
});
$("#toggleButton i").removeClass("fa-circle-plus").addClass("fa-circle-minus");
});
</script><!-- start fixed CTAs -->
<div class="fixed-ctas">
</div>
<!-- end fixed CTAs -->
<!-- start last viewed popin -->
<!-- end last viewed popin --></form>
<template bsk-element="bsk-cms-grid">
<div @vue:mounted="init($el)">
<slot name="cms-grid"></slot>
</div>
</template><template bsk-element="bsk-accordion-group">
<div class="accordion"
:class="{'accordion-flush' : flush}"
:id="id"
@vue:mounted="init($el)">
<slot name="accordion-items"></slot>
</div>
</template><template bsk-element="bsk-accordion-item">
<style>
bsk-accordion-item {
display: block;
}
</style>
<div @vue:mounted="init($el)">
<h2 class="accordion-header">
<button class="accordion-button collapsed"
type="button"
data-bs-toggle="collapse"
data-bs-target=""
ref="button"
aria-expanded="false"
aria-controls="">
{{title}}
</button>
</h2>
<div id="collapseOne"
class="accordion-collapse collapse"
data-bs-parent=""
ref="collapse">
<div class="accordion-body">
<slot name="content"></slot>
</div>
</div>
</div>
</template><template bsk-element="bsk-article-full-width-cta">
<style>
bsk-article-full-width-cta .card {
transition: border-color 0.2s ease-in-out;
}
bsk-article-full-width-cta:hover .card {
border-color: var(--bs-gray-500);
}
bsk-article-full-width-cta .card-body {
grid-template-columns: auto 1fr;
grid-template-rows: 1fr 1fr;
column-gap: 1rem;
row-gap: 0.5rem;
}
bsk-article-full-width-cta svg {
grid-column: 1;
grid-row: 1 / span 2;
}
bsk-article-full-width-cta .card-title {
grid-column: 2;
}
bsk-article-full-width-cta p {
grid-column: 2;
grid-row: 2;
}
</style>
<article class="card text-start p-5 mx-auto col-12 col-sm-auto">
<div class="card-body d-grid">
<i class="h1 text-muted"
:class="faIcon"></i>
<h5 class="card-title mb-0">{{title}}</h5>
<p class="card-text text-start mb-0">{{cardText}}</p>
<a :href="linkUrl"
class="stretched-link"></a>
</div>
</article>
</template><template bsk-element="bsk-article-full-width">
<section class="container-xxl text-center"
style="padding: var(--bsk-section-spacer-3) 0">
<div class="flex-c-col gap-4 px-3">
<span>
<h2 class="h1 mb-0">{{title}}</h2>
<p class="mx-auto mb-0"
style="max-width: 120ch">
<slot name="article-body-copy"></slot>
</p>
</span>
<slot name="article-icons"></slot>
<slot name="article-cta"></slot>
<slot name="article-bottom"></slot>
</div>
</section>
</template><template bsk-element="bsk-article-icon-stacked">
<style>
bsk-article-icon-stacked .card {
background-color: transparent;
}
bsk-article-icon-stacked .card-body {
grid-template-columns: auto 1fr;
grid-template-rows: 1fr 1fr;
column-gap: 1rem;
row-gap: 0.5rem;
align-items: center;
}
bsk-article-icon-stacked svg {
grid-column: 1;
grid-row: 1 / span 2;
}
bsk-article-icon-stacked .card-title {
grid-column: 2;
}
bsk-article-icon-stacked p {
grid-column: 2;
grid-row: 2;
}
</style>
<div class="card border-0 col-12 col-md-auto">
<div class="card-body">
<img :src="imgSrc"
:alt="imgAlt"
class="mb-3" />
<h5 class="card-title mb-0">{{title}}</h5>
<p class="card-text mb-0">{{cardText}}</p>
</div>
</div>
</template><template bsk-element="bsk-article-icon">
<style>
bsk-article-icon .card {
background-color: transparent;
}
bsk-article-icon .card-body {
grid-template-columns: auto 1fr;
grid-template-rows: 1fr 1fr;
column-gap: var(--bsk-spacer-3);
row-gap: var(--bsk-spacer-2);
align-items: center;
padding: var(--bsk-spacer-2);
}
bsk-article-icon svg {
grid-column: 1;
grid-row: 1 / span 2;
}
bsk-article-icon .card-title {
grid-column: 2;
}
bsk-article-icon p {
grid-column: 2;
grid-row: 2;
}
</style>
<div class="card border-0 col-12 col-md-auto">
<div class="card-body text-start d-grid">
<img :src="imgSrc"
:alt="imgAlt"
class="mb-0" />
<h5 class="card-title mb-0">{{title}}</h5>
<p v-if="cardText"
class="card-text mb-0">
{{cardText}}
</p>
<a v-if="linkUrl"
href="#"
class="stretched-link"></a>
</div>
</div>
</template><template bsk-element="bsk-standard-carousel">
<style>
bsk-standard-carousel .slick-arrow {
width: fit-content;
}
bsk-standard-carousel .carousel-control-next {
right: 2rem;
bottom: -.75rem;
width: 5% !important;
opacity: 1;
z-index: 3;
top: auto;
}
bsk-standard-carousel .carousel-control-prev {
left: 2rem;
bottom: -.75rem;
width: 5% !important;
opacity: 1;
z-index: 3;
top: auto;
}
bsk-standard-carousel .slick-arrow path {
fill: var(--bs-primary);
}
</style>
<div @vue:mounted="init($el)">
<slot name="cards"></slot>
</div>
</template><template bsk-element="bsk-cta-section-full-width">
<style>
bsk-cta-section-full-width {
--cta-section-section-fw-padding: 14vh;
}
bsk-cta-section-full-width[is="part-exchange"] {
padding-top: 14vh !important;
padding-bottom: 0 !important;
}
@media only screen and (min-width: 992px) {
bsk-cta-section-full-width[is="part-exchange"] {
padding-top: 20vh !important;
padding-bottom: 0 !important;
}
}
@media only screen and (min-width: 992px) {
bsk-cta-section-full-width {
--cta-section-section-fw-padding: 18vh;
}
}
bsk-cta-section-full-width .cta-section-fw__img {
aspect-ratio: var(--cta-section-fw-aspect-ratio);
object-fit: cover;
}
bsk-cta-section-full-width .input-group {
gap: 0.5rem;
}
@media only screen and (max-width: 575px) {
bsk-cta-section-full-width[is="service-booking"] input.form-control {
width: 100%;
}
}
@media only screen and (max-width: 767px) {
bsk-cta-section-full-width {
text-align: center;
}
}
bsk-cta-section-full-width .input-group .form-control--cta-section-fw {
flex: 0 0 auto;
width: 100%
}
@media only screen and (min-width: 1200px) {
bsk-cta-section-full-width .input-group .form-control--cta-section-fw {
flex: 0 0 auto;
width: 58.33333333%;
}
bsk-cta-section-full-width .input-group.part-ex {
max-width: 550px;
}
bsk-cta-section-full-width :is(.input-group.sb, p:has(+ .sb)) {
max-width: 820px;
}
}
</style>
<div class="container-fluid px-0">
<div class="row">
<div class="col-12">
<div class="d-flex flex-column gap-3 w-100 h-100 text-white rounded-1 justify-content-end p-0"
:style="`
background: url(${imgSrc}) center center / cover no-repeat;
background-repeat: no-repeat;
background-size: cover;
padding-top: var(--cta-section-section-fw-padding);
padding-bottom: var(--cta-section-section-fw-padding);
`">
<div v-if="is == 'part-exchange'"
class="cta-section d-flex flex-column gap-3 bg-white px-6 py-6">
<h4 class="mb-0 text-dark">{{title}}</h4>
<p class="mb-0 text-center d-none">{{bodyText}}</p>
<div v-if="is == 'part-exchange' || is == 'service-booking'"
class="input-group row row-cols-1 row-cols-lg-12 gap-lg-4"
:class="is == 'part-exchange' ? 'part-ex' : 'sb'"
style="padding-left: 0.8rem">
<input ref="regInputFullWidth"
type="text"
id="reg-input"
class="form-control rounded-2 col col-lg-5"
:class="{'form-control--cta-section-fw': is == 'part-exchange'}"
placeholder="Car registration"
aria-label="Car registration" />
<input v-if="is == 'service-booking'"
ref="mileageFullWidth"
type="text"
id="mileage-input"
class="form-control rounded-2 col col-lg-5"
placeholder="Mileage"
aria-label="Mileage" />
<button class="btn btn-primary rounded-2 col col-lg-auto gtm-track--btn_valuation"
type="button"
@click.prevent="redirectWithInputValues">
{{btnText}}
</button>
</div>
</div>
<a v-else
href="/"
class="btn btn-primary mb-0">{{btnText}}</a>
</div>
</div>
</div>
</div>
</template><template bsk-element="bsk-cta-section">
<style>
bsk-cta-section .cta-section__img {
/* aspect-ratio: var(--cta-section-aspect-ratio); */
object-fit: cover;
}
bsk-cta-section .input-group {
gap: 0.5rem;
}
@media only screen and (max-width: 767px) {
bsk-cta-section {
text-align: center;
}
}
@media only screen and (min-width: 992px) {
bsk-cta-section .cta-section__img {
aspect-ratio: var(--cta-section-aspect-ratio);
}
bsk-cta-section .input-group .form-control--cta-section {
flex: 0 0 auto;
width: 58.33333333%;
}
}
</style>
<div class="container px-2 px-lg-0">
<div class="row g-0">
<div class="col-12 col-lg-6">
<slot name="body-image"></slot>
</div>
<div class="col-12 col-lg-6">
<div class="px-0 px-lg-7 text-center text-lg-start">
<h2>{{title}}</h2>
<slot name="body-text"></slot>
</div>
<span class="row pt-6 px-0 px-lg-7 g-0"
v-if="is == 'find-us' || is == 'find-us-used'">
<div class="col-12 col-xxl-8 px-3 px-lg-0 mb-3 postcode">
<input :disabled="delayedEnable"
ref="postcodeinput"
type="text"
id="postcode-input"
class="form-control"
placeholder="Your postcode"
aria-label="postcode-input"
@keyup.enter.prevent="redirectWithPostcode" />
<i class="fa-regular fa-location-crosshairs text-white"></i>
</div>
<div class="col-12 col-xxl-4 ps-3 ps-md-0 ps-xxl-3 pe-3 pe-md-0 pe-xxl-0 mb-3">
<button @click.prevent="redirectWithPostcode"
class="btn btn-primary w-100">
{{btnText}}
</button>
</div>
</span>
<a v-else
href="/"
class="btn btn-secondary mb-0">{{btnText}}</a>
</div>
</div>
</div>
</div>
</template><template bsk-element="bsk-dealership-card-group">
<style>
bsk-dealership-card-group {
--arrows-offset: -7.5vw;
--arrows-height: calc(100% - 70px);
}
@media only screen and (min-width: 1200px) {
bsk-dealership-card-group {
--arrows-offset: -8vw;
}
}
bsk-dealership-card-group .carousel-control-prev {
left: var(--arrows-offset);
height: var(--arrows-height);
}
bsk-dealership-card-group .carousel-control-next {
right: var(--arrows-offset);
height: var(--arrows-height);
}
</style>
<div @vue:mounted="init($el)">
<slot name="cards"></slot>
</div>
</template><template bsk-element="bsk-dealership-card">
<style>
[slot="distance"] {
position: absolute;
top: 0;
right: 0;
z-index: 1;
background-color: var(--bs-dark);
color: var(--bs-white);
padding: var(--bsk-spacer-3) var(--bsk-spacer-2);
margin-bottom: var(--bsk-spacer-3);
display: block;
text-align: center;
border-radius: var(--bsk-border-radius);
}
</style>
<div class="card col px-0">
<div>
<a :href="dealershipUrl">
<img :src="imgSrc"
class="card-img-top"
:alt="title" />
<slot name="distance"></slot>
</a>
<div class="card-body text-start flex-c-col align-items-start gap-3 py-4">
<h5 class="mb-0"
data-mh="dealership-title">
{{title}}
</h5>
<span class="text-start fs-6 mb-0">
<slot name="address"></slot>
</span>
<a v-if="is == 'btn-link'"
:href="dealershipUrl"
class="btn btn-secondary w-100"
:class="dealershipId ? `gtm-track--loc_${dealershipId}` : ''">{{buttonText || 'View Location'}}
</a>
<a v-else
:href="dealershipUrl"
class="stretched-link gtm-track--loc"
:class="dealershipId ? `gtm-track--loc_${dealershipId}` : ''"></a>
</div>
</div>
</div>
</template><template bsk-element="bsk-dealer-finder">
<style>
bsk-dealer-finder {
--offset-top: 15vh;
--offset-top-mob: 7vh;
}
bsk-dealer-finder .offcanvas {
z-index: -1;
height: calc(100vh - var(--offset-top));
}
bsk-dealer-finder .offcanvas-top {
top: var(--offset-top);
}
@media only screen and (max-width: 991px) {
bsk-dealer-finder .offcanvas {
height: calc(100vh - var(--offset-top-mob));
}
bsk-dealer-finder .offcanvas-top {
top: var(--offset-top-mob);
}
}
bsk-dealer-finder .offcanvas-backdrop {
display: none !important;
}
bsk-dealer-finder .nav-pills .nav-link.active {
background-color: initial;
border: 1px solid var(--bs-primary);
}
</style>
<div @vue:mounted="init($el)"
class="offcanvas offcanvas-top"
data-bs-scroll="true"
data-bs-backdrop="false"
tabindex="-1"
id="offCanvasDealerFinder"
aria-labelledby="offCanvasDealerFinderLabel"
:style="inlineCssVars">
<div class="offcanvas-body">
<div v-if="tabs"
class="container-xxl">
<ul class="nav nav-pills d-flex justify-content-around w-100 mb-2 mb-sm-3"
:class="rowCols ? rowCols : 'row-cols-4 row-cols-xl-auto'"
id="myTab"
role="tablist">
<li v-for="(tab, index) in tabs.split(',')"
:key="tab"
class="nav-item"
role="presentation">
<button class="nav-link w-100"
:class="{'active' : index === 0}"
:id="`${lCaseNoSpaces(tab)}-tab`"
data-bs-toggle="tab"
:data-bs-target="`#${lCaseNoSpaces(tab)}`"
type="button"
role="tab"
:aria-controls="`${lCaseNoSpaces(tab)}`">
<img :src="`https://bluesky.sirv.com/Websites/cog_boilerplate/logos/${lCaseNoSpaces(tab)}.png?height=100`"
height="100"
width="auto"
:alt="`${tab} logo`"
class="d-block mx-auto img-fluid"
loading="lazy" />
</button>
</li>
</ul>
<div class="tab-content"
id="myTabContent">
<div v-for="(tab, index) in tabs.split(',')"
:key="tab"
class="tab-pane fade"
:class="{'active show' : index === 0}"
:id="`${lCaseNoSpaces(tab)}`"
role="tabpanel"
:aria-labelledby="`${lCaseNoSpaces(tab)}-tab`">
<slot :name="`${lCaseNoSpaces(tab)}`"></slot>
</div>
</div>
</div>
<div v-else
class="container-xxl">
<slot name="dealerships"></slot>
</div>
</div>
</div>
</template><template bsk-element="bsk-dealer-finder-toggler">
<a href="#"
data-bs-toggle="offcanvas"
data-bs-target="#offCanvasDealerFinder"
aria-controls="offCanvasDealerFinder"
class="nav-link gap-2 d-flex align-items-center text-white p-0">
<i class="fa-regular fa-location-dot"
:class="iconClass"></i>
<span v-if="text"
class="d-none d-xl-block">
{{text}}
</span>
</a>
</template><template bsk-element="bsk-locations">
<style>
bsk-locations:not([is="map"], [is="tabs"]) .card-grid {
display: grid;
grid-template-columns: 1fr;
gap: var(--bsk-spacer-4);
}
bsk-locations[is="map"] .hours-tabs__outer {
grid-template-columns: 1fr;
gap: var(--bsk-spacer-4);
}
bsk-locations[is="map"] .hours-tabs__outer>* {
width: 100%;
}
bsk-locations[is="map"] .hours-tabs__inner {
grid-template-columns: 1fr 1fr;
grid-template-rows: 5rem auto;
}
bsk-locations[is="map"] [slot="iframe"] {
width: 100%;
}
bsk-locations[is="map"] iframe {
max-height: 18rem;
}
bsk-locations[is="tabs"] .bg-img {
background-image: url("https://jer240423.dev.cogplatform.co.uk/img/opening-hours/locations-bg.webp");
}
bsk-locations[is="tabs"] .hours-tabs__outer {
grid-template-columns: 1fr;
gap: var(--bsk-spacer-4);
}
bsk-locations[is="tabs"] .hours-tabs__outer>* {
width: 100%;
}
bsk-locations[is="tabs"] .hours-tabs__inner {
grid-template-columns: 1fr 1fr;
grid-template-rows: auto auto;
}
bsk-locations[is="tabs"] [slot^="card"] .d-grid {
padding: var(--bsk-spacer-4);
}
bsk-locations[is="tabs"] [slot="iframe"] {
width: 100%;
}
bsk-locations[is="tabs"] iframe {
max-height: 24rem;
}
bsk-locations[is="tabs"] .table td {
padding: var(--bsk-spacer-3) var(--bsk-spacer-2);
}
@media only screen and (max-width: 575px) {
bsk-locations[is="tabs"] .hours-tabs__inner {
grid-template-columns: 1fr;
gap: var(--bsk-spacer-4);
}
bsk-locations[is="tabs"] .hours-tabs__inner>div:nth-of-type(2) {
grid-column: 1 / 3;
}
}
@media only screen and (max-width: 575px) {
bsk-locations[is="map"] .hours-tabs__inner {
grid-template-columns: 1fr;
gap: var(--bsk-spacer-4);
}
bsk-locations[is="map"] .hours-tabs__inner>div:nth-of-type(2) {
grid-column: 1 / 3;
}
}
@media only screen and (min-width: 992px) and (max-width: 1199px) {
bsk-locations[is="map"] iframe {
max-height: 100%;
}
}
@media only screen and (min-width: 992px) and (max-width: 1199px) {
bsk-locations[is="tabs"] iframe {
max-height: 100%;
}
}
@media only screen and (min-width: 992px) {
bsk-locations[is="tabs"] .hours-tabs__outer {
/* grid-template-columns: 1fr 1fr; */
grid-template-columns: 7fr 5fr;
}
bsk-locations[is="tabs"] .hours-tabs__iframe {
align-items: flex-end;
}
}
@media only screen and (min-width: 992px) {
bsk-locations[is="map"] .hours-tabs__outer {
grid-template-columns: 1fr 1fr;
}
bsk-locations[is="map"] .hours-tabs__iframe {
align-items: flex-end;
}
}
@media only screen and (min-width: 1200px) {
bsk-locations:not([is="map"], [is="tabs"]) .card-grid {
grid-template-columns: 1fr 1fr;
}
}
@media only screen and (min-width: 1600px) {
bsk-locations iframe {
max-height: 18rem;
}
}
@media only screen and (min-width: 1600px) {
bsk-locations[is="tabs"] iframe {
max-height: 26rem;
}
}
bsk-locations[is="simple"] .hours-simple__inner {
grid-template-columns: 1fr;
grid-template-rows: 5rem auto;
}
@media only screen and (max-width: 575px) {
bsk-locations[is="simple"] .hours-simple__inner {
grid-template-columns: 1fr;
gap: 0rem;
}
bsk-locations[is="simple"] .hours-simple__inner>div:nth-of-type(2) {
grid-column: 1 / 3;
}
}
@media only screen and (min-width: 992px) {
.hours-simple__cards {
grid-column: 1 / 3;
}
}
bsk-locations[is="simple"] .slick-slider .slick-slide {
margin: 0rem;
}
bsk-locations[is="simple"] .slick-slider .slick-dots {
position: relative;
margin: 0rem;
}
bsk-locations[is="tabs"] .nav-tabs {
border-bottom: none;
gap: 1rem;
}
bsk-locations[is="tabs"] .nav-tabs .nav-link {
background-color: transparent;
border-color: transparent;
padding: 0rem;
}
bsk-locations[is="tabs"] .nav-tabs .nav-link.active {
position: relative;
}
bsk-locations[is="tabs"] .nav-tabs .nav-link::after {
position: absolute;
bottom: -0.5rem;
left: 0rem;
content: "";
display: block;
width: 0%;
height: 3px;
background-color: var(--bs-secondary);
margin-top: 0.5rem;
transition: width 300ms;
}
bsk-locations[is="tabs"] .nav-tabs .nav-link.active::after {
width: 100%;
}
bsk-locations[is="tabs"] hr {
transform: translateY(6.5px);
height: 2px;
background-color: var(--bs-white);
margin-top: 0px;
}
@media only screen and (max-width: 991px) {
bsk-locations[is="tabs"] .tab-content {
padding: var(--bsk-spacer-3);
}
bsk-locations[is="tabs"] [slot^="card"] .d-grid {
padding: var(--bsk-spacer-3) 0;
}
}
</style>
<div class="container-fluid py-5 bg-img"
@vue:mounted="init($el)">
<!-- maps or tabs : START -->
<div v-if="is === 'map' || is === 'tabs'"
class="container hours-tabs py-5">
<!-- title : START -->
<h2 class="text-white mb-5">{{title}}</h2>
<!-- title : END -->
<!-- nav-tabs : START -->
<nav>
<div class="nav nav-tabs"
id="nav-tab"
role="tablist">
<button class="nav-link border-bottom-0 active ps-lg-0 text-white"
id="card-one-tab"
data-bs-toggle="tab"
data-bs-target="#card-one"
type="button"
role="tab"
aria-controls="card-one"
aria-selected="true">
{{tabOne}}
</button>
<button class="nav-link border-bottom-0 ps-lg-0 text-white"
id="card-two-tab"
data-bs-toggle="tab"
data-bs-target="#card-two"
type="button"
role="tab"
aria-controls="card-two"
aria-selected="false">
{{tabTwo}}
</button>
<button class="nav-link border-bottom-0 ps-lg-0 text-white"
id="card-three-tab"
data-bs-toggle="tab"
data-bs-target="#card-three"
type="button"
role="tab"
aria-controls="card-three"
aria-selected="false">
{{tabThree}}
</button>
</div>
</nav>
<!-- nav-tabs : END -->
<hr class="mb-0 mb-sm-4 my-0 bg-white" />
<div class="hours-tabs__outer">
<section class="hours-tabs__inner">
<!-- single card (goes with map variant) : START -->
<section v-if="is === 'map'"
style="grid-column: 1 / 3">
<slot name="card-one"></slot>
</section>
<!-- single card (goes with map variant) : END -->
<!-- tab-content : START -->
<section v-else-if="is === 'tabs'"
style="grid-column: 1 / 3">
<div class="tab-content bg-transparent text-white ps-0 py-lg-0"
id="openingHoursTabContent">
<!-- tab-pane : START -->
<div class="tab-pane fade show active"
id="card-one"
role="tabpanel"
aria-labelledby="card-one-tab">
<slot name="card-one"></slot>
</div>
<!-- tab-pane : END -->
<!-- tab-pane : START -->
<div class="tab-pane fade"
id="card-two"
role="tabpanel"
aria-labelledby="card-two-tab">
<slot name="card-two"></slot>
</div>
<!-- tab-pane : END -->
<!-- tab-pane : START -->
<div class="tab-pane fade"
id="card-three"
role="tabpanel"
aria-labelledby="card-three-tab">
<slot name="card-three"></slot>
</div>
<!-- tab-pane : END -->
</div>
</section>
<!-- tab-content : END -->
</section>
</div>
</div>
<!-- maps or tabs : END-->
<!-- simple 3 col : START -->
<div v-else-if="is === 'simple'"
class="container hours-simple">
<section class="hours-simple__inner d-grid">
<!-- title : START -->
<div style="grid-column: 1 / 3">
<h2>{{title}}</h2>
<hr class="mb-0 mb-sm-4"
style="background-color: #b4b4b4" />
</div>
<!-- title : END -->
<!-- cards : START -->
<section class="hours-simple__cards row row-cols-1 row-cols-lg-3 gap-lg-0"
ref="slider"
style="grid-column: 1 / 3">
<slot name="card-one"></slot>
<slot name="card-two"></slot>
<slot name="card-three"></slot>
</section>
<!-- cards : END -->
</section>
</div>
<!-- simple 3 col : END -->
<!-- default : START -->
<div v-else
class="container">
<h2>{{title}}</h2>
<hr class="mb-4"
style="background-color: #b4b4b4" />
<div class="card-grid">
<slot name="card-one"></slot>
<slot name="card-two"></slot>
<slot name="card-three"></slot>
</div>
</div>
<!-- default : END -->
</div>
</template><template bsk-element="bsk-docs-text">
<div class="p-3 mb-4">
<div class="h2 mb-3">{{title}}</div>
<div class="lh-base">
<ul class="list-unstyled">
<li v-for="item in description.split(',,')"
class="mb-2">
{{item}}
</li>
</ul>
<h5>Mandatory attributes :</h5>
<ul v-if="mandatoryAttrs">
<li v-for="item in mandatoryAttrs.split(',')">{{item}}</li>
</ul>
<p v-else>No mandatory attributes are required for this portion.</p>
<h5>Optional attributes :</h5>
<ul v-if="optionalAttrs">
<li v-for="item in optionalAttrs.split(',')">{{item}}</li>
</ul>
<p v-else
class="text-muted">
No optional attributes for this portion.
</p>
<h5 class="mb-2">Example:</h5>
<pre v-if="example"
class="d-flex bg-light text-danger p-0 mb-0">
<span v-text="example"
style="padding: 2rem 4rem;"></span>
</pre>
</div>
</div>
</template><template bsk-element="bsk-repo-home-card">
<style>
bsk-repo-home-card .card {
transition: 350ms;
}
</style>
<div class="col">
<div class="card"
:class="urlHover ? 'border-primary' : ''">
<a :href="url"
class="text-decoration-none text-dark"
@mouseover="urlHover = ! urlHover"
@mouseout="urlHover = ! urlHover">
<div class="card-body">
<h5 class="h3 card-title">{{title}}</h5>
</div>
</a>
<a :href="docsUrl"
class="text-decoration-none">
<div class="card-footer">
<span class="h5 text-dark">
<i class="fas fa-book pe-2 text-primary"></i>
Docs
</span>
</div>
</a>
</div>
</div>
</template><template bsk-element="bsk-footer-address">
<address class="mb-0">
<span v-for="(line, index) in address.split(',')">{{line}}<span v-if="index + 1 != address.split(',').length">,</span>
<br v-if="is != 'centered'" />
</span>
</address>
</template><template bsk-element="bsk-footer-bottom">
<div class="container-fluid text-white footer-copyright">
<div class="row px-4 py-5">
<p class="mx-auto mb-0"
:class="is == 'disclosure' ? 'py-lg-0 lh-lg' : ''">
<slot name="text-content"></slot>
</p>
</div>
</div>
</template><template bsk-element="bsk-footer-contact">
<div class="flex-c-col align-items-lg-start gap-2">
<div v-if="email"
class="dealer-email mb-0">
<a :href="`mailto:${email}`"
class="d-flex fw-normal"><span class="me-1"><i class="fa-solid fa-envelope"></i></span>
{{email}}</a>
</div>
<div v-if="telephone"
class="dealer-tel mb-0">
<a :href="`tel:${telephone}`"
class="d-flex fw-normal"><span class="me-1"><i class="fa-solid fa-phone"></i></span>{{telephone}}</a>
</div>
</div>
</template><template bsk-element="bsk-footer-content">
<style>
bsk-footer-content[is="centered-links"] ul {
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
gap: 0.75rem;
margin-top: 0rem;
margin-bottom: 0rem;
}
@media only screen and (min-width: 992px) {
bsk-footer-content[is="centered-links"] ul {
gap: 1.5rem;
}
}
@media only screen and (max-width: 991px) {
bsk-footer-content[is="centered-links"] li {
display: flex;
justify-content: center;
width: 100%;
}
}
</style>
<div class="footer__content">
<h6 v-if="title"
class="h6 fw-bold mb-0">
{{title}}
</h6>
<slot name="content"></slot>
</div>
</template><template bsk-element="bsk-footer-lg-disclosure-group">
<style>
bsk-footer-lg-disclosure-group :is(.accordion-item, .accordion-header, .accordion-button, .accordion-button:focus) {
background-color: var(--bs-dark);
color: var(--bs-white);
}
bsk-footer-lg-disclosure-group .accordion-item {
border: none;
}
bsk-footer-lg-disclosure-group .accordion-button:focus {
box-shadow: none;
}
bsk-footer-lg-disclosure-group .accordion-item .accordion-button::after {
content: "";
-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' viewBox='0 0 448 512'%3E%3Cpath d='M201.4 342.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 274.7 86.6 137.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z'/%3E%3C/svg%3E") no-repeat 50% 50%;
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' viewBox='0 0 448 512'%3E%3Cpath d='M201.4 342.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 274.7 86.6 137.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z'/%3E%3C/svg%3E") no-repeat 50% 50%;
-webkit-mask-size: 1.2rem;
mask-size: 1.2rem;
background-color: var(--bs-white);
position: absolute;
right: 0px;
top: 0px;
height: 100%;
width: 40px;
display: flex;
justify-content: center;
align-items: center;
transition: 150ms;
transform: rotate(0deg);
}
bsk-footer-lg-disclosure-group .accordion-item[open] .accordion-button::after {
transform: rotate(180deg);
}
bsk-footer-lg-disclosure-group .list-group-item {
padding: var(--bsk-spacer-2) 0rem;
border-bottom: none;
}
@media only screen and (max-width: 991px) {
bsk-footer-lg-disclosure-group .accordion-item {
border-bottom: 1px solid var(--bs-gray-200);
}
}
@media only screen and (min-width: 992px) {
bsk-footer-lg-disclosure-group .accordion {
height: 100%;
}
bsk-footer-lg-disclosure-group .accordion-button {
border-bottom: 1px solid var(--bs-gray-200);
pointer-events: none;
}
bsk-footer-lg-disclosure-group .accordion-item .accordion-button::after {
display: none;
}
bsk-footer-lg-disclosure-group[is="form-footer"] .accordion-item:nth-of-type(odd) .list-group {
display: grid;
grid-template-columns: 1fr 1fr;
}
}
</style>
<div @vue:mounted="init($el)"
class="accordion border-bottom-0 row mx-1 mx-sm-3 mx-lg-0 py-2 py-lg-0"
:class="is == 'footer-form' ? 'row-cols-lg-2' : 'row-cols-lg-2 row-cols-xl-3'">
<!-- Disclosure One : START -->
<details class="accordion-item"
:open="openDisclosureGroupItems">
<summary class="accordion-button px-0"
:class="{ 'border-bottom-0' : ! isFooterFormVariant}">
<div class="accordion-header user-select-none">{{sectionOneTitle}}</div>
</summary>
<div class="accordion-body pt-0 pt-lg-2 ps-0">
<slot name="section-one"></slot>
</div>
</details>
<!-- Disclosure One : END -->
<!-- Disclosure Two : START -->
<details class="accordion-item"
:class="{'col-lg-3 offset-lg-1' : is == 'footer-form'}"
:open="openDisclosureGroupItems">
<summary class="accordion-button px-0"
:class="{ 'border-bottom-0' : ! isFooterFormVariant}">
<div class="accordion-header user-select-none">{{sectionTwoTitle}}</div>
</summary>
<div class="accordion-body pt-0 pt-lg-2 ps-0">
<slot name="section-two"></slot>
</div>
</details>
<!-- Disclosure Two : END -->
<!-- Disclosure Three : START -->
<details v-if="! isFooterFormVariant"
class="accordion-item"
:open="openDisclosureGroupItems">
<summary class="accordion-button px-0"
:class="{ 'border-bottom-0' : ! isFooterFormVariant}">
<div class="accordion-header user-select-none">{{sectionTwoTitle}}</div>
</summary>
<div class="accordion-body pt-0 pt-lg-2 ps-0">
<slot name="section-three"></slot>
</div>
</details>
<!-- Disclosure Three : END -->
<!-- Disclosure Bottom : START -->
<details class="accordion-item align-self-lg-end"
:class="isFooterFormVariant ? 'col-lg-10' : 'col-lg-12 col-xl-12'"
:open="openDisclosureGroupItems">
<summary class="accordion-button px-0"
:class="{ 'border-bottom-0' : ! isFooterFormVariant}">
<div class="accordion-header user-select-none">
{{sectionBottomTitle}}
</div>
</summary>
<div class="accordion-body pt-0 pt-lg-2 ps-0 pb-0">
<slot name="section-bottom"></slot>
</div>
</details>
<!-- Disclosure Bottom : END -->
</div>
</template><template bsk-element="bsk-footer-lg">
<style>
bsk-footer-lg article P {
max-width: 64ch;
}
bsk-footer-lg .w-100:has([slot="footer-right"]) {
overflow-x: hidden;
}
bsk-footer-lg [slot="footer-right"] {
display: block;
position: relative;
z-index: 2;
padding: 0 var(--bsk-spacer-5);
}
bsk-footer-lg div[class*="col"]:has([slot="footer-right"]):after {
position: absolute;
top: -50vh;
left: 0rem;
width: 100vw;
height: 200vh;
content: "";
background-color: var(--bs-light);
z-index: 0;
}
@media only screen and (max-width: 991px) {
bsk-footer-lg div[class*="col"]:has([slot="footer-right"]) {
overflow: hidden;
}
}
</style>
<footer class="bg-dark">
<div class="w-100 bg-dark overflow-hidden">
<div class="container-xxl">
<div class="row my-lg-5">
<div class="col-12 col-lg-5 order-lg-1 z-index-1 position-relative"
:class="is == 'footer-form' ? 'bg-white py-4' : 'bg-light py-5'">
<slot v-if="is == 'footer-form'"
name="footer-form"></slot>
<slot v-else
name="footer-right"></slot>
</div>
<div class="col-12 col-lg-7 pt-lg-4 py-5">
<div class="footer-lg__title-section px-3 pe-lg-4">
<div class="w-100 d-flex justify-content-between align-items-center">
<img src="https://bluesky.sirv.com/Websites/cog_boilerplate/images/logo-white-text.png"
width="187"
height="40"
alt="logo with white text" />
<slot name="socials"></slot>
</div>
<hr class="footer-lg__title-hr bg-white" />
</div>
<!-- disclosure group : START -->
<slot name="disclosure-group"></slot>
<!-- disclosure group : END -->
</div>
</div>
</div>
</div>
</footer>
</template><template bsk-element="bsk-footer-links">
<div class="footer__links">
<h6 v-if="title"
class="h6 fw-bold mb-0">
{{title}}
</h6>
<slot name="list"></slot>
</div>
</template><template bsk-element="bsk-footer-logo">
<a href="">
<img :src="imgSrc"
:alt="imgAlt"
class="mb-0" />
</a>
</template><template bsk-element="bsk-footer">
<style>
bsk-footer .go-up {
cursor: pointer;
}
bsk-footer .accordion-item {
border: 0 !important;
}
bsk-footer .accordion-button {
border-radius: 0 !important;
padding: 0 !important;
position: relative;
justify-content: center;
font-size: .875rem;
}
bsk-footer .accordion-button:after {
content: "\f105";
font-family: "Font Awesome 6 Pro Light" !important;
font-size: 1.25rem;
background-image: none !important;
margin-left: 1rem;
text-decoration: none !important;
}
bsk-footer .accordion-button:not(.collapsed) {
color: #212529;
background-color: transparent !important;
box-shadow: none !important;
}
bsk-footer .accordion-button:not(.collapsed)::after {
transform: rotate(90deg);
}
bsk-footer .accordion-body {
padding: 0 !important;
}
</style>
<footer class="footer"
:class="is == 'centered' ? 'footer--centered py-5' : ''"
style="overflow-x: hidden"
@vue:mounted="init($el)">
<div v-if="is == 'centered'">
<div class="container-lg d-flex flex-column align-items-center gap-4 gap-lg-3">
<slot name="one"></slot>
<slot name="two"></slot>
<slot name="three"></slot>
<slot name="four"></slot>
<slot name="five"></slot>
<slot name="bottom"></slot>
</div>
</div>
<div v-else
class="container-fluid px-2 px-lg-4">
<div class="row px-2 px-lg-6 pt-5 pt-lg-7">
<div class="col-12 border-bottom border-dark px-2 px-xl-0 pb-5 d-flex justify-content-between align-items-end">
<img src="https://bluesky.sirv.com/Websites/DM%20Keith/Images/Logos/logo.png"
alt="DM Keith" />
<div class="go-up text-decoration-underline"><i class="fa-regular fa-arrow-up me-2"></i>Top</div>
</div>
</div>
<div class="row px-2 pb-5 pb-lg-7 text-center text-lg-start pt-6">
<div class="col-12 col-lg-2">
<slot name="one"></slot>
</div>
<div class="col-12 col-lg-4 d-none d-lg-block">
<slot name="two"></slot>
</div>
<div class="col-12 col-lg-2">
<slot name="three"></slot>
</div>
<div class="col-12 col-lg-4">
<slot name="four"></slot>
</div>
<div :class="slotThreeIsUnused ? 'col-12 col-lg-4 ms-lg-auto d-flex justify-content-start flex-column align-items-center align-items-lg-start gap-lg-3' : 'col-12 col-lg-4'">
<slot name="five"></slot>
</div>
</div>
</div>
<slot name="bottom"></slot>
</footer>
</template><template bsk-element="bsk-gallery-actions">
<style>
bsk-gallery-actions [slot="actions"] {
display: flex;
justify-content: center;
align-items: center;
margin-top: var(--bsk-spacer-3);
margin-bottom: var(--bsk-spacer-4);
width: 100%;
gap: 1.75rem;
}
bsk-gallery-actions:not([is="buttons"]) [slot="actions"] {
justify-content: flex-start;
margin-top: 0rem;
}
</style>
<div @vue:mounted="init($el)"
class="gallery-actions flex-c mb-4 mb-lg-0 w-100"
:class="is == 'buttons' ? 'gap-4 gap-lg-0 gap-xl-4 mt-3' : 'justify-content-start gap-3 mt-1'">
<slot name="actions"></slot>
</div>
</template><template bsk-element="bsk-gallery">
<style>
/* gallery main */
bsk-gallery {
--arrow-distance: 0%;
padding: 0rem !important;
position: relative;
aspect-ratio: 13/9;
}
bsk-gallery .slick-slider .slick-slide {
margin: 0rem .25rem;
}
/* gallery arrows */
bsk-gallery .gallery .carousel-control-prev {
left: var(--arrow-distance);
}
bsk-gallery .gallery .carousel-control-next {
right: var(--arrow-distance);
}
bsk-gallery .gallery :is(.carousel-control-prev, .carousel-control-next) svg {
padding: var(--bsk-spacer-3);
height: 30px;
width: 30px;
}
bsk-gallery .gallery svg:not(.svg-inline--fa) path {
fill: var(--bs-dark);
}
/* gallery img count */
bsk-gallery .gallery__img-count {
z-index: 2;
left: 0;
bottom: .5rem;
}
/* gallery thumbs */
bsk-gallery .gallery-thumbs {
cursor: pointer;
padding: 0 !important;
}
bsk-gallery .gallery-thumbs .slick-slider .slick-slide {
margin: 0rem;
}
bsk-gallery .gallery-thumbs .slick-slide>div:nth-of-type(1) {
margin-bottom: -6px;
}
bsk-gallery [slot="gallery-actions"] {
position: absolute;
bottom: 0;
right: 0;
z-index: 2;
display: flex;
flex-direction: column;
width: 100%;
}
@media (max-width: 991.98px) {
bsk-gallery [slot="gallery-actions"] {
position: relative;
bottom: 0;
right: 0;
z-index: 2;
display: flex;
flex-direction: column;
}
}
bsk-gallery .gallery iframe {
width: 100%;
height: var(--gallery-video-height);
}
</style>
<div class="row row-cols-1 position-relative mx-0 px-xl-11"
:class="{'row-cols-xl-2' : is == 'full-width'}"
@vue:mounted="init($el)">
<slot name="shortlist"></slot>
<!-- Main Gallery : START -->
<div v-if="hasImages"
class="gallery m-0 p-0"
:class="is == 'full-width' ? 'gallery--fw' : 'mb-3'"
ref="gallery"
data-vid-source="~">
<figure v-for="(image,index) in images.split(',')"
class="img-slide aspect-ratio"
:class="is == 'full-width' ? 'img-slide--fw' : ''">
<a :href="`https://bluesky.cdn.imgeng.in/cogstock-images/${image}?imgeng=/w_auto,1200/`"
data-fancybox="images"
:title="`${manufacturer} ${model} Photo ${image}`"
:data-caption="`${manufacturer} ${model} ${version} (${mileage})`">
<img :data-img-index="index"
:data-lazy="`https://bluesky.cdn.imgeng.in/cogstock-images/${image}?imgeng=/w_auto,1000/`"
:alt="`${manufacturer} ${model} Photo ${image}`"
class="w-100 img-cover aspect-ratio"
width="500"
height="375"
style="--aspect-ratio: 13/9" />
</a>
</figure>
<slot name="gallery-actions"></slot>
</div>
<!-- Main Gallery : END -->
<!-- Main Gallery No Image : START -->
<div v-else
class="gallery m-0 p-0"
:class="is == 'full-width' ? 'gallery--fw' : 'mb-3'"
ref="gallery"
:data-vid-source="videoUrl">
<figure class="img-slide aspect-ratio"
:class="is == 'full-width' ? 'img-slide--fw' : ''">
<a :href="cognoimageUrl"
data-fancybox="images"
:data-srcset="cognoimageUrl"
:title="`${manufacturer} ${model} Awaiting Photo`"
:data-caption="`${manufacturer} ${model} ${version} (${mileage})`">
<picture>
<img :src="cognoimageUrl"
:data-src="cognoimageUrl"
:alt="`${manufacturer} ${model} Awaiting Photo`"
class="w-100 img-cover aspect-ratio"
style="--aspect-ratio: 16/9" />
</picture>
</a>
</figure>
</div>
<!-- Main Gallery No Image : END -->
<div class="d-lg-none view-reserve">
<span class="view-count"
style="z-index: 2;">
<!--
///////////////////////////////////////////////////
Start of COGVehicleViewCount
///////////////////////////////////////////////////
-->
<span id="VehicleViewCount2_lblVehicleViewCounts"></span>
<script>
function hasClassVehicleViewCount(ele, cls) {
return ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
}
function addClassVehicleViewCount(ele, cls) {
if (!this.hasClassVehicleViewCount(ele, cls)) ele.className += " " + cls;
}
function removeClassVehicleViewCount(ele, cls) {
if (hasClassVehicleViewCount(ele, cls)) {
var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
ele.className = ele.className.replace(reg, ' ');
}
}
</script>
<!--
///////////////////////////////////////////////////
End of COGVehicleViewCount
///////////////////////////////////////////////////
-->
</span>
</div>
<!-- Thumbs Gallery : START -->
<div v-if="is != 'default' && hasImages"
class="gallery-thumbs d-none d-lg-block p-0 m-0"
:class="is == 'full-width' ? 'gallery-thumbs--fw' : ''">
<picture v-for="(image,index) in returnArr(images)"
class="p-0"
:class="{'' : is != 'full-width' }"
:data-img-index="index"
@click="galleryClick($el)">
<source :srcset="`https://bluesky.cdn.imgeng.in/cogstock-images/${image}.jpg?imgeng=/w_300/`"
media="(min-width: 1200px)" />
<source :srcset="`https://bluesky.cdn.imgeng.in/cogstock-images/${image}.jpg?imgeng=/w_300/`"
media="(min-width: 768px)" />
<img :src="`https://bluesky.cdn.imgeng.in/cogstock-images/${image}.jpg?imgeng=/w_110/`"
:alt="`${manufacturer} ${model} Photo ${index + 1}`"
class="w-100 h-100"
style="object-fit: cover" />
</picture>
</div>
<!-- Thumbs Gallery : END -->
</div>
</template><template bsk-element="bsk-launch-gallery">
<a class="btn"
:class="is =='buttons' ? 'btn-primary' : 'btn-blank p-0'"
id="galleryLaunch"
@click.prevent="launch"
:style="{unsetStylesWhenIconsOnly}"
@vue:mounted="init($el)">
<i class="fa-regular fa-images p-0 me-0 me-lg-1"></i>
<span v-if="is =='buttons'"
class="d-none d-lg-inline-block">{{btnText}}</span>
</a>
</template><template bsk-element="bsk-launch-print-details">
<a class="btn gtm-track--btn_print"
:class="is =='buttons' ? 'btn-primary' : 'btn-blank p-0'"
target="_blank"
:href="linkUrl"
:style="{unsetStylesWhenIconsOnly}"
@vue:mounted="init($el)">
<i class="fa-regular fa-print"
:class="{'p-0 me-0 me-lg-1' : is == 'buttons'}"></i>
<span v-if="is =='buttons'"
class="d-none d-lg-inline-block">{{btnText}}</span>
</a>
</template><template bsk-element="bsk-launch-three-sixty">
<a class="btn"
:class="is =='buttons' ? 'btn-primary' : 'btn-blank p-0'"
id="360_button"
href="#container360"
data-fancybox
:style="{unsetStylesWhenIconsOnly}"
@vue:mounted="init($el)">
<i class="fa-regular fa-rotate"
:class="{'p-0 me-0 me-lg-1' : is == 'buttons'}"></i>
<span v-if="is =='buttons'"
class="d-none d-lg-inline-block">{{btnText}}</span>
</a>
</template><template bsk-element="bsk-launch-video">
<a class="btn"
:class="is =='buttons' ? 'btn-primary' : 'btn-blank p-0'"
href="#video"
data-fancybox
@click.prevent="goToVideo($el)"
data-fancybox
:style="{unsetStylesWhenIconsOnly}"
@vue:mounted="init($el)">
<i class="fa-regular fa-video"
:class="{'p-0 me-0 me-lg-1' : is == 'buttons'}"></i>
<span v-if="is =='buttons'"
class="d-none d-lg-inline-block">{{btnText}}</span>
</a>
</template><template bsk-element="bsk-grid-masonry">
<style>
bsk-grid-masonry [slot="grid"]:not(.slick-initialized) {
display: grid;
grid-template-columns: repeat(12, 1fr);
gap: 1rem;
}
bsk-grid-masonry [slot="grid"]>* {
grid-column: 1 / span 12;
}
bsk-grid-masonry .slick-slider .slick-dots {
margin: var(--bsk-spacer-2) auto var(--bsk-spacer-2);
}
@media only screen and (min-width: 576px) and (max-width: 991px) {
bsk-grid-masonry:not([is="alt-one"]) [slot="grid"]:not(.slick-initialized)> :is(:nth-child(1), :nth-child(2)) {
grid-column: span 6;
}
bsk-grid-masonry:not([is="alt-one"]) [slot="grid"]:not(.slick-initialized)> :not(:nth-child(1), :nth-child(2)) {
grid-column: span 4;
}
}
@media only screen and (min-width: 992px) {
bsk-grid-masonry:not([is="alt-one"]) [slot="grid"]> :is(:nth-child(1), :nth-child(2)) {
grid-column: span 6;
}
bsk-grid-masonry:not([is="alt-one"]) [slot="grid"]> :not(:nth-child(1), :nth-child(2)) {
grid-column: span 4;
}
}
@media only screen and (min-width: 1200px) {
bsk-grid-masonry:not([is="alt-one"])>[slot="grid"] {
gap: 1.5rem;
}
}
@media only screen and (min-width: 1600px) {
bsk-grid-masonry[is="alt-one"] img {
object-fit: cover;
}
bsk-grid-masonry[is="alt-one"] [slot="grid"] {
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(2, 1fr);
gap: 1rem;
}
bsk-grid-masonry[is="alt-one"] [slot="grid"]>a {
grid-column: span 1;
}
bsk-grid-masonry[is="alt-one"] [slot="grid"]> :nth-child(1) {
grid-column: span 2 / span 2;
grid-row: span 2 / span 2;
}
bsk-grid-masonry[is="alt-one"] [slot="grid"]> :nth-child(2) {
grid-row: span 1 / span 1;
grid-column-start: 3;
}
bsk-grid-masonry[is="alt-one"] [slot="grid"]> :nth-child(3) {
grid-row: span 1 / span 1;
grid-column-start: 3;
grid-row-start: 2;
}
bsk-grid-masonry[is="alt-one"] [slot="grid"]> :nth-child(2) img {
width: 620px !important;
height: 440px;
}
bsk-grid-masonry[is="alt-one"] [slot="grid"]> :nth-child(3) img {
width: 620px !important;
height: 439px;
}
}
@media only screen and (min-width: 1200px) and (max-width: 1599px) {
bsk-grid-masonry[is="alt-one"] [slot="grid"]> :nth-child(1) {
grid-column: span 2 / span 2;
grid-row: span 2 / span 2;
}
bsk-grid-masonry[is="alt-one"] [slot="grid"]> :nth-child(2) {
grid-row: span 1 / span 1;
grid-column-start: 3;
}
bsk-grid-masonry[is="alt-one"] [slot="grid"]> :nth-child(3) {
grid-row: span 1 / span 1;
grid-column-start: 3;
grid-row-start: 2;
}
bsk-grid-masonry[is="alt-one"] [slot="grid"]> :nth-child(2) img {
width: 620px !important;
height: 300px;
}
bsk-grid-masonry[is="alt-one"] [slot="grid"]> :nth-child(3) img {
width: 620px !important;
height: 300px;
}
bsk-grid-masonry[is="alt-one"] [slot="grid"] {
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(2, 1fr);
gap: 1rem;
}
}
@media only screen and (min-width: 992px) and (max-width: 1199px) {
bsk-grid-masonry[is="alt-one"] [slot="grid"]> :nth-child(1) {
grid-column: span 2 / span 2;
grid-row: span 2 / span 2;
}
bsk-grid-masonry[is="alt-one"] [slot="grid"]> :nth-child(2) {
grid-row: span 1 / span 1;
grid-column-start: 3;
}
bsk-grid-masonry[is="alt-one"] [slot="grid"]> :nth-child(3) {
grid-row: span 1 / span 1;
grid-column-start: 3;
grid-row-start: 2;
}
bsk-grid-masonry[is="alt-one"] [slot="grid"]> :nth-child(2) img {
width: 620px !important;
height: 240px;
}
bsk-grid-masonry[is="alt-one"] [slot="grid"]> :nth-child(3) img {
width: 620px !important;
height: 240px;
}
bsk-grid-masonry[is="alt-one"] [slot="grid"] {
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(2, 1fr);
gap: 1rem;
}
}
</style>
<div @vue:mounted="init($el)">
<slot name="grid"></slot>
</div>
</template><template bsk-element="bsk-grid-section-spacer">
<style>
html {
--component-gap: 3rem;
}
@media only screen and (min-width: 576px) and (max-width: 767px) {
html {
--component-gap: 4rem;
}
}
@media only screen and (min-width: 768px) and (max-width: 991px) {
html {
--component-gap: 5rem;
}
}
@media only screen and (min-width: 992px) {
html {
--component-gap: 6rem;
}
}
@media only screen and (min-width: 1200px) {
html {
--component-gap: 7.5rem;
}
}
bsk-grid-section-spacer {
display: flex;
flex-direction: column;
flex-wrap: nowrap;
gap: var(--component-gap);
}
bsk-grid-section-spacer>* {
width: 100%;
}
bsk-grid-section-spacer>*.exclude-from-gap {
margin-top: calc(0rem - var(--component-gap));
}
bsk-grid-section-spacer>*:nth-last-child(1) {
margin-bottom: var(--component-gap);
}
</style>
</template><template bsk-element="bsk-grid-slick-to-row">
<style>
bsk-grid-slick-to-row [slot="grid"]:not(.slick-initialized) {
display: grid;
grid-template-columns: repeat(12, 1fr);
gap: 1rem;
}
bsk-grid-slick-to-row [slot="grid"]>* {
grid-column: 1 / span 12;
}
bsk-grid-slick-to-row .slick-slider .slick-dots {
margin: var(--bsk-spacer-2) auto var(--bsk-spacer-3);
}
bsk-grid-slick-to-row:has(bsk-thumbnail-logo-links) .slick-slider .slick-dots {
margin: calc(var(--bsk-spacer-2) * -1) auto var(--bsk-spacer-3);
}
@media only screen and (min-width: 992px) {
bsk-grid-slick-to-row [slot="grid"]>* {
grid-column-start: auto;
grid-column-end: span 3;
}
bsk-grid-slick-to-row[is="large"] [slot="grid"]>* {
grid-column-end: span 6;
}
}
</style>
<div @vue:mounted="init($el)">
<slot name="grid"></slot>
</div>
</template><template bsk-element="bsk-header-top">
<style>
bsk-header-top .navbar {
background-color: var(--bs-primary-tint);
}
bsk-header-top .navbar .btn-primary {
background-color: var(--bs-primary) !important;
color: #fff !important;
}
bsk-header-top .navbar .btn-secondary {
background-color: var(--bs-secondary) !important;
color: #fff !important;
}
</style>
<div class="navbar navbar-dark navbar-expand-lg navbar-top py-lg-2 d-none d-lg-block px-4">
<div class="container-fluid">
<div class="d-lg-flex justify-content-between align-items-center w-100">
<slot name="left-nav"></slot>
<slot name="right-nav"></slot>
</div>
</div>
</div>
</template><template bsk-element="bsk-header">
<style>
bsk-header:is([is*="centre"]) [slot="nav"] {
display: flex;
align-items: center;
justify-content: center;
}
bsk-header:not([is*="centre"]) [class*="container"] {
justify-content: flex-start;
}
bsk-header:not([is*="centre"]) .navbar-toggler {
margin-left: auto;
}
@media only screen and (max-width: 1199px) {
bsk-header:is([is*="centre"]) [slot="left-nav"] {
display: none;
}
bsk-header:is([is="centre-with-burger"]) [slot="nav"] {
display: none;
}
bsk-header:is([is*="centre"]) [slot="nav"] {
flex-direction: column;
}
}
@media only screen and (min-width: 1200px) {
bsk-header:is([is*="centre"]) .navbar-collapse {
flex-grow: 0;
}
bsk-header:is([is*="centre"]) .navbar-collapse {
display: flex;
flex-basis: initial;
}
bsk-header:is([is="centre-with-burger"]) div[class*="container"]>* {
width: 33%;
display: flex;
}
}
@media only screen and (max-width: 520px) {
bsk-header .navbar-brand__franchise {
border: 0 !important;
}
bsk-header .navbar-brand__franchise img {
width: 112px;
height: auto;
}
bsk-header .navbar-brand {
margin-right: 0;
}
bsk-header .navbar-brand img {
width: 160px;
height: auto;
}
}
</style>
<div class="navbar navbar-light bg-white navbar--header-main py-lg-2 px-2 px-lg-4"
:class="expand ? `${expand}` : ''">
<div class="container-fluid"
:class="{'gap-4' : is == 'mega-menu', 'flex-nowrap' : is == 'centre-with-burger'}">
<span v-if="is == 'centre-with-burger'"
class="flex-c justify-content-start">
<button v-if="offcanvas"
class="hamburger ps-0"
style="transform: translateY(3px)"
:class="hamburger ? `hamburger--${hamburger}` : ''"
type="button"
data-bs-toggle="offcanvas"
:data-bs-target="`#${offcanvas}`"
:aria-controls="offcanvas"
aria-label="Toggle Header Navigation">
<span class="hamburger-box">
<span class="hamburger-inner"></span>
</span>
</button>
<slot name="left-nav"></slot>
</span>
<slot v-if="is == 'centre'"
name="left-nav"></slot>
<a class="navbar-brand"
:class="{'justify-content-center' : is == 'centre-with-burger'}"
href="/"
aria-label="Boilerplate">
<img :src="imgSrc"
:width="imgWidth"
:height="imgHeight"
alt="logo" />
</a>
<a v-if="franchiseUrl"
class="navbar-brand__franchise border-start"
:class="{'justify-content-center' : is == 'centre-with-burger'}"
:href="franchiseUrl"
:aria-label="franchiseAlt">
<img :src="franchiseImgSrc"
:width="122"
:height="50"
:alt="franchiseAlt"
loading="lazy">
</a>
<slot v-if="is == 'mega-menu'"
name="left-nav"></slot>
<slot v-if="is != 'centre-with-burger'"
name="shortlist"></slot>
<button v-if="is != 'centre-with-burger'"
class="hamburger navbar-toggler"
:class="hamburger ? `hamburger--${hamburger}` : ''"
type="button"
:data-bs-toggle="offcanvas ? 'offcanvas' : 'collapse'"
:data-bs-target="offcanvas ? `#${offcanvas}` : '#navBar'"
:aria-controls="offcanvas ? offcanvas : navBar"
:aria-expanded="!offcanvas ? 'false' : ''"
:aria-label="offcanvas ? 'Toggle Header Navigation' : 'Toggle Navigation'">
<span class="hamburger-box">
<span class="hamburger-inner"></span>
</span>
</button>
<nav class="collapse navbar-collapse"
:class="{'justify-content-end d-flex' : is == 'centre-with-burger'}"
id="navBar">
<slot name="nav"></slot>
</nav>
</div>
</div>
</template><template bsk-element="bsk-carousel-banner-slide">
<style>
bsk-carousel-banner-slide .title {
line-height: 1.2;
}
bsk-carousel-banner-slide .yt-wrapper {
/* fallback */
--yt-aspect-ratio: 16/9;
aspect-ratio: var(--yt-aspect-ratio, 16/9);
transform: scale(2);
}
@media only screen and (max-width: 767px) {
bsk-carousel-banner-slide .yt-wrapper {
--yt-aspect-ratio: 1440/660;
}
bsk-carousel-banner-slide .yt-wrapper iframe {
transform: translate(-50%, -50%);
left: 50%;
position: absolute;
top: 50%;
}
}
@media only screen and (min-width: 768px) and (max-width: 1199px) {
bsk-carousel-banner-slide .yt-wrapper {
--yt-aspect-ratio: 1440/660;
}
}
@media only screen and (min-width: 1200px) {
bsk-carousel-banner-slide .yt-wrapper {
--yt-aspect-ratio: 1920/600;
}
}
bsk-carousel-banner-slide .hero-img {
z-index: 2;
transition: opacity 1s ease;
}
bsk-carousel-banner-slide .hero-img.fade-out {
opacity: 0;
}
</style>
<div class="position-relative"
@vue:mounted="init($el)">
<!-- Video : START -->
<div v-if="youtubeId"
class="yt-wrapper w-100 bg-black overflow-hidden"
:style="`background: url(${imgSrc}) no-repeat; background-size:cover;`">
<div class="ytplayer w-100 h-100 d-block"
:id="youtubeId"
:data-youtube-id="youtubeId"
data-youtube-autoplay="true"
data-is-hero="true"></div>
</div>
<div v-if="youtubeId"
id="mute"
class="d-block">Unmute</div>
<!-- Video : END -->
<!-- Image : START -->
<div v-show="(youtubeId && delayVideoLoad) || !youtubeId"
class="w-100 h-100 bg-black"
:class="{'position-absolute start-0 end-0 top-0 bottom-0 hero-img': delayVideoLoad && youtubeId, 'fade-out' : fadeOutVideo}">
<picture>
<!-- small img - -->
<source v-if="imgSrcSmall"
:srcset="imgSrcSmall"
media="(max-width: 768px)"
width="480"
height="360" />
<!-- lg img -->
<source v-if="imgSrcLarge"
:srcset="imgSrcLarge"
media="(min-width: 1200px)"
width="1875"
height="780" />
<!-- default img -->
<img :src="imgSrc"
:alt="headline"
class="d-xl-block img-fluid w-100 h-100 mw-100 gtm-track--banner_image"
width="1440"
height="660" />
</picture>
</div>
<!-- Image : END -->
<!-- Hero Overlay : START -->
<div v-if="youtubeId">
<div v-if="overlay"
class="flex-c flex-wrap h-100 w-100 position-absolute start-0 top-0 d-none"
style="z-index: 3"
:href="linkUrl"
:title="headline">
<div class="flex-c-col flex-wrap text-white">
<div class="title text-center h2 d-none px-3">{{headline}}</div>
<p class="text-center display-1 text-uppercase fw-bold d-none px-3">{{subheading}}</p>
<p v-if="synopsis"
class="text-center h4 d-none px-3">
{{synopsis}}
</p>
<a v-if="linkUrl"
:href="linkUrl"
:target="linkNewTab ? '_blank' : '_self'"
class="stretched-link"
:class="headline ? `gtm-track--banner_${headline.toLowerCase().replace(/\s/g, '-')}` : ''"></a>
</div>
</div>
</div>
<div v-else-if="headline"
class="flex-c flex-wrap h-100 w-100 position-absolute start-0 top-0"
style="z-index: 3"
:title="headline">
<div class="flex-c-col flex-wrap text-white">
<div class="title text-center h2 px-3">{{headline}}</div>
<p class="text-center display-1 text-uppercase fw-bold px-3">{{subheading}}</p>
<p v-if="synopsis"
class="text-center h4 px-3">
{{synopsis}}
</p>
<a v-if="buttonText && linkUrl"
:href="linkUrl"
class="btn btn-primary gtm-track--banner_btn">
{{buttonText}}
</a>
</div>
</div>
<!-- Hero Overlay : END -->
<!-- No Hero Overlay : START -->
<div v-else>
<a v-if="linkUrl"
:href="linkUrl"
class="stretched-link"
:class="headline ? `gtm-track--banner_${headline.toLowerCase().replace(/\s/g, '-')}` : ''"></a>
</div>
<!-- No Hero Overlay : START -->
</div>
</template><template bsk-element="bsk-carousel-banner">
<style>
bsk-carousel-banner[dots="true"] .slick-dots {
display: flex !important;
position: absolute;
bottom: 1rem;
}
bsk-carousel-banner:not([dots="true"]) .slick-dots {
display: none !important;
}
@media only screen and (max-width: 767px) {
bsk-carousel-banner[dots="true"] .slick-dots {
bottom: 0.25rem;
margin: 0rem;
left: 0rem;
padding-right: var(--bsk-spacer-2);
}
}
.banner-slider .slick-slide {
margin: 0rem 0rem;
}
</style>
<div class="banner-slider w-100 container-fluid px-0"
@vue:mounted="init($el)">
<div class="row">
<div class="col-12 position-relative overflow-hidden px-0">
<!-- START: slider -->
<slot name="slides"></slot>
<!-- END: slider -->
</div>
</div>
</div>
</template><template bsk-element="bsk-video-banner">
<style>
bsk-video-banner {
--hero-bg-height: 100vh;
--hero-bg-height-mobile: calc(100vh - 93px);
--video-width: 100vw;
--video-height: 100vh;
}
@media (min-aspect-ratio: 16/9) {
bsk-video-banner {
--video-height: 56.25vw;
}
}
@media (max-aspect-ratio: 16/9) {
bsk-video-banner {
--video-width: 177.78vh;
}
}
.video-banner {
height: var(--hero-bg-height);
}
@media only screen and (max-width: 575px) {
.video-banner {
height: var(--hero-bg-height-mobile);
}
}
.video-banner iframe {
width: var(--video-width);
height: var(--video-height);
transform: translate(-50%, -50%);
opacity: 0.8;
}
@media only screen and (max-width: 575px) {
.video-banner__content {
text-align: center;
padding: var(--bsk-spacer-3);
}
}
.video-banner__headline {
font-size: var(--bsk-h1-font-size);
letter-spacing: 3px;
}
.video-banner__synopsis {
font-size: var(--bsk-h4-font-size);
}
@media only screen and (max-width: 575px) {
.video-banner__headline {
font-size: var(--bsk-h2-font-size);
letter-spacing: normal;
margin: 0rem;
}
.video-banner__synopsis {
font-size: var(--bsk-h3-font-size);
line-height: 1.2;
}
}
</style>
<div class="video-banner position-relative overflow-hidden w-100 bg-dark"
:style="`--hero-bg-height: ${heroBgHeight};--hero-bg-height-mobile: ${heroBgHeightMobile};`"
@vue:mounted="init($el)">
<!-- start: video -->
<div class="">
<div class="ytplayer position-absolute top-50 start-50"
:id="youtubeId"
:data-youtube-id="youtubeId"
data-youtube-autoplay="true"
data-is-hero="true"></div>
</div>
<!-- end: video -->
<!-- start: content -->
<div class="video-banner__content position-absolute text-white text-uppercase h-100 w-100 flex-c-col"
style="z-index: 5">
<!-- start: headline -->
<div v-if="headline"
class="video-banner__headline h1 text-center">
{{headline}}
</div>
<!-- end: headline -->
<!-- start: text -->
<p v-if="synopsis"
class="video-banner__synopsis text-center fw-500">
{{synopsis}}
</p>
<!-- end: text -->
<a v-if="buttonText && buttonUrl"
:href="buttonUrl"
class="btn btn-primary gtm-track--banner_findyourperfectvehicle">
{{buttonText}}
</a>
</div>
<!-- end: content -->
</div>
</template><template bsk-element="bsk-location-logo">
<a href="">
<img :src="imgSrc"
:alt="imgAlt"
class="mb-0" />
</a>
</template>
<template bsk-element="bsk-location-address">
<address class="mb-0">
<span v-for="(line, index) in address.split(',')">{{line}}
<span v-if="index + 1 != address.split(',').length">,</span>
<br v-if="is != 'centered'" />
</span>
</address>
</template><template bsk-element="bsk-location-contact">
<style>
bsk-location-contact a {
color: var(--bsk-dark);
text-decoration: none;
}
</style>
<div class="flex-c-col align-items-start gap-2">
<div v-if="email"
class="dealer-email mb-0">
<a :href="`mailto:${email}`"
class="d-flex fw-normal">
<span class="me-1">
<i class="fa-solid fa-envelope"></i>
</span>
{{email}}
</a>
</div>
<div v-if="telephone"
class="dealer-tel mb-0">
<a :href="`tel:${telephone}`"
class="d-flex fw-normal">
<span class="me-1"><i class="fa-solid fa-phone"></i></span>
{{telephone}}
</a>
</div>
</div>
</template><template bsk-element="bsk-location-hours">
<style>
bsk-location-hours[is="simple"] tr td {
padding-bottom: var(--bsk-spacer-2);
}
bsk-locations[is="tabs"] .table td:nth-of-type(2) {
text-align: end;
}
bsk-location-hours[is="simple"] tr td:nth-of-type(1) {
padding-right: var(--bsk-spacer-6);
}
@media only screen and (min-width: 576px) and (max-width: 767px) {
bsk-location-hours[is="simple"] tr td:nth-of-type(1) {
padding-right: var(--bsk-spacer-5);
}
}
@media only screen and (min-width: 992px) and (max-width: 1199px) {
bsk-location-hours[is="simple"] tr td:nth-of-type(1) {
padding-right: var(--bsk-spacer-3);
}
}
@media only screen and (min-width: 1200px) {
bsk-location-hours[is="simple"] tr td:nth-of-type(1) {
padding-right: var(--bsk-spacer-5);
}
}
@media only screen and (min-width: 1600px) {
bsk-location-hours[is="simple"] tr td:nth-of-type(1) {
padding-right: var(--bsk-spacer-6);
}
}
bsk-location-hours tr td:nth-of-type(1) {
padding-right: var(--bsk-spacer-6);
}
@media only screen and (min-width: 576px) and (max-width: 767px) {
bsk-location-hours tr td:nth-of-type(1) {
padding-right: var(--bsk-spacer-5);
}
}
</style>
<table v-if="is === 'simple'"
border=" 0"
slot="content">
<tbody>
<tr>
<td class="fw-semi">Monday - Friday</td>
<td>{{weekdays}}</td>
</tr>
<tr>
<td class="fw-semi">Saturday</td>
<td>{{saturday}}</td>
</tr>
<tr>
<td class="fw-semi">Sunday</td>
<td>{{sunday}}</td>
</tr>
</tbody>
</table>
<table v-else
border="0"
slot="content"
:class="{'table text-white' : is === 'locations'}">
<tbody>
<tr>
<td class="fw-semi">Monday</td>
<td>{{monday}}</td>
</tr>
<tr>
<td class="fw-semi">Tuesday</td>
<td>{{tuesday}}</td>
</tr>
<tr>
<td class="fw-semi">Wednesday</td>
<td>{{wednesday}}</td>
</tr>
<tr>
<td class="fw-semi">Thursday</td>
<td>{{thursday}}</td>
</tr>
<tr>
<td class="fw-semi">Friday</td>
<td>{{friday}}</td>
</tr>
<tr>
<td class="fw-semi">Saturday</td>
<td>{{saturday}}</td>
</tr>
<tr>
<td class="fw-semi">Sunday</td>
<td>{{sunday}}</td>
</tr>
</tbody>
</table>
</template><template bsk-element="bsk-location-socials">
<ul @vue:mounted="init($el)"
class="social-icons d-flex justify-content-center justify-content-lg-start mb-0 gap-3"
:class="is != 'wide' ? 'gap-lg-2' : ''">
<li v-for="(social, i) in socials"
class="me-2 mb-0">
<a :href="social.link"
target="_blank">
<i class="fa-brands"
:class="`fa-${social.name}`"></i>
</a>
</li>
</ul>
</template><template bsk-element="bsk-breadcrumb">
<style>
.breadcrumb-item a {
transition: 300ms;
color: var(--bs-secondary);
}
.breadcrumb-item a:hover {
color: var(--bs-dark);
}
</style>
<div class="w-100 p-3 border-1 border-bottom border-top"
:class="bgColor">
<div :class="containerClass">
<nav :style="`--bs-breadcrumb-divider: '${divider}';`"
aria-label="breadcrumb"
@vue:mounted="init($el)">
<ol class="breadcrumb mb-0">
<li v-for="(item,index) in items"
:key="item.url"
class="breadcrumb-item"
:class="index === 0 ? 'pe-2' : 'px-2'">
<a :href="item.url"
class="text-decoration-none"
:class="{'text-dark' : index + 1 === items.length}"
:aria-current="isLastItem($el, index)">
<i v-if="item.url == items[0].url"
class="fs-5 fa-light fa-house"></i>
<span v-else
class="text-capitalize">{{item.text}}</span>
</a>
</li>
</ol>
</nav>
</div>
</div>
</template><template bsk-element="bsk-auto-breadcrumbs">
<nav aria-label="breadcrumb"
@vue:mounted="init($el)">
<ol class="breadcrumb gap-2 py-3 mb-0">
<li v-for="(breadcrumbItem, index) in breadcrumbItems"
:key="breadcrumbItem.name"
class="text-capitalize">
<a v-if="index === 0"
:href="breadcrumbItem.link">
<span>
<i class="fa-light fa-house"></i>
</span>
</a>
<a v-else-if="isNotFirstOrLastItem(index)"
:href="breadcrumbItem.link">
<span v-else>{{breadcrumbItem.name}}</span>
</a>
<span v-else
class="text-muted">
{{breadcrumbItem.name}}
</span>
</li>
</ol>
</nav>
</template><template bsk-element="bsk-launch-page-share">
<a href="#"
data-fancybox
data-src="#share"
:style="{unsetStylesWhenIconsOnly}"
@vue:mounted="init($el)">
<i class="fa-regular fa-share-nodes me-2"></i>Share
<span v-if="is =='buttons'"
class="d-none d-lg-inline-block">{{btnText}}</span>
</a>
</template><template bsk-element="bsk-page-share">
<div class="d-none"
@vue:mounted="init($el)">
<div id="share"
class="px-3 px-md-5 py-6"
style="min-width: 30%">
<div class="container-fluid">
<div class="row pb-3">
<div class="col-12 text-center">
<h3>Share this page</h3>
</div>
</div>
<div class="row g-2 text-center">
<div class="col-6 col-sm-3 mb-2">
<a :href="`https://www.facebook.com/sharer/sharer.php?u=${pageUrl}&title=${pageTitle}`"
target="_blank"
class="d-block bg-primary p-2 text-white w-100">
<i class="fa-brands fa-facebook-f fs-4"></i>
</a>
</div>
<div class="col-6 col-sm-3 mb-2">
<a :href="`https://twitter.com/intent/tweet?original_referer=${pageUrl}&text=${pageTitle}`"
target="_blank"
class="d-block bg-primary p-2 text-white w-100">
<i class="fa-brands fa-x-twitter fs-4"></i>
</a>
</div>
<div class="col-6 col-sm-3 mb-2">
<a :href="`https://www.linkedin.com/shareArticle?mini=true&url=${pageUrl}&title=${pageTitle}`"
target="_blank"
class="d-block bg-primary p-2 text-white w-100">
<i class="fa-brands fa-linkedin fs-4"></i>
</a>
</div>
<div class="col-6 col-sm-3 mb-2">
<a :href="`mailto:?subject=${pageTitle}&body=Check out this page - ${pageUrl}`"
target="_blank"
class="d-block bg-primary p-2 text-white w-100">
<i class="fa-solid fa-envelope fs-4"></i>
</a>
</div>
</div>
<div class="row pt-3">
<div class="col-12">
<div class="input-group">
<input ref="url-input"
type="text"
class="form-control"
:placeholder="pageUrl"
:value="pageUrl"
:aria-label="pageUrl"
aria-describedby="copy-btn" />
<button @click.prevent="copyFunction"
class="btn btn-primary btn-blank"
id="copy-btn">
Copy <span class="d-none d-sm-inline">link</span>
</button>
</div>
</div>
<div class="text-end position-relative pb-5">
<p class="small position-absolute text-success end-0 bottom-0 p-1 mb-0"
:class="showCopyAlert ? 'd-inline-flex' : 'd-none'">
Link is now copied to your clipboard
</p>
</div>
</div>
</div>
</div>
</div>
</template><template bsk-element="bsk-read-more">
<style>
bsk-read-more {
cursor: pointer;
}
.bsk-read-more-target {
position: relative;
max-height: var(--initial-height, fit-content);
transition: all 0.3s ease-in-out;
overflow: hidden;
}
.bsk-read-more-target::after {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(rgba(255, 255, 255, 0), rgba(255, 255, 255, 1));
opacity: 0;
transition: opacity 0.3s ease-in-out;
}
.bsk-read-more-target.active {
max-height: var(--cropped-height, 250px);
}
.bsk-read-more-target.active::after {
opacity: 1;
}
</style>
<div @vue:mounted="init($el)"
@click.prevent="triggerToggle"
class="btn d-inline-flex flex-c gap-2"
:class="[{'showing' : showFullText}, btnClass ]">
<span v-if="showFullText"><i class="fa-light fa-circle-minus fs-5"
:class="iconColor"></i></span>
<span v-else><i class="fa-light fa-circle-plus fs-5"
:class="iconColor"></i></span>
<u ref="btnText"
class="text-start">{{ showFullText ? 'Read less' : 'Read more'}}</u>
</div>
</template><template bsk-element="bsk-remove-repeater-div"></template><template bsk-element="bsk-spotlight">
<div class=""
:class="{'franchises' : isFranchise}">
<article class="new-car-spot position-relative h-fit-content p-lg-5 pe-lg-7 ps-lg-0 mb-8 mb-lg-0 overflow-hidden">
<div class="new-car-spot__card hover-show position-absolute bottom-0 col-6 col-lg-12 text-white p-lg-5 pe-lg-7 ps-lg-0 cursor-pointer">
<div class="new-car-spot__card-body position-relative py-lg-3 py-xl-0 px-6 bg-transparent">
<div class="new-car-spot__icons-and-img gap-2 justify-content-center justify-content-lg-start z-index-2">
<div class="new-car-spot__img-wrap flex-c-col inline-minw inline-ratio rounded-top-2 z-index-2">
<img :src="logoImg"
:alt="logoImgAlt"
class="w-100 p-2 p-sm-4 inline-ratio img-contain" />
</div>
<div data-mh="new-car-spot"
class="new-car-spot__icons-wrap flex-c-col flex-lg-row flex-lg-nowrap gap-2 gap-sm-3 gap-lg-2 justify-content-lg-end ms-lg-auto">
<p class="new-car-spot__synopsis d-none d-lg-flex z-index-2 me-4 h-100 flex-c justify-content-start mb-0">
{{synopsis}}
</p>
<span class="d-none new-car-spot__badge badge bg-grey z-index-2 mb-0 fs-lg-7">
{{badgeText}}
</span>
</div>
</div>
<div class="new-car-spot__opaque-bg position-absolute bottom-0 start-0 w-100 h-100 text-white p-6 bg-dark opacity-50 z-index-1"></div>
</div>
</div>
<a :href="linkUrl"
class="d-block overflow-hidden">
<img :src="mainImg"
:data-src="mainImg"
:alt="mainImgAlt"
class="lazyload new-car-spot__main-img w-100 inline-ratio"
style="--aspect-ratio: 4/3" />
</a>
</article>
</div>
</template><template bsk-element="bsk-tabs">
<style>
bsk-tabs {
position: relative;
}
bsk-tabs .accordion-button:after {
/*
using mask so we can change the colour of the icon without having to recode and re-encode the svg
change mask size to update icon size
change bg color to update icon colour
*/
content: "";
-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' viewBox='0 0 448 512'%3E%3Cpath d='M201.4 342.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 274.7 86.6 137.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z'/%3E%3C/svg%3E") no-repeat 50% 50%;
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' viewBox='0 0 448 512'%3E%3Cpath d='M201.4 342.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 274.7 86.6 137.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z'/%3E%3C/svg%3E") no-repeat 50% 50%;
-webkit-mask-size: 1rem;
mask-size: 1rem;
background-color: var(--bs-dark);
position: absolute;
right: 0px;
top: 0px;
height: 100%;
width: 20px;
display: flex;
justify-content: center;
align-items: center;
transition: 150ms;
}
bsk-tabs .tab-pane.card {
border: none;
}
bsk-tabs .accordion-button:focus {
box-shadow: none;
}
bsk-tabs .card-header .accordion-button[aria-expanded="true"]:after {
transform: rotate(180deg);
}
@media only screen and (max-width: 767px) {
bsk-tabs[is="accordions"] div:has(> [slot]) {
padding: var(--bsk-spacer-3);
}
bsk-tabs .fade:not(.show) {
opacity: initial;
}
}
</style>
<div ref="tabs"
@vue:mounted="init($el)">
<ul class="nav nav-pills d-flex justify-content-center justify-content-lg-start my-5 px-0 gap-2"
:class="[{'gap-3' : is == 'half-row'}, {'d-none d-md-flex' : is == 'accordions'}, {'d-flex' : is != 'accordions'}]"
id="myTab"
role="tablist">
<li v-for="(tab, index) in tabs.split(',')"
:key="tab"
class="nav-item"
role="presentation">
<button @click="toggleOpen($el)"
class="nav-link"
:class="{'active' : index == activeIndex}"
data-bs-toggle="tab"
:id="`${toKebabCase(tab)}-tab`"
:data-bs-target="`#pane-${toKebabCase(tab)}`"
:aria-controls="`pane-${toKebabCase(tab)}`"
type="button"
role="tab">
<span v-if="icons"><i :class="icons.split(',')[index]"></i></span>
<span v-else>
<span class="icon-closed"
:class="{'d-none' : index == activeIndex}">
<i class="fa-regular fa-circle-plus"></i>
</span>
<span class="icon-open"
:class="{'d-none' : index != activeIndex}">
<i class="fa-regular fa-circle-minus"></i>
</span>
</span>
{{tab}}
</button>
</li>
</ul>
<div class="tab-content"
id="myTabContent"
ref="content"
:style="dynamicInlineStyles">
<div v-for="(tab, index) in tabs.split(',')"
:key="tab"
class="tab-pane fade mb-3 mb-md-0"
:class="[{'active show' : index == activeIndex}, {'accordion-item card border-1 border-top rounded' : is == 'accordions' && ! rmAccordionStyles}]"
role="tabpanel"
:id="`pane-${toKebabCase(tab)}`"
:aria-labelledby="`${toKebabCase(tab)}-tab`">
<div v-show="is == 'accordions'"
class="card-header accordion-header d-md-none border-0 p-0 bg-light"
role="tab"
:id="`heading-${toKebabCase(tab)}`">
<h5 class="mb-0">
<a class="accordion-button collapsed bg-light text-decoration-none fs-4 px-2"
class="collapsed"
data-bs-toggle="collapse"
:href="`#collapse-${toKebabCase(tab)}`"
aria-expanded="false"
aria-controls="`collapse-${toKebabCase(tab)}`">
{{tab}}
</a>
</h5>
</div>
<div :id="`collapse-${toKebabCase(tab)}`"
:class="is == 'accordions' ? 'collapse d-md-block' : ''"
data-bs-parent="#myTabContent"
:aria-labelledby="`heading-${toKebabCase(tab)}`">
<slot :name="`${toKebabCase(tab)}`"></slot>
</div>
</div>
</div>
<button v-if="readMore"
class="btn btn-outline-primary d-block mx-auto my-4"
@click.prevent="toggleMoreSpecs($el)">
View {{showAllContent ? 'less' : 'all'}}
</button>
</div>
</template><template bsk-element="bsk-tabs-toggle">
<style>
bsk-tabs-toggle .switch {
position: relative !important;
margin: 0px auto !important;
}
bsk-tabs-toggle .switch input {
width: 0;
height: 0;
}
bsk-tabs-toggle .slider-switch {
cursor: pointer;
-webkit-transition: 0.4s;
transition: 0.4s;
}
bsk-tabs-toggle .slider-switch:after {
position: absolute;
content: "\f204";
font-family: "Font Awesome 6 Pro Regular" !important;
font-size: 1.5rem;
left: -42px;
top: -5px;
}
bsk-tabs-toggle input:checked+.slider-switch:after {
position: absolute;
content: "\f205";
font-family: "Font Awesome 6 Pro Regular" !important;
font-size: 1.5rem;
}
bsk-tabs-toggle .slider-switch.round {
border-radius: 34px;
}
bsk-tabs-toggle .slider-switch.round:before {
border-radius: 50%;
}
bsk-tabs-toggle .left {
left: -90px;
}
bsk-tabs-toggle .right {
left: 50px;
width: 100px;
}
bsk-tabs-toggle .switch input:not(:checked)+span label[title="left"] {
/* color: #00ff90; */
font-weight: bold;
}
bsk-tabs-toggle .switch input:checked+span label[title="right"] {
/* color: red; */
font-weight: bold;
}
</style>
<div class="toggle-switch">
<label class="switch position-relative d-inline-block"
@vue:mounted="init($el)">
<input id="tab-switch"
autocomplete="off"
@change="toggleTabs"
type="checkbox"
class="opacity-0" />
<span class="slider-switch round position-absolute text-white">
<label title="left"
class="left position-absolute">{{tabOneLabel}}</label>
<label title="right"
class="right position-absolute">{{tabTwoLabel}}</label>
</span>
</label>
</div>
</template><template bsk-element="bsk-to-top">
<!-- Return to Top : START -->
<div class="cursor-pointer"
@click="document.documentElement.scrollTop = 0">
To Top
<i class="fa-regular fa-arrow-up-from-line ms-3"></i>
</div>
<!-- Return to Top : END -->
</template><template bsk-element="bsk-image-engine">
<div @vue:mounted="init($el)">
<span v-if="loading">
<i class="far fa-spinner fa-spin"></i>
</span>
<img v-if="!loading"
:src="`https://cdn.imagin.studio/getImage?customer=${customer}&capVehicleType=${vehicleType}&capid=${capid}&make=${make}&modelFamily=${model}&modelRange=${model}&modelVariant=${version}&modelYear=${modelYear}&powerTrain=${powerTrain}&transmission=${transmission}&bodySize=${bodySize}&trim=${trim}&paintId=${paintId}&aspectRatio=${aspectRatio}&angle=${angle}&zoomtype=${zoomtype}`"
:width="width"
:class="classList"
:alt="`${make} ${model} ${version}`"
loading="lazy" />
</div>
</template><template bsk-element="bsk-list-page-filters">
<style>
bsk-list-page-filters {
display: flex;
width: 100%;
}
bsk-list-page-filters .not-aside {
width: max(50vw, 800px);
}
bsk-list-page-filters .not-aside label {
margin-bottom: 0rem;
}
bsk-list-page-filters .not-aside :is(label, .form-select) {
width: 100%;
}
@media only screen and (min-width: 768px) {
bsk-list-page-filters {
justify-content: flex-end;
}
bsk-list-page-filters .not-aside label {
align-items: flex-end;
}
bsk-list-page-filters .not-aside :is(label, .form-select) {
width: 25%;
}
}
</style>
<div @vue:mounted="init($el)"
:class="{'d-flex flex-wrap justify-content-end gap-2 gap-md-3 not-aside': !isAside, 'w-100 flex-c-col align-items-start gap-1' : isAside}">
<label class="form-label flex-c-col"
:class="{'align-items-start align-items-md-end': !isAside}"
for="offers-category">{{labelText}}</label>
<select v-if="franchiseFilters"
ref="franchiseSelect"
name="franchise-category"
id="franchise-category"
class="form-select"
@change="fetchFilteredCardsByBrand($el)">
<option id="all"
value="all">
All Brands
</option>
<option v-for="franchiseFilter in franchiseFiltersArr"
:key="franchiseFilter"
:id="returnKebabCaseValue(franchiseFilter)"
:value="franchiseFilter">
{{franchiseFilter}}
</option>
</select>
<select id="offers-category"
ref="select"
class="form-select"
@change="filterCardsByOption($el)">
<option id="all"
value="all">
All Categories
</option>
<option v-for="filter in filtersArr"
:key="filter"
:id="returnKebabCaseValue(filter)"
:value="filter">
{{filter}}
</option>
</select>
</div>
</template><template bsk-element="bsk-list-page-filter-badges">
<style>
bsk-list-page-filter-badges button {
box-shadow: initial !important;
}
</style>
<div @vue:mounted="init($el)"
class="flex-c flex-wrap gap-2">
<button v-for="filter in filtersArr"
:id="returnKebabCaseValue(filter)"
type="button"
class="btn p-0"
@click.prevent="filterCardsByBadgeOption(filter)">
<span class="badge rounded-pill p-2"
:class="setBadgeBgColourBasedOnActiveState(filter)">{{filter}}</span>
</button>
<button id="clear"
type="button"
class="btn p-0"
@click.prevent="filterCardsByBadgeOption('all')">
<span class="badge rounded-pill bg-danger p-2">clear</span>
</button>
</div>
</template><template bsk-element="bsk-select-redirect">
<style>
bsk-select-redirect {
display: block;
}
bsk-select-redirect .select-wrap {
width: min(100%, 400px);
}
</style>
<div class="row row-cols-1 justify-content-center text-center">
<h2 class="mb-3">{{title}}</h2>
<p class="mb-4">{{subtitle}}</p>
<div class="select-wrap"
@change="redirectTo">
<slot name="select"></slot>
</div>
</div>
</template><template bsk-element="bsk-nav-group">
<style>
bsk-nav-group .sticky {
position: relative;
transition: top 0.5s;
z-index: 999;
opacity: 0.95;
}
bsk-nav-group .sticky.fixed {
position: fixed;
top: 0;
}
bsk-nav-group a.active {
color: var(--bs-primary) !important;
}
</style>
<section @vue:mounted="init($el)"
class="sticky w-100"
:class="{'fixed top-0': fixToTop}"
id="bsk-scrollspy-outer">
<div class="bg-light w-100">
<nav id="bsk-scrollspy"
class="d-flex align-items-center justify-content-start w-100 mb-4 mb-lg-0 px-3 py-2">
<a class="navbar-brand"
href="#">Navbar</a>
<ul class="nav list-unstyled d-flex gap-3 gap-xxl-4 mb-4 mb-lg-0">
<li v-for="(obj,index) in arrOfObjs"
:key="index"
class="nav-item">
<a class="nav-link text-dark"
:href="obj.href">{{obj.text}}</a>
</li>
</ul>
</nav>
</div>
<div class="w-100"></div>
</section>
</template><template bsk-element="bsk-cap-card-body">
<style>
bsk-cap-card-body>[slot="content"] {
display: flex;
flex-direction: column;
padding: var(--bsk-spacer-5);
gap: var(--bsk-spacer-3);
}
bsk-cap-card-body>[slot="content"]>* {
width: 100%;
}
</style>
<slot name="content"></slot>
</template><template bsk-element="bsk-cap-card-img">
<style>
bsk-cap-card-img picture:not(:first-of-type) {
display: none;
}
</style>
<picture>
<img :src="`${imgSrc.replace('http:', 'https:')}`"
:data-src="`${imgSrc.replace('http:', 'https:')}`"
:alt="`${make} ${model}`"
:width="`${width}`"
class="lazyload vehicle-card-img__img card-img-top"
:alt="`${make} ${model} ${version}`" />
</picture>
</template><template bsk-element="bsk-cap-card-price">
<h5 class="card-price">
From <span v-if="prefix">{{ prefix }}</span><span v-if="price"
class="highlight__text">{{ price }}</span>
</h5>
</template><template bsk-element="bsk-cap-card-spec">
<slot name="spec"></slot>
</template><template bsk-element="bsk-cap-card-title">
<h4 class="card-title">
<span v-if="make">{{ make }}</span>
<span v-if="model">{{ model }}</span>
<span v-if="version">{{ version }}</span>
</h4>
</template><template bsk-element="bsk-cap-card">
<article v-wrap
class="card"></article>
</template><template bsk-element="bsk-cap-data-card">
<div v-if="is == 'cardless'"
class="d-flex align-items-center gap-2">
<span v-if="faIcon">
<i class="h5 mb-0 text-secondary"
:class="faIcon"></i>
</span>
<span v-else>
<img :src="imgSrc"
:alt="dataTitle"
width="30px"
height="30px" />
</span>
<h5 class="card-title mb-0 h6">{{dataValue}} <span>{{dataUnit}}</span></h5>
</div>
<!-- CAP Data Card : START -->
<div v-else
class="card align-items-center justify-content-evenly bg-light"
style="width: 10rem; height: 9rem"
@vue:mounted="init($el)">
<span class="flex-c-col text-center">
<span v-if="faIcon"
class="mb-2">
<i class="h1 mb-0 text-secondary"
:class="faIcon"></i>
</span>
<span v-else
class="mb-2">
<img :src="imgSrc"
:alt="dataTitle"
width="40px"
height="40px" />
</span>
<h5 class="card-title mb-0 h6">{{dataTitle}}</h5>
</span>
<h6 class="card-subtitle mb-0">
<span class="h6"
ref="subtitle">{{dataValue}}</span>
<span>{{dataUnit}}</span>
</h6>
</div>
<!-- CAP Data Card : END -->
</template><template bsk-element="bsk-cap-modal-trigger">
<button type="button"
class="btn btn-primary"
data-bs-toggle="modal"
:data-bs-target="modalTarget"
:data-bs-make="make"
:data-bs-model="model"
:data-bs-version="version"
:data-bs-price="price"
:data-bs-capid="capid"
:data-bs-img="img"
:data-bs-spec="spec"
:data-bs-contact="contact"
@click="sendData($el)">
View Details
</button>
</template><template bsk-element="bsk-inline-offer-card">
<style>
bsk-inline-offer-card .card-text p {
display: -webkit-box;
-webkit-line-clamp: var(--line-clamp);
-webkit-box-orient: vertical;
overflow: hidden;
}
@media only screen and (min-width: 992px) and (max-width: 1199px) {
bsk-inline-offer-card img {
aspect-ratio: 1/1;
}
}
</style>
<div class="card mb-3 mx-auto p-5 shadow-sm border-1 border-light"
style="max-width: 1450px"
@vue:mounted="init($el, 'bsk-inline-offer-card')">
<div class="row g-0">
<div class="col-lg-4 order-1 order-lg-0">
<div class="card-body p-0 flex-c-col align-items-start gap-4">
<!-- desktop title -->
<div class="card-title mb-0 d-none d-lg-block">{{offerTitle}}</div>
<table class="w-100">
<tr v-for="pair in offerFinanceDetails"
class="flex-c justify-content-between border-bottom">
<td class="py-2 fw-bold my-1">{{Object.keys(pair)[0]}}</td>
<td class="py-2">{{Object.values(pair)[0]}}</td>
</tr>
</table>
<div v-html="offerBody"
class="card-text mb-0"
:style="{ '--line-clamp': lineClampLength }"></div>
<div class="d-flex gap-4">
<a href="/offers/"
class="btn btn-dark">View All Offers</a>
<a :href="offerUrl"
class="btn btn-primary">Find out More</a>
</div>
</div>
</div>
<div class="col-lg-7 ms-auto mb-4 mb-lg-auto h-100">
<!-- mobile title -->
<div class="card-title mb-4 d-lg-none">{{offerTitle}}</div>
<img :src="offerImage"
class="img-fluid h-100"
style="object-fit: cover"
:alt="offerTitle" />
</div>
</div>
</div>
</template><template bsk-element="bsk-offer-card">
<style>
bsk-offer-card {
margin-bottom: var(--bsk-spacer-3);
}
</style>
<div class="card shadow col px-0"
data-mh="bsk-offer-card">
<a v-if="is != 'btn-link'"
:href="offerUrl"
class="text-decoration-none text-dark">
<img :src="imgSrc"
class="card-img-top"
:alt="title" />
<div class="card-body d-flex flex-column align-items-start gap-4">
<h5 class="mb-0">{{title}}</h5>
<p class="card-text mx-auto mb-0">
{{offerText}}
</p>
</div>
</a>
<div v-else>
<a :href="offerUrl">
<img :src="imgSrc"
class="card-img-top"
:alt="title" />
</a>
<div class="card-body flex-column d-flex align-items-start justify-content-center gap-4">
<div data-mh="body">
<h5 class="mb-0">{{title}}</h5>
<p class="card-text mx-auto mb-0">
{{offerText}}
</p>
</div>
<a :href="offerUrl"
class="btn btn-primary">{{buttonText || 'Find out more'}}</a>
</div>
</div>
</div>
</template><template bsk-element="bsk-opening-hours-card">
<style>
bsk-opening-hours-card {
--bsk-grid-cols: 1fr 1fr;
}
bsk-opening-hours-card[is="locations"] {
--bsk-grid-cols: 1fr 2fr;
}
bsk-opening-hours-card[is="simple"] {
--bsk-grid-cols: 1fr 3rem;
}
bsk-opening-hours-card>section {
grid-template-columns: var(--bsk-grid-cols);
}
@media only screen and (max-width: 575px) {
bsk-opening-hours-card>section {
grid-template-columns: 1fr;
gap: 2rem;
}
}
@media only screen and (min-width: 992px) and (max-width: 1199px) {
bsk-opening-hours-card[is="tabs"]>section {
grid-template-columns: 1fr;
gap: 2rem;
}
}
</style>
<section v-if="is === 'simple'"
class="d-grid">
<!-- Location Details : START -->
<div class="flex-c-col align-items-start gap-3 mb-2 mb-lg-0">
<h5 class="mb-0 d-lg-block">{{title}}</h5>
<!-- Opening Hours Table : START -->
<slot name="table"></slot>
<!-- Opening Hours Table : END -->
<slot name="contact"></slot>
</div>
<!-- Location Details : END -->
<span class="vr h-100 d-none d-lg-block"></span>
</section>
<section v-else
class="d-grid"
:class="{'ps-0' : is == 'locations' }">
<!-- Location Details : START -->
<div class="flex-c-col align-items-start gap-2"
:class="is == 'locations' ? 'justify-content-start' : ''">
<h5 class="mb-0">{{title}}</h5>
<slot name="address"></slot>
<slot name="contact"></slot>
</div>
<!-- Location Details : END -->
<!-- Opening Hours Table : START -->
<slot name="table"></slot>
<!-- Opening Hours Table : END -->
</section>
</template><template bsk-element="bsk-opening-hours">
<style>
bsk-opening-hours:not([is="map"], [is="tabs"]) .card-grid {
display: grid;
grid-template-columns: 1fr;
gap: var(--bsk-spacer-5);
}
@media only screen and (min-width: 1200px) {
bsk-opening-hours:not([is="map"], [is="tabs"]) .card-grid {
grid-template-columns: 1fr 1fr;
}
}
bsk-opening-hours[is="map"] .hours-tabs__outer {
grid-template-columns: 1fr;
gap: var(--bsk-spacer-5);
}
bsk-opening-hours[is="map"] .hours-tabs__outer>* {
width: 100%;
}
bsk-opening-hours[is="map"] .hours-tabs__inner {
grid-template-columns: 1fr 1fr;
grid-template-rows: 5rem auto;
}
bsk-opening-hours[is="map"] [slot="iframe"] {
width: 100%;
}
bsk-opening-hours[is="map"] iframe {
max-height: 18rem;
}
@media only screen and (min-width: 992px) and (max-width: 1199px) {
bsk-opening-hours[is="map"] iframe {
max-height: 100%;
}
}
@media only screen and (max-width: 575px) {
bsk-opening-hours[is="map"] .hours-tabs__inner {
grid-template-columns: 1fr;
gap: var(--bsk-spacer-5);
}
bsk-opening-hours[is="map"] .hours-tabs__inner>div:nth-of-type(2) {
grid-column: 1 / 3;
}
}
@media only screen and (min-width: 992px) {
bsk-opening-hours[is="map"] .hours-tabs__outer {
grid-template-columns: 1fr 1fr;
}
bsk-opening-hours[is="map"] .hours-tabs__iframe {
align-items: flex-end;
}
}
@media only screen and (min-width: 1600px) {
bsk-opening-hours iframe {
max-height: 18rem;
}
}
bsk-opening-hours[is="tabs"] .hours-tabs__outer {
grid-template-columns: 1fr;
gap: var(--bsk-spacer-5);
}
bsk-opening-hours[is="tabs"] .hours-tabs__outer>* {
width: 100%;
}
bsk-opening-hours[is="tabs"] .hours-tabs__inner {
grid-template-columns: 1fr 1fr;
grid-template-rows: 5rem auto;
}
bsk-opening-hours[is="tabs"] [slot^="card"] .d-grid {
padding: var(--bsk-spacer-4);
}
bsk-opening-hours[is="tabs"] [slot="iframe"] {
width: 100%;
}
bsk-opening-hours[is="tabs"] iframe {
max-height: 24rem;
}
@media only screen and (max-width: 575px) {
bsk-opening-hours[is="tabs"] .hours-tabs__inner {
grid-template-columns: 1fr;
gap: var(--bsk-spacer-5);
}
bsk-opening-hours[is="tabs"] .hours-tabs__inner>div:nth-of-type(2) {
grid-column: 1 / 3;
}
}
@media only screen and (min-width: 992px) {
bsk-opening-hours[is="tabs"] .hours-tabs__outer {
grid-template-columns: 1fr 1fr;
}
bsk-opening-hours[is="tabs"] .hours-tabs__iframe {
align-items: flex-end;
}
}
@media only screen and (min-width: 1600px) {
bsk-opening-hours[is="tabs"] iframe {
max-height: 18rem;
}
}
@media only screen and (min-width: 992px) and (max-width: 1199px) {
bsk-opening-hours[is="tabs"] iframe {
max-height: 100%;
}
}
bsk-opening-hours[is="simple"] .hours-simple__inner {
grid-template-columns: 1fr;
grid-template-rows: 5rem auto;
}
@media only screen and (max-width: 575px) {
bsk-opening-hours[is="simple"] .hours-simple__inner {
grid-template-columns: 1fr;
gap: 0rem;
}
bsk-opening-hours[is="simple"] .hours-simple__inner>div:nth-of-type(2) {
grid-column: 1 / 3;
}
}
@media only screen and (min-width: 992px) {
.hours-simple__cards {
grid-column: 1 / 3;
}
}
bsk-opening-hours[is="simple"] .slick-slider .slick-slide {
margin: 0rem;
}
bsk-opening-hours[is="simple"] .slick-slider .slick-dots {
position: relative;
margin: 0rem;
}
</style>
<div class="container-fluid bg-light py-5"
@vue:mounted="init($el)">
<!-- maps or tabs : START -->
<div v-if="is === 'map' || is === 'tabs'"
class="container hours-tabs">
<div class="hours-tabs__outer d-grid">
<section class="hours-tabs__inner d-grid">
<!-- title : START -->
<div style="grid-column: 1 / 3">
<h2>{{title}}</h2>
<hr class="mb-0 mb-sm-4"
style="background-color: #b4b4b4" />
</div>
<!-- title : END -->
<!-- single card (goes with map variant) : START -->
<section v-if="is === 'map'"
style="grid-column: 1 / 3">
<slot name="card-one"></slot>
</section>
<!-- single card (goes with map variant) : END -->
<!-- tabs : START -->
<section v-else-if="is === 'tabs'"
style="grid-column: 1 / 3">
<!-- nav-tabs : START -->
<nav>
<div class="nav nav-tabs"
id="nav-tab"
role="tablist">
<button class="nav-link active"
id="card-one-tab"
data-bs-toggle="tab"
data-bs-target="#card-one"
type="button"
role="tab"
aria-controls="card-one"
aria-selected="true">
{{tabOne}}
</button>
<button class="nav-link"
id="card-two-tab"
data-bs-toggle="tab"
data-bs-target="#card-two"
type="button"
role="tab"
aria-controls="card-two"
aria-selected="false">
{{tabTwo}}
</button>
<button class="nav-link"
id="card-three-tab"
data-bs-toggle="tab"
data-bs-target="#card-three"
type="button"
role="tab"
aria-controls="card-three"
aria-selected="false">
{{tabThree}}
</button>
</div>
</nav>
<!-- nav-tabs : END -->
<!-- tab-content : START -->
<div class="tab-content bg-white"
id="openingHoursTabContent">
<!-- tab-pane : START -->
<div class="tab-pane fade show active"
id="card-one"
role="tabpanel"
aria-labelledby="card-one-tab">
<slot name="card-one"></slot>
</div>
<!-- tab-pane : END -->
<!-- tab-pane : START -->
<div class="tab-pane fade"
id="card-two"
role="tabpanel"
aria-labelledby="card-two-tab">
<slot name="card-two"></slot>
</div>
<!-- tab-pane : END -->
<!-- tab-pane : START -->
<div class="tab-pane fade"
id="card-three"
role="tabpanel"
aria-labelledby="card-three-tab">
<slot name="card-three"></slot>
</div>
<!-- tab-pane : END -->
</div>
<!-- tab-content : END -->
</section>
<!-- tabs : END -->
</section>
<section class="hours-tabs__iframe d-flex flex-nowrap">
<slot name="iframe"></slot>
</section>
</div>
</div>
<!-- maps or tabs : END-->
<!-- simple 3 col : START -->
<div v-else-if="is === 'simple'"
class="container hours-simple">
<section class="hours-simple__inner d-grid">
<!-- title : START -->
<div style="grid-column: 1 / 3">
<h2>{{title}}</h2>
<hr class="mb-0 mb-sm-4"
style="background-color: #b4b4b4" />
</div>
<!-- title : END -->
<!-- cards : START -->
<section class="hours-simple__cards row row-cols-1 row-cols-lg-3 gap-lg-0"
ref="slider"
style="grid-column: 1 / 3">
<slot name="card-one"></slot>
<slot name="card-two"></slot>
<slot name="card-three"></slot>
</section>
<!-- cards : END -->
</section>
</div>
<!-- simple 3 col : END -->
<!-- default : START -->
<div v-else
class="container">
<h2>{{title}}</h2>
<hr class="mb-4"
style="background-color: #b4b4b4" />
<div class="card-grid">
<slot name="card-one"></slot>
<slot name="card-two"></slot>
</div>
</div>
<!-- default : END -->
</div>
</template><template bsk-element="bsk-page-hero-img">
<style>
bsk-page-hero-img[is="lg"] .main-image {
height: calc(var(--hero-height) / 2);
}
@media only screen and (min-width: 768px) {
bsk-page-hero-img[is="lg"] .main-image {
height: var(--hero-height);
}
}
bsk-page-hero-img[is="lg"] .main-image img {
-o-object-fit: cover;
object-fit: cover;
opacity: var(--hero-img-opacity, 0.6);
transform: scale(2);
animation: zoomOutIn 0.6s cubic-bezier(0.54, 0.46, 0.54, 0.94) 0s forwards;
}
bsk-page-hero-img[is="lg"] .main-image__text {
text-shadow: 0 0 0.625rem rgba(0, 0, 0, 0.5);
z-index: 2;
transform: translateY(150%);
}
bsk-page-hero-img[is="lg"] .loaded .main-image__text {
animation: slideIn 0.4s cubic-bezier(0.54, 0.46, 0.54, 0.94) 0.4s forwards;
}
@keyframes zoomOutIn {
to {
transform: scale(1);
}
}
@keyframes slideIn {
to {
transform: translateY(0);
}
}
bsk-page-hero-img:not([is="lg"]) .image-bg {
background-position: 50%;
background-repeat: no-repeat;
background-size: cover;
/*background-attachment: fixed;*/
}
bsk-page-hero-img[is="fixed"] .image-bg {
background-attachment: fixed;
}
bsk-page-hero-img:not([is="lg"]) .image-bg.loaded {
background-image: var(--hero-image);
}
bsk-page-hero-img:not([is="lg"]) .image-bg:before {
background: #000;
content: "";
height: 100%;
left: 0;
opacity: 0.5;
position: absolute;
top: 0;
width: 100%;
z-index: 0;
}
bsk-page-hero-img:not([is="lg"]) .image-bg>* {
position: relative;
z-index: 1;
}
</style>
<div @vue:mounted="init($el)"
v-cloak>
<!-- lg image version : START -->
<div v-if="is == 'lg'"
class="main-image position-relative overflow-hidden w-100"
:class="{
'loaded': loaded,
'bg-dark': !background,
[background]: background
}"
:style="`--hero-height: ${heroHeight}; --hero-img-opacity: ${opacity}`">
<picture v-if="imgSrc">
<source v-if="imgSrcMob"
:srcset="`${imgSrcMob}?imgeng=/w_400/h_300/m_cropbox/`"
media="(max-width: 767px)"
width="400" />
<img :src="`${imgSrc}?width=1500&height=500&scale=both&mode=crop`"
:alt="title"
class="w-100 h-100 position-absolute" />
</picture>
<div class="main-image__text text-white text-center d-flex flex-column justify-content-center align-items-center position-absolute w-100 h-100 start-0 top-0 text-uppercase">
<div class="text-uppercase fw-semi h1"
style="letter-spacing: 0.125rem">
{{title}}
</div>
<p class="m-0 mx-auto px-3"
style="max-width: 75rem">
{{bodyText}}
</p>
</div>
</div>
<!-- lg image version : END -->
<!-- default image version : START -->
<div v-else
class="position-relative text-white py-7"
:class="{
'loaded': loaded,
'bg-dark': !background,
[background]: background,
'image-bg' : imgSrc
}"
:style="`--hero-image: url(${imgSrc});`">
<div class="container">
<div class="row">
<div class="col-12 my-5 text-center py-7">
<div class="text-uppercase fw-semi h1"
style="letter-spacing: 0.125rem">
{{title}}
</div>
<p class="mx-auto"
style="max-width: 46.875rem">
{{bodyText}}
</p>
</div>
</div>
</div>
</div>
<!-- default image version : END -->
</div>
</template><template bsk-element="bsk-page-hero">
<style v-if="is == 'image'">
@media only screen and (max-width: 991px) {
.page-hero__img {
max-width: 40vw;
}
}
@media only screen and (min-width: 992px) {
.page-hero__img {
transform: translateX(calc(var(--bs-gutter-x) * 0.5));
}
}
</style>
<!-- Image right version : START -->
<section v-if="is == 'image'"
class="mb-0 py-5">
<div class="page-hero container-xxl">
<div class="row">
<div class="col-12 col-lg-4 col-xxl-3 order-lg-1 mb-4 mb-lg-0">
<img class="page-hero__img img-fluid mx-auto flex-c justify-content-lg-end"
:src="imgSrc"
:alt="altText" />
</div>
<div class="col-12 col-lg-8 col-xxl-9">
<div class="text-center text-lg-start h-100 flex-c-col align-items-lg-start px-sm-5 px-lg-0">
<div class="h1 fw-semi lh-sm mb-2">{{title}}</div>
<p style="max-width: 720px">
<slot name="body-copy-one"></slot>
</p>
</div>
</div>
</div>
</div>
</section>
<!-- Image right version : END -->
<!-- Default version : START -->
<section v-else
class="mb-0 py-5"
:class="bgClass">
<div class="container-xxl">
<div class="row">
<div class="col-12">
<div class="text-center text-white">
<div class="display-5 fw-semi lh-sm mb-2">
{{title}}
</div>
<slot name="body-copy-one"></slot>
<slot name="body-copy-two"></slot>
</div>
</div>
</div>
</div>
</section>
<!-- Default version : END -->
</template><template bsk-element="bsk-review">
<style>
bsk-review .testimonial img {
width: 7rem;
height: 7rem;
border-radius: 50rem;
margin: auto;
display: flex;
justify-content: center;
align-items: center;
}
@media only screen and (max-width: 991px) {
bsk-review .testimonial__body {
max-width: 560px;
}
}
@media only screen and (min-width: 992px) {
bsk-review .position-lg-absolute {
position: absolute !important;
}
}
</style>
<article>
<blockquote v-if="is == 'bordered'"
class="card testimonial py-3"
@vue:mounted="init($el)"
itemprop="review"
itemscope=""
itemtype="http://schema.org/Review">
<!-- card body : START -->
<div class="card-body p-4 px-5">
<div class="d-flex align-items-center h-100 flex-wrap justify-content-center justify-content-lg-between position-relative">
<div class="flex-c-col align-items-lg-start gap-1 mb-2">
<!-- Author + Location -->
<div class="fw-semi">
<span style="font-style: normal"
itemprop="author">{{sourceName}}</span>,
<span>{{location}}</span>
</div>
<!-- Star Rating -->
<div class="testimonial__rating mb-0 flex-c justify-content-start"
itemprop="reviewRating"
itemscope=""
itemtype="http://schema.org/Rating">
<meta itemprop="ratingValue"
:content="rating" />
<meta itemprop="bestRating"
content="5" />
<meta itemprop="worstRating"
content="0" />
<i v-for="star in solidStars"
class="fa-solid fa-star"></i>
<i v-for="star in emptyStars"
class="fa-regular fa-star"></i>
<span class="visually-hidden">Rating: <span>{{rating}}</span> / 5
</span>
</div>
<!-- Review Date -->
<time class="text-muted fw-bold position-lg-absolute top-0 end-0"
:data-date="reviewDate">{{reviewDate}}
</time>
</div>
<!-- Review Body -->
<p class="testimonial__body card-text clamp text-center text-lg-start"
itemprop="description">
<slot name="body"></slot>
</p>
</div>
</div>
<!-- card body : END -->
</blockquote>
<blockquote v-else
class="card testimonial py-3 border-0"
@vue:mounted="init($el)"
itemprop="review"
itemscope=""
itemtype="http://schema.org/Review">
<div class="row">
<div class="col-12 col-lg-auto p-0 me-lg-5">
<div class="flex-c align-items-start justify-content-lg-start ms-lg-3 mb-3 mb-lg-0">
<picture>
<source :srcset="`${imgSrc}?width=400&height=300&scale=both&mode=crop`"
media="(min-width: 1200px)"
width="400" />
<source :srcset="`${imgSrc}?width=400&height=300&scale=both&mode=crop`"
media="(min-width: 992px)"
width="400" />
<img :src="`${imgSrc}?width=400&height=300&scale=both&mode=crop`"
:alt="sourceName"
class="card-img-start img-fluid bg-cover ls-is-cached lazyloaded"
loading="lazy" />
</picture>
</div>
</div>
<div class="col-12 col-lg-9">
<!-- card body : START -->
<div class="card-body p-0">
<div class="d-flex align-items-center h-100 flex-wrap justify-content-center justify-content-lg-between position-relative">
<div class="flex-c-col align-items-lg-start gap-1 mb-2">
<!-- Author + Location -->
<div class="fw-semi">
<span style="font-style: normal"
itemprop="author">{{sourceName}}</span>,
<span>{{location}}</span>
</div>
<!-- Star Rating -->
<div class="testimonial__rating mb-0 flex-c justify-content-start"
itemprop="reviewRating"
itemscope=""
itemtype="http://schema.org/Rating">
<meta itemprop="ratingValue"
:content="rating" />
<meta itemprop="bestRating"
content="5" />
<meta itemprop="worstRating"
content="0" />
<i v-for="star in solidStars"
class="fa-solid fa-star"></i>
<i v-for="star in emptyStars"
class="fa-regular fa-star"></i>
<span class="visually-hidden">Rating: <span>{{rating}}</span> / 5
</span>
</div>
<!-- Review Date -->
<time class="text-muted fw-bold position-lg-absolute top-0 end-0"
:data-date="reviewDate">{{reviewDate}}
</time>
</div>
<!-- Review Body -->
<p class="testimonial__body card-text clamp text-center text-lg-start"
itemprop="description">
<slot name="body"></slot>
</p>
</div>
</div>
<!-- card body : END -->
</div>
</div>
</blockquote>
</article>
<hr v-if="is != 'bordered'"
class="d-lg-none"
style="background-color: #cacaca" />
</template><template bsk-element="bsk-clear-filters">
<a class="h-100 flex-c small"
href="#"
@click.prevent="resetAll">
<u>{{text}}</u>
<i class="ms-2 fa-light fa-circle-xmark text-primary"
style="transform: translateY(2px)"></i>
</a>
</template><template bsk-element="bsk-shortlist-ajax"> </template><template bsk-element="bsk-shortlist-compare">
<div class="table-responsive">
<table border="0"
cellspacing="0"
cellpadding="0"
class="table">
<tr>
<th scope="col">Image</th>
<th scope="col">Vehicle</th>
<th scope="col">Price</th>
<th scope="col">Mileage</th>
<th scope="col">Registration Year</th>
<th scope="col">Fuel Type</th>
<th scope="col">Colour</th>
<th scope="col">Transmission</th>
<th scope="col"></th>
</tr>
<tr v-for="car in store.sl.cars">
<td>
<a :href="car.url"
title="View this vehicle">
<img :src="car.image"
:alt="car.model"
class="w-100"
style="max-width: 180px"
width="80"
border="0" />
</a>
</td>
<td>{{car.manufacturer}} {{car.model}} {{car.version}}</td>
<td>£{{car.price}}</td>
<td>{{car.mileage}} miles</td>
<td>{{car.reg}}</td>
<td>{{car.fuelType}}</td>
<td>{{car.colour}}</td>
<td>{{car.transmission}}</td>
<td>
<div class="flex-c-col p-5">
<span @click.prevent="store.sl.rmFromSummary(car, $el)"
style="cursor: pointer">
<i class="fa-regular fa-trash fs-5 text-danger"></i>
</span>
</div>
</td>
</tr>
</table>
</div>
</template><template bsk-element="bsk-shortlist-global-heart">
<style>
.global-heart:after {
content: attr(data-count);
margin-left: .25rem;
}
</style>
<a href="/shortlist/"
class="text-decoration-none">
<span v-cloak
class="global-heart"
:class="childClass !== undefined && childClass"
:data-count="store.sl.count">
<span v-if="store.sl.count < 1">
<i class="text-white fa-solid fa-heart"></i>
</span>
<span v-else>
<i class="text-white fa-solid fa-heart"></i>
</span>
</span>
</a>
</template><template bsk-element="bsk-shortlist-item-count">
<span>{{store.sl.cars.length}}</span>
</template><template bsk-element="bsk-shortlist-loading">
<div v-if="loading"
class="w-100 flex-c m-5 p-5"
@vue:mounted="init($el)"
style="min-height: 50vh">
<div class="spinner-border text-secondary"
style="width: 5rem; height: 5rem"
role="status">
<span class="visually-hidden">Loading...</span>
</div>
</div>
</template><template bsk-element="bsk-shortlist-local-heart">
<style>
bsk-shortlist-local-heart {
position: absolute;
bottom: 0rem;
right: 0rem;
padding: var(--bsk-spacer-3);
margin: var(--bsk-spacer-2) var(--bsk-spacer-2);
background-color: rgba(255, 255, 255, 0.8);
border-radius: 50%;
color: var(--bs-secondary);
box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
z-index: 10;
}
.local-heart[data-select-msg]:after {
font-size: var(--bsk-h6-font-size);
}
</style>
<span v-cloak
ref="props.data.url"
style="cursor: pointer"
class="local-heart"
:class="[childClass, addedToList === false ? 'gtm-track--garage_add' : 'gtm-track--garage_remove']"
:data-select-msg="addedToList === false ? 'select' : 'selected'"
@vue:mounted="init($el)"
@click="toggleShortlist($el)">
<span v-if="store.sl.isShortlistPage">
<i class="fa-solid fa-trash text-danger fs-4"></i>
</span>
<span v-else-if="!addedToList">
<i class="fa-regular fa-heart text-secondary fs-4"></i>
</span>
<span v-else>
<i class="fa-solid fa-heart text-secondary fs-4"></i>
</span>
</span>
</template><template bsk-element="bsk-shortlist-summary">
<div v-if="store.sl.cars == 0">
<h3>Used Car Shortlist</h3>
<p>
Did you know you could add used cars to your shortlist? When viewing a car
you like, simply click on the "Add to Shortlist" button, and it'll be
saved here so you can access it later.
</p>
</div>
<div v-else
class="row">
<div v-for="car in store.sl.cars"
class="col-12 col-sm-6 col-md-4 col-lg-3 col-xxl-2">
<div class="card">
<a :href="car.url"
:title="car.model"
class="gtm-track--repeater_image position-relative">
<img :src="car.image"
:alt="car.model"
class="w-100 img-fluid" />
<span class="position-absolute top-0 end-0 pe-3 pt-2"
@click.prevent="rmFromShortlist(car, $el)"><i class="fa-solid fa-heart fs-5 text-white"></i></span>
</a>
<div class="flex-c-col gap-1 px-3 py-2 text-center">
<h3 class="vehicle-card-titles__title card-title mb-0 text-capitalize fs-5">
{{car.manufacturer}} {{car.model}}
</h3>
<h6 class="vehicle-card-titles__sub-title mb-0">{{car.version}}</h6>
</div>
<div class="card-body pt-0">
<div class="row row-cols-1 gap-1 px-3">
<a class="btn btn-primary btn-sm"
:href="car.url">View Vehicle</a>
</div>
</div>
</div>
</div>
</div>
</template><template bsk-element="bsk-simple-spotlight-group">
<div v-wrap
:class="is == 'strip' ? 'container-fluid bg-light mb-0' : ''">
<div class="container">
<div class="row row-cols-1 row-cols-lg-3"
:class="is != 'strip' ? 'gap-5 gap-lg-0' : 'bg-light'"
@vue:mounted="init($el)"></div>
</div>
</div>
</template><template bsk-element="bsk-simple-spotlight">
<style>
bsk-simple-spotlight-group[is="strip"] .card {
background-color: var(--bs-light) !important;
}
</style>
<!-- Item : START -->
<div class="col">
<div class="card bg-light"
:class="is != 'bordered' ? 'border-0 flex-row py-3' : 'p-5 mx-4 gap-3 shadow-sm'">
<div class="card-body p-0 gap-2"
:class="is == 'strip' ? 'flex-c' : 'flex-c-col text-center'"
style="margin-bottom: -0.5rem">
<i :class="
[
icon,
is == 'strip' ? 'fs-6' : 'display-1 text-muted'
]"
style="transform: translateY(-3.6px)"></i>
<h5 class="card-title mb-0"
:class="is == 'strip' ? 'fs-6 mb-2 lh-sm' : ''">
{{ title }}
</h5>
<p class="card-text mb-0"
:class="is == 'strip' ? 'd-none' : ''"
style="max-width: 42ch">
{{body}}
</p>
<a v-if="url"
:href="url"
class="stretched-link"
style="height: 0px; display: inline"></a>
</div>
</div>
</div>
<!-- Item : END -->
</template><template bsk-element="bsk-thumbnail-logo-links">
<style>
bsk-thumbnail-logo-links .d-grid {
grid-template-columns: repeat(var(--logo-cols), 1fr);
}
</style>
<div class="bg-white p-3 d-grid gap-2"
data-mh="spotlight-tags"
style="height: 67px"
:style="{ '--logo-cols': logoCols }"
@vue:mounted="init($el)">
<a v-for="csv in totalLogoLinksToInject"
class="flex-c"
:href="splitAndTrim(csv, 1)"
tabindex="0"><img :src="splitAndTrim(csv, 2)"
height="35"
width="auto"
:alt="splitAndTrim(csv, 0)"
class="mx-0 w-100 h-auto"
loading="lazy" />
</a>
</div>
</template><template bsk-element="bsk-thumbnail">
<style>
/* shared by variations */
.bsk-thumbnail__synopsis {
display: -webkit-box;
-webkit-line-clamp: var(--line-clamp);
-webkit-box-orient: vertical;
overflow: hidden;
}
/* default only */
bsk-thumbnail:not([is="hover"]) .bsk-thumbnail__img {
object-fit: cover;
}
/* Hover variant only */
bsk-thumbnail[is="hover"] .bsk-thumbnail__img {
opacity: 0.5;
transition: 0.5s;
}
bsk-thumbnail[is="hover"] .bsk-thumbnail:hover .bsk-thumbnail__img {
filter: blur(5px);
}
bsk-thumbnail[is="hover"] .bsk-thumbnail__content {
pointer-events: none;
transition: 0.5s;
}
bsk-thumbnail[is="hover"] .bsk-thumbnail:hover .bsk-thumbnail__content {
bottom: 0;
pointer-events: all;
}
bsk-thumbnail[is="hover"] .bsk-thumbnail__synopsis {
max-height: 0;
transition: 1s;
}
bsk-thumbnail[is="hover"] .bsk-thumbnail:hover .bsk-thumbnail__synopsis {
max-height: 180px;
overflow: hidden;
}
@media only screen and (max-width: 575px) {
bsk-thumbnail[is="hover"] .bsk-thumbnail__content {
height: 180px;
}
}
@media only screen and (min-width: 576px) and (max-width: 767.98px) {
bsk-thumbnail[is="hover"] .bsk-thumbnail__content {
height: 180px;
}
}
@media (max-width: 767.98px) {
bsk-thumbnail[is="hover"] .bsk-thumbnail__content {
bottom: 0;
height: 180px;
max-height: 180px !important;
pointer-events: all;
}
bsk-thumbnail[is="hover"] .bsk-thumbnail__synopsis {
bottom: 2rem;
left: 1rem;
max-height: 180px !important;
pointer-events: all;
position: absolute;
overflow: hidden;
}
}
</style>
<!-- start: list item -->
<article class="bsk-thumbnail card overlay bg-black border-0 rounded-0 overflow-hidden position-relative"
:style="{ '--line-clamp': lineClampLength }">
<a :href="linkUrl"
class="gtm-track--repeater_image text-white"
tabindex="0">
<picture>
<source v-if="imgSrcLarge"
:srcset="`${imgSrcLarge}?imgeng=/w_400/h_300/m_cropbox/`"
media="(min-width: 1200px)"
width="1110" />
<source v-if="imgSrcMedium"
:srcset="`${imgSrcMedium}?imgeng=/w_400/h_300/m_cropbox/`"
media="(min-width: 992px)"
width="1110" />
<img :src="`${imgSrc}?imgeng=/w_400/h_300/m_cropbox/`"
:alt="title"
class="bsk-thumbnail__img w-100 h-auto lazyloaded"
loading="lazy"
width="282"
height="211" />
</picture>
<!-- start: content -->
<div class="bsk-thumbnail__content card-body bottom-0 position-absolute w-100"
:class="is != 'hover' ? 'flex-c justify-content-between' : ''">
<!-- start: title -->
<div class="bsk-thumbnail__title card-title"
:class="is != 'hover' ? 'h4 mt-0 mb-1 p-0' : 'h2 mt-0 mb-1 py-3 px-0 w-100 text-uppercase border-bottom'">
{{title}}
</div>
<!-- end: title -->
<!-- start: synopsis -->
<p v-if="is == 'hover'"
class="bsk-thumbnail__synopsis card-text text-white mb-2 overflow-hidden text-uppercase">
{{body}}
</p>
<i v-else
class="fa-light fa-circle-chevron-right fs-3"></i>
<!-- end: synopsis -->
</div>
<!-- end: content -->
</a>
</article>
<!-- end: list item -->
<slot name="logo-links"></slot>
</template><template bsk-element="bsk-ucr-grid">
<style>
bsk-ucr-grid>.d-grid {
display: grid;
grid-template-columns: 1fr;
grid-template-rows: auto;
grid-gap: 1.5rem;
}
@media only screen and (min-width: 768px) {
bsk-ucr-grid>.d-grid {
grid-template-columns: repeat(2, 1fr);
}
}
@media only screen and (min-width: 1200px) {
bsk-ucr-grid>.d-grid {
grid-template-columns: repeat(3, 1fr);
}
}
bsk-ucr-grid>.d-grid.list-view {
display: grid;
grid-template-columns: 1fr;
grid-template-rows: auto;
grid-gap: 1.5rem;
}
bsk-ucr-grid .list-transition.list-view>* {
animation-duration: 400ms;
transform: translateX(-200vw);
animation-delay: calc(var(--grid-item-index) * 100ms);
animation-fill-mode: forwards;
animation-name: slidein;
}
bsk-ucr-grid .grid-transition:not(.list-view)>* {
animation-delay: none;
animation-delay: calc(var(--grid-item-index) * 50ms);
animation-duration: 80ms;
animation-name: slideout;
}
@keyframes slidein {
from {
transform: translateX(-200vw);
}
to {
transform: translateX(0);
}
}
@keyframes slideout {
from {
transform: scale(0.8);
}
to {
transform: scale(1);
}
}
</style>
<section v-cloak
v-wrap
class="container d-grid px-0"
:class="[{'list-view' : store.ucr.gridType === 'list'}, {'list-transition' : listTransition}, {'grid-transition' : gridTransition}]"
@vue:mounted="init($el)"></section>
</template><template bsk-element="bsk-ucr-list-grid-toggle">
<style>
bsk-ucr-list-grid-toggle {
display: block;
}
bsk-ucr-list-grid-toggle :is(span, path) {
transition: 250ms;
}
bsk-ucr-list-grid-toggle .active {
border-color: var(--bs-gray-500) !important;
}
bsk-ucr-list-grid-toggle .active path {
/* fill: var(--bs-primary); */
fill: var(--bs-dark);
}
</style>
<div class="flex-c gap-1">
<span class="border border-1 rounded-1 py-1 px-2 bg-light"
@click="store.ucr.gridType = 'list'"
:class="store.ucr.gridType == 'list' ? 'active' : ''"
style="cursor: pointer">
<i class="fs-6 fa-regular fa-list-ul"></i>
</span>
<span class="border border-1 rounded-1 py-1 px-2 bg-light"
@click="store.ucr.gridType = 'grid'"
:class="store.ucr.gridType == 'grid' ? 'active' : ''"
style="cursor: pointer">
<i class="fs-6 fa-regular fa-th-large"></i></span>
</div>
<!-- <ul class="nav nav-segment toggler" >
<li class="list-inline-item" style="cursor: pointer;">
<a @click.prevent="store.ucr.gridType = 'list'" class="nav-link" title="Grid View"
>
<i class="fs-6 fa-regular fa-list-ul" ></i>
</a>
</li>
<li class="list-inline-item" style="cursor: pointer;">
<a @click.prevent="store.ucr.gridType = 'grid'" class="nav-link" title="List View" >
<i class="fs-6 fa-regular fa-table-list" ></i>
</a>
</li>
</ul> -->
</template><template bsk-element="bsk-vehicle-card-actions">
<style>
bsk-vehicle-card-actions[is="blank"] .btn {
width: fit-content;
margin: auto;
position: relative;
}
bsk-vehicle-card-actions[is="blank"] .btn:after {
content: "";
position: absolute;
bottom: -1px;
width: calc(100% - 2.5rem);
height: 2px;
background-color: var(--bs-primary);
}
</style>
<span class="d-none"
@vue:mounted="init($el)"></span>
<a v-if="is === 'stretched'"
:href="url"
class="stretched-link"></a>
</template><template bsk-element="bsk-vehicle-card-body">
<style>
bsk-vehicle-card-body>div {
display: flex;
flex-direction: column;
}
bsk-vehicle-card-body>* {
width: 100%;
}
</style>
<div @vue:mounted="init($el)"
v-wrap
class="card-body p-4"
:class="isListGrid() ? 'd-flex flex-column gap-3 justify-content-center h-100' : 'gap-3'"></div>
</template><template bsk-element="bsk-vehicle-card-icon">
<span class="d-none"
@vue:mounted="init($el)"></span>
<style>
bsk-vehicle-card-icon svg[style*="--circle-size"] {
width: var(--circle-size);
height: var(--circle-size);
}
</style>
<a v-if="url"
:href="url"
:target="target"
class="text-decoration-none text-dark">
<i :style="{ '--circle-size': circle }"
:class="[icon , {'d-flex flex-c border border-3 border-dark rounded-circle' : circle }]"></i>
</a>
<i v-else
:style="{ '--circle-size': circle }"
:class="[icon , {'d-flex flex-c border border-3 border-dark rounded-circle' : circle }]"></i>
</template><template bsk-element="bsk-vehicle-card-img-count">
<style>
bsk-vehicle-card-img-count {
position: absolute;
z-index: 2;
left: 0rem;
bottom: 0;
}
</style>
<aside class="fs-5 p-2 d-flex align-items-center gap-1"
@vue:mounted="init($el)">
<span v-if="imgCount > 0"
class="d-flex badge bg-light text-dark fw-normal">
<i class="fa-light fa-camera pe-1 py-1"></i>
<span class="d-block"
style="transform: translateY(5px)">
{{imgCount}}
</span>
</span>
<span v-if="hasVideo"
class="badge bg-light text-dark">
<i class="fa-light fa-video py-1"></i>
</span>
</aside>
</template><template bsk-element="bsk-vehicle-card-img">
<style>
bsk-vehicle-card-img {
position: relative;
}
.vehicle-card-img__img.list-view {
aspect-ratio: 1.4/1;
object-fit: cover;
}
@media only screen and (min-width: 992px) {
.vehicle-card-img__img.list-view {
aspect-ratio: 1.6/1;
}
}
</style>
<a @vue:mounted="init($el)"
:href="url"
class="vehicle-card-img gtm-track--repeater_image card-head"
:title="`${regyear} ${manufacturer} ${model} | £${price}`"
:data-vehicle_regyear="regyear"
:data-vehicle_manufacturer="manufacturer"
:data-vehicle_model="model"
:data-vehicle_version="version"
:data-vehicle_price="price"
:data-vehicle_stockid="stockid"
:data-item_index="index"
data-link_identifier="list image"
data-item_description="Car Thumbnail">
<img :src="imgSrc ? imgSrc : '/COGNoImage/noimage(400).jpg'"
:data-src="imgSrc ? imgSrc : '/COGNoImage/noimage(400).jpg'"
class="vehicle-card-img__img card-img-top lazyloaded"
:class="{'list-view' : isListGrid()}"
width="400"
:alt="`${regyear} ${manufacturer} ${model} at ${store.sitename}`" />
</a>
</template><template bsk-element="bsk-vehicle-card-location">
<style>
bsk-vehicle-card-location a {
font-weight: 600;
}
</style>
<a @vue:mounted="init($el)"
:href="locationUrl"
class="text-start d-block text-decoration-none text-dark">
<i class="fa-solid fa-location-pin me-1"></i>
{{location}}
</a>
</template><template bsk-element="bsk-vehicle-card-pricing">
<span class="d-none"
@vue:mounted="init($el)"></span>
<style>
bsk-vehicle-card-pricing {
width: 100%;
}
bsk-vehicle-card-pricing p.list-view {
width: fit-content;
}
bsk-vehicle-card-pricing[is="bordered"] {
border-top: 1px solid var(--bs-gray-300);
border-bottom: 1px solid var(--bs-gray-300);
}
bsk-vehicle-card-pricing[is="bordered"] p {
padding-top: var(--bsk-spacer-3);
padding-bottom: var(--bsk-spacer-3);
}
bsk-vehicle-card-pricing[is="was-now-save"] p {
display: grid;
grid-template-columns: 1fr auto 1fr;
grid-template-rows: 1fr auto 1fr;
row-gap: var(--bsk-spacer-1);
column-gap: var(--bsk-spacer-2);
}
bsk-vehicle-card-pricing[is="was-now-save"] span {
grid-column: var(--grid-col);
grid-row: var(--grid-row);
}
bsk-vehicle-card-pricing[is="was-now-save"] .save {
font-weight: 600;
color: var(--bs-primary);
}
.was {
--grid-col: 1;
--grid-row: 1;
}
.now {
--grid-col: 1;
--grid-row: 2;
}
.save {
--grid-col: 1;
--grid-row: 3;
}
.separator {
--grid-col: 2;
--grid-row: 1 / span 3;
}
.monthly-top-text {
--grid-col: 3;
--grid-row: 1;
}
.monthly-price {
--grid-col: 3;
--grid-row: 2;
}
.monthly-bottom-text {
--grid-col: 3;
--grid-row: 3;
}
</style>
<p v-if="is === 'default'"
class="d-flex justify-content-start gap-4 gap-lg-3 gap-xxl-5 mb-0"
:class="defaultPTagListViewStyles()">
<span class="d-flex flex-column"><small class="fw-normal">Only</small> <span class="fw-bold fs-3">£{{formatThousands(price)}}<span class="fw-normal small fs-5"
v-if="vat && vat !== '~'">{{ vat }}</span></span></span>
<span v-if="monthly !== '~'"
class="border-1 border-end"></span>
<span v-if="monthly !== '~'"
class="d-flex flex-column"><small class="fw-normal"><span class="text-decoration-underline">Monthly</span><a :href="`${url}#finance`"><i class="fa-light fa-circle-info fa-lg ms-1 text-accent"></i></a></small> <span class="fw-bold fs-3">£{{monthly}}</span></span>
</p>
<p v-else-if="is === 'was-now-save'"
class="text-muted text-center justify-content-around mb-0"
:class="wasNowSavePTagListViewStyles()">
<span class="was text-decoration-line-through"
:class="{'fs-6' : isListGrid()}">
was £{{formatThousands(was)}}
</span>
<span class="now text-dark flex-c gap-1 fs-5"
:class="{'fs-5' : isListGrid()}">
now <b>£{{formatThousands(price)}}</b>
</span>
<span class="save"
:class="{'fs-6' : isListGrid()}">
save £{{formatThousands(save)}}
</span>
<span class="separator border-1 border-end"></span>
<span class="monthly-top-text"
:class="{'fs-6' : isListGrid()}">
Pay monthly
</span>
<span class="monthly-price text-dark or flex-c gap-1 fs-5"
:class="{'fs-5' : isListGrid()}">
<b>£{{monthly}}</b>
</span>
<span class="monthly-bottom-text"
:class="{'fs-6' : isListGrid()}">Per month</span>
</p>
</template><template bsk-element="bsk-vehicle-card-sash">
<style>
bsk-vehicle-card-sash .sash {
left: .75rem;
position: absolute;
bottom: .75rem;
z-index: 2;
overflow: hidden;
}
bsk-vehicle-card-sash .sash__ribbon {
padding: var(--bsk-spacer-2);
text-align: center;
background-color: #D4EDDA;
border-radius: .25rem;
}
bsk-vehicle-card-sash .sash__ribbon::after {
content: attr(data-sash-text);
color: var(--bs-dark);
text-transform: capitalize;
font-weight: 600;
font-size: var(--bsk-h6-font-size);
}
</style>
<div class="sash"
@vue:mounted="init($el)">
<div class="sash__ribbon"
:data-sash-text="text"></div>
</div>
</template><template bsk-element="bsk-vehicle-card-specs">
<style>
bsk-vehicle-card-specs .outer {
container-type: inline-size;
}
bsk-vehicle-card-specs[icons] p.d-grid {
grid-template-columns: 1fr 1fr;
}
@container (max-width: 238px) {
bsk-vehicle-card-specs[icons] p.d-grid {
grid-template-columns: 1fr;
}
}
bsk-vehicle-card-specs p.list-view {
width: fit-content;
}
bsk-vehicle-card-specs p .spec-text {
font-size: var(--specs-font-size, 0.875rem);
}
bsk-vehicle-card-specs[is="bordered"] {
border-top: 1px solid var(--bs-gray-300);
border-bottom: 1px solid var(--bs-gray-300);
}
bsk-vehicle-card-specs[is="bordered"] p {
padding-top: var(--bsk-spacer-3);
padding-bottom: var(--bsk-spacer-3);
}
@media only screen and (max-width: 991px) {
bsk-vehicle-card-specs p.list-view {
display: none !important;
}
}
</style>
<div class="outer p-0"
data-mh="card-text"
@vue:mounted="init($el)">
<p class="card-text mb-0 gap-2"
:class="specsCopyDynamicClasses()">
<span v-for="(spec, index) in specsList"
:class="specDynamicClasses()">
<span v-if="icons != false"
class="me-1 text-accent"
:class="iconsList[index]"></span>
<span class="spec-text">{{formatSpecText(spec)}}</span>
</span>
</p>
</div>
</template><template bsk-element="bsk-vehicle-card-titles">
<style>
bsk-vehicle-card-titles>* {
width: 100%;
}
bsk-vehicle-card-titles {
border-bottom: 1px solid var(--bs-gray-400);
padding-bottom: var(--bsk-spacer-4);
}
bsk-vehicle-card-titles .vehicle-card-titles__sub-title {
line-clamp: 1;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
display: -webkit-box;
overflow: hidden;
}
</style>
<h3 @vue:mounted="init($el)"
class="vehicle-card-titles__title card-title mb-3 text-uppercase"
:class="isListGrid() ? 'list-view fs-2' : 'fs-5'">
{{manufacturer}} {{model}}
</h3>
<p class="vehicle-card-titles__sub-title mb-1 fw-normal small"
:class="{ 'fs-4' : isListGrid() }">
{{version}}
</p>
</template><template bsk-element="bsk-vehicle-card">
<style>
@media only screen and (min-width: 768px) {
.bsk-vehicle-card.list-view {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: auto;
grid-gap: 1.5rem;
}
.bsk-vehicle-card.list-view bsk-vehicle-card-img {
grid-column: 1 / span 2;
}
.bsk-vehicle-card.list-view bsk-vehicle-card-body {
grid-column: 3 / span 2;
width: 100%;
margin: auto;
}
}
@media only screen and (min-width: 1400px) {
.bsk-vehicle-card.list-view {
grid-template-columns: repeat(5, 1fr);
}
.bsk-vehicle-card.list-view bsk-vehicle-card-body {
grid-column: 3 / span 3;
}
}
</style>
<article v-cloak
@vue:mounted="init($el)"
v-wrap
class="bsk-vehicle-card card"
:class="{'list-view' : store.ucr.gridType === 'list'}"
data-mh="bsk-vehicle-card"></article>
</template><template bsk-element="bsk-cap-data-point-group">
<style>
bsk-cap-data-point-group {
display: block;
width: 100%;
}
bsk-cap-data-point-group .slick-list {
overflow: visible;
}
@media only screen and (max-width: 767px) {
bsk-cap-data-point-group>div {
max-width: 400px;
margin: auto;
}
}
@media only screen and (min-width: 992px) {
bsk-cap-data-point-group {
padding: 0 0 var(--bsk-spacer-7) 0;
}
}
bsk-cap-data-point-group [slot="cards"] {
display: flex;
justify-content: center;
flex-wrap: wrap;
gap: var(--bsk-spacer-3);
width: 100%;
}
@media only screen and (min-width: 1600px) {
bsk-cap-data-point-group>div {
max-width: 100vw;
margin: auto;
}
bsk-cap-data-point-group [slot="cards"] {
display: flex;
justify-content: space-between;
flex-wrap: nowrap;
gap: var(--bsk-spacer-3);
width: 100%;
}
}
bsk-cap-data-point-group .slick-slider .slick-slide {
margin: 0rem;
}
</style>
<div @vue:mounted="init($el)">
<slot name="cards"></slot>
<div class="cap-data-point-group-slider-dots position-relative"></div>
</div>
</template><template bsk-element="bsk-cap-data-point">
<style>
bsk-cap-data-point[is="card"] .card {
display: flex !important;
align-items: center;
justify-content: center;
width: 10rem;
height: 11rem;
}
@media only screen and (max-width: 1559px) {
bsk-cap-data-point[is="card"] .card {
width: 9rem;
}
}
@media only screen and (max-width: 1415px) {
bsk-cap-data-point[is="card"] .card {
width: 8rem;
}
}
bsk-cap-data-point[is="grid"] .card {
background-color: transparent;
}
bsk-cap-data-point[is="grid"] .card-body {
grid-template-columns: auto 1fr;
grid-template-rows: 1fr 1fr;
column-gap: 1rem;
row-gap: 0.25rem;
align-items: center;
}
bsk-cap-data-point[is="grid"] span:has(svg, img) {
grid-column: 1;
grid-row: 1 / span 2;
}
bsk-cap-data-point[is="grid"] .card-title {
grid-column: 2;
}
bsk-cap-data-point[is="grid"] p {
grid-column: 2;
grid-row: 2;
}
bsk-cap-data-point img {
object-fit: contain;
}
</style>
<!-- CAP Data Point : START -->
<div v-if="is == 'card'"
class="card align-items-center justify-content-center shadow-lg text-center gap-5"
@vue:mounted="init($el)">
<span class="flex-c-col gap-5">
<span v-if="faIcon">
<i class="h3 mb-0 text-secondary"
:class="faIcon"></i>
</span>
<h5 class="card-title mb-0 h6 fw-normal">{{dataTitle}}</h5>
</span>
<h6 class="card-subtitle mb-0">
<span class="h6"
ref="subtitle">{{dataValue}}</span>
<span>{{dataUnit}}</span>
</h6>
</div>
<div v-else-if="is == 'grid'"
class="card border-0 col-12 col-md-auto">
<div class="card-body text-start d-grid">
<span v-if="faIcon">
<i class="h3 mb-0 text-muted"
:class="faIcon"></i>
</span>
<span v-else>
<img :src="imgSrc"
:alt="dataTitle"
class="mb-0"
width="35px"
height="35px" />
</span>
<h6 class="card-title mb-0">{{dataTitle}}</h6>
<p class="card-text mb-0">{{dataValue}} <span>{{dataUnit}}</span></p>
</div>
</div>
<div v-else
class="d-flex align-items-center gap-2">
<span v-if="faIcon">
<i class="h5 mb-0 text-secondary"
:class="faIcon"></i>
</span>
<span v-else>
<img :src="imgSrc"
:alt="dataTitle"
width="30px"
height="30px" />
</span>
<h5 class="card-title mb-0 h6">{{dataValue}} <span>{{dataUnit}}</span></h5>
</div>
<!-- CAP Data Point : END -->
</template><template bsk-element="bsk-features-list">
<style>
bsk-features-list li {
padding-left: 2em !important;
text-indent: -1.4em;
}
</style>
<ul class="list-unstyled row"
:class="rowCols"
@vue:mounted="init($el)">
<li v-for="feature in features.split(',')"
class="mb-1">
<span v-show="feature != ''">
<i class="text-primary-tint me-1"
:class="faIcon"></i> </span>{{feature.trim()}}
</li>
</ul>
</template><template bsk-element="bsk-features-categorised">
<style>
bsk-features-categorised [slot="content"] li {
line-height: 170%;
}
bsk-features-categorised [slot="content"] svg {
transform: translateY(0.35rem);
}
bsk-features-categorised .accordion-button {
padding: 1.25rem 1.25rem;
}
bsk-features-categorised .accordion-button::after {
right: 2rem !important;
}
@media only screen and (min-width: 1200px) {
bsk-features-categorised [slot="content"] ul {
display: grid;
grid-template-columns: 1fr 1fr;
column-gap: 1rem;
}
}
</style>
<div @vue:mounted="init($el)">
<div class="accordion"
id="featuresCatAccordion">
<div v-for="(category,index) in categories"
:key="category"
class="accordion-item">
<h2 class="accordion-header mb-1"
:id="`heading_${category}`">
<button class="accordion-button"
:class="{'collapsed' : index !== 0 }"
type="button"
data-bs-toggle="collapse"
:data-bs-target="`#${category}`"
aria-expanded="false"
:aria-controls="category">
{{category.replace(/([A-Z])/g, ' $1').trim()}}
</button>
</h2>
<div :id="category"
class="accordion-collapse collapse"
:class="{'show' : index === 0 }"
:aria-labelledby="`heading_${category}`"
data-bs-parent="#featuresCatAccordion">
<div class="accordion-body">
<ul class="list-unstyled">
<li v-for="feature in featuresCategorised[category]"
class="mb-3 d-flex gap-2">
<i class="fa-solid fa-check text-primary"></i>{{feature}}
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</template><template bsk-element="bsk-specs-table">
<style>
bsk-specs-table tr {
display: flex;
text-align: left;
}
bsk-specs-table th {
width: 80%;
}
bsk-specs-table td {
width: 20%;
min-width: fit-content;
}
</style>
<table class="table"
:class="tableClass"
@vue:mounted="init($el)">
<tbody class="row row-cols-1"
:class="rowCols">
<tr v-for="(value, key) in specsObj">
<th scope="row">{{key.trim()}}</th>
<td class="text-end">{{value.trim()}}</td>
</tr>
</tbody>
</table>
</template><template bsk-element="bsk-vehicle-img-count">
<style>
bsk-vehicle-img-count {
position: absolute;
z-index: 2;
left: 1.5rem;
bottom: 1rem;
}
</style>
<aside class="fs-5 p-2 d-flex align-items-center gap-2"
@vue:mounted="init($el)">
<span v-if="imgCount > 0"
class="d-flex badge bg-light text-dark fw-normal">
<i class="fa-light fa-camera pe-1 py-1"></i>
<span class="d-block"
style="transform: translateY(5px)">
{{imgCount}}
</span>
</span>
<span v-if="hasVideo"
class="badge bg-light text-dark">
<i class="fa-light fa-video py-1"></i>
</span>
</aside>
</template><template bsk-element="bsk-version-select">
<style>
bsk-version-select .form-control {
color: var(--bs-gray-600);
margin-bottom: var(--bsk-spacer-3);
line-height: 1.5;
}
bsk-version-select .form-control:focus {
color: var(--bs-gray-900);
}
bsk-version-select .version-select {
grid-template-columns: repeat(1, 1fr);
grid-template-rows: auto;
row-gap: 0.5rem;
}
bsk-version-select .form-group {
grid-column: 1 / span all;
}
bsk-version-select .form-group:has([type="submit"]) {
grid-column: 1 / span all;
}
@media only screen and (min-width: 768px) and (max-width: 1199px) {
bsk-version-select .version-select {
grid-template-columns: repeat(2, 1fr);
column-gap: 1rem;
}
bsk-version-select .form-group:nth-of-type(odd):not(:has([type="submit"])) {
grid-column: 1 / span 1;
}
bsk-version-select .form-group:nth-of-type(even) {
grid-column: 2 / span 1;
}
}
@media only screen and (min-width: 1200px) {
bsk-version-select .version-select {
grid-template-columns: repeat(4, 1fr);
column-gap: 1rem;
row-gap: 2rem;
}
bsk-version-select .form-group {
grid-column: var(--col-start-desk) / span 1;
}
}
</style>
<div class="container-fluid bg-light py-5"
@vue:mounted="init($el)">
<div class="container"
style="max-width: 1200px">
<div class="row">
<div class="col-12">
<h3 class="text-center mb-4">Select your model</h3>
<p v-if="currentVehicleModelVersion"
class="text-center mb-4">
<strong class="fw-bold">Current model:</strong>
<span ref="model"
class="">{{currentVehicleModelVersion}}</span>
<strong ref="price"
class="fw-bold">£{{price}}</strong>
</p>
</div>
</div>
<div class="version-select d-grid"
id="version-select">
<div class="form-group"
style="--col-start-desk: 1">
<span class="d-block mb-2">Fuel</span>
<slot name="fuel"></slot>
</div>
<div class="form-group"
style="--col-start-desk: 2">
<span class="d-block mb-2">Transmission</span>
<slot name="transmission"></slot>
</div>
<div class="form-group"
style="--col-start-desk: 3">
<span class="d-block mb-2">Trim</span>
<slot name="trim"></slot>
</div>
<div class="form-group mb-4 mb-xl-0"
style="--col-start-desk: 4">
<span class="d-block mb-2">Version</span>
<slot name="version"></slot>
</div>
<div class="form-group flex-c">
<slot name="submit"></slot>
</div>
</div>
</div>
</div>
</template><template bsk-element="bsk-version">
<style>
bsk-version :is([slot="spec-items"] ul, .spec-items) {
display: grid;
grid-template-columns: repeat(1, 1fr);
grid-template-rows: auto;
}
bsk-version:has(.modal.show) :is([slot="spec-items"] ul, .spec-items) {
column-gap: var(--bsk-spacer-3);
row-gap: var(--bsk-spacer-2);
}
@media only screen and (min-width: 768px) and (max-width: 1199px) {
bsk-version :is([slot="spec-items"] ul, .spec-items) {
grid-template-columns: repeat(2, 1fr);
}
}
@media only screen and (min-width: 1200px) {
bsk-version :is([slot="spec-items"] ul, .spec-items) {
grid-template-columns: repeat(3, 1fr);
}
}
bsk-version :is([slot="spec-items"] ul, .spec-items) li {
grid-column: auto / span 1;
padding: var(--bsk-spacer-2);
}
bsk-version:has(.modal.show) :is([slot="spec-items"] ul, .spec-items) li {
padding: var(--bsk-spacer-1);
}
</style>
<section class="container py-5"
@vue:mounted="init($el)">
<div class="row">
<!-- Image Section : START -->
<div class="flex-c-col gap-3 mb-5">
<slot name="image"></slot>
<p class="text-center mb-0">
<small>Images shown for illustration purpose only</small>
</p>
<!-- Modal Trigger : START -->
<span v-if="is == 'modal'"
class="btn btn-primary"
data-bs-toggle="modal"
data-bs-target="#versionModal">View Specs
</span>
<!-- Modal Trigger : END -->
</div>
<!-- Image Section : END -->
<!-- Cap Data Cards : START -->
<div class="col-12 mb-5">
<slot name="data-cards"></slot>
</div>
<!-- Cap Data Cards : END -->
<!-- UCD link : START -->
<div v-if="is != 'modal'"
class="col-12">
<a :href="usedVehiclePageUrl"
class="btn btn-primary d-block mx-auto"
style="width: fit-content">View Model</a>
</div>
<!-- UCD link : END -->
</div>
</section>
<!-- Specs Section : START -->
<section v-show="is != 'modal'"
class="container pt-4 pb-5">
<h2 class="text-center mb-4">Specifications</h2>
<!-- <slot name="spec-items"></slot> -->
<ul class="spec-items overflow-hidden position-relative"
ref="specNoModal"
:style="specsDynamicInlineStyles"
data-test="here">
<li v-for="spec in arrayFromCsv(specItems)">{{spec}}</li>
</ul>
<button class="btn btn-outline-primary d-block mx-auto"
@click.prevent="toggleMoreSpecs($el)">
View {{showAllSpecs ? 'less' : 'all'}}
</button>
</section>
<!-- Specs Section : END -->
<!-- Modal Specs Section : START -->
<div v-if="is == 'modal'"
class="modal fade"
id="versionModal"
ref="modal"
tabindex="-1"
aria-labelledby="versionModalLabel"
aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable"
style="max-width: 960px">
<div class="modal-content">
<div class="modal-header align-items-start">
<div class="w-100 p-0">
<h3 class="mb-0 h2">{{currentVehicleModelVersion}}</h3>
<p class="mb-2">£{{price}}</p>
<slot name="modal-image"></slot>
</div>
<button type="button"
class="btn-close"
data-bs-dismiss="modal"
aria-label="Close"
style="transform: translateY(6px)"></button>
</div>
<div class="modal-body">
<!-- Specs : START -->
<ul class="spec-items">
<li v-for="spec in arrayFromCsv(specItems)"
:key="spec">
{{spec}}
</li>
</ul>
<!-- Specs : END -->
</div>
<div class="modal-footer">
<a :href="modalCtaOneUrl"
class="btn btn-primary">Enquire</a>
<a :href="modalCtaTwoUrl"
class="btn btn-outline-primary">Test drive</a>
</div>
</div>
</div>
</div>
<!-- Modal Specs Section : END -->
</template><template bsk-element="bsk-anchor-group">
<style>
bsk-anchor-group .sticky {
position: relative;
transition: top 0.5s;
z-index: 999;
opacity: 0.95;
}
bsk-anchor-group .sticky.fixed {
position: fixed;
top: 0;
}
bsk-anchor-group .nav-link {
color: var(--bs-dark);
}
bsk-anchor-group .nav-link.active {
color: var(--bs-primary) !important;
}
</style>
<section @vue:mounted="init($el)"
class="sticky w-100"
:class="{'fixed top-0': fixToTop}"
id="bsk-scrollspy-outer">
<div class="bg-light w-100">
<nav id="bsk-scrollspy"
class="d-flex align-items-center justify-content-start w-100 mb-4 mb-lg-0 px-3 py-2">
<ul class="nav gap-0 mb-0 me-auto">
<li v-for="(obj,index) in arrOfObjs"
:key="index"
class="nav-item">
<a class="nav-link"
:href="obj.href">{{obj.text}}</a>
</li>
</ul>
<slot name="ctas"></slot>
</nav>
</div>
</section>
</template><template bsk-element="bsk-cw-api-sliders">
<style>
/* component layout styles */
bsk-cw-api-sliders {
display: grid;
grid-template-columns: 1fr 0fr;
grid-template-rows: repeat(5, auto);
width: 100%;
}
@media only screen and (min-width: 992px) {
bsk-cw-api-sliders {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: repeat(5, auto);
width: 100%;
}
}
bsk-cw-api-sliders #finance-details {
grid-row: 1;
grid-column: 1/-1;
}
bsk-cw-api-sliders #CWPanel {
grid-row: 2;
grid-column: 1 / span 1;
display: flex;
justify-content: flex-start;
}
bsk-cw-api-sliders #CWPanel>*:not(#financeType, #CWPanel_Modal) {
display: none;
}
bsk-cw-api-sliders #range-sliders {
grid-row: 3;
grid-column: 1/-1;
border-top-right-radius: 0;
padding: 1.75rem 1.75rem 0 1.75rem;
}
bsk-cw-api-sliders #repExample {
grid-row: 7;
grid-column: 1/-1;
}
@media only screen and (min-width: 992px) {
bsk-cw-api-sliders #range-sliders {
grid-row: 4;
grid-column: 1/2;
border-top-right-radius: 1.5rem;
padding: 2.5rem 2.5rem 0 2.5rem;
}
bsk-cw-api-sliders #repExample {
grid-row: 4/-1;
grid-column: 2 / -1;
}
bsk-cw-api-sliders #quote-action-buttons {
grid-row: 5;
border-bottom-left-radius: 1.5rem;
border-bottom-right-radius: 1.5rem;
padding: 0 2.5rem 2.5rem 2.5rem;
}
}
bsk-cw-api-sliders #financeType {
position: relative;
}
@media only screen and (max-width: 992px) {
bsk-cw-api-sliders #financeType {
width: 100%;
}
}
bsk-cw-api-sliders #financeType tr,
bsk-cw-api-sliders #financeType td,
bsk-cw-api-sliders #financeType thead,
bsk-cw-api-sliders #financeType tbody {
border: 0;
padding: 0;
}
@media only screen and (max-width: 992px) {
bsk-cw-api-sliders #financeType td {
width: 50%;
}
}
bsk-cw-api-sliders #financeType tr td input {
-webkit-appearance: none;
appearance: none;
background-color: transparent;
margin: 0;
position: absolute;
width: 1px;
height: 1px;
overflow: hidden;
}
bsk-cw-api-sliders #financeType tr td label {
padding: 0.875rem 1.95rem;
border-radius: 0;
line-height: 1.5;
background-color: var(--bs-white);
transition: background-color 0.3s ease-in-out;
font-weight: 700;
cursor: pointer;
}
@media only screen and (max-width: 992px) {
bsk-cw-api-sliders #financeType tr td label {
width: 100%;
}
}
bsk-cw-api-sliders #financeType tr td:first-child label {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
bsk-cw-api-sliders #financeType tr td:last-child label {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
bsk-cw-api-sliders #financeType tr td input:checked+label {
background-color: var(--bs-primary-tint);
color: white;
}
bsk-cw-api-sliders #quote-action-buttons {
grid-row: 5;
grid-column: 1;
background-color: var(--bs-white);
border-bottom-left-radius: 1.5rem;
border-bottom-right-radius: 1.5rem;
padding: 0 1.75rem 1.75rem 1.75rem;
}
bsk-cw-api-sliders .rep-example-modal-trigger {
grid-row: 6 / -1;
grid-column: 1 / -1;
display: block;
}
@media only screen and (min-width: 1440px) {
bsk-cw-api-sliders .rep-example-modal-trigger {
display: inline;
}
}
bsk-cw-api-sliders .rep-example-modal-trigger svg {
transform: translateY(1.5px);
}
bsk-cw-api-sliders:has(#financeType input[value="HP"]:checked) .range:has(.range-slider[data-range-type="annualMileage"]) {
display: none;
}
/* individual range slider styles */
bsk-cw-api-sliders .range:not(:has(.noUi-target)) {
display: none;
}
bsk-cw-api-sliders .range-slider .noUi-connects {
background: var(--bs-gray-100);
}
bsk-cw-api-sliders .range-slider .noUi-connect {
background: linear-gradient(to left, var(--bs-primary), var(--bs-secondary));
}
bsk-cw-api-sliders .range-slider .noUi-handle {
width: 30px;
height: 30px;
top: -10px;
right: -17px;
border-radius: 50rem;
cursor: pointer;
background-color: var(--bs-primary);
border: 0 !important;
box-shadow: none !important;
}
bsk-cw-api-sliders .range-slider .noUi-handle::before,
bsk-cw-api-sliders .range-slider .noUi-handle::after {
display: none;
}
bsk-cw-api-sliders .range-slider.small .noUi-handle {
width: 26px;
height: 26px;
top: -9px;
}
bsk-cw-api-sliders .range-slider.large .noUi-handle {
width: 40px;
height: 40px;
top: -15px;
}
bsk-cw-api-sliders .range-slider.noUi-target,
bsk-cw-api-sliders .noUi-connects {
border-radius: 0.875rem;
height: 0.5rem;
}
bsk-cw-api-sliders:not([is="dev-mode"]) [slot="cw-api-controls"] {
display: none !important;
}
bsk-cw-api-sliders[is="dev-mode"]>*:not([slot="cw-api-controls"]) {
display: none !important;
}
/* animation */
bsk-cw-api-sliders .pulsate {
animation: pulsate 1s ease-out;
animation-iteration-count: infinite;
opacity: 1;
}
@keyframes pulsate {
0% {
opacity: 1;
}
50% {
opacity: 0.5;
}
100% {
opacity: 1;
}
}
bsk-cw-api-sliders .cw-api-table__row {
border-top: 1px solid var(--bs-gray-400);
}
bsk-cw-api-sliders .cw-api-table__row:last-child {
border-bottom: 1px solid var(--bs-gray-400);
}
bsk-cw-api-sliders .cw-api-table__row .cw-api-table__td:not(:first-child) {
text-align: right;
}
bsk-cw-api-sliders .cw-api-table__row .cw-api-table__td:first-child {
font-weight: bold;
}
bsk-cw-api-sliders .cw-api-table__td {
padding: 0.75rem 0;
}
</style>
<div id="range-sliders"
ref="range-sliders"
class="range-sliders w-100 bg-white"
@vue:mounted="init($el)">
<div id="finance-details"
class="d-flex col-12 col-lg-auto text-start mb-5 mb-lg-7">
<span class="d-block col-5 col-lg-auto border-end pe-5 me-5 pe-lg-7 me-lg-7">
Monthly<br />
<span class="fw-bold h3"
:class="{'pulsate' : pulse}">
£{{financeData.litRegularPayment}}
</span>
</span>
<span class="d-block col-6 col-lg-auto ps-2">
APR<br />
<span class="fw-bold h3"
:class="{'pulsate' : pulse}">
{{financeData.litApr}}%
</span>
</span>
</div>
<div class="range w-100 my-7">
<div class="d-flex justify-content-between mb-6">
<span class="range-label">Deposit</span>
<span class="range-handle fw-bold">{{new Intl.NumberFormat("en-GB", {style:
'currency',currency: 'GBP'}).format(depositHandle)}}</span>
</div>
<div class="range-slider w-100"
ref="deposit"
data-range-type="deposit"
:class="handleSize"></div>
</div>
<div class="range w-100 my-7 mileage">
<div class="d-flex justify-content-between mb-6">
<span class="range-label">Mileage</span>
<span class="range-handle fw-bold">{{annualMileageHandle}} Miles</span>
</div>
<div class="range-slider w-100"
ref="annualMileage"
data-range-type="annualMileage"
:class="handleSize"></div>
</div>
<div class="range w-100 my-7">
<div class="d-flex justify-content-between mb-6">
<span class="range-label">Term</span>
<span class="range-handle fw-bold">{{termHandle}} Months</span>
</div>
<div class="range-slider w-100"
ref="term"
data-range-type="term"
:class="handleSize"></div>
</div>
</div>
</template><template bsk-element="bsk-cw-api-literal">{{store.cw[literal]}}</template><template bsk-element="bsk-cw-api-monthly-payment">
<h3 class="mb-0 fw-bold text-primary mt-0 mb-5"
href="#finance">
£{{store.cw.litRegularPayment}}
</h3>
</template><template bsk-element="bsk-timeline">
<style>
/* timeline */
:root {
--numDots: 11;
--parentWidthBase: 0.8;
--parentWidth: calc(var(--parentWidthBase) * 100vw);
--parentMaxWidth: 1420px;
--dotWidth: 40px;
--active: var(--bs-primary);
--inactive: white;
}
.timeline .timeline-for {
text-align: center;
margin-top: 30px;
max-width: 750px;
margin: auto;
-webkit-box-shadow: 0px 0px 50px 0px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 0px 0px 50px 0px rgba(0, 0, 0, 0.2);
box-shadow: 0px 0px 50px 0px rgba(0, 0, 0, 0.2);
}
.timeline .timeline-for .slick-slide {
display: flex;
align-items: center;
justify-content: center;
}
.timeline .timeline-for .carousel-control-prev,
.timeline .timeline-for .carousel-control-next {
top: 0;
opacity: 1;
}
@media only screen and (max-width: 992px) {
.timeline .timeline-for .carousel-control-prev,
.timeline .timeline-for .carousel-control-next {
top: auto;
opacity: 1;
bottom: -5rem;
}
}
@media only screen and (max-width: 768px) {
.timeline .timeline-for .carousel-control-prev,
.timeline .timeline-for .carousel-control-next {
bottom: -3.5rem;
}
}
.timeline .timeline-for .carousel-control-prev {
left: -7rem;
}
.timeline .timeline-for .carousel-control-next {
right: -7rem;
}
@media only screen and (max-width: 992px) {
.timeline .timeline-for .carousel-control-prev {
left: 0;
}
.timeline .timeline-for .carousel-control-next {
right: 0;
}
}
.timeline .slick-arrow .fa-border {
border-color: #212529;
border-width: 2px;
border-radius: 100%;
padding: var(--fa-border-padding, 0.75em 0.8em 0.7em);
}
.timeline .timeline-for .carousel-control-prev svg,
.timeline .timeline-for .carousel-control-next svg {
background-color: transparent;
color: var(--bs-dark);
}
@media only screen and (max-width: 768px) {
.timeline .timeline-for .carousel-control-prev svg,
.timeline .timeline-for .carousel-control-next svg {
font-size: 1.175rem;
}
}
.timeline .slick-slide {
min-height: 80px;
}
.timeline .slick-current~.slick-slide .time-input {
background-color: var(--inactive);
border: 2px solid var(--bs-gray-400);
}
.timeline .slick-current~.slick-slide .time-input::before,
.timeline .slick-current~.slick-slide .time-input::after {
background-color: var(--bs-gray-400);
}
.timeline .time-input {
width: var(--dotWidth) !important;
height: var(--dotWidth);
background-color: var(--active);
position: relative;
border-radius: 50%;
border: 2px solid var(--active);
transition: 0.3s ease;
}
.timeline .time-input:hover {
cursor: pointer;
}
.timeline .time-input::before,
.timeline .time-input::after {
content: "";
display: block;
position: absolute;
z-index: -1;
top: 50%;
transform: translateY(-50%);
background-color: var(--bs-dark);
width: calc(var(--parentWidth) / 4);
height: 4px;
max-width: calc(var(--parentMaxWidth) / var(--numDots));
transition: 0.3s ease;
}
@media only screen and (min-width: 992px) {
.timeline .time-input::before,
.timeline .time-input::after {
width: calc(var(--parentWidth) / 7);
}
}
@media only screen and (min-width: 992px) {
.timeline .time-input::before,
.timeline .time-input::after {
/*width: calc(var(--parentWidth) / var(--numDots));*/
}
}
.timeline .time-input::before {
left: calc(var(--dotWidth) / 2 - var(--parentWidth) / 4);
}
@media only screen and (min-width: 992px) {
.timeline .time-input::before {
left: calc(var(--dotWidth) / 2 - var(--parentMaxWidth) / var(--numDots));
}
}
@media only screen and (min-width: 992px) {
.timeline .time-input::before {
left: calc(var(--dotWidth) / 2 - var(--parentMaxWidth) / var(--numDots));
}
}
.timeline .time-input::after {
right: calc(var(--dotWidth) / 2 - var(--parentWidth) / 4);
}
@media only screen and (min-width: 992px) {
.timeline .time-input::after {
right: calc(var(--dotWidth) / 2 - var(--parentMaxWidth) / var(--numDots));
}
}
@media only screen and (min-width: 992px) {
.timeline .time-input::after {
right: calc(var(--dotWidth) / 2 - var(--parentMaxWidth) / var(--numDots));
}
}
.timeline .time-input.active {
background-color: var(--active);
}
.timeline .time-input.active::before {
background: hsla(140, 100%, 23%, 1);
background: linear-gradient(90deg, hsla(140, 100%, 23%, 1) 0%, hsla(222, 54%, 24%, 1) 100%);
background: -moz-linear-gradient(90deg, hsla(140, 100%, 23%, 1) 0%, hsla(222, 54%, 24%, 1) 100%);
background: -webkit-linear-gradient(90deg, hsla(140, 100%, 23%, 1) 0%, hsla(222, 54%, 24%, 1) 100%);
filter: progid: DXImageTransform.Microsoft.gradient(startColorstr="#007728", endColorstr="#1C305E", GradientType=1);
}
.timeline .time-input.active::after {
background-color: var(--bs-gray-400);
}
.timeline .time-input span::before,
.timeline .time-input span::after {
visibility: visible;
position: absolute;
left: 50%;
transform: translateX(-50%);
}
.timeline .time-input span::after {
content: attr(data-year);
top: 60px;
/* Adjust if necessary */
transform: translate(-50%, -50%);
font-size: 18px;
/* Adjust if necessary */
line-height: 1.2;
width: 102px;
font-weight: bold;
}
@media only screen and (max-width: 768px) {
.timeline .time-input span::after {
font-size: 16px;
}
}
.left-border {
display: block;
height: 4px;
width: 22rem;
position: absolute;
left: 0;
top: 11.35rem;
content: "";
background: hsla(140, 100%, 23%, 1);
background: linear-gradient(90deg, hsla(140, 100%, 23%, 1) 0%, hsla(222, 54%, 24%, 1) 100%);
background: -moz-linear-gradient(90deg, hsla(140, 100%, 23%, 1) 0%, hsla(222, 54%, 24%, 1) 100%);
background: -webkit-linear-gradient(90deg, hsla(140, 100%, 23%, 1) 0%, hsla(222, 54%, 24%, 1) 100%);
filter: progid: DXImageTransform.Microsoft.gradient(startColorstr="#007728", endColorstr="#1C305E", GradientType=1);
}
.right-border {
display: block;
height: 4px;
width: 28rem;
position: absolute;
right: 0;
top: 11.35rem;
content: "";
background: var(--bs-gray-400);
}
@media only screen and (max-width: 1279px) {
.left-border,
.right-border {
top: 11.3rem;
}
}
@media only screen and (max-width: 1200px) {
.left-border,
.right-border {
top: 11.35rem;
}
}
@media only screen and (max-width: 1199px) {
.left-border,
.right-border {
top: 9.8rem;
}
}
@media only screen and (max-width: 1095px) {
.left-border,
.right-border {
top: 11.6rem;
}
}
@media only screen and (max-width: 1080px) {
.left-border,
.right-border {
display: none;
}
}
</style>
<section class="section-py-2 bg-light timeline"
@vue:mounted="init($el)">
<div class="container-fluid px-3 px-lg-0 position-relative">
<slot name="cms-grid"></slot>
<div class="left-border"></div>
<div class="right-border"></div>
<slot name="timeline-nav"></slot>
<slot name="timeline-for"></slot>
</div>
</section>
</template><template bsk-element="bsk-large-spotlight">
<style>
bsk-large-spotlight .card {
border-radius: 1.5rem;
background-color: #212529;
min-height: 440px;
}
@media (max-width:986px) {
bsk-large-spotlight .card {
min-height: 300px;
}
}
bsk-large-spotlight .text__inner {
position: absolute;
bottom: 0;
width: 100%;
padding: 3rem;
color: #212529 !important;
background-color: rgba(255, 255, 255, .8);
-webkit-transition: height 0.5s;
-moz-transition: height 0.5s;
-ms-transition: height 0.5s;
-o-transition: height 0.5s;
transition: height 0.5s;
height: 110px;
}
@media only screen and (max-width: 768px) {
bsk-large-spotlight .text__inner {
padding: 2rem;
height: 45px;
}
}
bsk-large-spotlight .text__inner .overlay {
background-image: url('https://bluesky.sirv.com/Websites/DM%20Keith/Images/tartan.png');
opacity: 0;
transition: 0.5s;
display: block;
position: absolute;
width: 100%;
left: 0;
top: 0;
height: 100%;
z-index: 1;
}
bsk-large-spotlight .card:hover .text__inner {
height: 190px;
}
@media only screen and (max-width: 768px) {
bsk-large-spotlight .card:hover .text__inner {
height: 0;
}
}
bsk-large-spotlight .card:hover .text__inner .overlay {
opacity: .2;
}
bsk-large-spotlight img {
transition: 0.5s;
border-radius: 1.5rem;
height: auto;
object-fit: cover;
}
bsk-large-spotlight .card:hover img {
opacity: .6;
}
bsk-large-spotlight h3 {
position: absolute;
transition: 0.5s;
bottom: 2.25rem;
display: flex;
align-items: center;
z-index: 2;
width: 100%;
}
.about-us bsk-large-spotlight h3 {
left: 1rem !important;
}
@media (max-width: 1440px) {
bsk-large-spotlight h3 {
font-size: 1.65rem !important;
bottom: 2.5rem !important;
left: 1rem;
}
}
@media only screen and (max-width: 768px) {
bsk-large-spotlight h3 {
font-size: 1.5rem !important;
bottom: 1.25rem !important;
left: .75rem;
}
}
.about-us bsk-large-spotlight svg {
display: none !important;
}
bsk-large-spotlight svg {
position: absolute;
right: 5rem;
}
@media only screen and (max-width: 1440px) {
bsk-large-spotlight svg {
right: 2rem;
}
}
bsk-large-spotlight .fa-border {
border-color: #212529;
border-width: 1px;
border-radius: 100%;
padding: var(--fa-border-padding, 0.5em 0.55em 0.45em);
}
bsk-large-spotlight .card:hover h3 {
transform: translateY(-80px) !important;
}
@media only screen and (max-width: 768px) {
bsk-large-spotlight .card:hover h3 {
transform: translateY(0) !important;
}
}
bsk-large-spotlight .card-text {
position: absolute;
opacity: 0;
transition: 0.5s;
bottom: -3rem;
width: 70%;
z-index: 2;
}
bsk-large-spotlight .card:hover .card-text {
opacity: 1;
bottom: 3rem;
}
</style>
<!-- Item : START -->
<a v-if="linkUrl"
:href="linkUrl">
<div class="card mb-1 mb-lg-2 overflow-hidden"
:class="is != 'bordered' ? 'border-0 flex-row' : 'p-5 mx-4 mb-4'">
<div class="card-body p-0 gap-2 overflow-hidden"
:class="is == 'strip' ? 'flex-c' : 'flex-col'">
<picture>
<img :src="`${imgSrc}`"
alt="Large Spotlight Image"
class="ls-is-cached w-100 h-100"
loading="lazy" />
</picture>
<div class="text__inner">
<div class="overlay"></div>
<h3 class="card-title mb-0 text-shadow"
:class="is == 'strip' ? 'fs-6 lh-sm' : ''">
{{ title }}
<i class="fa-light fa-arrow-right fa-border d-none d-md-block"></i>
</h3>
<p class="card-text mb-0 d-none d-md-block"
:class="is == 'strip' ? 'd-none' : ''">
{{body}}
</p>
</div>
</div>
</div>
</a>
<!-- Item : END -->
</template><template bsk-element="bsk-brands">
<style>
bsk-brands .card {
border-radius: 0;
background-color: transparent !important;
text-align: center;
transition: ease all 0.8s;
transition: 500ms;
border-top: 0 !important;
border-bottom: 0 !important;
border-left: 0 !important;
height: 120px;
line-height: 120px;
border: 0 !important;
}
@media (max-width:767.98px) {
bsk-brands .card {
height: 100px;
line-height: 100px;
justify-content: center;
}
}
bsk-brands img {
justify-content: center;
align-content: center !important;
display: inline-flex !important;
height: auto;
transition: ease all 0.8s;
transition: 500ms;
border-radius: 45%;
}
bsk-brands .card img:hover {
-webkit-box-shadow: 0px 0px 50px 0px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 0px 0px 50px 0px rgba(0, 0, 0, 0.3);
box-shadow: 0px 0px 50px 0px rgba(0, 0, 0, 0.3);
background-color: transparent !important;
}
bsk-brands a {
display: block;
}
@media (max-width:767.98px) {
bsk-brands img {
width: 140px;
height: auto;
}
}
</style>
<!-- Item : START -->
<a :href="linkUrl">
<div class="card">
<div class="card-body p-0">
<picture>
<img :src="`${imgSrc}`"
alt="Large Spotlight Image"
class="ls-is-cached"
loading="lazy"
width="140"
height="120" />
</picture>
</div>
</div>
</a> <!-- Item : END -->
</template><template bsk-element="bsk-new-vehicle-list">
<style>
bsk-new-vehicle-list {
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-template-rows: repeat(2, 1fr);
grid-column-gap: 1rem;
grid-row-gap: 1rem;
}
@media only screen and (min-width: 1200px) {
bsk-new-vehicle-list {
display: grid;
grid-template-columns: repeat(6, 1fr);
grid-template-rows: repeat(2, min-content);
grid-column-gap: 1rem;
grid-row-gap: 1rem;
}
}
</style>
<div @vue:mounted="init($el)">
<slot name="cards"></slot>
</div>
</template><template bsk-element="bsk-new-vehicle-list-card">
<a :href="url"
class="card bg-white flex-c-col p-5 px-4 gap-3 text-decoration-none rounded-1">
<img :src="imgSrc"
class="d-block card-img-top w-100 img-fluid mx-auto"
style="object-fit: cover;"
:alt="title">
<div class="card-body mt-auto p-0">
<h5 class="h6 mb-2 fw-bold">{{title}}</h5>
</div>
</a>
</template><template bsk-element="bsk-electric-calculator">
<style>
bsk-electric-calculator .form-control,
bsk-electric-calculator .form-select {
max-width: 500px;
}
bsk-electric-calculator .electric-calculator .electric-calculator__step {
display: flex;
flex-direction: column;
justify-content: center;
gap: 2rem;
position: relative;
}
bsk-electric-calculator .electric-calculator_progress .electric-calculator_steps {
display: flex;
position: relative;
text-align: center;
padding: 0;
margin: 0;
}
bsk-electric-calculator .electric-calculator_progress .electric-calculator_steps li {
flex: 1;
flex-grow: 1;
list-style: none;
}
bsk-electric-calculator .electric-calculator_progress .electric-calculator_steps li button {
padding: .5rem;
font-size: 1.5rem;
font-weight: 700;
border-radius: 50%;
width: 3rem;
height: 3rem;
border-width: 4px;
line-height: 1rem;
}
</style>
<div @vue:mounted="init($el)">
<div class="electric-calculator p-3 p-lg-5 bg-light rounded-1">
<div v-show="!resultsStep">
<slot name="general"></slot>
</div>
<div v-show="!isBusy">
<div class="electric-calculator_progress position-relative my-5"
v-show="!resultsStep">
<ul class="electric-calculator_steps"
style="z-index: 2;">
<li>
<button @click.prevent="updateStep('step1')"
class="btn btn-primary opacity-100">
<span class="visually-hidden">Step </span>1
</button>
</li>
<li>
<button :disabled="commonMileage < 1 || commonFrequency < 1"
@click.prevent="updateStep('step2')"
class="btn opacity-100"
:class="commonMileage < 1 || commonFrequency < 1 ? 'btn-secondary bg-white' : 'btn-primary'">
<span class="visually-hidden">Step </span>2
</button>
</li>
<li>
<button :disabled="longestMileage < 1 || longestFrequency < 1"
@click.prevent="updateStep('step3')"
class="btn opacity-100"
:class="longestMileage < 1 || longestFrequency < 1 ? 'btn-secondary bg-white' : 'btn-primary'">
<span class="visually-hidden">Step </span>3
</button>
</li>
<li>
<button :disabled="longestMileage < 1 || longestFrequency < 1"
@click.prevent="updateStep('step4')"
class="btn btn-secondary bg-white opacity-100">
<span class="visually-hidden">Step </span>4
</button>
</li>
</ul>
<div class="progress position-absolute top-50 start-50 translate-middle w-100"
style="height: 4px; z-index: 1;">
<div class="progress-bar"
role="progressbar"
:style="`width: ${progress}%`"
:aria-valuenow="progress"
aria-valuemin="0"
aria-valuemax="100"></div>
</div>
</div>
<div class="alert alert-danger"
v-show="annualMileage < totalMileage">
<h3>
Your total mileage ({{totalMileage}}) is higher than your inserted annual
mileage ({{annualMileage}})
</h3>
<p>
Annual mileage must be lower than total mileage, please go
back and insert a higher value
</p>
</div>
<div v-show="step1"
class="electric-calculator__step">
<slot name="step1"></slot>
<div>
<label for="annualMileage"
class="form-label">What's your annual mileage?</label>
<input id="annualMileage"
type="number"
class="form-control"
:value="annualMileage"
@input="handleMileageInput">
</div>
<div class="d-flex gap-3 justify-content-between">
<button @click.prevent="nextStep2()"
class="btn btn-primary ms-auto"
:disabled="annualMileage < 1">
Next
</button>
</div>
</div>
<div v-show="step2"
class="electric-calculator__step">
<slot name="step2"></slot>
<div class="alert alert-danger"
v-if="annualMileage < totalMileage">
<p>
Annual mileage must be lower than common mileage, please go back and insert a higher value.
</p>
</div>
<div>
<label for="commonMileage"
class="form-label">How long is your most common journey?</label>
<input type="number"
class="form-control"
:value="commonMileage"
@input="handleCommonMileageInput">
<p class="small mb-0 mt-2 text-muted">For example, your commute to work or regular school run. If you return on the same day without being able to charge between journeys, please enter the total return distance.</p>
</div>
<div>
<label for="commonFrequency"
class="form-label">How often do you make your most commonly occurring journey?</label>
<select id="commonFrequency"
placeholder="Please Select"
class="form-select"
@input="handleCommonFrequencyInput">
<option value="">Please Select</option>
<option value="4">Quarterly</option>
<option value="12">About once a month</option>
<option value="24">Fortnightly</option>
<option value="52">Weekly</option>
<option value="104">Twice Weekly</option>
<option value="260">Monday to Friday</option>
<option value="365">Everyday</option>
<option value="1.5">Occasionally</option>
</select>
</div>
<div class="d-flex flex-wrap gap-3 justify-content-between">
<button @click.prevent="updateStep('step1')"
class="btn btn-secondaryy">
Previous
</button>
<button @click.prevent="nextStep3()"
class="btn btn-primary"
:disabled="commonMileage < 1 || commonFrequency < 1">
Next
</button>
</div>
</div>
<div v-show="step3"
class="electric-calculator__step">
<slot name="step3"></slot>
<div>
<label for="longestMileage"
class="form-label">What's the longest journey you would make in a year?</label>
<input id="longestMileage"
type="number"
class="form-control"
:value="longestMileage"
@input="handleLongestMileageInput">
<p class="small mb-0 mt-2 text-muted">Exclude your most common journey that you entered in step two.</p>
</div>
<div>
<label for="longestFrequency"
class="form-label">How often do you make your most commonly occurring journey?</label>
<select for="longestFrequency"
placeholder="Please Select"
class="form-select"
@input="handleLongestFrequencyInput">
<option value="">Please Select</option>
<option value="4">Quarterly</option>
<option value="12">About once a month</option>
<option value="24">Fortnightly</option>
<option value="52">Weekly</option>
<option value="104">Twice Weekly</option>
<option value="260">Monday to Friday</option>
<option value="365">Everyday</option>
<option value="1.5">Occasionally</option>
</select>
</div>
<div class="d-flex flex-wrap gap-3 justify-content-between">
<button @click.prevent="updateStep('step2')"
class="btn btn-secondary">
Previous
</button>
<button @click.prevent="nextStep4()"
class="btn btn-primary"
:disabled="longestMileage < 1 || longestFrequency < 1">
Next
</button>
</div>
</div>
<div v-show="step4"
class="electric-calculator__step">
<slot name="step4"></slot>
<div style="max-width: 600px;">
<label for="sliderRange"
class="form-label">Add the range of the electric vehicle you are considering.</label>
<input class="form-range"
type="range"
min="0"
max="400"
step="10"
:value="sliderRange"
@input="handleSliderInput">
<p class="small mb-5 mt-2 text-muted">Don't know the range? We've defaulted this to 180 miles, the average range of the latest electric vehicles</p>
<p class="fs-5">Selected Range: <strong>{{sliderRange}}</strong> miles</p>
</div>
<div class="d-flex flex-wrap gap-3 justify-content-between">
<button @click.prevent="updateStep('step3')"
class="btn btn-secondaryy">
Previous
</button>
<button @click.prevent="nextStepEnd()"
class="btn btn-primary">
Done
</button>
</div>
</div>
<div v-show="resultsStep"
class="electric-calculator__step">
<button @click.prevent="updateStep('step1')"
class="btn btn-blank">
<svg width="1em"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 448 512">
<path fill="#464646"
d="M231.5 475.5l7.1-7.1c4.7-4.7 4.7-12.3 0-17L60.1 273H436c6.6 0 12-5.4 12-12v-10c0-6.6-5.4-12-12-12H60.1L238.6 60.5c4.7-4.7 4.7-12.3 0-17l-7.1-7.1c-4.7-4.7-12.3-4.7-17 0L3.5 247.5c-4.7 4.7-4.7 12.3 0 17l211.1 211.1c4.7 4.7 12.3 4.7 17 0z" />
</svg>
Go Back
</button>
<div v-show="resultAnswer === 'YY'">
<!--YY-->
<div class="d-flex flex-column gap-3 align-items-center justify-content-center ">
<div class="d-flex align-items-center gap-3 text-center">
<svg width="2.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 512 512">
<path fill="#464646"
d="M104 224H24c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V248c0-13.3-10.7-24-24-24zM64 472c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zM384 81.5c0 42.4-26 66.2-33.3 94.5h101.7c33.4 0 59.4 27.7 59.6 58.1 .1 17.9-7.5 37.2-19.4 49.2l-.1 .1c9.8 23.3 8.2 56-9.3 79.5 8.7 25.9-.1 57.7-16.4 74.8 4.3 17.6 2.2 32.6-6.1 44.6C440.2 511.6 389.6 512 346.8 512l-2.8 0c-48.3 0-87.8-17.6-119.6-31.7-16-7.1-36.8-15.9-52.7-16.2-6.5-.1-11.8-5.5-11.8-12v-213.8c0-3.2 1.3-6.3 3.6-8.5 39.6-39.1 56.6-80.6 89.1-113.1 14.8-14.8 20.2-37.2 25.4-58.9C282.5 39.3 291.8 0 312 0c24 0 72 8 72 81.5z" />
</svg>
<h2 class="mb-0">Amazing</h2>
</div>
<p class="my-4 text-center">An electric vehicle would be the ideal choice for you!</p>
<div class="d-flex gap-2"
v-if="isCarPage">
<a :href="hybridEnquiry"
class="btn btn-primary">Book a Test Drive</a>
</div>
<div v-else
class="d-flex gap-2">
<a :href="generalEnquiry"
class="btn btn-primary">Contact an EV Specialist</a>
<a :href="electricUrl"
class="btn btn-secondary">View our Electric Stock</a>
</div>
<div class="electric-benefits">
<hr class="my-4" />
<div class="row justify-content-center text-center">
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 512 512">
<path fill="#007728"
d="M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z" />
</svg>
<h5 class="mt-3">No more trips to the fuel station to fill up</h5>
</div>
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 512 512">
<path fill="#007728"
d="M215 71.1L126.1 160H24c-13.3 0-24 10.7-24 24v144c0 13.3 10.7 24 24 24h102.1l89 89c15 15 41 4.5 41-17V88c0-21.5-26-32-41-17zM461.6 256l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L416 210.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8L370.4 256l-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0L416 301.6l45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L461.6 256z" />
</svg>
<h5 class="mt-3">Quieter, more enjoyable driving with no gear-changes</h5>
</div>
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 512 512">
<path fill="#007728"
d="M502.6 214.6l-45.3-45.3c-6-6-14.1-9.4-22.6-9.4H384V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v80H77.3c-8.5 0-16.6 3.4-22.6 9.4L9.4 214.6c-6 6-9.4 14.1-9.4 22.6V320h128v-16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v16h128v-16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v16h128v-82.8c0-8.5-3.4-16.6-9.4-22.6zM320 160H192V96h128v64zm64 208c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16v-16H192v16c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16v-16H0v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96H384v16z" />
</svg>
<h5 class="mt-3">Lower vehicle maintenance - less wear and tear</h5>
</div>
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 576 512">
<path fill="#007728"
d="M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z" />
</svg>
<h5 class="mt-3">Better for the environment with zero emissions</h5>
</div>
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 576 512">
<path fill="#007728"
d="M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7 .4 15.9 .8 0-.3 .1-.5 .1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1 .5 4.1 .6 6.2 15.2-3.9 31-6.2 47.4-6.2z" />
</svg>
<h5 class="mt-3">Cheaper running costs over the vehicle lifetime</h5>
</div>
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 512 512">
<path fill="#007728"
d="M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM227.3 387.3l184-184c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0L216 308.1l-70.1-70.1c-6.2-6.2-16.4-6.2-22.6 0l-22.6 22.6c-6.2 6.2-6.2 16.4 0 22.6l104 104c6.2 6.2 16.4 6.2 22.6 0z" />
</svg>
<h5 class="mt-3">Low emission zone compatible</h5>
</div>
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 576 512">
<path fill="#007728"
d="M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm208-320V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48h-32V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48h-16c-8.8 0-16 7.2-16 16v32c0 35.8 23.6 65.7 56 75.9v118.5c0 14-9.5 26.9-23.3 29.2C431.2 402.5 416 389 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.4-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v24.6c0 39.7 28.9 75.2 68.4 79C481.7 452.1 520 416.4 520 372V251.9c32.4-10.2 56-40.2 56-75.9v-32c0-8.8-7.2-16-16-16h-16zm-283.9 47.8l-93.7 139c-2.2 3.3-6.2 5.2-10.4 5.2-7.7 0-13.5-6.3-11.7-12.9L167.4 224H108c-7.3 0-12.9-5.6-11.9-11.9l16-107C112.9 99.9 118 96 124 96h68c7.9 0 13.6 6.5 11.6 13.2L192 160h57.7c9.2 0 15 8.8 10.4 15.8z" />
</svg>
<h5 class="mt-3">Fast & easy at-home charging with grants available</h5>
</div>
</div>
</div>
</div>
</div>
<div v-show="resultAnswer === 'YN'">
<div v-if="score > 13"
class="d-flex flex-column gap-3 align-items-center justify-content-center">
<h2 class="text-center">Congratulations!</h2>
<p class="mb-4 text-center">
An electric car will suit most of your driving needs, but you may need to plan ahead for longer journeys.
</p>
<div class="d-flex gap-2"
v-if="isCarPage">
<a :href="hybridEnquiry"
class="btn btn-primary">Book a Test Drive</a>
</div>
<div class="d-flex gap-2"
v-else>
<a :href="electricEnquiry"
class="btn btn-primary">Contact an EV Specialist</a>
<a :href="electricUrl"
class="btn btn-secondary">View our Electric Stock
</a>
</div>
<div class="electric-benefits">
<hr class="my-4" />
<div class="row justify-content-center text-center">
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 512 512">
<path fill="#007728"
d="M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z" />
</svg>
<h5 class="mt-3">No more trips to the fuel station to fill up</h5>
</div>
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 512 512">
<path fill="#007728"
d="M215 71.1L126.1 160H24c-13.3 0-24 10.7-24 24v144c0 13.3 10.7 24 24 24h102.1l89 89c15 15 41 4.5 41-17V88c0-21.5-26-32-41-17zM461.6 256l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L416 210.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8L370.4 256l-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0L416 301.6l45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L461.6 256z" />
</svg>
<h5 class="mt-3">Quieter, more enjoyable driving with no gear-changes</h5>
</div>
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 512 512">
<path fill="#007728"
d="M502.6 214.6l-45.3-45.3c-6-6-14.1-9.4-22.6-9.4H384V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v80H77.3c-8.5 0-16.6 3.4-22.6 9.4L9.4 214.6c-6 6-9.4 14.1-9.4 22.6V320h128v-16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v16h128v-16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v16h128v-82.8c0-8.5-3.4-16.6-9.4-22.6zM320 160H192V96h128v64zm64 208c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16v-16H192v16c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16v-16H0v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96H384v16z" />
</svg>
<h5 class="mt-3">Lower vehicle maintenance - less wear and tear</h5>
</div>
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 576 512">
<path fill="#007728"
d="M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z" />
</svg>
<h5 class="mt-3">Better for the environment with zero emissions</h5>
</div>
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 576 512">
<path fill="#007728"
d="M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7 .4 15.9 .8 0-.3 .1-.5 .1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1 .5 4.1 .6 6.2 15.2-3.9 31-6.2 47.4-6.2z" />
</svg>
<h5 class="mt-3">Cheaper running costs over the vehicle lifetime</h5>
</div>
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 512 512">
<path fill="#007728"
d="M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM227.3 387.3l184-184c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0L216 308.1l-70.1-70.1c-6.2-6.2-16.4-6.2-22.6 0l-22.6 22.6c-6.2 6.2-6.2 16.4 0 22.6l104 104c6.2 6.2 16.4 6.2 22.6 0z" />
</svg>
<h5 class="mt-3">Low emission zone compatible</h5>
</div>
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 576 512">
<path fill="#007728"
d="M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm208-320V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48h-32V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48h-16c-8.8 0-16 7.2-16 16v32c0 35.8 23.6 65.7 56 75.9v118.5c0 14-9.5 26.9-23.3 29.2C431.2 402.5 416 389 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.4-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v24.6c0 39.7 28.9 75.2 68.4 79C481.7 452.1 520 416.4 520 372V251.9c32.4-10.2 56-40.2 56-75.9v-32c0-8.8-7.2-16-16-16h-16zm-283.9 47.8l-93.7 139c-2.2 3.3-6.2 5.2-10.4 5.2-7.7 0-13.5-6.3-11.7-12.9L167.4 224H108c-7.3 0-12.9-5.6-11.9-11.9l16-107C112.9 99.9 118 96 124 96h68c7.9 0 13.6 6.5 11.6 13.2L192 160h57.7c9.2 0 15 8.8 10.4 15.8z" />
</svg>
<h5 class="mt-3">Fast & easy at-home charging with grants available</h5>
</div>
</div>
</div>
</div>
<div v-if="score >= 7 && score <= 13"
class="d-flex flex-column gap-3 align-items-center justify-content-center">
<h2 class="text-center">An electric car is generally suitable.</h2>
<p class="mb-4 text-center">
You may need an alternative car for journeys outside charge range, or to plan your trips carefully.
</p>
<div class="d-flex gap-2"
v-if="isCarPage">
<a :href="hybridEnquiry"
class="btn btn-primary">Book a Test Drive</a>
</div>
<div class="d-flex gap-2"
v-else>
<a :href="electricEnquiry"
class="btn btn-primary">Contact an EV Specialist</a>
<a :href="electricUrl"
class="btn btn-secondary">View our Electric Stock
</a>
</div>
<div class="electric-benefits">
<hr class="my-4" />
<div class="row justify-content-center text-center">
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 512 512">
<path fill="#007728"
d="M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z" />
</svg>
<h5 class="mt-3">No more trips to the fuel station to fill up</h5>
</div>
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 512 512">
<path fill="#007728"
d="M215 71.1L126.1 160H24c-13.3 0-24 10.7-24 24v144c0 13.3 10.7 24 24 24h102.1l89 89c15 15 41 4.5 41-17V88c0-21.5-26-32-41-17zM461.6 256l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L416 210.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8L370.4 256l-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0L416 301.6l45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L461.6 256z" />
</svg>
<h5 class="mt-3">Quieter, more enjoyable driving with no gear-changes</h5>
</div>
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 512 512">
<path fill="#007728"
d="M502.6 214.6l-45.3-45.3c-6-6-14.1-9.4-22.6-9.4H384V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v80H77.3c-8.5 0-16.6 3.4-22.6 9.4L9.4 214.6c-6 6-9.4 14.1-9.4 22.6V320h128v-16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v16h128v-16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v16h128v-82.8c0-8.5-3.4-16.6-9.4-22.6zM320 160H192V96h128v64zm64 208c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16v-16H192v16c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16v-16H0v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96H384v16z" />
</svg>
<h5 class="mt-3">Lower vehicle maintenance - less wear and tear</h5>
</div>
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 576 512">
<path fill="#007728"
d="M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z" />
</svg>
<h5 class="mt-3">Better for the environment with zero emissions</h5>
</div>
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 576 512">
<path fill="#007728"
d="M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7 .4 15.9 .8 0-.3 .1-.5 .1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1 .5 4.1 .6 6.2 15.2-3.9 31-6.2 47.4-6.2z" />
</svg>
<h5 class="mt-3">Cheaper running costs over the vehicle lifetime</h5>
</div>
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 512 512">
<path fill="#007728"
d="M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM227.3 387.3l184-184c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0L216 308.1l-70.1-70.1c-6.2-6.2-16.4-6.2-22.6 0l-22.6 22.6c-6.2 6.2-6.2 16.4 0 22.6l104 104c6.2 6.2 16.4 6.2 22.6 0z" />
</svg>
<h5 class="mt-3">Low emission zone compatible</h5>
</div>
<div class="col-12 col-lg-3 align-self-start my-3">
<svg width="4.5rem"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 576 512">
<path fill="#007728"
d="M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm208-320V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48h-32V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48h-16c-8.8 0-16 7.2-16 16v32c0 35.8 23.6 65.7 56 75.9v118.5c0 14-9.5 26.9-23.3 29.2C431.2 402.5 416 389 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.4-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v24.6c0 39.7 28.9 75.2 68.4 79C481.7 452.1 520 416.4 520 372V251.9c32.4-10.2 56-40.2 56-75.9v-32c0-8.8-7.2-16-16-16h-16zm-283.9 47.8l-93.7 139c-2.2 3.3-6.2 5.2-10.4 5.2-7.7 0-13.5-6.3-11.7-12.9L167.4 224H108c-7.3 0-12.9-5.6-11.9-11.9l16-107C112.9 99.9 118 96 124 96h68c7.9 0 13.6 6.5 11.6 13.2L192 160h57.7c9.2 0 15 8.8 10.4 15.8z" />
</svg>
<h5 class="mt-3">Fast & easy at-home charging with grants available</h5>
</div>
</div>
</div>
</div>
<div v-if="score >= 6 && score <= 6"
class="d-flex flex-column gap-3 align-items-center justify-content-center">
<h2 class="text-center">An electric car would be an ideal second vehicle</h2>
<p class="mb-4 text-center">
Based on your mileage, an electric vehicle would be suitable for day to day journeys. Buy as a second vehicle or consider a hybrid?
</p>
<div class="d-flex gap-2"
v-if="isCarPage">
<a :href="hybridEnquiry"
class="btn btn-primary">Book a Test Drive</a>
<a :href="hybridUrl"
class="btn btn-secondary">Shop Hybrid</a>
</div>
<div class="d-flex gap-2"
v-else>
<a :href="generalEnquiry"
class="btn btn-primary">Contact an EV Specialist</a>
<a :href="hybridUrl"
class="btn btn-secondary">Shop Hybrid
</a>
</div>
</div>
</div>
<div v-show="resultAnswer === 'NY'">
<!--NY-->
<div class="d-flex flex-column gap-3 align-items-center justify-content-center">
<h2 class="text-center">An electric car would be an ideal second vehicle</h2>
<p class="mb-4 text-center">
Or have you considered a hybrid?
</p>
<div class="d-flex gap-2"
v-if="isCarPage">
<a :href="hybridEnquiry"
class="btn btn-primary">Book a Test Drive</a>
</div>
<div class="d-flex gap-2"
v-else>
<a :href="electricEnquiry"
class="btn btn-primary">Speak to an Expert</a>
<a :href="hybridUrl"
class="btn btn-secondary">Shop Hybrid
</a>
</div>
</div>
</div>
<div v-show="resultAnswer === 'NN'">
<!--NN-->
<div class="d-flex flex-column gap-3 align-items-center justify-content-center">
<h2 class="text-center">Electric vehicle not recommended</h2>
<p class="text-center">
Based on the provided information an electric vehicle wouldn't suit your
needs.
</p>
<hr class="w-100 bg-dark">
<p class="my-4 text-center">Have you considered a hybrid instead?</p>
<div class="d-flex gap-2">
<a :href="electricEnquiry"
class="btn btn-primary">Speak to an Expert</a>
<a :href="hybridUrl"
class="btn btn-secondary">Shop Hybrid</a>
</div>
</div>
</div>
</div>
</div>
<div v-show="isBusy"
class="electric-calculator__step">
<div class="d-flex flex-column align-items-center justify-content-center gap-2 pt-3">
<svg width="2.3rem"
fill="var(--bs-primary)"
class="fa-pulse"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 512 512">
<path d="M304 48c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48 48 21.5 48 48zm-48 368c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm208-208c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zM96 256c0-26.5-21.5-48-48-48S0 229.5 0 256s21.5 48 48 48 48-21.5 48-48zm12.9 99.1c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48c0-26.5-21.5-48-48-48zm294.2 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48c0-26.5-21.5-48-48-48zM108.9 60.9c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z" />
</svg>
<p class="fs-5 mb-0">Loading</p>
</div>
</div>
</div>
</div>
</template><!--cms-disable-->
<!-- JS Bundle -->
<script src="https://bluesky.sirv.com/Global/Vendors/lazysizes/lazysizes.min.js"></script>
<script src="https://bluesky.sirv.com/Global/Vendors/modernizr/modernizr.js"></script>
<!--/cms-disable--><script defer="defer" src="/dist/bootstrap.914658f3490f991e4252.js"></script><script defer="defer" src="/dist/vendor.9d01ab5275ea156944fa.js"></script><script defer="defer" src="/dist/fontawesome.d34eecc59040f24e0570.js"></script>
<!-- Start Wildix Kite widget -->
<script type="text/javascript">
(function(e){
window.kiteConfig = {
"host": "kite.wildix.com",
"src": "static/js/libs/widget.min.js",
"serialOrPbxName": "dmkeith",
"extension": "2",
"language": "",
"autoConnect": false,
"autoLogin": false,
"autoLoginName": "John Doe",
"autoLoginEmail": "john-doe@email.com",
"askGeolocation": true,
"askNotification": true,
"isExpanded": false,
"expandTimeout": "",
"openInNewWindow": false,
"position": "bottom",
"newDesign": true,
"hoverTitle": "",
"buttonIcon": "chat",
"buttonIconColor": "#003e69",
"bottomOffset": "25px",
"rightOffset": "25px"
};
var t=kiteConfig.host;var n=e.getElementsByTagName("script")[0];var r=e.createElement("script");
r.async=1;r.setAttribute("charset","utf-8");r.src="https://"+t+"/"+kiteConfig.src;
r.type="text/javascript";var i=e.createElement("link");i.rel="stylesheet";i.type="text/css";
i.href="https://"+t+"/static/css/widget.css";n.parentNode.insertBefore(r,n);n.parentNode.insertBefore(i,n)})(document)
</script>
<!-- End Wildix Kite widget -->
<!-- non-essential css loaded here to reduce render blocking -->
<link href="https://bluesky.sirv.com/Global/Assets/Fonts/UKNumberPlate/style.css"
rel="stylesheet"
media="all">
<script defer="defer"
src="/js/search-counter.js"></script>
</body>
</html>