diff --git a/src/app/page.tsx b/src/app/page.tsx index 7f63417..d87d7ab 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -562,7 +562,7 @@ export default function Home() { }; // Hromadná aplikácia cenovky na všetky produkty v celej kampani (všetky sekcie + vernostné zľavy) - const handleApplyBadgeToAll = (badge: BadgeTemplate) => { + const handleApplyBadgeToAll = (badge: BadgeTemplate, badgeLayout?: 'below' | 'side') => { setCampaign((prev) => ({ ...prev, modules: prev.modules.map((m) => { @@ -579,6 +579,7 @@ export default function Home() { badgeAlign: badge.align ?? prod.badgeAlign ?? 'center', badgePaddingTop: badge.paddingTop ?? prod.badgePaddingTop ?? 4, badgePaddingBottom: badge.paddingBottom ?? prod.badgePaddingBottom ?? 4, + badgeLayout: badgeLayout ?? prod.badgeLayout, customBadgePngUrl: undefined })) } diff --git a/src/components/editor/ConfigPanel.tsx b/src/components/editor/ConfigPanel.tsx index e60f67a..3447b75 100644 --- a/src/components/editor/ConfigPanel.tsx +++ b/src/components/editor/ConfigPanel.tsx @@ -18,7 +18,7 @@ const PRODUCT_BG_PRESETS = [ interface ConfigPanelProps { module: NewsletterModule | null; onUpdateModule: (updated: NewsletterModule) => void; - onApplyBadgeToAll?: (badge: BadgeTemplate) => void; + onApplyBadgeToAll?: (badge: BadgeTemplate, badgeLayout?: 'below' | 'side') => void; onOpenBadgeManager?: (productId: string) => void; onOpenImport?: () => void; availableBadges?: BadgeTemplate[]; @@ -725,6 +725,7 @@ export const ConfigPanel: React.FC = ({ badgeAlign: p.badgeAlign || p.badgeCustomTemplate?.align || 'center', badgePaddingTop: p.badgePaddingTop ?? p.badgeCustomTemplate?.paddingTop ?? 4, badgePaddingBottom: p.badgePaddingBottom ?? p.badgeCustomTemplate?.paddingBottom ?? 4, + badgeLayout: p.badgeLayout || 'below', customBadgePngUrl: undefined })); updateData({ products }); @@ -745,7 +746,7 @@ export const ConfigPanel: React.FC = ({ align: p.badgeAlign || p.badgeCustomTemplate?.align || 'center', paddingTop: p.badgePaddingTop ?? p.badgeCustomTemplate?.paddingTop ?? 4, paddingBottom: p.badgePaddingBottom ?? p.badgeCustomTemplate?.paddingBottom ?? 4 - }); + }, p.badgeLayout || 'below'); } }} className="w-full py-1.5 text-[11px] font-bold text-red-700 bg-red-50 hover:bg-red-100 border border-red-200 rounded-lg transition-colors text-center flex items-center justify-center gap-1.5" @@ -1348,7 +1349,8 @@ export const ConfigPanel: React.FC = ({ badgeWidth: p.badgeWidth || p.badgeCustomTemplate?.width || 120, badgeAlign: p.badgeAlign || p.badgeCustomTemplate?.align || 'center', badgePaddingTop: p.badgePaddingTop ?? p.badgeCustomTemplate?.paddingTop ?? 4, - badgePaddingBottom: p.badgePaddingBottom ?? p.badgeCustomTemplate?.paddingBottom ?? 4 + badgePaddingBottom: p.badgePaddingBottom ?? p.badgeCustomTemplate?.paddingBottom ?? 4, + badgeLayout: p.badgeLayout || 'below' })); updateData({ products }); } @@ -1368,7 +1370,7 @@ export const ConfigPanel: React.FC = ({ align: p.badgeAlign || p.badgeCustomTemplate?.align || 'center', paddingTop: p.badgePaddingTop ?? p.badgeCustomTemplate?.paddingTop ?? 4, paddingBottom: p.badgePaddingBottom ?? p.badgeCustomTemplate?.paddingBottom ?? 4 - }); + }, p.badgeLayout || 'below'); } }} className="w-full py-1.5 text-[11px] font-bold text-red-700 bg-red-50 hover:bg-red-100 border border-red-200 rounded-lg transition-colors text-center flex items-center justify-center gap-1.5" diff --git a/src/lib/emailRenderer.ts b/src/lib/emailRenderer.ts index 8de3557..9642add 100644 --- a/src/lib/emailRenderer.ts +++ b/src/lib/emailRenderer.ts @@ -408,7 +408,7 @@ function renderModule(m: any, campaign: NewsletterCampaign): string { if (it1?.btnText) { return ` - +
@@ -486,7 +486,7 @@ function renderModule(m: any, campaign: NewsletterCampaign): string { // Inak články / recepty return ` - +