{
if (img && !validImages.includes(img)) {
validImages.unshift(img);
}
});
if ($event.detail.images.length > 0) activeImg = $event.detail.images[0];
} else if ($event.detail.image) {
activeImg = $event.detail.image;
if (!validImages.includes($event.detail.image)) {
validImages.unshift($event.detail.image);
}
}
}
"
x-data="{
activeImg: '/storage/products/sku_tbr6782_39.png',
showLightbox: false,
lightboxIndex: 0,
zoom: false,
savedScrollY: 0,
validImages: [],
imgAspect: 1,
zoomLevel: 1,
panX: 0,
panY: 0,
isDragging: false,
dragStartX: 0,
dragStartY: 0,
startPanX: 0,
startPanY: 0,
async init() {
const primary = '/storage/products/sku_tbr6782_39.png';
const extraImgs = JSON.parse('[\u0022\\\/storage\\\/products\\\/sku_tbr6782_39.png\u0022]');
const allImgs = Array.from(new Set([primary, ...extraImgs])).filter(Boolean);
const checks = await Promise.all(allImgs.map(async (src) => {
try {
const resp = await fetch(src, { method: 'HEAD' });
return resp.ok ? src : null;
} catch { return null; }
}));
this.validImages = checks.filter(Boolean);
if (this.validImages.length === 0) {
this.validImages = [primary];
}
this.activeImg = this.validImages[0];
},
onImgLoad(el) {
if (el && el.naturalWidth && el.naturalHeight) {
this.imgAspect = el.naturalWidth / el.naturalHeight;
}
},
openLightbox(i) {
this.lightboxIndex = i >= 0 ? i : 0;
this.zoomLevel = 1;
this.resetPan();
this.showLightbox = true;
document.documentElement.style.overflow = 'hidden';
document.body.style.overflow = 'hidden';
document.body.style.touchAction = 'none';
document.body.classList.add('overlay-open');
document.documentElement.classList.add('overlay-open');
},
closeLightbox() {
this.showLightbox = false;
this.zoomLevel = 1;
this.resetPan();
document.documentElement.style.overflow = '';
document.body.style.overflow = '';
document.body.style.touchAction = '';
document.body.classList.remove('overlay-open');
document.documentElement.classList.remove('overlay-open');
},
zoomIn() {
if (this.zoomLevel < 2.5) this.zoomLevel = parseFloat((this.zoomLevel + 0.25).toFixed(2));
},
zoomOut() {
if (this.zoomLevel > 1) {
this.zoomLevel = parseFloat((this.zoomLevel - 0.25).toFixed(2));
if (this.zoomLevel === 1) this.resetPan();
}
},
resetZoom() {
this.zoomLevel = 1;
this.resetPan();
},
resetPan() {
this.panX = 0;
this.panY = 0;
this.isDragging = false;
},
startDrag(e) {
if (this.zoomLevel <= 1) return;
this.isDragging = true;
const clientX = e.touches ? e.touches[0].clientX : e.clientX;
const clientY = e.touches ? e.touches[0].clientY : e.clientY;
this.dragStartX = clientX;
this.dragStartY = clientY;
this.startPanX = this.panX;
this.startPanY = this.panY;
},
onDrag(e) {
if (!this.isDragging || this.zoomLevel <= 1) return;
const clientX = e.touches ? e.touches[0].clientX : e.clientX;
const clientY = e.touches ? e.touches[0].clientY : e.clientY;
this.panX = this.startPanX + (clientX - this.dragStartX);
this.panY = this.startPanY + (clientY - this.dragStartY);
},
stopDrag() {
this.isDragging = false;
},
toggleZoom() {
if (this.zoomLevel > 1) {
this.zoomLevel = 1;
this.resetPan();
} else {
this.zoomLevel = 1.5;
}
},
nextImg() { this.zoomLevel = 1; this.resetPan(); this.lightboxIndex = (this.lightboxIndex + 1) % this.validImages.length; },
prevImg() { this.zoomLevel = 1; this.resetPan(); this.lightboxIndex = (this.lightboxIndex - 1 + this.validImages.length) % this.validImages.length; }
}">
= 0 ? validImages.indexOf(activeImg) : 0)">
/
Bagikan:
{ window.open('https://www.instagram.com/', '_blank', 'noopener,noreferrer'); window.toast.show('Tautan disalin — tempel di Instagram', 'success') })"
class="flex items-center gap-3 px-3 py-2.5 rounded-xl text-sm font-medium text-brand-700 hover:bg-brand-50 transition-colors">
Instagram
X (Twitter)
WhatsApp
Facebook
Set sikat kloset kamar mandi
0.0
★
|
0 Penilaian
|
0 Terjual
Rp 77.000
KategoriSikat
Stok
SKUTBR6782
Jumlah
Deskripsi Produk
Jaga kebersihan kamar mandi tetap maksimal dengan sikat toilet berkualitas yang dirancang untuk membersihkan bagian dalam kloset secara efektif. Dilengkapi dengan wadah penyimpanan yang praktis, sikat dapat disimpan dengan rapi sehingga kamar mandi tetap bersih dan terlihat modern.
Keunggulan Produk:
- 🧼 Bulu sikat kuat dan rapat, efektif mengangkat noda membandel.
- 💪 Gagang panjang memberikan jangkauan lebih luas dan nyaman digunakan.
- 🏠 Dilengkapi wadah penyimpanan agar sikat tetap higienis dan tidak mengotori lantai.
- ✨ Desain minimalis dengan warna pastel yang elegan, cocok untuk berbagai konsep kamar mandi.
- 💧 Material plastik berkualitas yang kokoh, tahan air, dan mudah dibersihkan.
- 🚿 Ringan, praktis, serta nyaman digunakan untuk pemakaian sehari-hari.
Spesifikasi:
- Material: Plastik PP + bulu sikat berkualitas
- Warna: Pink dan Biru Mint
- Fungsi: Membersihkan bagian dalam kloset/toilet
- Isi Paket: 1 buah sikat toilet + 1 buah wadah
Cocok digunakan untuk:
- Rumah tangga
- Apartemen
- Kos dan kontrakan
- Hotel, villa, dan penginapan
- Kantor maupun tempat usaha
Dengan desain modern dan fungsional, sikat toilet ini membantu menjaga kebersihan kloset sekaligus membuat tampilan kamar mandi lebih rapi dan estetik.
Spesifikasi
| Kategori | Sikat |
| SKU | TBR6782 |
| Total Stok Yang Tersedia | 240 |
0.0
☆
☆
☆
☆
☆
0 Ulasan
5★
0
4★
0
3★
0
2★
0
1★
0
Belum ada ulasan
Jadilah yang pertama memberikan ulasan untuk produk ini.