import { useState, useEffect } from 'react' import type { NextPage } from 'next' import Head from 'next/head' import AdminLayout from '../../../components/AdminLayout' import { Cog6ToothIcon, GlobeAltIcon, ShieldCheckIcon, ClockIcon, DocumentTextIcon, EnvelopeIcon, BellIcon } from '@heroicons/react/24/outline' interface SystemSetting { key: string value: string type: 'string' | 'number' | 'boolean' | 'json' description: string category: string } const GeneralSettings: NextPage = () => { const [settings, setSettings] = useState([]) const [loading, setLoading] = useState(true) const [saving, setSaving] = useState(false) useEffect(() => { fetchSettings() }, []) const fetchSettings = async () => { try { const response = await fetch('/api/admin/settings') if (response.ok) { const data = await response.json() setSettings(data) } } catch (error) { console.error('Failed to fetch settings:', error) } finally { setLoading(false) } } const updateSetting = async (key: string, value: string) => { setSaving(true) try { const response = await fetch('/api/admin/settings', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ key, value }) }) if (response.ok) { setSettings(prev => prev.map(s => s.key === key ? { ...s, value } : s)) } } catch (error) { console.error('Failed to update setting:', error) } finally { setSaving(false) } } const getSetting = (key: string) => settings.find(s => s.key === key) const SettingField = ({ setting }: { setting: SystemSetting }) => { const [value, setValue] = useState(setting.value) const handleSave = () => { if (value !== setting.value) { updateSetting(setting.key, value) } } if (setting.type === 'boolean') { return (
) } return (
setValue(e.target.value)} className="input flex-1" /> {value !== setting.value && ( )}
) } if (loading) { return ( Všeobecné nastavenia - Hliadka.sk Admin
) } const generalSettings = settings.filter(s => s.category === 'general') const apiSettings = settings.filter(s => s.category === 'api') const emailSettings = settings.filter(s => s.category === 'email') const moderationSettings = settings.filter(s => s.category === 'moderation') return ( Všeobecné nastavenia - Hliadka.sk Admin
{/* System Information */}

Systémové informácie

Verzia aplikácie
v1.0.0
Verzia databázy
PostgreSQL 14.2
Posledná aktualizácia
6.9.2025
{/* General Settings */}

Všeobecné nastavenia

{/* API Settings */}

API nastavenia

{/* Email Settings */}

Email nastavenia

{/* Moderation Settings */}

Nastavenia moderovania

{/* Notification Settings */}

Nastavenia notifikácií

{/* System Maintenance */}

Údržba systému

) } export default GeneralSettings