import React, { useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; import { booksApi } from "../api/books"; import type { ReadingSettings } from "../types/book"; const BG_COLORS = [ { value: "#ffffff", label: "White" }, { value: "#f4e4c1", label: "Sepia" }, { value: "#1a1a2e", label: "Dark" }, { value: "#c7edcc", label: "Green" }, ]; export function SettingsPage() { const navigate = useNavigate(); const [settings, setSettings] = useState(null); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); const [error, setError] = useState(null); const [success, setSuccess] = useState(false); useEffect(() => { const load = async () => { try { const data = await booksApi.getSettings(); setSettings(data); } catch (err) { setError(err instanceof Error ? err.message : "Failed to load settings"); } finally { setLoading(false); } }; void load(); }, []); const handleSave = async () => { if (!settings) return; setSaving(true); setError(null); setSuccess(false); try { await booksApi.updateSettings(settings); setSuccess(true); setTimeout(() => setSuccess(false), 2000); } catch (err) { setError(err instanceof Error ? err.message : "Failed to save settings"); } finally { setSaving(false); } }; if (loading) return

Loading settings...

; return (

Reading Settings

{error &&
{error}
} {success &&
Settings saved!
} {settings && <>
setSettings({ ...settings, font_size: Number(e.target.value) })} style={{ width: "100%", cursor: "pointer" }} />
12px36px
{BG_COLORS.map((bg) => ( ))}
}
); }