"use client"; import { useState, useTransition } from "react"; import { Monitor, Moon, Sun } from "lucide-react"; import { Button, Card, CardContent, Label, RadioGroup, RadioGroupItem } from "poyraz-ui/atoms"; import { toast } from "poyraz-ui/molecules"; import { useTranslations } from "@/components/i18n/i18n-provider"; import { applyColorMode } from "@/components/theme/color-mode-sync"; import { isColorMode, type ColorMode } from "@/lib/color-mode"; import { savePortalColorModeAction } from "./actions"; const themeOptions = [ { value: "light", icon: Sun }, { value: "dark", icon: Moon }, { value: "system", icon: Monitor }, ] as const; export function PortalAppearanceForm({ initialColorMode, }: { initialColorMode: ColorMode; }) { const t = useTranslations(); const [colorMode, setColorMode] = useState(initialColorMode); const [pending, startTransition] = useTransition(); function changeColorMode(value: string) { if (!isColorMode(value) || value === colorMode || pending) return; const previous = colorMode; setColorMode(value); applyColorMode(value); startTransition(async () => { const result = await savePortalColorModeAction(value); if (result.errorKey) { setColorMode(previous); applyColorMode(previous); toast.error(t(result.errorKey)); return; } toast.success(t("settings.appearance.messages.themeSaved")); }); } return (

{t("settings.portal.appearance.title")}

{t("settings.portal.appearance.description")}

{themeOptions.map((option) => { const Icon = option.icon; const selected = colorMode === option.value; return ( ); })}
{t("settings.portal.appearance.brandingNotice")}
); }