"use client"; import { useRouter } from "next/navigation"; import { useState, useTransition } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Switch } from "@/components/ui/switch"; import { Textarea } from "@/components/ui/textarea"; import { MediaPicker } from "@/features/media/components/media-picker"; import { updateProfileAction } from "../actions/profile"; export interface ProfileFormInitial { name: string; phone: string; image: string; bio: string; isBookableOnline: boolean; } export function ProfileForm({ initial }: { initial: ProfileFormInitial }) { const router = useRouter(); const [name, setName] = useState(initial.name); const [phone, setPhone] = useState(initial.phone); const [image, setImage] = useState(initial.image); const [bio, setBio] = useState(initial.bio); const [isBookableOnline, setIsBookableOnline] = useState(initial.isBookableOnline); const [error, setError] = useState(null); const [saved, setSaved] = useState(false); const [isPending, startTransition] = useTransition(); const handleSave = () => { setError(null); setSaved(false); startTransition(async () => { const result = await updateProfileAction({ name, phone, image, bio, isBookableOnline }); if (!result.success) { setError(result.error ?? "Couldn't save your profile."); return; } setSaved(true); router.refresh(); }); }; return (
setName(e.target.value)} /> setPhone(e.target.value)} /> setImage(url ?? "")} category="staff" />