From 076a29dc61a879ed0a3fa2916b4a5dbec53efe9e Mon Sep 17 00:00:00 2001 From: Mikkel Georgsen Date: Tue, 31 Mar 2026 14:19:35 +0200 Subject: [PATCH] feat(07-02): add theme picker section to InstanceGeneralSettings - Import useTheme, THEME_META, type Theme from ThemeContext - Add ORDERED_THEMES constant with three theme IDs - Add theme picker section as first section in General Settings - Color swatches use inline backgroundColor (hardcoded hex, not CSS vars) - Active theme highlighted with border-primary bg-primary/10 --- ui/src/pages/InstanceGeneralSettings.tsx | 35 ++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/ui/src/pages/InstanceGeneralSettings.tsx b/ui/src/pages/InstanceGeneralSettings.tsx index 5460e683..aac96c38 100644 --- a/ui/src/pages/InstanceGeneralSettings.tsx +++ b/ui/src/pages/InstanceGeneralSettings.tsx @@ -3,13 +3,17 @@ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { SlidersHorizontal } from "lucide-react"; import { instanceSettingsApi } from "@/api/instanceSettings"; import { useBreadcrumbs } from "../context/BreadcrumbContext"; +import { useTheme, THEME_META, type Theme } from "../context/ThemeContext"; import { queryKeys } from "../lib/queryKeys"; import { cn } from "../lib/utils"; +const ORDERED_THEMES: Theme[] = ["catppuccin-mocha", "tokyo-night", "catppuccin-latte"]; + export function InstanceGeneralSettings() { const { setBreadcrumbs } = useBreadcrumbs(); const queryClient = useQueryClient(); const [actionError, setActionError] = useState(null); + const { theme, setTheme } = useTheme(); useEffect(() => { setBreadcrumbs([ @@ -69,6 +73,37 @@ export function InstanceGeneralSettings() { )} +
+
+

Theme

+

Choose the visual theme for Nexus.

+
+
+ {ORDERED_THEMES.map((id) => { + const meta = THEME_META[id]; + return ( + + ); + })} +
+
+