@leancodepl/kratos
Version:
Headless React components library for building Ory Kratos authentication flows
76 lines • 4.17 kB
TypeScript
import { ComponentType, ReactNode } from 'react';
import { OidcProvidersConfig, 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 SettingsFormProps = {
isLoading?: boolean;
emailVerificationRequired: boolean;
newPasswordForm: ReactNode;
traitsForm?: ReactNode;
passkeysForm?: ReactNode;
totpForm?: ReactNode;
oidcForm?: ReactNode;
};
export type SettingsFlowProps<TTraitsConfig extends TraitsConfig, TOidcProvidersConfig extends OidcProvidersConfig = readonly []> = {
traitsConfig?: TTraitsConfig;
oidcProvidersConfig?: TOidcProvidersConfig;
traitsForm?: ComponentType<TraitsFormProps<TTraitsConfig>>;
newPasswordForm?: ComponentType<NewPasswordFormProps>;
passkeysForm?: ComponentType<PasskeysFormProps>;
totpForm?: ComponentType<TotpFormProps>;
oidcForm?: ComponentType<OidcFormProps<TOidcProvidersConfig>>;
initialFlowId?: string;
initialVerifiableAddress?: string;
onError?: OnSettingsFlowError<TTraitsConfig>;
onChangePasswordSuccess?: () => void;
onChangeTraitsSuccess?: () => void;
onFlowRestart?: () => void;
settingsForm: ComponentType<SettingsFormProps>;
};
/**
* Renders a complete settings flow with user account management capabilities.
*
* @template TTraitsConfig - Configuration type for user traits that extends TraitsConfig
* @template TOidcProvidersConfig - Configuration type for OIDC providers array
* @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, TOidcProvidersConfig extends OidcProvidersConfig = readonly []>(props: SettingsFlowProps<TTraitsConfig, TOidcProvidersConfig>): import("react/jsx-runtime").JSX.Element;
export declare function SettingsFlowWrapper<TTraitsConfig extends TraitsConfig, TOidcProvidersConfig extends OidcProvidersConfig = readonly []>({ newPasswordForm: NewPasswordForm, traitsForm: TraitsForm, passkeysForm: PasskeysForm, totpForm: TotpForm, oidcForm: OidcForm, traitsConfig, oidcProvidersConfig, settingsForm: SettingsForm, initialFlowId, onError, onChangePasswordSuccess, onChangeTraitsSuccess, onFlowRestart, }: SettingsFlowProps<TTraitsConfig, TOidcProvidersConfig>): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=settingsFlow.d.ts.map