export default function BMFCheckoutPreview() { const products = [ { id: 1, name: "Pink Bloom", size: "Standard", qty: 1, price: 189, image: "https://images.unsplash.com/photo-1525310072745-f49212b5ac6d?q=80&w=1200&auto=format&fit=crop", }, { id: 2, name: "Raffaello", size: "Dodatek", qty: 1, price: 39, image: "https://images.unsplash.com/photo-1519864600265-abb23847ef2c?q=80&w=1200&auto=format&fit=crop", }, ]; const subtotal = 228; const delivery = 35; const extra = 50; const total = subtotal + delivery + extra; const deliveryMethods = [ { id: "pickup", label: "Odbiór osobisty w sklepie", description: "Odbiór zamówienia w godzinach otwarcia sklepu", price: "0,00 zł", }, { id: "courier", label: "Dostawa we Wrocławiu", description: "Kurier Be My Flower", price: "35,00 zł", active: true, }, { id: "outside", label: "Dostawa poza Wrocławiem — Strefa 1", description: "Bielany Wrocławskie, Długołęka, Wysoka...", price: "85,00 zł", }, ]; const slots = [ "07:00–11:00", "11:00–14:00", "14:00–17:00", "17:00–19:00", "19:00–23:00", "11:00–19:00 CAŁY DZIEŃ", ]; return (
{/* LEFT */}
B
Be My Flower
Powrót do sklepu

Twoje zamówienie

{products.map((product) => (
{product.name}
{product.size}
{product.qty}
{(product.price * product.qty).toFixed(2)} zł
))}
Kody rabatowe
DZIEŃ MAMY -10%

Zastosuj kod i odbierz zniżkę na bukiety oraz flower boxy.

📸
Dodaj zdjęcie do zamówienia
Zdjęcie zostanie wydrukowane jako Instax.
Przeciągnij plik lub wybierz z komputera
Subtotal {subtotal.toFixed(2)} zł
Dostawa + EXTRA {(delivery + extra).toFixed(2)} zł
Data 08-03-2026
Godzina 19:00–22:00
Total {total.toFixed(2)} zł
{/* RIGHT */}

Sposób realizacji zamówienia

Wybierz sposób dostawy lub odbioru.

{deliveryMethods.map((method) => (
Must-have do bukietu
Dodatki z sercem
Dodaj kartkę

Przesuń w bok, aby zobaczyć więcej

Ostateczna kwota pojawi się w kolejnych krokach

`; document.body.appendChild(drawer); (function initCardNoteAccordion(){ const acc = drawer.querySelector("#bmf-cardnote-acc"); const btn = drawer.querySelector(".bmf-acc-btn"); const panel = drawer.querySelector("#bmf-cardnote-panel"); const ta = drawer.querySelector("#card-note"); const count = drawer.querySelector("#bmf-note-count"); const bodyScrollEl = drawer.querySelector(".bmf-body"); if (acc && btn && panel) { const setOpen = (open) => { acc.classList.toggle("is-open", open); btn.setAttribute("aria-expanded", open ? "true" : "false"); if (open) { panel.style.maxHeight = panel.scrollHeight + "px"; setTimeout(() => { ta && ta.focus({ preventScroll: true }); }, 120); } else { panel.style.maxHeight = "0px"; } }; btn.addEventListener("click", () => { const isOpen = acc.classList.contains("is-open"); setOpen(!isOpen); }); const syncCount = () => { if (!ta || !count) return; const len = (ta.value || "").length; count.textContent = `${len}/200`; }; if (ta) { ta.addEventListener("focus", () => { try { ta.focus({ preventScroll: true }); } catch(e){} }); ta.addEventListener("touchstart", () => { if (!bodyScrollEl) return; const y = bodyScrollEl.scrollTop; setTimeout(() => { bodyScrollEl.scrollTop = y; }, 0); }, { passive: true }); ta.addEventListener("input", () => { if (ta.value.length > 200) ta.value = ta.value.slice(0, 200); syncCount(); if (acc.classList.contains("is-open")) { panel.style.maxHeight = panel.scrollHeight + "px"; } }); syncCount(); } window.addEventListener("resize", () => { if (acc.classList.contains("is-open")) { panel.style.maxHeight = panel.scrollHeight + "px"; } }); } })(); const close = () => closeDrawer(); drawer.querySelector("#bmf-close").addEventListener("click", close); overlay.addEventListener("click", close); drawer.querySelector("#bmf-shop-btn").addEventListener("click", () => { closeDrawer(); window.location.href = SHOP_URL; }); drawer.querySelector("#bmf-go-to-cart").addEventListener("click", (e) => { const btn = e.currentTarget; if (btn.disabled || btn.classList.contains("is-disabled")) { e.preventDefault(); e.stopPropagation(); return; } closeDrawer(); window.location.href = "/koszyk"; }); } bindCardNotePersistence(drawer); return { overlay, drawer }; } function openDrawer() { const { overlay, drawer } = ensureDrawerDOM(); overlay.classList.add("is-open"); drawer.classList.add("is-open"); lockScroll(); try { const ta = drawer && drawer.querySelector ? drawer.querySelector("#card-note") : null; if (ta) { const saved = getSavedCardNote(); if ((saved || "") !== (ta.value || "")) ta.value = (saved || "").slice(0, 200); } } catch(e){} refreshDrawerUI(); } function closeDrawer() { const overlay = document.getElementById("bmf-cart-overlay"); const drawer = document.getElementById("bmf-cart-drawer"); if (overlay) overlay.classList.remove("is-open"); if (drawer) drawer.classList.remove("is-open"); unlockScroll(); } document.addEventListener("click", function(e){ const trg = e.target && e.target.closest ? e.target.closest(".cart-link, .navbar_cart-link") : null; if (!trg) return; if (trg.closest("#bmf-cart-drawer")) return; e.preventDefault(); e.stopPropagation(); openDrawer(); }, true); function refreshDrawerUI(){ const cart = getCart(); const isEmpty = !cart.length; updateNavbarBadge(); const emptyEl = document.getElementById("bmf-empty"); const contentEl = document.getElementById("bmf-content"); const footnote = document.getElementById("bmf-footnote"); if (emptyEl) emptyEl.style.display = isEmpty ? "flex" : "none"; if (contentEl) contentEl.style.display = isEmpty ? "none" : "block"; if (footnote) footnote.style.display = isEmpty ? "none" : "block"; updateCTAButtonTotal(); if (isEmpty) return; renderCartItems(); updateFreeDeliveryUI(); renderDiscountSection("bmf-essentials-list", essentials); renderDiscountSection("bmf-addons-list", addons); renderCards(); } function renderCartItems(){ const wrap = document.getElementById("bmf-cart-items"); if (!wrap) return; const cart = getCart(); wrap.innerHTML = ""; cart.forEach(item => { const el = document.createElement("div"); el.className = "bmf-item"; const sizeTxt = (item.size && String(item.size).trim()) ? String(item.size).trim() : "Standard"; const qty = Math.max(1, Number(item.quantity) || 1); const unit = Number(item.price) || 0; const hasSlug = !!(item.slug && String(item.slug).trim()); const linkAttrs = hasSlug ? `data-slug="${String(item.slug).trim()}"` : ""; el.innerHTML = ` ${ hasSlug ? `${item.name || ` : `${item.name || ` }
${ hasSlug ? `` : `

${item.name || "Produkt"}

` }

${sizeTxt}

${qty}

${fmtPLN(unit)}

`; el.querySelectorAll(".bmf-link").forEach(node => { node.addEventListener("click", (ev) => { const slug = ev.currentTarget.getAttribute("data-slug"); if (slug) goToProduct(slug); }); }); el.querySelector(".bmf-remove").addEventListener("click", () => { const next = getCart().filter(i => i.key !== item.key); setCart(next); }); el.querySelector(".bmf-qty-minus").addEventListener("click", () => { updateQtyByKey(item.key, -1); }); el.querySelector(".bmf-qty-plus").addEventListener("click", () => { updateQtyByKey(item.key, +1); }); wrap.appendChild(el); }); } function updateCTAButtonTotal(){ const btn = document.getElementById("bmf-go-to-cart"); if (!btn) return; const cart = getCart(); const total = getCartProductsTotal(); btn.textContent = `Składanie zamówienia | ${fmtPLN(total)}`; if (!cart.length) { btn.disabled = true; btn.classList.add("is-disabled"); } else { btn.disabled = false; btn.classList.remove("is-disabled"); } } function updateFreeDeliveryUI() { const total = getCartProductsTotal(); const label = document.getElementById("bmf-progress-label"); const fill = document.getElementById("bmf-progress-fill"); if (!label || !fill) return; const pct = Math.max(0, Math.min(100, (total / FREE_DELIVERY_THRESHOLD) * 100)); fill.style.width = pct.toFixed(2) + "%"; if (total >= FREE_DELIVERY_THRESHOLD) { label.textContent = "Masz darmową dostawę na terenie Wrocławia 🎉"; } else { const remainingRounded = Math.ceil(Math.max(0, FREE_DELIVERY_THRESHOLD - total)); label.innerHTML = `Brakuje ${remainingRounded} zł do darmowej dostawy`; } } function renderDiscountSection(containerId, items){ const list = document.getElementById(containerId); if (!list) return; list.innerHTML = ""; const cart = getCart(); items.forEach(prod => { const inCart = cart.some(i => i.key === prod.key); const now = Number(prod.price) || 0; const old = calcOldPrice(now); const div = document.createElement("div"); div.className = "bmf-card"; div.innerHTML = ` ${prod.name}

${prod.name}

${fmtPLN(now)} ${DISCOUNT_PCT}% ${fmtPLN(old)}
`; const btn = div.querySelector(".bmf-plus-btn"); if (!inCart){ btn.addEventListener("click", () => { addOrIncProduct({ ...prod, size:"Standard" }); }); } list.appendChild(div); }); } function renderCards(){ const list = document.getElementById("bmf-card-list"); if (!list) return; list.innerHTML = ""; const cart = getCart(); cards.forEach(card => { const inCart = cart.some(i => i.key === card.key); const div = document.createElement("div"); div.className = "bmf-card"; div.innerHTML = ` ${card.name}

${card.name}

${fmtPLN(Number(card.price) || 0)}

`; const btn = div.querySelector(".bmf-plus-btn"); if (!inCart){ btn.addEventListener("click", () => { addOrIncProduct({ key: card.key, name: card.name, size: "Standard", price: card.price, productId: card.productId, slug: card.slug, img: card.img }); }); } list.appendChild(div); }); } document.addEventListener("cart:updated", () => { refreshDrawerUI(); }); updateNavbarBadge(); window.BMF_CART = { getCart, setCart, openDrawer, closeDrawer, refreshDrawerUI, updateNavbarBadge }; }); })();