From 55003b456142281d2606ccac0d8864e79d647fa4 Mon Sep 17 00:00:00 2001 From: Erik Date: Sat, 29 Nov 2025 15:31:50 -0300 Subject: [PATCH] feat: Add partner badge toggle in admin settings --- frontend/src/app/admin/configuracoes/page.tsx | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/frontend/src/app/admin/configuracoes/page.tsx b/frontend/src/app/admin/configuracoes/page.tsx index 0faf0a2..0f7c993 100644 --- a/frontend/src/app/admin/configuracoes/page.tsx +++ b/frontend/src/app/admin/configuracoes/page.tsx @@ -20,11 +20,14 @@ export default function ConfiguracoesPage() { const [activeTab, setActiveTab] = useState<'personalizacao' | 'backup'>('personalizacao'); const [primaryColor, setPrimaryColor] = useState('#FF6B35'); const [customColor, setCustomColor] = useState('#FF6B35'); + const [showPartnerBadge, setShowPartnerBadge] = useState(false); + const [partnerName, setPartnerName] = useState('Coca-Cola'); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); useEffect(() => { fetchConfig(); + fetchSettings(); }, []); const fetchConfig = async () => { @@ -44,6 +47,37 @@ export default function ConfiguracoesPage() { } }; + const fetchSettings = async () => { + try { + const response = await fetch('/api/settings'); + if (response.ok) { + const data = await response.json(); + setShowPartnerBadge(data.showPartnerBadge || false); + setPartnerName(data.partnerName || 'Coca-Cola'); + } + } catch (error) { + console.error('Erro ao carregar settings:', error); + } + }; + + const handleSaveSettings = async () => { + try { + const response = await fetch('/api/settings', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ showPartnerBadge, partnerName }) + }); + + if (!response.ok) throw new Error('Erro ao salvar'); + + success('Configurações do badge salvas!'); + // Dispatch event para atualizar o PartnerBadge em tempo real + window.dispatchEvent(new Event('settings:refresh')); + } catch (error) { + showError('Erro ao salvar configurações do badge'); + } + }; + const handleSave = async () => { setSaving(true); try { @@ -287,6 +321,79 @@ export default function ConfiguracoesPage() {

+ + {/* Partner Badge Settings */} +
+
+
+ +
+
+

Badge de Parceiro

+

+ Exiba um selo de parceiro oficial no seu site. Aparecerá na página inicial e no rodapé. +

+
+
+ + {/* Toggle Switch */} +
+
+ +
+

Exibir Badge de Parceiro

+

Mostrar o selo na hero e no rodapé do site

+
+
+ +
+ + {/* Partner Name Input */} + {showPartnerBadge && ( +
+ + setPartnerName(e.target.value)} + placeholder="Ex: Coca-Cola" + className="w-full px-4 py-3 bg-gray-50 dark:bg-white/5 border border-gray-200 dark:border-white/10 rounded-xl text-gray-900 dark:text-white focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary transition-all" + /> +
+ )} + + {/* Preview */} + {showPartnerBadge && ( +
+

Prévia do Badge:

+
+ + + PRESTADOR DE SERVIÇO OFICIAL {partnerName} + +
+
+ )} + + {/* Save Button */} + +
)}