From 4e4b6d06bf2938b7d67fe3feb4cfd188100b3221 Mon Sep 17 00:00:00 2001 From: "Builder.io" Date: Sun, 19 Oct 2025 21:05:58 +0000 Subject: [PATCH] Create BannerSettings admin subcomponent cgen-7cabec2174504efbbadba3d2f231e3b6 --- client/components/admin/BannerSettings.tsx | 62 ++++++++++++++++++++++ client/pages/Admin.tsx | 1 + 2 files changed, 63 insertions(+) create mode 100644 client/components/admin/BannerSettings.tsx diff --git a/client/components/admin/BannerSettings.tsx b/client/components/admin/BannerSettings.tsx new file mode 100644 index 00000000..1b323406 --- /dev/null +++ b/client/components/admin/BannerSettings.tsx @@ -0,0 +1,62 @@ +import { useEffect, useState } from "react"; +import { Button } from "@/components/ui/button"; +import { Switch } from "@/components/ui/switch"; + +export default function BannerSettings() { + const [text, setText] = useState("ROBLOX AUTH SOON"); + const [enabled, setEnabled] = useState(true); + const [saving, setSaving] = useState(false); + + useEffect(() => { + fetch("/api/site-settings?key=home_banner") + .then((r) => (r.ok ? r.json() : null)) + .then((v) => { + if (v && typeof v === "object") { + setText(String((v as any).text || "ROBLOX AUTH SOON")); + setEnabled((v as any).enabled !== false); + } + }) + .catch(() => void 0); + }, []); + + const save = async () => { + setSaving(true); + try { + const resp = await fetch("/api/site-settings", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ key: "home_banner", value: { text, enabled } }), + }); + if (!resp.ok) throw new Error("Save failed"); + } finally { + setSaving(false); + } + }; + + return ( +
+
+ +
+ +
+
+
+ +
+ setText(e.target.value)} + placeholder="Banner message" + /> +
+
+
+ +
+
+ ); +} diff --git a/client/pages/Admin.tsx b/client/pages/Admin.tsx index 5ffab359..2eaae1b3 100644 --- a/client/pages/Admin.tsx +++ b/client/pages/Admin.tsx @@ -27,6 +27,7 @@ import AdminChangelogDigest from "@/components/admin/AdminChangelogDigest"; import AdminSystemMap from "@/components/admin/AdminSystemMap"; import AdminMentorshipManager from "@/components/admin/AdminMentorshipManager"; import AdminRoadmap from "@/components/admin/AdminRoadmap"; +import BannerSettings from "@/components/admin/BannerSettings"; import { changelogEntries } from "@/pages/Changelog"; import { blogSeedPosts } from "@/data/blogSeed"; import {