import { ReactNode } from 'react'; import { AthenaAuthRoutingDebugConfig } from '../../../auth/routing-debug.js'; import { AuthUiSettingsView, AuthUiView } from './auth-view.js'; import { AthenaAuthUiExtension } from './extension.js'; export type AuthUiRenderSlot = ReactNode | ((props: TProps) => ReactNode); export type AuthUiControlState = "visible" | "disabled" | "hidden"; export interface AuthLogoRenderProps { view: AuthUiView; } export interface ApiKeysEmptyStateRenderProps { onCreatePress: () => void; } export interface PasskeysEmptyStateRenderProps { onAddPress: () => void; } export interface OrganizationInvitationInboxEmptyStateRenderProps { description: string; eyebrow?: string; title: string; } export interface OAuthAccountsEmptyStateRenderProps { description: string; title: string; } export interface AuthUiTextRenderProps { defaultValue: ReactNode; } export interface AuthUiSubmitLabelRenderProps { defaultValue: ReactNode; isPending: boolean; view: AuthUiView; } export interface AuthUiLinkRenderProps { defaultHref: string; defaultLabel: ReactNode; } export interface AuthUiProviderLabelRenderProps { defaultLabel: ReactNode; display: "full" | "name" | "icon"; provider: string; } export interface AuthUiLoadingIndicatorRenderProps { defaultIndicator: ReactNode; kind: "submit" | "social" | "passkey" | "signOut"; view?: AuthUiView; } export interface AuthUiSignOutLoadingRenderProps { className?: string; indicator: ReactNode; label: ReactNode; } export interface AuthUiLinkOverride { description?: AuthUiRenderSlot; href?: string; label?: AuthUiRenderSlot; } export interface AuthUiViewCopy { submitLabel?: AuthUiRenderSlot; title?: AuthUiRenderSlot; } export type AuthUiSignInCopy = AuthUiViewCopy & { forgotPasswordLink?: AuthUiLinkOverride; signUpLink?: AuthUiLinkOverride; }; export type AuthUiSignUpCopy = AuthUiViewCopy & { signInLink?: AuthUiLinkOverride; }; export type AuthUiForgotPasswordCopy = AuthUiViewCopy & { signInLink?: AuthUiLinkOverride; }; export type AuthUiResetPasswordCopy = AuthUiViewCopy & { signInLink?: AuthUiLinkOverride; }; export type AuthUiMagicLinkCopy = AuthUiViewCopy & { signUpLink?: AuthUiLinkOverride; }; export type AuthUiStatusCopy = AuthUiViewCopy & { description?: AuthUiRenderSlot; signInLink?: AuthUiLinkOverride; }; export interface AuthUiProviderButtonsCopy { label?: AuthUiRenderSlot; labels?: Partial>>; } export interface AuthUiPasskeyButtonCopy { label?: AuthUiRenderSlot; } export interface AuthUiSignOutCopy { loadingLabel?: AuthUiRenderSlot; } export interface AuthUiFormClassNames { captcha?: string; card?: string; content?: string; description?: string; footer?: string; form?: string; link?: string; providerButtons?: string; secondaryLink?: string; separator?: string; submitButton?: string; } export interface AuthUiAuthPageClassNames { auth?: string; container?: string; } export interface AuthUiSettingsPageClassNames { container?: string; settings?: string; } export interface AuthUiAuthCardHeaderClassNames { base?: string; logo?: string; title?: string; } export interface AuthUiProviderButtonsClassNames { base?: string; } export interface AuthUiProviderButtonClassNames { base?: string; } export interface AuthUiSignOutClassNames { spinner?: string; } export interface AuthUiSettingsClassNames { content?: string; mobilePanel?: string; mobileTrigger?: string; nav?: string; navItem?: string; navItemActive?: string; root?: string; } export interface AuthUiSettingsViewConfig { label?: ReactNode; order?: number; sections?: string[]; visibility?: "visible" | "hidden"; } export type AuthUiSettingsViewsConfig = Partial>; export interface AuthUiUserButtonClassNames { iconTrigger?: string; menuHeader?: string; menuItem?: string; popover?: string; trigger?: string; unauthenticatedLink?: string; unauthenticatedRoot?: string; } export interface AuthUiOrganizationOptions { /** When true, organization slug fields are disabled and derived from the name. */ autoGenerateSlug?: boolean; } export interface AuthUiPasskeyButtonClassNames { button?: string; } export interface AuthUiExperimentalAuthRoutingDebugOptions { config: AthenaAuthRoutingDebugConfig; defaultConfig: AthenaAuthRoutingDebugConfig; enabled?: boolean; publicUpstreamUrl?: string; resetConfig: () => void; setConfig: (config: AthenaAuthRoutingDebugConfig) => void; } export interface AthenaAuthUiOptions { auth?: { classNames?: { authCardHeader?: AuthUiAuthCardHeaderClassNames; checkEmail?: AuthUiFormClassNames; forgotPassword?: AuthUiFormClassNames; magicLink?: AuthUiFormClassNames; passkeyButton?: AuthUiPasskeyButtonClassNames; providerButton?: AuthUiProviderButtonClassNames; providerButtons?: AuthUiProviderButtonsClassNames; resetEmailSent?: AuthUiFormClassNames; resetPassword?: AuthUiFormClassNames; signIn?: AuthUiFormClassNames; signInUsername?: AuthUiFormClassNames; signOut?: AuthUiSignOutClassNames; signUp?: AuthUiFormClassNames; }; components?: { loadingIndicator?: AuthUiRenderSlot; signOutLoading?: AuthUiRenderSlot; }; copy?: { checkEmail?: AuthUiStatusCopy; forgotPassword?: AuthUiForgotPasswordCopy; global?: { separator?: AuthUiRenderSlot; }; magicLink?: AuthUiMagicLinkCopy; passkeyButton?: AuthUiPasskeyButtonCopy; providerButtons?: AuthUiProviderButtonsCopy; resetEmailSent?: AuthUiStatusCopy; resetPassword?: AuthUiResetPasswordCopy; signIn?: AuthUiSignInCopy; signOut?: AuthUiSignOutCopy; signUp?: AuthUiSignUpCopy; }; logo?: AuthUiRenderSlot; methods?: { passkey?: AuthUiControlState; oauth?: AuthUiControlState; oauthProviders?: Partial>; }; routes?: { afterForgotPassword?: string; afterResetPassword?: string; afterSignIn?: string; afterSignOut?: string; afterSignUp?: string; callbackURL?: string; checkEmail?: string; forgotPassword?: string; resetEmailSent?: string; resetPassword?: string; settings?: string; signIn?: string; signOut?: string; signUp?: string; }; }; emptyStates?: { apiKeys?: AuthUiRenderSlot; oauthAccounts?: AuthUiRenderSlot; organizationInvitations?: AuthUiRenderSlot; passkeys?: AuthUiRenderSlot; }; experimental?: { authRoutingDebug?: AuthUiExperimentalAuthRoutingDebugOptions; }; extensions?: readonly AthenaAuthUiExtension[]; organization?: AuthUiOrganizationOptions; pages?: { auth?: AuthUiAuthPageClassNames; settings?: AuthUiSettingsPageClassNames; }; settings?: { navigation?: "visible" | "hidden"; sidebar?: "visible" | "hidden"; classNames?: AuthUiSettingsClassNames; views?: AuthUiSettingsViewsConfig; }; userButton?: { classNames?: AuthUiUserButtonClassNames; }; } export declare function AuthUiProvider({ children, value }: { children: ReactNode; value?: AthenaAuthUiOptions; }): import("react").JSX.Element; export declare function useAuthUiOptions(): AthenaAuthUiOptions | undefined; export declare function mergeAuthUiOptions(inherited?: AthenaAuthUiOptions, local?: AthenaAuthUiOptions): AthenaAuthUiOptions | undefined; export declare function useResolvedAuthUiOptions(local?: AthenaAuthUiOptions): AthenaAuthUiOptions | undefined; export declare function renderAuthUiSlot(slot: AuthUiRenderSlot | undefined, props: TProps): ReactNode; export declare function resolveAuthUiSlotValue(slot: AuthUiRenderSlot | undefined, props: TProps, fallback: ReactNode): ReactNode; export declare function resolveAuthUiSlot(localSlot: AuthUiRenderSlot | undefined, inheritedSlot: AuthUiRenderSlot | undefined, props: TProps, fallback: ReactNode): ReactNode; export declare function resolveAuthUiControlState(control?: AuthUiControlState): { isDisabled: boolean; isHidden: boolean; }; export declare function getAuthUiRoute["routes"]>>(options: AthenaAuthUiOptions | undefined, key: TKey, fallback: string): string; export declare function resolveAuthUiProviderLabel(options: AthenaAuthUiOptions | undefined, provider: string, display: AuthUiProviderLabelRenderProps["display"], fallback: ReactNode): ReactNode; export declare function resolvePasskeyAuthUiLabel(options: AthenaAuthUiOptions | undefined, fallback: ReactNode): ReactNode; export declare function resolveAuthUiLoadingIndicator(options: AthenaAuthUiOptions | undefined, props: AuthUiLoadingIndicatorRenderProps): ReactNode; export declare function getPasskeyAuthUiState(options?: AthenaAuthUiOptions): { isDisabled: boolean; isHidden: boolean; }; export declare function getOAuthAuthUiState(options?: AthenaAuthUiOptions): { isDisabled: boolean; isHidden: boolean; }; export declare function getOAuthProviderAuthUiState(options: AthenaAuthUiOptions | undefined, provider: string): { isDisabled: boolean; isHidden: boolean; }; export declare function getOrganizationSlugAutoGenerate(options?: AthenaAuthUiOptions): boolean; export declare function getVisibleOAuthProviders(providers: string[] | undefined, options?: AthenaAuthUiOptions): string[];