"use client" import { useState, useEffect } from "react" import Navigation from "@/components/Navigation" import { redirect } from "next/navigation" import { getSession } from "@/lib/auth-simple" interface ClubSettings { id: number clubName: string defaultEloRating: number partnershipEnabled: boolean notificationsEnabled: boolean matchVerification: boolean } export default function ClubSettingsPage() { const [settings, setSettings] = useState(null) const [loading, setLoading] = useState(true) const [saving, setSaving] = useState(false) const [error, setError] = useState("") const [success, setSuccess] = useState("") const [formSettings, setFormSettings] = useState>({}) useEffect(() => { fetchSettings() }, []) const fetchSettings = async () => { try { const response = await fetch("/api/admin/settings") if (!response.ok) { throw new Error("Failed to fetch settings") } const data = await response.json() setSettings(data) setFormSettings(data || {}) } catch (err: unknown) { setError(err instanceof Error ? err.message : "Failed to fetch settings") } finally { setLoading(false) } } const handleSave = async () => { setSaving(true) setError("") setSuccess("") try { const response = await fetch("/api/admin/settings", { method: "PATCH", headers: { "Content-Type": "application/json", }, body: JSON.stringify(formSettings), }) if (!response.ok) { const errorData = await response.json() throw new Error(errorData.error || "Failed to save settings") } const updatedSettings = await response.json() setSettings(updatedSettings) setSuccess("Settings saved successfully!") } catch (err: unknown) { setError(err instanceof Error ? err.message : "Failed to save settings") } finally { setSaving(false) } } if (loading) { return (

Loading settings...

) } return (
{/* Page Header */}

Club Settings

Configure your club's default settings and preferences.

{/* Settings Form */}
{error && (
{error}
)} {success && (
{success}
)}
{/* Club Name */}
setFormSettings({ ...formSettings, clubName: e.target.value })} className="w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-green-500 focus:border-green-500" />
{/* Default Elo Rating */}
setFormSettings({ ...formSettings, defaultEloRating: parseInt(e.target.value) })} className="w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-green-500 focus:border-green-500" />
{/* Partnership Tracking */}

Enable partnership performance analytics

{/* Notifications */}

Send email notifications for updates

{/* Match Verification */}

Require admin verification for match results

{/* Save Button */}
) }