Natal 2026# O presente que já lá estava. Só faltava ser feito.

Transforme suas fotos em álbuns, decoração e presentes personalizados.

 [Encontre seu presente](#produtos)

Ofertas de Natal

## O Natal fica ainda melhor em dobro.

 ``

[](#)

Até ao final desse ano

## Os melhores presentes levam seu tempo.

O prazo para fazer pedidos com entrega prevista antes do final do ano é o mesmo para todos os produtos: 11/12/2026.

Seleção de Natal

## Há um presente para cada história.

Como funciona

## Das suas fotos até a árvore de Natal.

1. 01### Escolha e personalize

    Selecione seu produto favorito, adicione suas fotos e crie uma peça única.
2. 02### Crie mais um

    Personalize um segundo produto do mesmo formato. As fotos e o design podem ser completamente diferentes.
3. 03### Leve 2, pague 1

    Adicione os dois produtos ao carrinho e use o código PRESENTE2POR1. O desconto é aplicado na mesma compra e você recebe os dois produtos juntos.

Nota: caso os álbuns tenham serviços extras, o desconto será aplicado apenas ao valor do álbum.

## Não sabe o que dar de presente? Comece pelas fotos.

[![](https://www.dreambooks.com.br/images/campanhas/2026/novembro/natal_br/albuns.jpg)### Um álbum para folhear

Reúna suas fotos favoritas em um álbum personalizado, do seu jeito.

Criar meu álbum](https://www.dreambooks.com.br/albuns-de-fotos)[![](https://www.dreambooks.com.br/images/campanhas/2026/novembro/natal_br/decoracao.jpg)### Fotos que fazem parte da decoração

Transforme suas fotos em quadros, telas e peças para decorar a casa.

Descobrir decoração](https://www.dreambooks.com.br/decoracao)[![](https://www.dreambooks.com.br/images/campanhas/2026/novembro/natal_br/voucher.jpg)### Para criar no seu tempo

Garanta um vale pré-pago agora e escolha as fotos depois.

Descobrir vales pré-pagos](https://www.dreambooks.com.br/albuns-de-fotos)

## Condições das campanhas

### 2 de novembro a 16 de dezembro de 2026 — 2 por 1

Leve 2 produtos pelo preço de 1 com o código PRESENTE2POR1. A promoção é válida para todos os produtos Dreambooks, desde que sejam do mesmo formato, podendo ter fotos e personalizações diferentes. Os dois produtos devem ser criados e adicionados ao carrinho na mesma compra, com aplicação do código no momento do pagamento. Campanha válida de 2 de novembro a 16 de dezembro de 2026. Pedidos realizados até 11 de dezembro serão enviados ainda em 2026. Promoção não cumulativa com outras ofertas ou cupons de desconto. A categoria de Revelação de fotos está excluída dessa promoção.

### 17 a 31 de dezembro de 2026 — 50% OFF em vales pré-pagos

Desconto de 50% em vales pré-pagos participantes. Consulte as regras de utilização e o prazo de validade de cada vale antes da compra. Código promocional: FIMDEANO50.

### Prazo para receber antes do Natal

Faça seu pedido até 11 de dezembro de 2026 para entrega prevista antes do Natal. A entrega está sujeita à confirmação do pedido e às condições logísticas aplicáveis ao endereço informado.

`); const i = proximoPrazo(); if (i &gt; -1) slides.push(`Encomenda até ${prazoTexto(i)} para receber no Natal [Ver prazos](#prazos)

`); const track = $('promo-track'); track.innerHTML = slides.join(''); track.classList.toggle('rotating', slides.length &gt; 1); } function renderHeroDeadline(){ const i = proximoPrazo(); const el = $('hero-deadline'); el.hidden = i -1) $('hero-deadline-txt').innerHTML = `Próximo prazo de encomenda para o Natal: **${prazoTexto(i)}**. [Ver prazos](#prazos)`; } function renderSwitcher(){ const sw = $('offer-switch'); sw.innerHTML = ''; sw.hidden = cfg.ofertas.length { const b = document.createElement('button'); b.type = 'button'; b.setAttribute('role','tab'); b.id = 'tab-' + k; b.setAttribute('aria-controls','offer-panel'); b.textContent = OFERTAS[k].tab; b.addEventListener('click', () =&gt; setOferta(k)); b.addEventListener('keydown', e =&gt; { if (e.key !== 'ArrowRight' &amp;&amp; e.key !== 'ArrowLeft') return; const n = cfg.ofertas.length, j = (idx + (e.key === 'ArrowRight' ? 1 : n - 1)) % n; setOferta(cfg.ofertas[j]); $('tab-' + cfg.ofertas[j]).focus(); }); sw.appendChild(b); }); } function setOferta(k){ ofertaAtiva = k; const o = OFERTAS[k]; $('o-title').textContent = o.titulo; $('o-text').textContent = o.texto; $('o-code').textContent = o.code; $('o-cond').textContent = o.cond; const hp = $('hero-promo'); if (hp) hp.textContent = o.hero || ''; document.querySelectorAll('[data-copy]').forEach(b =&gt; b.setAttribute('aria-label','Copiar código ' + o.code)); const cta = $('o-cta'); cta.hidden = !o.cta; if (o.cta){ const a = cta.querySelector('a'); a.textContent = o.cta.t; a.href = flat(o.cta.href); } document.querySelectorAll('#offer-switch [role=tab]').forEach(b =&gt; { const on = b.id === 'tab-' + k; b.setAttribute('aria-selected', on); b.tabIndex = on ? 0 : -1; }); if (cfg.ofertas.length &gt; 1) $('offer-panel').setAttribute('aria-labelledby','tab-' + k); else $('offer-panel').removeAttribute('aria-labelledby'); renderSticky(); renderGrid(); } function renderTickets(){ const sec = $('prazos'); if (!sec) return; const prox = proximoPrazo(); sec.hidden = prox ${prazoTexto(prox)}.`; $('tickets').innerHTML = PRAZOS.map((p,i) => { const fechado = diasEntre(HOJE, p.data) ${dDia(p.data)}${MES\_CURTO\[dMes(p.data)\]}${diaSemana(p.data)}

 ${status}Encomenda até ${prazoTexto(i)}: ${p.o}

 <a :="" aria-hidden="true" class="btn-ghost" data-u="${flat(p.cta.href)}" tabindex="-1">${p.cta.t}</a>

 `; }).join(''); } function renderTabs(){ const t = $('tabs'); t.innerHTML = ''; CATS.forEach((c,idx) =&gt; { const b = document.createElement('button'); b.type = 'button'; b.className = 'tab'; b.id = 'cat-' + c.id; b.setAttribute('role','tab'); b.setAttribute('aria-controls','grid'); b.setAttribute('aria-selected', c.id === catAtiva); b.tabIndex = c.id === catAtiva ? 0 : -1; b.textContent = c.label; b.addEventListener('click', () =&gt; { catAtiva = c.id; renderTabs(); renderGrid(); }); b.addEventListener('keydown', e =&gt; { if (e.key !== 'ArrowRight' &amp;&amp; e.key !== 'ArrowLeft') return; const n = CATS.length, j = (idx + (e.key === 'ArrowRight' ? 1 : n - 1)) % n; catAtiva = CATS[j].id; renderTabs(); renderGrid(); $('cat-' + catAtiva).focus(); }); t.appendChild(b); }); $('grid').setAttribute('aria-labelledby','cat-' + catAtiva); } function renderGrid(){ const o = OFERTAS[ofertaAtiva]; const meta = $('grid-meta'); meta.textContent = o.mode === 'x2' ? 'Preços com o código ' + o.code + ': leve 2 produtos do mesmo formato e pague 1.' : ''; meta.hidden = !meta.textContent; $('grid').innerHTML = PRODUTOS[catAtiva].map((p,i) =&gt; { let badge = '', preco; if (o.mode === 'x2'){ badge = '2 por 1'; preco = '2 unidades' + fmt(p.p\*2) + '' + fmt(p.p) + ''; } else { preco = '' + fmt(p.p) + ''; } return `${p.i ? `![]()` : ''}${badge}

### ${p.n}

${preco}

 <a class="btn-nav" data-u="${flat(p.u || CATURL[catAtiva])}">Ver produto</a>

 `; }).join(''); } function renderSticky(){ const o = OFERTAS[ofertaAtiva]; const i = proximoPrazo(); $('sticky-info').innerHTML = o.sticky + (i &gt; -1 ? `Próximo prazo de Natal: ${prazoTexto(i)}` : ''); } function renderCondicoes(){ const sec = document.querySelector('.nt-lp .condicoes'); let algum = false; document.querySelectorAll('.cond-item').forEach(el => { const de = el.dataset.from, ate = el.dataset.to; const on = (!de || diasEntre(de, HOJE) >= 0) && (!ate || diasEntre(HOJE, ate) >= 0); el.classList.toggle('current', on); el.hidden = !on; if (on) algum = true; }); if (sec) sec.style.display = algum ? '' : 'none'; } function aplicarData(){ cfg = pickCfg(); renderHeroDeadline(); renderSwitcher(); renderTickets(); renderTabs(); renderCondicoes(); const co = document.querySelector('.nt-lp .como'); if (co) co.hidden = !cfg.cond.includes('c1'); setOferta(cfg.ofertas[0]); document.querySelectorAll('.proto [data-sim]').forEach(b => b.setAttribute('aria-pressed', b.dataset.sim === HOJE)); } /* ========================================================== 5. INTERAÇÕES ========================================================== */ document.addEventListener('click', async e => { const b = e.target.closest('[data-copy]'); if (!b) return; const code = OFERTAS[ofertaAtiva].code; try { await navigator.clipboard.writeText(code); } catch(err) { const t = document.createElement('textarea'); t.value = code; document.body.appendChild(t); t.select(); try { document.execCommand('copy'); } catch(_){} t.remove(); } document.querySelectorAll('[data-copy]').forEach(x => { x.textContent = 'Código copiado'; x.classList.add('copied'); }); clearTimeout(window.__cp); window.__cp = setTimeout(() => document.querySelectorAll('[data-copy]').forEach(x => { x.textContent = 'Copiar código'; x.classList.remove('copied'); }), 2200); }); /* Sticky: visível depois do hero, escondido enquanto o switcher está no ecrã */ const sticky = $('sticky'), hero = document.querySelector('.nt-lp .hero'), promos = $('promocoes'); function onScroll(){ const past = hero.getBoundingClientRect().bottom 0; const on = past && !inPromos; sticky.classList.toggle('show', on); sticky.setAttribute('aria-hidden', !on); sticky.querySelector('button').tabIndex = on ? 0 : -1; } addEventListener('scroll', onScroll, { passive:true }); /* Simulador de datas (protótipo/QA) */ const SIMS = [ ['2026-11-15','2 nov – 11 dez'], ['2026-12-12','12 – 16 dez'], ['2026-12-17','17 – 31 dez'] ]; const proto = $('proto') || document.createElement('div'); /* só existe para Super Users */ SIMS.forEach(([d,l]) => { const b = document.createElement('button'); b.type = 'button'; b.dataset.sim = d; b.textContent = l; b.addEventListener('click', () => { HOJE = d; aplicarData(); proto.classList.add('collapsed'); }); proto.appendChild(b); }); if ($('proto-toggle')) $('proto-toggle').addEventListener('click', () => proto.classList.toggle('collapsed')); aplicarData(); })();
