mirror of
https://github.com/marcogll/TaxHacker_s23.git
synced 2026-01-13 21:35:19 +00:00
48 lines
1.5 KiB
TypeScript
48 lines
1.5 KiB
TypeScript
"use client"
|
|
|
|
import { saveProfileAction } from "@/app/(app)/settings/actions"
|
|
import { FormError } from "@/components/forms/error"
|
|
import { FormAvatar, FormInput } from "@/components/forms/simple"
|
|
import { Button } from "@/components/ui/button"
|
|
import { User } from "@/prisma/client"
|
|
import { CircleCheckBig } from "lucide-react"
|
|
import { useActionState } from "react"
|
|
import { SubscriptionPlan } from "./subscription-plan"
|
|
|
|
export default function ProfileSettingsForm({ user }: { user: User }) {
|
|
const [saveState, saveAction, pending] = useActionState(saveProfileAction, null)
|
|
|
|
return (
|
|
<div>
|
|
<form action={saveAction} className="space-y-4">
|
|
<FormAvatar
|
|
title="Avatar"
|
|
name="avatar"
|
|
className="w-24 h-24"
|
|
defaultValue={user.avatar ? user.avatar + "?" + user.id : ""}
|
|
/>
|
|
|
|
<FormInput title="Account Name" name="name" defaultValue={user.name || ""} />
|
|
|
|
<div className="flex flex-row items-center gap-4">
|
|
<Button type="submit" disabled={pending}>
|
|
{pending ? "Saving..." : "Save"}
|
|
</Button>
|
|
{saveState?.success && (
|
|
<p className="text-green-500 flex flex-row items-center gap-2">
|
|
<CircleCheckBig />
|
|
Saved!
|
|
</p>
|
|
)}
|
|
</div>
|
|
|
|
{saveState?.error && <FormError>{saveState.error}</FormError>}
|
|
</form>
|
|
|
|
<div className="mt-10">
|
|
<SubscriptionPlan user={user} />
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|