import { useState } from "react"; import type { ServerListenSettings, ServerSettings, } from "@qltysh/fabro-api-client"; import { useServerSettings } from "../lib/queries"; import { CollapsibleFile } from "../components/collapsible-file"; import { Badge, Count, Mono, Muted, NumberValue, ObjectStoreValue, Panel, PanelSkeleton, Row, type SettingsView, Toggle, UrlValue, UsernameList, ViewToggle, plural, } from "../components/settings-panel"; export function meta({}: any) { return [{ title: "Settings — Fabro" }]; } export default function Settings() { const settingsQuery = useServerSettings(); const settings = settingsQuery.data; const [view, setView] = useState("settings"); if (!settings) { return (
); } return (
{view === "settings" ? ( <> ) : ( )}
); } function PageIntro({ view, setView, }: { view: SettingsView; setView: (v: SettingsView) => void; }) { return (

Snapshot of the server configuration. Edit via{" "} settings.toml; changes take effect on the next server restart.

); } function ServerPanel({ settings }: { settings: ServerSettings }) { const { listen, web, api, scheduler } = settings.server; return ( {web.enabled ? : } {api.url ? : Same origin} ); } function DataPanel({ settings }: { settings: ServerSettings }) { const { storage, slatedb, artifacts } = settings.server; return ( {storage.root} ); } function SecurityPanel({ settings }: { settings: ServerSettings }) { const { auth, ip_allowlist } = settings.server; const githubUsers = auth.github.allowed_usernames; return ( {auth.methods.length === 0 ? ( None configured ) : (
{auth.methods.map((m) => ( {m} ))}
)}
{githubUsers.length === 0 ? ( Anyone ) : ( )} 0 ? `· ${ip_allowlist.trusted_proxy_count} trusted ${plural(ip_allowlist.trusted_proxy_count, "proxy", "proxies")}` : undefined } />
); } function IntegrationsPanel({ settings }: { settings: ServerSettings }) { const { integrations } = settings.server; return ( ); } function ListenValue({ listen }: { listen: ServerListenSettings }) { if (listen.type === "tcp") { return ( tcp {listen.address} ); } return ( unix {listen.path} ); } function IntegrationValue({ enabled, detail, }: { enabled: boolean; detail?: string; }) { if (!enabled) return ; return ( {detail ? ( {detail} ) : null} ); }