// Custom Wall Mural — product configurator
// WC product ID: 10198 | Material: vinyl only | Qty: 1 | Custom size only
const MURAL_WC_ID = 10198;
const MURAL_SCHEMA = {
'@context':'https://schema.org','@type':'Product',
name:'Custom Wall Mural',
description:'Custom printed vinyl wall murals. Wipe-clean, repositionable, printed to your exact dimensions. Printed in Sydney, Australia.',
image:'https://kingkongstickers.com.au/assets/bedroom-mural.jpeg',
brand:{'@type':'Brand',name:'King Kong Stickers'},
offers:{'@type':'AggregateOffer',priceCurrency:'AUD',lowPrice:'149',availability:'https://schema.org/InStock',seller:{'@type':'Organization',name:'King Kong Stickers'}},
additionalProperty:[
{'@type':'PropertyValue',name:'Material',value:'Wipe-clean vinyl wallpaper'},
{'@type':'PropertyValue',name:'Installation',value:'Paste-the-wall'},
{'@type':'PropertyValue',name:'Finish',value:'Satin'},
{'@type':'PropertyValue',name:'Turnaround',value:'5 business days'},
{'@type':'PropertyValue',name:'Size',value:'Custom — any width and height'},
]
};
const MURAL_FAQ_SCHEMA = {
'@context':'https://schema.org','@type':'FAQPage',
mainEntity:[
{'@type':'Question',name:'What material are your wall murals printed on?',acceptedAnswer:{'@type':'Answer',text:'Our murals are printed on wipe-clean satin vinyl wallpaper. It is durable, moisture-resistant, and suitable for living rooms, kids rooms, and feature walls.'}},
{'@type':'Question',name:'How do I install a vinyl wall mural?',acceptedAnswer:{'@type':'Answer',text:'Our murals are paste-the-wall — apply standard wallpaper paste to the wall surface, then hang the panels. No specialist needed. We include a full installation guide with every order.'}},
{'@type':'Question',name:'Can I remove and reuse the mural?',acceptedAnswer:{'@type':'Answer',text:'The mural can be removed, but it is not designed for repeated repositioning. Paste-the-wall installation bonds more permanently than self-adhesive options.'}},
{'@type':'Question',name:'What file format do I need?',acceptedAnswer:{'@type':'Answer',text:'PDF, AI, PSD, or high-resolution JPG/PNG. Minimum 150dpi at print size. We review every file and send a digital proof before printing.'}},
{'@type':'Question',name:'How long does delivery take?',acceptedAnswer:{'@type':'Answer',text:'5 business days from proof approval to dispatch, plus 2–5 days shipping. Most customers receive their mural within 8–10 business days.'}},
]
};
// Area-based pricing: $89/m² with $149 minimum
const muralPrice = (wCm, hCm) => {
const w = parseFloat(wCm) || 0;
const h = parseFloat(hCm) || 0;
if (!w || !h) return null;
const areaSqM = (w * h) / 10000;
const raw = Math.max(149, Math.round(areaSqM * 89 * 100) / 100);
return { total: raw, areaSqM: +areaSqM.toFixed(2) };
};
const MuralProduct = ({ go }) => {
useSEO({
title: 'Custom Wall Murals Australia — Printed to Your Size',
description: 'Custom vinyl wall murals printed to your exact dimensions. Wipe-clean, paste-the-wall installation. Printed in Sydney. Free proof before we print.',
schema: [MURAL_SCHEMA, MURAL_FAQ_SCHEMA],
});
const [widthCm, setWidthCm] = React.useState('');
const [heightCm, setHeightCm] = React.useState('');
const [tab, setTab] = React.useState('description');
const [file, setFile] = React.useState(null);
const [upState, setUpState] = React.useState('idle');
const [saved, setSaved] = React.useState(()=>localStorage.getItem('kk_saved_mural')==='1');
const toggleSave = () => { const n=!saved; setSaved(n); n ? localStorage.setItem('kk_saved_mural','1') : localStorage.removeItem('kk_saved_mural'); };
const pricing = muralPrice(widthCm, heightCm);
// artwork upload (same token system as die-cut)
const handleFile = async (f) => {
if (!f) return;
setFile(f); setUpState('uploading');
try {
const fd = new FormData(); fd.append('artwork', f);
const r = await fetch('/wp-json/kk/v1/upload-artwork', { method:'POST', body:fd });
const d = await r.json();
if (d.token) { localStorage.setItem('kk_art_token', d.token); setUpState('done'); }
else { setUpState('error'); }
} catch { setUpState('error'); }
};
const handleOrder = () => {
if (!pricing) return;
const token = localStorage.getItem('kk_art_token');
const p = new URLSearchParams({ 'add-to-cart': MURAL_WC_ID, quantity: 1 });
if (token) p.set('kk_art', token);
// pass dimensions + authoritative price as meta for the order
p.set('mural_width_cm', widthCm);
p.set('mural_height_cm', heightCm);
p.set('kk_price', pricing.total.toFixed(2));
p.set('kk_size', `${widthCm}cm × ${heightCm}cm`);
window.location.href = '/cart/?' + p.toString();
};
const images = [
'assets/bedroom-mural.jpeg',
'assets/brick-lifestyle.jpeg',
'assets/sticker-collection.jpeg',
];
const [activeImg, setActiveImg] = React.useState(0);
const tabContent = {
description: (
Your wall, your rules. Upload any photo, artwork, or pattern — we print it as a single seamless mural sized to exactly fit your wall.
Printed on wipe-clean satin vinyl wallpaper using wide-format pigment inks. Colours stay vivid for 10+ years without fading. The surface cleans up with a damp cloth — ideal for kids' rooms and high-traffic walls.
What's included
Full-width seamless mural printed to your exact dimensions
Pre-cut panels for easier installation (panels max 60cm wide)