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 */}
+
+
)}