KRM styre i toppklass
Monterade styret direkt och det gav mopeden ett helt nytt utseende och bättre känsla i körningen.
Läs på Trustpilot
Couldn't load pickup availability
14 dagars pengarna tillbaka garanti
Vi erbjuder 14 dagars retur eller bytesrätt om du inte är nöjd med din beställning.
Yasuni R1 är ett mellanklass avgassystem för 50 cc motorcyklar med Derbi eller Minarelli AM6-motor. Solid ljud och förbättrad prestanda i beprövad Yasuni-kvalitet.
Det handsvetsade expansionsröret med rena svetsar kommer med en Max Pro dämpare tillverkad av högkvalitativ CNC-aluminium.
Avgassystemet är mest kraftfullt i mellan till höga varvtal och passar för 50 cc och 70 cc sport- och racingcylindrar. Du kan använda avgassystemet med OEM-cylindrar, men det visar sin fulla potential med modifierade uppsättningar.
För att fullt ut utnyttja Yasuni R1:s kraft rekommenderar vi att använda en 19mm - 21mm förgasare. Vi rekommenderar också att använda en Kompatibla modeller' + html;
container.style.display = "block";
enhanceCompatibleModelClicks(container);
} else {
container.style.display = "none";
container.innerHTML = "";
}
} catch (error) {
console.error("Fetch error:", error);
container.style.display = "none";
container.innerHTML = "";
}
}
const API_BASE = "https://xkrq-pxeg-1uhe.f2.xano.io/api:z-JaMzaB";
let __cachedMakes = null;
const __cachedModelsByMakeId = new Map();
function norm(s) {
return String(s || "")
.toLowerCase()
.replace(/\s+/g, " ")
.trim();
}
function extractHandleFromHref(href) {
if (!href) return null;
const m = String(href).match(/\/collections\/([^/?#]+)/);
return m ? m[1] : null;
}
async function getMakes() {
if (__cachedMakes) return __cachedMakes;
const res = await fetch(API_BASE + "/makes");
if (!res.ok) throw new Error("Could not load makes");
__cachedMakes = await res.json();
return __cachedMakes;
}
async function getModels(makeId) {
if (__cachedModelsByMakeId.has(makeId)) return __cachedModelsByMakeId.get(makeId);
const res = await fetch(API_BASE + "/models/" + makeId);
if (!res.ok) throw new Error("Could not load models for make " + makeId);
const models = await res.json();
__cachedModelsByMakeId.set(makeId, models);
return models;
}
async function resolveHandle(makeName, modelName) {
const cacheKey = "cm_resolve:" + norm(makeName) + "|" + norm(modelName);
const cached = sessionStorage.getItem(cacheKey);
if (cached) return JSON.parse(cached);
const makes = await getMakes();
const make = makes.find((m) => norm(m.name) === norm(makeName));
if (!make) return null;
const models = await getModels(make.id);
const model = models.find((m) => norm(m.name) === norm(modelName));
if (!model || !model.handle) return null;
const resolved = {
makeId: String(make.id),
makeName: make.name,
modelName: model.name,
handle: model.handle,
};
sessionStorage.setItem(cacheKey, JSON.stringify(resolved));
return resolved;
}
function enhanceCompatibleModelClicks(root) {
const items = root.querySelectorAll(".compatible-models-wrapper li");
if (!items.length) return;
items.forEach((li) => {
li.classList.add("cm-model-item");
li.setAttribute("role", "button");
li.setAttribute("tabindex", "0");
});
function readSelection(target) {
const li = target.closest(".compatible-models-wrapper li");
if (!li) return null;
const details = li.closest("details");
const summary = details ? details.querySelector("summary") : null;
const makeName = summary ? summary.textContent.trim() : "";
const link = li.querySelector("a");
const modelName = (link ? link.textContent : li.textContent).trim();
const handle =
(link && (link.dataset.modelHandle || link.dataset.handle)) ||
li.dataset.modelHandle ||
li.dataset.handle ||
(link && extractHandleFromHref(link.getAttribute("href"))) ||
extractHandleFromHref(li.getAttribute("data-href"));
return { li, makeName, modelName, handle };
}
function saveAndGo(resolved) {
localStorage.setItem("selectedMakeId", resolved.makeId || "");
localStorage.setItem("selectedMakeName", resolved.makeName || "");
localStorage.setItem("selectedModelHandle", resolved.handle);
localStorage.setItem("selectedModelName", resolved.modelName || "");
localStorage.setItem(
"selectedDisplayName",
(resolved.makeName ? resolved.makeName + " " : "") +
(resolved.modelName || "")
);
localStorage.setItem("justSelectedModel", "true");
window.location.href = "/collections/" + resolved.handle;
}
let busy = false;
async function onPick(e) {
const sel = readSelection(e.target);
if (!sel) return;
e.preventDefault();
if (busy) return;
// If handle is already present in markup, navigate immediately
if (sel.handle) {
saveAndGo({
makeId: "",
makeName: sel.makeName || "",
modelName: sel.modelName || "",
handle: sel.handle,
});
return;
}
// Otherwise resolve handle through the same API used by the model selector
try {
busy = true;
sel.li.style.opacity = "0.75";
const resolved = await resolveHandle(sel.makeName, sel.modelName);
if (!resolved) {
console.warn("Could not resolve handle for:", {
make: sel.makeName,
model: sel.modelName,
});
sel.li.style.opacity = "";
busy = false;
return;
}
saveAndGo(resolved);
} catch (err) {
console.error("Resolve error:", err);
sel.li.style.opacity = "";
busy = false;
}
}
root.addEventListener("click", onPick);
root.addEventListener("keydown", (e) => {
if (e.key !== "Enter" && e.key !== " ") return;
onPick(e);
});
}
Sverige: 1–3 arbetsdagar (fri frakt över 1500 kr)
Övriga Norden: 3–5 arbetsdagar
Övriga världen: 4–8 arbetsdagar
(Beställningsvara: 1-4 arbetsdagar extra)
För mer information, vänligen se vår fraktsida här.
Vi erbjuder 14 dagars öppet köp och möjlighet till byte om du inte är nöjd med din beställning, oavsett anledning.
För mer information, se vår returpolicy här.
Betyg 4.7 / 5 baserat på 400+ recensioner. Visar våra 5-stjärniga recensioner.
Trustpilot