import React, { useEffect, useState } from "../../../recovery-preview/node_modules/react/index.js"; import { requestJson } from "../../runtime/client.js"; function Wot({ children }) { return
{children}
; } function Hot({ children }) { return (
{children}
); } function zot({ children }) { return
{children}
; } function Card({ title, description, children }) { return (

{title}

{description}

{children}
); } function Field({ label, description, children, span = 1 }) { return (
{children}

{description}

); } const defaults = { nebula_theme_color: "aurora", nebula_hero_slogan: "", nebula_welcome_target: "", nebula_register_title: "", nebula_background_url: "", nebula_metrics_base_url: "", nebula_default_theme_mode: "system", nebula_light_logo_url: "", nebula_dark_logo_url: "", nebula_custom_html: "", nebula_static_cdn_url: "", }; const themeColorOptions = [ { value: "aurora", label: "Aurora" }, { value: "sunset", label: "Sunset" }, { value: "ember", label: "Ember" }, { value: "violet", label: "Violet" }, ]; const themeModeOptions = [ { value: "system", label: "Follow system" }, { value: "dark", label: "Prefer dark" }, { value: "light", label: "Prefer light" }, ]; function QKt() { const [form, setForm] = useState(defaults); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); const [message, setMessage] = useState(""); const [messageType, setMessageType] = useState(""); useEffect(() => { (async () => { try { const payload = await requestJson("/config/fetch?key=nebula"); const nebula = payload?.data?.nebula || payload?.nebula || {}; setForm((prev) => ({ ...prev, ...nebula })); } catch (error) { setMessage(error?.message || "Failed to load Nebula settings"); setMessageType("error"); } finally { setLoading(false); } })(); }, []); const updateField = (key, value) => { setForm((prev) => ({ ...prev, [key]: value ?? "" })); }; const save = async () => { setSaving(true); setMessage(""); setMessageType(""); try { await requestJson("/config/save", { method: "POST", body: form }); setMessage("Nebula settings saved"); setMessageType("success"); } catch (error) { setMessage(error?.message || "Failed to save Nebula settings"); setMessageType("error"); } finally { setSaving(false); } }; return (

Nebula Theme

Configure Nebula theme colors, copywriting, branding assets, and custom injections.

{message ? (
{message}
) : null} {loading ? (
Loading Nebula settings...
) : (
updateField("nebula_hero_slogan", event.target.value)} /> updateField("nebula_welcome_target", event.target.value)} /> updateField("nebula_register_title", event.target.value)} /> updateField("nebula_metrics_base_url", event.target.value)} />
)}
updateField("nebula_background_url", event.target.value)} /> updateField("nebula_static_cdn_url", event.target.value)} /> updateField("nebula_light_logo_url", event.target.value)} /> updateField("nebula_dark_logo_url", event.target.value)} />