"use client" import { useContext } from "react" import { AuthUIContext } from "../../lib/auth-ui-provider" import { cn } from "../../lib/utils" import type { AuthLocalization } from "../../localization/auth-localization" import { AccountsCard } from "./account/accounts-card" import { UpdateAvatarCard } from "./account/update-avatar-card" import { UpdateFieldCard } from "./account/update-field-card" import { UpdateNameCard } from "./account/update-name-card" import { UpdateUsernameCard } from "./account/update-username-card" import { ChangeEmailCard } from "./security/change-email-card" import type { SettingsCardClassNames } from "./shared/settings-card" export function AccountSettingsCards({ className, classNames, localization }: { className?: string classNames?: { card?: SettingsCardClassNames cards?: string } localization?: Partial }) { const { additionalFields, avatar, changeEmail, credentials, hooks: { useSession }, multiSession, account: accountOptions } = useContext(AuthUIContext) const { data: sessionData } = useSession() return (
{accountOptions?.fields?.includes("image") && avatar && ( )} {credentials?.username && ( )} {accountOptions?.fields?.includes("name") && ( )} {changeEmail && ( )} {accountOptions?.fields?.map((field) => { if (field === "image") return null if (field === "name") return null const additionalField = additionalFields?.[field] if (!additionalField) return null const { label, description, instructions, placeholder, required, type, multiline, validate } = additionalField // @ts-expect-error Custom fields are not typed const defaultValue = sessionData?.user[field] as unknown return ( ) })} {multiSession && ( )}
) }