From 5cbe9814309da9b6c197228b2509ab32401a81be Mon Sep 17 00:00:00 2001 From: Jandl-hostacny Date: Wed, 21 Oct 2026 16:36:01 +0200 Subject: [PATCH] feat: import ZIP s podkladmi aj do sekcie Vernostne zlavy (bez zmeny farby pozadia) S kartou = Cena s vernostnou kartou (inak akciova cena), bez karty = akciova (inak bezna) cena; jednotkova cena bez karty sa prepocita. Co-Authored-By: Claude Opus 5.5 --- src/app/page.tsx | 8 +++- src/components/editor/ConfigPanel.tsx | 8 ++++ src/components/editor/ProductImportModal.tsx | 35 +++++++++++++----- src/lib/podkladyZip.ts | 39 +++++++++++++++++++- 4 files changed, 77 insertions(+), 13 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 82c2876..afadc20 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -358,7 +358,7 @@ export default function Home() { const handleImportProducts = (imported: ProductItem[], options?: { replace?: boolean }) => { if (!selectedModuleId) return; const target = campaign.modules.find((m) => m.id === selectedModuleId); - if (!target || target.type !== 'products_grid') { + if (!target || (target.type !== 'products_grid' && target.type !== 'loyalty_club')) { alert('Pre import prosím najskôr označte produktovú sekciu.'); return; } @@ -372,7 +372,10 @@ export default function Home() { const withLayout = imported.map((p) => { if (!first) return p; const inherited: Partial = {}; - for (const k of layoutKeys) if (p[k] === undefined && first[k] !== undefined) Object.assign(inherited, { [k]: first[k] }); + for (const k of layoutKeys) { + if (k === 'cardBgColor' && target.type === 'loyalty_club') continue; // vernostné zľavy: farba pozadia ostáva + if (p[k] === undefined && first[k] !== undefined) Object.assign(inherited, { [k]: first[k] }); + } return { ...inherited, ...p }; }); @@ -1015,6 +1018,7 @@ export default function Home() { onClose={() => setIsImportOpen(false)} onImportProducts={handleImportProducts} availableBadges={availableBadges} + variant={campaign.modules.find((m) => m.id === selectedModuleId)?.type === 'loyalty_club' ? 'loyalty' : 'standard'} /> {/* Modál Editora cenoviek (SVG -> PNG) */} diff --git a/src/components/editor/ConfigPanel.tsx b/src/components/editor/ConfigPanel.tsx index f6b0bcf..76fa460 100644 --- a/src/components/editor/ConfigPanel.tsx +++ b/src/components/editor/ConfigPanel.tsx @@ -876,6 +876,14 @@ export const ConfigPanel: React.FC = ({ Vernostné produkty ({module.data.products?.length || 0}) + {onOpenImport && ( + + )}