(11) 2758-6412

Atendimento rápido

Minha conta

Entrar / Se cadastrar

    Nenhum produto na lista

Moda feminina direto do Brás para você! ✨ Varejo e atacado | Enviamos para todo o Brasil 🇧🇷 Compre pelo link abaixo 👇 Boutique do Brás Conheça Moda feminina direto do Brás para você! ✨ Varejo e atacado | Enviamos para todo o Brasil 🇧🇷 Compre pelo link abaixo 👇 Boutique do Brás Conheça travel. card slider for WordPress about Unique Destinations contact 0{{current_slide_index}} / 0{{total_slide_count}}

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

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.
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 ); });