(function () { /* ===================================================== LIGHTING & CO. PÁGINA DE PRODUTO - coração nos relacionados mobile - 4 miniaturas visíveis no desktop - navegação vertical ===================================================== */ /* ===================================================== CORAÇÃO DOS PRODUTOS RELACIONADOS ===================================================== */ function prepararCoracoesRelacionados() { const cards = document.querySelectorAll( 'body.pagina-produto ' + '#corpo ' + '.listagem.aproveite-tambem ' + '.listagem-item' ); if (!cards.length) { return false; } cards.forEach(function (card) { const preco = card.querySelector( '.preco-produto' ); if (!preco) { return; } /* * Não duplica. */ if ( preco.querySelector( '.relacionados-coracao' ) ) { return; } /* * Procura algum controle de favoritos * nativo que já exista no card. */ const favoritoNativo = card.querySelector( 'a[href*="favorito"], ' + '.adicionar-favorito, ' + '.botao-favorito, ' + '[class*="favorito"]' ); let coracao; /* * Se o tema já possui um link real de favorito, * preservamos o href. */ if ( favoritoNativo && favoritoNativo.tagName === 'A' && favoritoNativo.href ) { coracao = document.createElement( 'a' ); coracao.href = favoritoNativo.href; } else { coracao = document.createElement( 'button' ); coracao.type = 'button'; /* * Se existir botão nativo, * repassa o clique para ele. */ if (favoritoNativo) { coracao.addEventListener( 'click', function (event) { event.preventDefault(); event.stopPropagation(); favoritoNativo.click(); } ); } } coracao.className = 'vitrine-coracao relacionados-coracao'; coracao.setAttribute( 'aria-label', 'Adicionar aos favoritos' ); coracao.setAttribute( 'title', 'Adicionar aos favoritos' ); preco.appendChild( coracao ); }); return true; } /* ===================================================== GALERIA VERTICAL DESKTOP FIGMA 166:2968 ===================================================== */ function prepararGaleriaVertical() { const thumbs = document.querySelector( 'body.pagina-produto ' + '#corpo ' + '.produto ' + '.produto-thumbs' ); if (!thumbs) { return false; } const carousel = thumbs.querySelector( '#carouselImagem' ) || thumbs; const viewport = thumbs.querySelector( '.flex-viewport' ); const track = thumbs.querySelector( 'ul.miniaturas.slides' ); if ( !viewport || !track ) { return false; } /* * Não instala duas vezes. */ if ( track.dataset .galeriaVerticalPronta === '1' ) { return true; } track.dataset .galeriaVerticalPronta = '1'; let indice = 0; /* ================================================= BOTÃO SUPERIOR ================================================= */ const anterior = document.createElement( 'button' ); anterior.type = 'button'; anterior.className = 'produto-thumbs-prev'; anterior.setAttribute( 'aria-label', 'Miniatura anterior' ); anterior.innerHTML = ''; /* ================================================= BOTÃO INFERIOR ================================================= */ const proximo = document.createElement( 'button' ); proximo.type = 'button'; proximo.className = 'produto-thumbs-next'; proximo.setAttribute( 'aria-label', 'Próxima miniatura' ); proximo.innerHTML = ''; carousel.appendChild( anterior ); carousel.appendChild( proximo ); /* ================================================= PEGA MINIATURAS REAIS ignora clones caso FlexSlider crie algum ================================================= */ function obterItens() { return Array .from(track.children) .filter(function (item) { return ( item.tagName === 'LI' && !item.classList.contains( 'clone' ) ); }); } /* ================================================= GAP REAL ENTRE AS MINIATURAS ================================================= */ function obterGap() { const estilo = window.getComputedStyle( track ); const valor = parseFloat( estilo.rowGap || estilo.gap ); return Number.isFinite(valor) ? valor : 12; } /* ================================================= CALCULA ALTURA DE EXATAMENTE 4 SEM ALTERAR A DIMENSÃO DAS IMAGENS ================================================= */ function calcularAlturaVisivel( itens, gap ) { const quantidade = Math.min( 4, itens.length ); let altura = 0; for ( let i = 0; i < quantidade; i++ ) { altura += itens[i] .getBoundingClientRect() .height; if ( i < quantidade - 1 ) { altura += gap; } } return altura; } /* ================================================= CALCULA DESLOCAMENTO ================================================= */ function calcularOffset( itens, gap ) { let offset = 0; for ( let i = 0; i < indice; i++ ) { offset += itens[i] .getBoundingClientRect() .height; offset += gap; } return offset; } /* ================================================= ATUALIZA ================================================= */ function atualizar() { const itens = obterItens(); if (!itens.length) { return; } /* * MOBILE: * volta ao comportamento horizontal. */ if ( window.innerWidth <= 1024 ) { indice = 0; thumbs.style .removeProperty( '--produto-thumbs-altura' ); thumbs.style .removeProperty( '--produto-thumbs-offset' ); anterior.hidden = true; proximo.hidden = true; return; } const gap = obterGap(); const altura = calcularAlturaVisivel( itens, gap ); thumbs.style.setProperty( '--produto-thumbs-altura', altura + 'px' ); const maximo = Math.max( 0, itens.length - 4 ); /* * Garante índice válido. */ indice = Math.max( 0, Math.min( indice, maximo ) ); const offset = calcularOffset( itens, gap ); thumbs.style.setProperty( '--produto-thumbs-offset', (-offset) + 'px' ); /* * Só mostra setas se existirem * mais de quatro imagens. */ const precisaCarousel = itens.length > 4; anterior.hidden = !precisaCarousel; proximo.hidden = !precisaCarousel; anterior.disabled = indice === 0; proximo.disabled = indice >= maximo; } /* ================================================= CLIQUE CIMA ================================================= */ anterior.addEventListener( 'click', function (event) { event.preventDefault(); event.stopPropagation(); if ( indice <= 0 ) { return; } indice--; atualizar(); } ); /* ================================================= CLIQUE BAIXO ================================================= */ proximo.addEventListener( 'click', function (event) { event.preventDefault(); event.stopPropagation(); const itens = obterItens(); const maximo = Math.max( 0, itens.length - 4 ); if ( indice >= maximo ) { return; } indice++; atualizar(); } ); /* ================================================= RESIZE ================================================= */ window.addEventListener( 'resize', atualizar ); /* * Espera imagens/medidas terminarem. */ requestAnimationFrame( function () { setTimeout( atualizar, 100 ); } ); return true; } /* ===================================================== INICIALIZAÇÃO Loja Integrada pode montar componentes depois ===================================================== */ function iniciar() { prepararCoracoesRelacionados(); prepararGaleriaVertical(); } if ( document.readyState === 'loading' ) { document.addEventListener( 'DOMContentLoaded', iniciar ); } else { iniciar(); } /* * Tenta novamente porque FlexSlider e vitrines * podem ser inicializados depois do DOMContentLoaded. */ let tentativas = 0; const intervalo = setInterval( function () { tentativas++; prepararCoracoesRelacionados(); const galeriaPronta = prepararGaleriaVertical(); if ( galeriaPronta || tentativas >= 40 ) { clearInterval( intervalo ); } }, 250 ); })();
O Pendente Thomas Quadro G Metal Domado 5916 é uma peça marcante que une design geométrico, elegância e personalidade em uma estrutura contemporânea. Seu formato quadrado de grandes proporções transforma a iluminação em um elemento decorativo de destaque, valorizando ambientes modernos e sofisticados.
Fabricado em alumínio de alta qualidade, oferece excelente resistência, durabilidade e acabamento refinado. Compatível com uma lâmpada filamento de base E27, proporciona iluminação aconchegante e decorativa, criando uma atmosfera acolhedora e elegante.
Seu tamanho ampliado garante forte presença visual, sendo ideal para aplicações individuais como ponto focal ou em composições decorativas para projetos arquitetônicos exclusivos.
Ideal para salas de jantar, áreas gourmet, halls de entrada, recepções, restaurantes, cafeterias, bares, lojas, escritórios e ambientes internos que buscam iluminação decorativa com forte presença visual e design contemporâneo.
A Lighting & Co. é especialista em luminárias de luxo, lustres e peças exclusivas que combinam design, sofisticação e funcionalidade. Ilumine seus ambientes com estilo e valor agregado.