feat: tagy sablon cenoviek pre import podkladov, pozadie karty podla farby cenovky

Sablona ma tagy Typ (SUPER CENA / SUPER VYHODNE), Farba (cervena / oranzova /
zelena) a Povod (SK / bez povodu); import ZIP-u podla nich vyberie cenovku.
SK produkt bez SK sablony dostane variant bez povodu, opacne nie.
Pribudla oranzova predvolba pozadia karty.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub_HostacnyandClaude Opus 5.5 committed 2026-10-21 14:04:48 +02:00
1 parent 9b1f7b60cf
commit 08fb233da0
8 files changed
+135 -26

No files matched your search

+13 -4
View File
@@ -8,6 +8,7 @@ import { findBadgeByCode, badgeCode } from '@/lib/badgeUtils';
import { Upload, Check, AlertCircle, FileText, X } from 'lucide-react';
import { supabase } from '@/lib/supabase';
import { PodkladyProduct, podkladyToProductItem, readPodkladyZip, splitPrice } from '@/lib/podkladyZip';
import { CARD_BG_BY_BADGE_COLOR } from '@/lib/productCard';
import { shrinkImage, uploadFile } from '@/lib/upload';
interface ImportModalProps {
@@ -291,7 +292,11 @@ export const ProductImportModal: React.FC<ImportModalProps> = ({
const stores = [p.stores.potraviny && 'P', p.stores.supermarket && 'S', p.stores.tempo && 'T'].filter(Boolean).join(' ');
return (
<div key={p.ean} className="flex items-center gap-3 px-3 py-2 bg-white">
<span className="w-12 h-12 rounded-lg bg-gray-50 border border-gray-200 overflow-hidden flex items-center justify-center shrink-0">
<span
className="w-12 h-12 rounded-lg bg-gray-50 border border-gray-200 overflow-hidden flex items-center justify-center shrink-0"
style={p.color ? { backgroundColor: CARD_BG_BY_BADGE_COLOR[p.color] } : undefined}
title={p.color ? 'Pozadie karty podľa farby cenovky' : undefined}
>
{p.thumb ? (
// eslint-disable-next-line @next/next/no-img-element
<img src={p.thumb} alt="" className="w-full h-full object-contain" />
@@ -308,7 +313,11 @@ export const ProductImportModal: React.FC<ImportModalProps> = ({
{stores && ` · ${stores}`}
</p>
<p className="text-[11px] truncate">
{p.badge ? (
{p.badge && p.badgeMatch === 'origin' ? (
<span className="text-amber-700">
cenovka: {p.badge.name} – šablóna „{p.badgeLabel}“ so SK chýba, použije sa variant bez pôvodu
</span>
) : p.badge ? (
<span className="text-emerald-700">cenovka: {p.badge.name}</span>
) : (
<span className="text-amber-700">
@@ -326,8 +335,8 @@ export const ProductImportModal: React.FC<ImportModalProps> = ({
})}
</div>
<p className="text-[11px] text-gray-500">
Fotky sa pri importe zmenšia na najviac 1000 px. Rozloženie karty (veľkosť a poloha cenovky, štítky predajní) sa prevezme z prvého
produktu v sekcii.
Fotky sa pri importe zmenšia na najviac 1000 px, pozadie karty sa nastaví podľa farby cenovky. Rozloženie karty (veľkosť a poloha
cenovky, štítky predajní) sa prevezme z prvého produktu v sekcii.
</p>
</div>
)}