
Entrega rápida
confira!

Pagamento
facilitado!

Suporte!
Tire suas dúvidas!

Grandes Ofertas
Só aqui!

Entrega rápida
confira!

Pagamento
facilitado!

Suporte!
Tire suas dúvidas!

Grandes Ofertas
Só aqui!
Nossos destaques
Bem-vindo a um novo jeito de consumir moda

- All
- Bermudas
- Bory
- Calças
- Conjuntos
- Macacão
- Macaquihos
- Saias
- Vestidos
- All
- Bermudas
- Bory
- Calças
- Conjuntos
- Macacão
- Macaquihos
- Saias
- Vestidos

Novidades!
As últimas tendências da moda estão aqui. Explore!

- All
- Bermudas
- Bory
- Calças
- Conjuntos
- Macacão
- Macaquihos
- Saias
- Vestidos
Moda
Masculina
Peças versáteis para o dia a dia
e ocasiões especiais.
Moda
Feminina
Estilo e versatilidade para a
mulher moderna
Outlet
Última chance! Peças únicas com descontos imperdíveis. Estoque limitado, garanta já a sua.

- All
- Bermudas
- Bory
- Calças
- Conjuntos
- Macacão
- Macaquihos
- Saias
- Vestidos

document.addEventListener('DOMContentLoaded', function () {
'use strict';
const mobileMedia = window.matchMedia('(max-width: 767px)');
const cardSelector = [
'.boutique-produtos ul.products li.product',
'.boutique-relacionados ul.products li.product',
'.boutique-woo-grid .wpr-grid-item'
].join(', ');
let observer = null;
let mutationObserver = null;
let refreshScheduled = false;
const visibleCards = new Set();
/**
* Retorna todos os cards disponíveis.
*/
function getCards() {
return Array.from(
document.querySelectorAll(cardSelector)
);
}
/**
* Remove o efeito ativo.
*/
function removeActiveCards() {
getCards().forEach(function (card) {
card.classList.remove('is-inview');
});
}
/**
* Localiza o card mais próximo do centro da tela.
*/
function activateCentralCard() {
if (!mobileMedia.matches) {
removeActiveCards();
return;
}
const viewportCenter = window.innerHeight / 2;
const candidates = Array.from(visibleCards)
.filter(function (card) {
return card.isConnected;
})
.map(function (card) {
const rect = card.getBoundingClientRect();
const cardCenter = rect.top + (rect.height / 2);
return {
card: card,
distance: Math.abs(
cardCenter - viewportCenter
)
};
})
.sort(function (first, second) {
return first.distance - second.distance;
});
removeActiveCards();
if (candidates.length > 0) {
candidates[0].card.classList.add('is-inview');
}
}
/**
* Agenda atualização no próximo frame.
*/
function scheduleActivation() {
if (refreshScheduled) {
return;
}
refreshScheduled = true;
window.requestAnimationFrame(function () {
activateCentralCard();
refreshScheduled = false;
});
}
/**
* Cria o IntersectionObserver.
*/
function createObserver() {
if (observer) {
return;
}
observer = new IntersectionObserver(
function (entries) {
entries.forEach(function (entry) {
if (
entry.isIntersecting &&
entry.intersectionRatio >= 0.25
) {
visibleCards.add(entry.target);
} else {
visibleCards.delete(entry.target);
entry.target.classList.remove(
'is-inview'
);
}
});
scheduleActivation();
},
{
root: null,
rootMargin: '-5% 0px -10% 0px',
threshold: [
0,
0.25,
0.45,
0.65,
0.85
]
}
);
}
/**
* Registra cards novos.
*/
function observeCards() {
if (!mobileMedia.matches) {
if (observer) {
observer.disconnect();
observer = null;
}
visibleCards.clear();
removeActiveCards();
getCards().forEach(function (card) {
card.removeAttribute(
'data-boutique-observed'
);
});
return;
}
createObserver();
getCards().forEach(function (card) {
if (
card.hasAttribute(
'data-boutique-observed'
)
) {
return;
}
card.setAttribute(
'data-boutique-observed',
'true'
);
observer.observe(card);
});
scheduleActivation();
}
/**
* Agenda uma atualização geral.
*/
function scheduleRefresh() {
window.requestAnimationFrame(function () {
observeCards();
scheduleActivation();
});
}
/**
* Inicialização.
*/
observeCards();
/**
* Atualiza durante a rolagem.
*/
window.addEventListener(
'scroll',
scheduleActivation,
{
passive: true
}
);
window.addEventListener(
'resize',
scheduleRefresh,
{
passive: true
}
);
window.addEventListener(
'orientationchange',
scheduleRefresh
);
/**
* Compatibilidade com navegadores antigos.
*/
if (
typeof mobileMedia.addEventListener ===
'function'
) {
mobileMedia.addEventListener(
'change',
scheduleRefresh
);
} else {
mobileMedia.addListener(scheduleRefresh);
}
/**
* Detecta produtos carregados por AJAX,
* filtros, slider ou paginação.
*/
mutationObserver = new MutationObserver(
function (mutations) {
const hasAddedNodes = mutations.some(
function (mutation) {
return mutation.addedNodes.length > 0;
}
);
if (hasAddedNodes) {
scheduleRefresh();
}
}
);
mutationObserver.observe(document.body, {
childList: true,
subtree: true
});
/**
* Eventos WooCommerce e FiboFilters.
*/
document.addEventListener(
'fibofilters-products-updated',
scheduleRefresh
);
document.addEventListener(
'wc_fragments_refreshed',
scheduleRefresh
);
/**
* Eventos jQuery, WooCommerce e Slick.
*/
if (window.jQuery) {
jQuery(document.body).on(
[
'updated_wc_div',
'updated_cart_totals',
'wc_fragments_refreshed',
'found_variation',
'reset_data',
'added_to_cart'
].join(' '),
scheduleRefresh
);
jQuery(document).on(
'afterChange setPosition init',
'.boutique-woo-grid .wpr-grid-slider, ' +
'.boutique-woo-grid .slick-slider',
scheduleRefresh
);
}
/**
* Elementor frontend.
*/
window.addEventListener(
'elementor/frontend/init',
scheduleRefresh
);
});













