'use client'; import React, { useState, useEffect } from 'react'; import { BadgeTemplate } from '@/types/newsletter'; import { supabase } from '@/lib/supabase'; import { Tag, Plus, Check, Trash2, X } from 'lucide-react'; interface BadgeManagerModalProps { isOpen: boolean; onClose: () => void; onSelectBadge: (badge: BadgeTemplate) => void; } export const BadgeManagerModal: React.FC = ({ isOpen, onClose, onSelectBadge }) => { const [badges, setBadges] = useState([]); const [loading, setLoading] = useState(false); const [creating, setCreating] = useState(false); const [newBadgeName, setNewBadgeName] = useState(''); const [newBadgeColor, setNewBadgeColor] = useState('#e2001a'); const [newBadgeText, setNewBadgeText] = useState('SUPER CENA'); useEffect(() => { if (isOpen) { loadBadges(); } }, [isOpen]); const loadBadges = async () => { setLoading(true); try { const { data, error } = await supabase.from('badges').select('*').order('created_at', { ascending: false }); if (data && !error) { setBadges( data.map((d: any) => ({ id: d.id, name: d.name, svgRaw: d.svg_raw, layersConfig: d.layers_config || [] })) ); } } catch (err) { console.error('Error loading badges:', err); } finally { setLoading(false); } }; const createBadge = async () => { if (!newBadgeName) return; const svg = ``; const layers = [ { id: 'l1', type: 'text', text: newBadgeText, x: 80, y: 35, fontSize: 18, fontWeight: '900', fill: '#ffffff', align: 'center' }, { id: 'l2', type: 'text', text: '{zlava}', x: 80, y: 65, fontSize: 24, fontWeight: '900', fill: '#ffd100', align: 'center' } ]; try { const { data, error } = await supabase.from('badges').insert([ { name: newBadgeName, svg_raw: svg, layers_config: layers } ]).select(); if (data && !error) { loadBadges(); setCreating(false); setNewBadgeName(''); } } catch (err) { console.error('Error creating badge:', err); } }; if (!isOpen) return null; return (
{/* Header */}

Správca grafických cenoviek

{/* Content */}

Vyberte cenovku pre produkt alebo navrhnite vlastnú.

{/* Create Form */} {creating && (

Vytvoriť cenovku

setNewBadgeName(e.target.value)} placeholder="Napr. Modrá novinka" className="w-full text-sm border border-gray-300 rounded-lg p-2" />
setNewBadgeText(e.target.value)} placeholder="Napr. EXTRA CENA" className="w-full text-sm border border-gray-300 rounded-lg p-2" />
setNewBadgeColor(e.target.value)} className="w-8 h-8 rounded-md cursor-pointer border-0" /> {newBadgeColor}
)} {/* Badges List */}
{badges.map((b) => (
{b.name}
))}
); };