Accesorios

Accesorios DynaVap

166 Accesorios
Shops 119
Ab 1,00 €
Tipo
Stash (25) Tapa (20) Tallo (19) Boquilla (16)
DynaVap - Hula Stem 60mm Dark

DynaVap - Hula Stem 60mm Dark

Boquilla 3 Tiendas
desde 10,60 €
DynaVap - Titanium Tip: Vong

DynaVap - Titanium Tip: Vong

Boquilla 6 Tiendas
desde 35,04 €
DynaVap Condenser Mouthpiece

DynaVap Condenser Mouthpiece

Boquilla 24 Tiendas
desde 3,03 €
DynaVap Fat Mouthpiece

DynaVap Fat Mouthpiece

Boquilla 28 Tiendas
desde 1,73 €
DynaVap Helix Titanium Tip

DynaVap Helix Titanium Tip

Boquilla 2 Tiendas
desde 49,34 €
DynaVap Tip 2018/2020

DynaVap Tip 2018/2020

Boquilla 2 Tiendas
desde 4,90 €
Dynavap Titanium Helix Tip

Dynavap Titanium Helix Tip

Boquilla 2 Tiendas
desde 48,00 €
DynaVap Titanium Tip [Omni Design]

DynaVap Titanium Tip [Omni Design]

Boquilla 2 Tiendas
desde 49,67 €
Dynavap Titanium Tip Helix

Dynavap Titanium Tip Helix

Boquilla 2 Tiendas
desde 33,16 €
Dynavap VonG Titanium Tip

Dynavap VonG Titanium Tip

Boquilla 2 Tiendas
desde 37,50 €
DYNAVAP X HERO Mouthpiece BB9 110mm blue

DYNAVAP X HERO Mouthpiece BB9 110mm blue

Boquilla 3 Tiendas
desde 10,50 €
Spinning Mouthpiece

Spinning Mouthpiece

Boquilla 7 Tiendas
desde 8,99 €
Stainless Steel Tip: "M" Plus

Stainless Steel Tip: "M" Plus

Boquilla 3 Tiendas
desde 28,28 €
VapCap – Silicone mouthpiece

VapCap – Silicone mouthpiece

Boquilla 4 Tiendas
desde 1,88 €
Aristocrat Stem for DynaVap

Aristocrat Stem for DynaVap

Tubo de vidrio 2 Tiendas
desde 13,01 €
BB Vapes Brvnd After-Shock DynaVap Stem

BB Vapes Brvnd After-Shock DynaVap Stem

Tubo de vidrio 2 Tiendas
desde 31,25 €
BB6 Glass Body

BB6 Glass Body

Tubo de vidrio 16 Tiendas
desde 9,90 €
DynaVap 3D Flow Stem

DynaVap 3D Flow Stem

Tubo de vidrio 2 Tiendas
desde 3,99 €
DynaVap 3D Glass Cooling Stem

DynaVap 3D Glass Cooling Stem

Tubo de vidrio 3 Tiendas
desde 11,14 €
DynaVap BB3 Grey Stem

DynaVap BB3 Grey Stem

Tubo de vidrio 3 Tiendas
desde 27,00 €
DynaVap Dark Wood NonaVonG Stem

DynaVap Dark Wood NonaVonG Stem

Tubo de vidrio 3 Tiendas
desde 28,00 €
DynaVap Glass XL Cooling Stem

DynaVap Glass XL Cooling Stem

Tubo de vidrio 2 Tiendas
desde 17,34 €
DynaVap Maraca Glass Cooling Stem

DynaVap Maraca Glass Cooling Stem

Tubo de vidrio 2 Tiendas
desde 13,01 €
DynaVap Stem Azurium 2020

DynaVap Stem Azurium 2020

Tubo de vidrio 2 Tiendas
desde 33,00 €
DynaVap Stem M 2021

DynaVap Stem M 2021

Tubo de vidrio 6 Tiendas
desde 3,50 €
DynaVap Stem Omni 2021

DynaVap Stem Omni 2021

Tubo de vidrio 4 Tiendas
desde 60,00 €
DynaVap Stem VonG 2021

DynaVap Stem VonG 2021

Tubo de vidrio 2 Tiendas
desde 45,00 €
DynaVap The BB9: Blue Midsection

DynaVap The BB9: Blue Midsection

Tubo de vidrio 2 Tiendas
desde 31,19 €
Glass Stem

Glass Stem

Tubo de vidrio 19 Tiendas
desde 5,02 €
MidSection

MidSection

Tubo de vidrio 5 Tiendas
desde 22,86 €
Standard Titan Kondensator

Standard Titan Kondensator

Tubo de vidrio 4 Tiendas
desde 8,00 €
Wood Stem

Wood Stem

Tubo de vidrio 9 Tiendas
desde 15,00 €
WoodWynd Condenser Assembly

WoodWynd Condenser Assembly

Tubo de vidrio 2 Tiendas
desde 50,00 €
Chill Steel Pipe

Chill Steel Pipe

Tubo 13 Tiendas
desde 50,00 €
Condenser

Condenser

Tubo 18 Tiendas
desde 3,90 €
DynaVap XL Condenser Kit

DynaVap XL Condenser Kit

Tubo 6 Tiendas
desde 20,62 €
DynaVap Aerotube

DynaVap Aerotube

Refrigeración 11 Tiendas
desde 9,90 €
DynaVap Polar Blast

DynaVap Polar Blast

Refrigeración 7 Tiendas
desde 46,85 €
DynaVap Hyper Titanium Tip

DynaVap Hyper Titanium Tip

Cámara 5 Tiendas
desde 59,37 €
DynaVap M Tip

DynaVap M Tip

Cámara 18 Tiendas
desde 21,68 €
HyperDyn Tip

HyperDyn Tip

Cámara 10 Tiendas
desde 49,99 €
Stainless Steel Tip

Stainless Steel Tip

Cámara 27 Tiendas
desde 1,97 €
Titanium Tip

Titanium Tip

Cámara 52 Tiendas
desde 12,50 €
Titanium Tip Halo

Titanium Tip Halo

Cámara 9 Tiendas
desde 38,91 €
Titanium Tip Hyper

Titanium Tip Hyper

Cámara 13 Tiendas
desde 45,92 €
Dosing Capsule

Dosing Capsule

Cápsula dosificadora 56 Tiendas
desde 2,61 €
Hyper Dosing Capsule

Hyper Dosing Capsule

Cápsula dosificadora 16 Tiendas
desde 4,90 €
3-in-1 10mm Glass Adapter for DynaVap & DaVinci

3-in-1 10mm Glass Adapter for DynaVap & DaVinci

Adaptador 10 Tiendas
desde 9,90 €
'; } const priceHtml = safePrice ? '
desde €' + safePrice + '
' : ''; const priceHtmlFixed = safePrice ? '
desde' + safePrice + ' €
' : ''; card.innerHTML = '
' + safeName + '

' + nameHtml + '

' + metaHtml + priceHtmlFixed + '
'; return card; } function appendDeferred(limit) { if (!deferredData.length) return; const items = deferredData.splice(0, limit); const fragment = document.createDocumentFragment(); items.forEach(item => fragment.appendChild(createAccessoryCard(item))); if (sentinel && sentinel.parentNode) { grid.insertBefore(fragment, sentinel); } else { grid.appendChild(fragment); } if (!deferredData.length) { if (sentinel && sentinel.parentNode) sentinel.remove(); if (loadMoreBtn) loadMoreBtn.style.display = 'none'; } } function buildTable() { if (!tableBody) return; tableBody.innerHTML = ''; grid.querySelectorAll('.vc-accessory-card').forEach(card => { if (card.style.display === 'none') return; const tr = document.createElement('tr'); const name = escapeHtml(card.dataset.accName || card.querySelector('h3')?.textContent || ''); const type = escapeHtml(card.dataset.accType || card.querySelector('.vc-acc-card-type')?.textContent || ''); const price = escapeHtml(card.dataset.accPrice || card.querySelector('.vc-acc-card-price')?.textContent || '-'); const shops = escapeHtml((card.querySelector('.vc-acc-card-shops')?.textContent || (card.dataset.accShopCount || '0') + ' Shops').replace(/\s+/g, ' ').trim()); tr.innerHTML = '' + name + '' + type + '' + price + '' + shops + ''; tableBody.appendChild(tr); }); } function applyFilters() { const query = (searchInput?.value || '').toLowerCase().trim(); let visible = 0; grid.querySelectorAll('.vc-accessory-card').forEach(card => { const cardType = card.dataset.type || ''; const cardName = (card.dataset.accName || '').toLowerCase(); const matchesType = selectedTypes.length === 0 || selectedTypes.includes(cardType); const matchesSearch = !query || cardName.includes(query); const visibleCard = matchesType && matchesSearch; card.style.display = visibleCard ? '' : 'none'; if (visibleCard) visible++; }); if (filterCount) filterCount.textContent = '(' + visible + ')'; if (noResults) noResults.style.display = visible === 0 ? 'block' : 'none'; buildTable(); } if (searchInput) { searchInput.addEventListener('input', applyFilters); } if (filterToggle && filterDropdown) { filterToggle.addEventListener('click', function() { filterDropdown.classList.toggle('open'); }); document.addEventListener('click', function(e) { if (!filterDropdown.contains(e.target) && !filterToggle.contains(e.target)) { filterDropdown.classList.remove('open'); } }); } if (allCheckbox) { allCheckbox.addEventListener('change', function() { if (!this.checked) return; selectedTypes = []; typeCheckboxes.forEach(cb => { cb.checked = false; }); const label = filterToggle?.querySelector('.vc-filter-label'); if (label) label.textContent = 'Todos los Tipos'; applyFilters(); }); } typeCheckboxes.forEach(cb => { cb.addEventListener('change', function() { selectedTypes = typeCheckboxes.filter(input => input.checked).map(input => input.value); if (allCheckbox) allCheckbox.checked = selectedTypes.length === 0; const label = filterToggle?.querySelector('.vc-filter-label'); if (label) { if (selectedTypes.length === 0) { label.textContent = 'Todos los Tipos'; } else if (selectedTypes.length === 1) { label.textContent = this.parentElement.querySelector('span')?.textContent.replace(/\s*\(\d+\)\s*$/, '') || selectedTypes[0]; } else { label.textContent = selectedTypes.length + ' Tipo'; } } applyFilters(); }); }); viewButtons.forEach(btn => { btn.addEventListener('click', function() { viewButtons.forEach(button => button.classList.remove('active')); this.classList.add('active'); if (this.dataset.view === 'table') { if (gridView) gridView.style.display = 'none'; if (tableView) tableView.style.display = 'block'; buildTable(); } else { if (gridView) gridView.style.display = 'block'; if (tableView) tableView.style.display = 'none'; } }); }); if ('IntersectionObserver' in window && sentinel && deferredData.length > 0) { const observer = new IntersectionObserver(entries => { entries.forEach(entry => { if (entry.isIntersecting) { appendDeferred(10); applyFilters(); } }); }); observer.observe(sentinel); } else if (loadMoreBtn) { loadMoreBtn.addEventListener('click', function() { appendDeferred(10); applyFilters(); }); } applyFilters(); })();
Scroll al inicio