import { useSettingsStore } from "../../stores/settingsStore"; import { useConnectionStore } from "../../stores/connectionStore"; import { useNotificationStore } from "../../stores/notificationStore"; import { Select } from "../ui/Select"; import { ThemePicker } from "../ui/ThemePicker"; import { AccentPicker } from "../ui/AccentPicker"; import { SettingsRow } from "../ui/SettingsRow"; import { ConfirmDialog } from "../ui/ConfirmDialog"; import * as cmd from "../../lib/commands"; import type { FontSize } from "../../lib/types"; import { useState } from "react"; const FONT_SIZE_OPTIONS: { value: FontSize; label: string }[] = [ { value: "small", label: "Small" }, { value: "medium", label: "Medium" }, { value: "large", label: "Large" }, ]; const REFRESH_RATE_OPTIONS = [ { value: "0", label: "Off" }, { value: "5000", label: "5 seconds" }, { value: "10000", label: "10 seconds" }, { value: "30000", label: "30 seconds" }, { value: "60000", label: "1 minute" }, { value: "300000", label: "5 minutes" }, ]; const PAGE_SIZE_OPTIONS = [ { value: "50", label: "50 rows" }, { value: "100", label: "100 rows" }, { value: "200", label: "200 rows" }, { value: "500", label: "500 rows" }, ]; export function GeneralSettingsTab() { const { settings, updateSetting, load } = useSettingsStore(); const folders = useConnectionStore((s) => s.folders); const loadAll = useConnectionStore((s) => s.loadAll); const notify = useNotificationStore((s) => s.notify); const [confirmRegenerate, setConfirmRegenerate] = useState(false); const [regenerating, setRegenerating] = useState(false); if (!settings) return null; const folderOptions = [ { value: "", label: "None" }, ...folders.map((f) => ({ value: f.id, label: f.name })), ]; const handleReAddDemo = async () => { try { const msg = await cmd.recreateDemoDb(); await load(); await loadAll(); notify(msg, "success"); } catch (e) { notify(e instanceof Error ? e.message : String(e), "error"); } }; const handleRegenerateDemo = async () => { setConfirmRegenerate(false); setRegenerating(true); try { const msg = await cmd.regenerateDemoDb(); await loadAll(); notify(msg, "success"); } catch (e) { notify(e instanceof Error ? e.message : String(e), "error"); } finally { setRegenerating(false); } }; return (

Appearance

updateSetting("theme", theme)} /> updateSetting("default_folder_id", value)} options={folderOptions} label="Default folder" />

Table defaults

updateSetting("table_page_size", value)} options={PAGE_SIZE_OPTIONS} label="Rows per page" />

Demo

setConfirmRegenerate(false)} />
); }