UNPKG

@leancodepl/kratos

Version:

Headless React components library for building Ory Kratos authentication flows

73 lines (72 loc) 3.68 kB
import { ComponentType, ReactNode } from "react"; import { TraitsConfig } from "../../utils"; import { NewPasswordFormProps } from "./newPasswordForm"; import { OidcFormProps } from "./oidcForm"; import { PasskeysFormProps } from "./passkeysForm"; import { TotpFormProps } from "./totpForm"; import { TraitsFormProps } from "./traitsForm"; import { OnSettingsFlowError } from "./types"; export type SettingsFlowProps<TTraitsConfig extends TraitsConfig> = { traitsConfig?: TTraitsConfig; traitsForm?: ComponentType<TraitsFormProps<TTraitsConfig>>; newPasswordForm?: ComponentType<NewPasswordFormProps>; passkeysForm?: ComponentType<PasskeysFormProps>; totpForm?: ComponentType<TotpFormProps>; oidcForm?: ComponentType<OidcFormProps>; initialFlowId?: string; initialVerifiableAddress?: string; onError?: OnSettingsFlowError<TTraitsConfig>; onChangePasswordSuccess?: () => void; onChangeTraitsSuccess?: () => void; onFlowRestart?: () => void; settingsForm: ComponentType<{ isLoading?: boolean; emailVerificationRequired: boolean; newPasswordForm: ReactNode; traitsForm?: ReactNode; passkeysForm?: ReactNode; totpForm?: ReactNode; oidcForm?: ReactNode; }>; }; /** * Renders a complete settings flow with user account management capabilities. * * @template TTraitsConfig - Configuration type for user traits that extends TraitsConfig * @param props - Settings flow configuration and form components * @param props.traitsConfig - Configuration for user traits fields * @param props.traitsForm - Component for editing user traits/profile information * @param props.newPasswordForm - Component for changing user password * @param props.passkeysForm - Component for managing passkey authentication * @param props.totpForm - Component for TOTP/2FA configuration * @param props.oidcForm - Component for OAuth/OIDC provider management * @param props.initialFlowId - Existing flow ID to resume * @param props.initialVerifiableAddress - Email address requiring verification * @param props.onError - Callback for handling flow errors * @param props.onChangePasswordSuccess - Callback after successful password change * @param props.onChangeTraitsSuccess - Callback after successful traits update * @param props.onFlowRestart - Callback when flow restarts * @param props.settingsForm - Main settings form component that renders all sections * @returns React component for the settings flow * @example * ```tsx * import { SettingsFlow } from '@leancodepl/kratos'; * * const traitsConfig = { Email: { trait: "email", type: "string", }, GivenName: { trait: "given_name", type: "string", } } as const; * * function UserSettings() { * return ( * <SettingsFlow * traitsConfig={traitsConfig} * traitsForm={TraitsForm} * newPasswordForm={PasswordForm} * settingsForm={MainSettings} * onChangePasswordSuccess={() => console.log('Password updated')} * onError={(error) => console.error('Settings error:', error)} * /> * ); * } * ``` */ export declare function SettingsFlow<TTraitsConfig extends TraitsConfig>(props: SettingsFlowProps<TTraitsConfig>): import("react/jsx-runtime").JSX.Element; export declare function SettingsFlowWrapper<TTraitsConfig extends TraitsConfig>({ newPasswordForm: NewPasswordForm, traitsForm: TraitsForm, passkeysForm: PasskeysForm, totpForm: TotpForm, oidcForm: OidcForm, traitsConfig, settingsForm: SettingsForm, initialFlowId, onError, onChangePasswordSuccess, onChangeTraitsSuccess, onFlowRestart, }: SettingsFlowProps<TTraitsConfig>): import("react/jsx-runtime").JSX.Element;