"use client"; import { FormEvent, useState, useTransition } from "react"; import { updateProfileAction } from "@/actions/profile"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Select } from "@/components/ui/select"; import { Textarea } from "@/components/ui/textarea"; type ThemeOption = { id: string; name: string; description: string | null; }; type ProfileFormProps = { initialValues: { username: string; displayName: string; bio: string; avatarUrl: string; themeId: string; isPublic: boolean; }; themes: ThemeOption[]; }; export function ProfileForm({ initialValues, themes }: ProfileFormProps) { const [isPending, startTransition] = useTransition(); const [message, setMessage] = useState(null); const [isError, setIsError] = useState(false); const [username, setUsername] = useState(initialValues.username); const [displayName, setDisplayName] = useState(initialValues.displayName); const [bio, setBio] = useState(initialValues.bio); const [avatarUrl, setAvatarUrl] = useState(initialValues.avatarUrl); const [themeId, setThemeId] = useState(initialValues.themeId); const [isPublic, setIsPublic] = useState(initialValues.isPublic); function onSubmit(event: FormEvent) { event.preventDefault(); setMessage(null); const formData = new FormData(); formData.set("username", username); formData.set("displayName", displayName); formData.set("bio", bio); formData.set("avatarUrl", avatarUrl); formData.set("themeId", themeId); if (isPublic) { formData.set("isPublic", "on"); } startTransition(async () => { const result = await updateProfileAction(formData); setMessage(result.message); setIsError(!result.success); }); } return (

Edit Profile