import SectionAccordion from "./SectionAccordion.jsx"; import { money } from "../../../lib/money.js"; import { hasTvTermPricing, getAddonUnitPrice } from "../../../lib/offer-pricing.js"; export default function TvAddonsSection({ open, onToggle, cenaOpis, pkg, tvAddonsVisible = [], selectedQty, setSelectedQty, tvTerm, setTvTerm, tvAddonsPrice, tvAddonsTitle = "Pakiety premium", }) { const toggleCheckboxAddon = (addon) => { setSelectedQty((prev) => { const next = { ...prev }; const isOn = (next[addon.id] || 0) > 0; const willTurnOn = !isOn; // ✅ jeśli grupa "single" i włączamy -> wyłącz inne z tej grupy if (willTurnOn && addon.group && addon.group_mode === "single") { for (const a of tvAddonsVisible) { if (a.id !== addon.id && a.group === addon.group) { next[a.id] = 0; } } } // toggle bieżącego next[addon.id] = willTurnOn ? 1 : 0; return next; }); }; const setQtyAddon = (id, qty, min, max) => { const safe = Math.max(min, Math.min(max, qty)); setSelectedQty((prev) => ({ ...prev, [id]: safe })); }; const renderRow = (a) => { const qty = Number(selectedQty[a.id] || 0); const isQty = a.typ === "quantity" || a.ilosc === true; const termPricing = hasTvTermPricing(a, pkg); const term = tvTerm[a.id] || "12m"; const unit = getAddonUnitPrice(a, pkg, termPricing ? term : null); if (!isQty) { return ( ); } const min = Number.isFinite(a.min) ? a.min : 0; const max = Number.isFinite(a.max) ? a.max : 10; const step = Number.isFinite(a.krok) ? a.krok : 1; const lineTotal = qty * unit; return (
Brak pakietów dodatkowych TV.
) : (