import { useState, useEffect } from 'react' import { PageHeader } from '@/components/admin' import { Textarea } from '@/components/ui/Textarea' import { adminApi } from '@/api/admin' import { toast } from '@/lib/toast' import { cn } from '@/lib/utils' export function SettingsPage() { const [settings, setSettings] = useState>({}) const [loading, setLoading] = useState(true) const [saving, setSaving] = useState(false) useEffect(() => { adminApi.listSettings() .then((data) => setSettings(data.settings || {})) .catch(() => toast.error('Failed to load settings')) .finally(() => setLoading(false)) }, []) const maintenanceMode = Boolean(settings.maintenance_mode) const maintenanceMessage = String(settings.maintenance_message || '') const emailVerificationEnabled = settings.email_verification_enabled !== false const handleSave = async () => { setSaving(true) try { const data = await adminApi.updateSettings(settings) setSettings(data.settings || {}) toast.success('Settings saved') } catch { toast.error('Failed to save settings') } finally { setSaving(false) } } if (loading) { return (
) } return (

Email Verification

When enabled, unverified users see a banner prompting them to verify their email.

Maintenance Mode

When enabled, users will see a maintenance message instead of the app.

{maintenanceMode && (