import { useState, useEffect } from "react"; import SectionCard from "./SectionCard"; import SaveToast from "./SaveToast"; import useSettings from "../../hooks/useSettings"; export default function DisplaySettingsSection() { const { generalSettings, setGeneralSetting, saveSettings, saving, resetDisplaySettings, } = useSettings(); const [saveMessage, setSaveMessage] = useState({ type: null, text: "" }); const handleReset = () => { if (confirm("Reset display settings to default values? This will not save automatically.")) { resetDisplaySettings(); setSaveMessage({ type: "success", text: "Display settings reset to defaults. Click 'Save Settings' to apply." }); } }; const handleSave = async () => { setSaveMessage({ type: null, text: "" }); const result = await saveSettings("display"); setSaveMessage({ type: result.success ? "success" : "error", text: result.message, }); }; // Toast handles auto-dismiss return (
{/* Default View Mode */}

Pre-selected view mode when opening the Image Generator.

{/* Items Per Page */}

Number of images to show per page (20–100)

setGeneralSetting("items_per_page", parseInt(e.target.value, 10))} className="flex-1 min-w-0 h-2.5 bg-gray-200 rounded-lg appearance-none cursor-pointer accent-gray-800 hover:bg-gray-300 transition-colors" />
{ const val = parseInt(e.target.value, 10); if (!isNaN(val)) setGeneralSetting("items_per_page", Math.min(100, Math.max(20, val))); }} className="w-16 rounded-md border border-gray-200 px-3 py-2 text-sm text-center transition-all outline-none focus:border-gray-500 focus:ring-0 [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none" /> per page
{/* Thumbnail Size */}

Size of image thumbnails in grid view

{/* Load More Mode */}

Choose how additional images are loaded when scrolling

{/* Save Button and Messages */} setSaveMessage({ type: null, text: "" })} />
); }