Din webbläsare stöds ej. För bästa upplevelsen rekommenderas en nyare version eller en annan webbläsare.
Din sökning pågav inga träffar. Var vänlig försök med annat sökord.
Sökning måste bestå av minsttecken.
Mitt konto
Mina uppgifter
Här kan du ändra de uppgifter du angav när du registrerade dig som kund hos oss.
Orderöversikt
Här kan du enkelt se en översikt av dina ordrar hos oss. Om du klickar på en order visas utförligare information, samt alla orderrader. Du kan kopiera en order och ha som underlag när du vill handla på nytt. Om du klickar på artikelkoden visas gjorda leveranser.
I orderöversikten kan du se och klicka på en liten symbol till höger om ett paket är spårbart via vår spårningsfunktion.
Favoriter
Som inloggad har du tillgång till dina favoritlistor. Skapa listor under Mitt konto. Lägg till nya artiklar via produktsidorna eller via Snabborder. Klicka på produkten och klicka sedan på Hjärtat som kommer upp till höger. Lägg till artikeln till din lista. Du kan lägga hela eller delar av en lista i kundkorgen. På kassasidan är det också möjligt att spara hela din kundkorg i en favoritlista.
document.addEventListener("DOMContentLoaded", function () {
/* =====================================================
TABS
===================================================== */
const tabs = document.querySelectorAll(".ns-tab");
const panels = document.querySelectorAll(".ns-panel");
if (tabs.length && panels.length) {
tabs.forEach(function (tab) {
tab.addEventListener("click", function () {
tabs.forEach(function (t) {
t.classList.remove("active");
});
panels.forEach(function (p) {
p.classList.remove("active");
});
this.classList.add("active");
const target = this.dataset.tab;
const panel = document.querySelector('.ns-panel[data-content="' + target + '"]');
if (panel) {
panel.classList.add("active");
}
});
});
}
/* =====================================================
FAQ ACCORDION
===================================================== */
const faqItems = document.querySelectorAll(".ns-faq-item");
if (faqItems.length) {
faqItems.forEach(function (item) {
const button = item.querySelector(".ns-faq-question");
if (!button) return;
button.addEventListener("click", function () {
faqItems.forEach(function (other) {
if (other !== item) {
other.classList.remove("active");
}
});
item.classList.toggle("active");
});
});
}
/* =====================================================
GENERIC IMAGE SLIDERS (2 mobile / 3 desktop)
===================================================== */
const sliders = document.querySelectorAll("[data-slider]");
sliders.forEach(function (slider) {
const track = slider.querySelector(".slider-track");
const slides = slider.querySelectorAll(".slide");
const prev = slider.querySelector(".slider-btn.prev");
const next = slider.querySelector(".slider-btn.next");
if (!track || !slides.length || !prev || !next) return;
let index = 0;
function updateSlider() {
const slideWidth = slides[0].offsetWidth;
const gap = parseInt(getComputedStyle(track).gap, 10) || 0;
const step = slideWidth + gap;
const visible = window.innerWidth >= 1024 ? 3 : 2;
const maxIndex = Math.max(0, slides.length - visible);
index = Math.max(0, Math.min(index, maxIndex));
track.style.transform = "translateX(-" + (index * step) + "px)";
prev.disabled = index === 0;
next.disabled = index >= maxIndex;
}
prev.addEventListener("click", function () {
index--;
updateSlider();
});
next.addEventListener("click", function () {
index++;
updateSlider();
});
window.addEventListener("resize", updateSlider);
updateSlider();
});
/* =====================================================
INSPIRATION SLIDER (2 mobile / 4 desktop)
===================================================== */
const inspiration = document.querySelector(".inspiration-slider");
if (inspiration) {
const track = inspiration.querySelector(".slider-track");
const slides = inspiration.querySelectorAll(".slide");
const prev = inspiration.querySelector(".slider-arrow.prev");
const next = inspiration.querySelector(".slider-arrow.next");
if (track && slides.length && prev && next) {
let index = 0;
function updateInspiration() {
const slideWidth = slides[0].offsetWidth;
const gap = parseInt(getComputedStyle(track).gap, 10) || 0;
const step = slideWidth + gap;
const visible = window.innerWidth >= 1024 ? 4 : 2;
const maxIndex = Math.max(0, slides.length - visible);
index = Math.max(0, Math.min(index, maxIndex));
track.style.transform = "translateX(-" + (index * step) + "px)";
}
prev.addEventListener("click", function () {
index--;
updateInspiration();
});
next.addEventListener("click", function () {
index++;
updateInspiration();
});
window.addEventListener("resize", updateInspiration);
updateInspiration();
}
}
/* =====================================================
LOMBARD HERO SLIDER
===================================================== */
const lombardTrack = document.getElementById("lombard-slider-track");
const lombardSlides = lombardTrack ? lombardTrack.children : [];
const lombardPrev = document.querySelector(".lombard-slider-prev");
const lombardNext = document.querySelector(".lombard-slider-next");
if (lombardTrack && lombardSlides.length && lombardPrev && lombardNext) {
let lombardIndex = 0;
function updateLombardSlider() {
lombardTrack.style.transform = "translateX(-" + (lombardIndex * 100) + "%)";
}
lombardPrev.addEventListener("click", function () {
lombardIndex = (lombardIndex - 1 + lombardSlides.length) % lombardSlides.length;
updateLombardSlider();
});
lombardNext.addEventListener("click", function () {
lombardIndex = (lombardIndex + 1) % lombardSlides.length;
updateLombardSlider();
});
updateLombardSlider();
}
/* =====================================================
VIDEO AUTOPLAY FIX (mobile)
===================================================== */
const videos = document.querySelectorAll("video");
videos.forEach(function (video) {
video.setAttribute("muted", "");
video.setAttribute("playsinline", "");
video.setAttribute("webkit-playsinline", "");
const playPromise = video.play();
if (playPromise !== undefined) {
playPromise.catch(function () {});
}
});
/* =====================================================
SMOOTH SCROLL FOR HASH LINKS
===================================================== */
document.querySelectorAll('a[href^="#"]').forEach(function (anchor) {
anchor.addEventListener("click", function (e) {
const id = this.getAttribute("href");
if (!id || id === "#") return;
const target = document.querySelector(id);
if (!target) return;
e.preventDefault();
target.scrollIntoView({
behavior: "smooth",
block: "start"
});
});
});
/* =====================================================
PRODUCT USP CONTENT
===================================================== */
function findProductTitleElement() {
const selectors = [
".product-title h1",
".product-name h1",
".product-title",
".product-name",
"[class*='product-title'] h1",
"[class*='product-name'] h1",
"[class*='product-title']",
"[class*='product-name']",
"h1"
];
for (let i = 0; i < selectors.length; i++) {
const elements = document.querySelectorAll(selectors[i]);
for (let j = 0; j < elements.length; j++) {
const el = elements[j];
if (el && el.textContent && el.textContent.trim().length > 0) {
return el;
}
}
}
return null;
}
function findUSPSource() {
return document.querySelector(".product-usp-source");
}
function findUSPContent(sourceEl) {
if (!sourceEl) return null;
const content = sourceEl.querySelector(".product-usp-content");
if (content) return content;
const wrapper = document.createElement("div");
wrapper.className = "product-usp-content";
wrapper.innerHTML = sourceEl.innerHTML;
return wrapper;
}
function removeUnwantedLines(titleEl) {
if (!titleEl) return;
titleEl.style.borderBottom = "none";
titleEl.style.boxShadow = "none";
let current = titleEl.parentElement;
let steps = 0;
while (current && steps < 5) {
current.style.borderBottom = "none";
current.style.borderTop = "none";
current.style.boxShadow = "none";
steps++;
current = current.parentElement;
}
}
function insertUSPBelowTitle(titleEl, sourceEl) {
if (!titleEl || !sourceEl) return;
if (document.querySelector(".product-usp-content--moved")) return;
const content = findUSPContent(sourceEl);
if (!content) return;
const movedContent = content.cloneNode(true);
movedContent.classList.add("product-usp-content--moved");
titleEl.insertAdjacentElement("afterend", movedContent);
}
function initProductUSPContent() {
const titleEl = findProductTitleElement();
const sourceEl = findUSPSource();
if (!titleEl || !sourceEl) return;
insertUSPBelowTitle(titleEl, sourceEl);
removeUnwantedLines(titleEl);
}
initProductUSPContent();
});