@atzentis/auth-react 0.0.14 → 0.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/provider/auth-provider.tsx","../src/localization/error-codes.ts","../src/localization/auth-localization.ts","../src/localization/get-localized-error.ts","../src/hooks/use-auth-context.ts","../src/hooks/use-api-keys.ts","../src/hooks/use-auth.ts","../src/hooks/use-auth-localization.ts","../src/hooks/use-devices.ts","../src/hooks/use-login-activity.ts","../src/hooks/use-organizations.ts","../src/hooks/use-phone.ts","../src/hooks/use-session.ts","../src/hooks/use-sessions.ts","../src/hooks/use-user.ts","../src/helpers/initials.ts","../src/components/sessions/account-switcher.tsx","../src/components/sessions/session-guard.tsx","../src/components/devices/device-list.tsx","../src/components/shared/loading-boundary.tsx","../src/components/shared/submit-button.tsx","../src/helpers/risk-utils.ts","../src/components/activity/login-activity-feed.tsx","../src/helpers/to-auth-error.ts","../src/schemas/login-schema.ts","../src/components/shared/utils.ts","../src/components/auth/oauth-button.tsx","../src/schemas/phone-login-schema.ts","../src/components/shared/country-codes.ts","../src/components/auth/phone-login-form.tsx","../src/components/auth/login-form.tsx","../src/schemas/magic-link-schema.ts","../src/components/auth/magic-link-form.tsx","../src/schemas/signup-schema.ts","../src/components/auth/signup-form.tsx","../src/components/organizations/organization-menu.tsx","../src/components/users/user-menu.tsx"],"names":["useState","useCallback","useContext","jsx","Fragment","useEffect","jsxs","Button","Card","AuthError","z","otpVerifySchema","useMemo","useForm","zodResolver","FormInput","FormPasswordInput","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem","DropdownMenuSeparator"],"mappings":"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","file":"index.js","sourcesContent":["// AuthProvider — React context provider for @atzentis/auth-react\n\nimport type { AuthError, User } from \"@atzentis/auth-sdk\";\nimport { AuthClient } from \"@atzentis/auth-sdk\";\nimport type { Session } from \"@atzentis/auth-sdk\";\nimport { createContext, useCallback, useMemo, useState } from \"react\";\nimport type { AuthLocalization } from \"../localization\";\nimport type { AuthContextValue, AuthProviderProps } from \"./provider.types\";\n\nexport const AuthContext = createContext<AuthContextValue | null>(null);\nexport interface LocalizationContextValue {\n overrides: AuthLocalization | null;\n localizeErrors: boolean;\n}\n\nexport const LocalizationContext = createContext<LocalizationContextValue>({\n overrides: null,\n localizeErrors: true,\n});\n\nexport function AuthProvider({\n apiKey,\n baseUrl,\n autoRefreshToken,\n refreshThreshold,\n timeout,\n collectDeviceSignals,\n onSessionExpired,\n onTokenRefreshed,\n onNewDeviceAlert,\n children,\n initialUser,\n storage,\n localization,\n localizeErrors = true,\n}: AuthProviderProps) {\n const [client] = useState(() => {\n const handleSessionExpired = () => {\n setUser(null);\n setSession(null);\n onSessionExpired?.();\n };\n\n return new AuthClient({\n apiKey,\n baseUrl,\n timeout,\n autoRefreshToken,\n refreshThreshold,\n collectDeviceSignals,\n onSessionExpired: handleSessionExpired,\n onTokenRefreshed,\n onNewDeviceAlert,\n storage,\n });\n });\n\n const [user, setUser] = useState<User | null>(initialUser ?? null);\n const [session, setSession] = useState<Session | null>(null);\n const [isLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const clearError = useCallback(() => {\n setError(null);\n }, []);\n\n const value: AuthContextValue = useMemo(\n () => ({\n client,\n user,\n session,\n isAuthenticated: user !== null,\n isLoading,\n error,\n setUser,\n setSession,\n setError,\n clearError,\n }),\n [client, user, session, isLoading, error, clearError],\n );\n\n const localizationValue = useMemo(\n () => ({ overrides: localization ?? null, localizeErrors }),\n [localization, localizeErrors],\n );\n\n return (\n <AuthContext.Provider value={value}>\n <LocalizationContext.Provider value={localizationValue}>\n {children}\n </LocalizationContext.Provider>\n </AuthContext.Provider>\n );\n}\n","// Error code defaults from @atzentis/auth-sdk\n// Keys match AuthErrorCode enum string values exactly\n\nexport const AUTH_ERROR_CODES = {\n INVALID_CREDENTIALS: \"Invalid email or password\",\n EMAIL_NOT_VERIFIED: \"Email address is not verified\",\n TWO_FACTOR_REQUIRED: \"Two-factor authentication is required\",\n INVALID_PHONE_NUMBER: \"Invalid phone number\",\n OTP_EXPIRED: \"Verification code has expired\",\n OTP_INVALID: \"Invalid verification code\",\n OTP_MAX_ATTEMPTS: \"Too many verification attempts\",\n PHONE_NUMBER_IN_USE: \"Phone number is already in use\",\n FRAUD_DETECTED: \"Suspicious activity detected\",\n USERNAME_TAKEN: \"Username is already taken\",\n USERNAME_INVALID: \"Invalid username\",\n USERNAME_RESERVED: \"This username is reserved\",\n DEVICE_NOT_FOUND: \"Device not found\",\n LOGIN_EVENT_NOT_FOUND: \"Login event not found\",\n REAUTH_REQUIRED: \"Please sign in again to continue\",\n MAX_SESSIONS_EXCEEDED: \"Maximum number of sessions exceeded\",\n CAPTCHA_REQUIRED: \"CAPTCHA verification is required\",\n CAPTCHA_INVALID: \"CAPTCHA verification failed\",\n PASSWORD_BREACHED: \"This password has been found in a data breach\",\n SESSION_EXPIRED: \"Session expired\",\n TOKEN_EXPIRED: \"Token has expired\",\n INVALID_TOKEN: \"Invalid token\",\n UNAUTHORIZED_ROLE: \"You do not have permission to perform this action\",\n ORGANIZATION_NOT_FOUND: \"Organization not found\",\n PERMISSION_DENIED: \"Permission denied\",\n RATE_LIMITED: \"Too many requests. Please try again later.\",\n NETWORK_ERROR: \"Network error. Please check your connection.\",\n TIMEOUT: \"Request timed out. Please try again.\",\n USER_NOT_FOUND: \"User not found\",\n USER_ALREADY_EXISTS: \"A user with this email already exists\",\n INVALID_EMAIL: \"Invalid email address\",\n WEAK_PASSWORD: \"Password is too weak\",\n ORG_LIMIT_EXCEEDED: \"Organization limit exceeded\",\n MEMBER_LIMIT_EXCEEDED: \"Member limit exceeded\",\n KEY_NOT_FOUND: \"API key not found\",\n KEY_REVOKED: \"API key has been revoked\",\n KEY_EXPIRED: \"API key has expired\",\n};\n","import { AUTH_ERROR_CODES } from \"./error-codes\";\n\n/**\n * Centralized localization for all @atzentis/auth-react components.\n *\n * This const object contains all default English strings.\n * The `AuthLocalization` type is derived as `Partial<typeof authLocalization>`.\n *\n * Pass a partial override to AuthProvider:\n * ```tsx\n * const de: AuthLocalization = { SIGN_IN: \"Anmelden\", ... };\n * <AuthProvider localization={de}>\n * ```\n */\nexport const authLocalization = {\n // --- General / Shared ---\n\n /** @default \"Continue\" */\n CONTINUE: \"Continue\",\n\n /** @default \"Cancel\" */\n CANCEL: \"Cancel\",\n\n /** @default \"Save\" */\n SAVE: \"Save\",\n\n /** @default \"Delete\" */\n DELETE: \"Delete\",\n\n /** @default \"Update\" */\n UPDATE: \"Update\",\n\n /** @default \"Remove\" */\n REMOVE: \"Remove\",\n\n /** @default \"Done\" */\n DONE: \"Done\",\n\n /** @default \"Go back\" */\n GO_BACK: \"Go back\",\n\n /** @default \"Loading...\" */\n LOADING: \"Loading...\",\n\n /** @default \"Load more\" */\n LOAD_MORE: \"Load more\",\n\n /** @default \"Unknown\" */\n UNKNOWN: \"Unknown\",\n\n /** @default \"Request failed\" */\n REQUEST_FAILED: \"Request failed\",\n\n /** @default \"Updated successfully\" */\n UPDATED_SUCCESSFULLY: \"Updated successfully\",\n\n // --- Sign In (LoginForm) ---\n\n /** @default \"Sign in\" */\n SIGN_IN: \"Sign in\",\n\n /** @default \"Sign in\" */\n SIGN_IN_ACTION: \"Sign in\",\n\n /** @default \"Enter your email below to sign in\" */\n SIGN_IN_DESCRIPTION: \"Enter your email below to sign in\",\n\n /** @default \"Enter your username or email to sign in\" */\n SIGN_IN_USERNAME_DESCRIPTION: \"Enter your username or email to sign in\",\n\n /** @default \"Username or email\" */\n SIGN_IN_USERNAME_PLACEHOLDER: \"Username or email\",\n\n /** @default \"Signing in...\" */\n SIGNING_IN: \"Signing in...\",\n\n /** @default \"m@example.com\" */\n EMAIL_PLACEHOLDER: \"m@example.com\",\n\n /** @default \"Password\" */\n PASSWORD_PLACEHOLDER: \"Password\",\n\n /** @default \"Forgot your password?\" */\n FORGOT_PASSWORD_LINK: \"Forgot your password?\",\n\n /** @default \"Use phone instead\" */\n USE_PHONE_INSTEAD: \"Use phone instead\",\n\n /** @default \"Use email instead\" */\n USE_EMAIL_INSTEAD: \"Use email instead\",\n\n /** @default \"Or continue with\" */\n OR_CONTINUE_WITH: \"Or continue with\",\n\n /** @default \"Sign in with\" */\n SIGN_IN_WITH: \"Sign in with\",\n\n /** @default \"Don't have an account?\" */\n DONT_HAVE_AN_ACCOUNT: \"Don't have an account?\",\n\n /** @default \"Remember me\" */\n REMEMBER_ME: \"Remember me\",\n\n // --- Sign Up (SignupForm) ---\n\n /** @default \"Sign up\" */\n SIGN_UP: \"Sign up\",\n\n /** @default \"Create account\" */\n SIGN_UP_ACTION: \"Create account\",\n\n /** @default \"Enter your information to create an account\" */\n SIGN_UP_DESCRIPTION: \"Enter your information to create an account\",\n\n /** @default \"Check your email for the verification link.\" */\n SIGN_UP_EMAIL: \"Check your email for the verification link.\",\n\n /** @default \"Name\" */\n NAME_PLACEHOLDER: \"Name\",\n\n /** @default \"Please enter your full name.\" */\n NAME_DESCRIPTION: \"Please enter your full name.\",\n\n /** @default \"Username\" */\n USERNAME_PLACEHOLDER: \"Username\",\n\n /** @default \"Username\" */\n USERNAME: \"Username\",\n\n /** @default \"Confirm password\" */\n CONFIRM_PASSWORD_PLACEHOLDER: \"Confirm password\",\n\n /** @default \"Already have an account?\" */\n ALREADY_HAVE_AN_ACCOUNT: \"Already have an account?\",\n\n /** @default \"I accept the terms and conditions\" */\n ACCEPT_TERMS: \"I accept the terms and conditions\",\n\n /** @default \"You must accept the terms\" */\n ACCEPT_TERMS_ERROR: \"You must accept the terms\",\n\n /** @default \"By continuing, you agree to the\" */\n BY_CONTINUING_YOU_AGREE: \"By continuing, you agree to the\",\n\n /** @default \"Terms of Service\" */\n TERMS_OF_SERVICE: \"Terms of Service\",\n\n /** @default \"Privacy Policy\" */\n PRIVACY_POLICY: \"Privacy Policy\",\n\n // --- Phone Login (PhoneLoginForm) ---\n\n /** @default \"Phone number\" */\n PHONE_NUMBER_PLACEHOLDER: \"Phone number\",\n\n /** @default \"Country code\" */\n COUNTRY_CODE: \"Country code\",\n\n /** @default \"Send code\" */\n SEND_VERIFICATION_CODE: \"Send code\",\n\n /** @default \"Sending code...\" */\n SENDING_VERIFICATION_CODE: \"Sending code...\",\n\n /** @default \"One-Time Password\" */\n ONE_TIME_PASSWORD: \"One-Time Password\",\n\n /** @default \"Verification code\" */\n VERIFICATION_CODE_LABEL: \"Verification code\",\n\n /** @default \"Verify\" */\n VERIFY: \"Verify\",\n\n /** @default \"Verifying...\" */\n VERIFYING: \"Verifying...\",\n\n /** @default \"Code expires in\" */\n CODE_EXPIRES_IN: \"Code expires in\",\n\n /** @default \"Resend code\" */\n RESEND_CODE: \"Resend code\",\n\n /** @default \"Sign in with password\" */\n USE_PASSWORD_INSTEAD: \"Sign in with password\",\n\n // --- OAuth ---\n\n /** @default \"Continue with\" */\n CONTINUE_WITH: \"Continue with\",\n\n /** @default \"Redirecting...\" */\n REDIRECTING: \"Redirecting...\",\n\n // --- Magic Link ---\n\n /** @default \"Magic Link\" */\n MAGIC_LINK: \"Magic Link\",\n\n /** @default \"Send magic link\" */\n MAGIC_LINK_ACTION: \"Send magic link\",\n\n /** @default \"Enter your email to receive a magic link\" */\n MAGIC_LINK_DESCRIPTION: \"Enter your email to receive a magic link\",\n\n /** @default \"We sent a magic link to\" */\n MAGIC_LINK_EMAIL: \"We sent a magic link to\",\n\n /** @default \"Check your inbox and click the link to sign in.\" */\n MAGIC_LINK_HINT: \"Check your inbox and click the link to sign in.\",\n\n /** @default \"Sending...\" */\n SENDING: \"Sending...\",\n\n /** @default \"Resend\" */\n RESEND: \"Resend\",\n\n /** @default \"Resending...\" */\n RESENDING: \"Resending...\",\n\n // --- Password Management ---\n\n /** @default \"Password\" */\n PASSWORD: \"Password\",\n\n /** @default \"New Password\" */\n NEW_PASSWORD: \"New Password\",\n\n /** @default \"Current Password\" */\n CURRENT_PASSWORD: \"Current Password\",\n\n /** @default \"Change Password\" */\n CHANGE_PASSWORD: \"Change Password\",\n\n /** @default \"Enter your current and new password\" */\n CHANGE_PASSWORD_DESCRIPTION: \"Enter your current and new password\",\n\n /** @default \"Password has been changed\" */\n CHANGE_PASSWORD_SUCCESS: \"Password has been changed\",\n\n /** @default \"Forgot Password\" */\n FORGOT_PASSWORD: \"Forgot Password\",\n\n /** @default \"Send reset link\" */\n FORGOT_PASSWORD_ACTION: \"Send reset link\",\n\n /** @default \"Enter your email to reset your password\" */\n FORGOT_PASSWORD_DESCRIPTION: \"Enter your email to reset your password\",\n\n /** @default \"Check your email for the reset link\" */\n FORGOT_PASSWORD_EMAIL: \"Check your email for the reset link\",\n\n /** @default \"Reset Password\" */\n RESET_PASSWORD: \"Reset Password\",\n\n /** @default \"Save new password\" */\n RESET_PASSWORD_ACTION: \"Save new password\",\n\n /** @default \"Password reset successfully\" */\n RESET_PASSWORD_SUCCESS: \"Password reset successfully\",\n\n /** @default \"Set Password\" */\n SET_PASSWORD: \"Set Password\",\n\n /** @default \"Click the button to receive an email to set your password\" */\n SET_PASSWORD_DESCRIPTION: \"Click the button to receive an email to set your password\",\n\n // --- Devices & Sessions ---\n\n /** @default \"Current Session\" */\n CURRENT_SESSION: \"Current Session\",\n\n /** @default \"Current device\" */\n CURRENT_DEVICE: \"Current device\",\n\n /** @default \"Sessions\" */\n SESSIONS: \"Sessions\",\n\n /** @default \"Manage your active sessions\" */\n SESSIONS_DESCRIPTION: \"Manage your active sessions\",\n\n /** @default \"Trust\" */\n TRUST_DEVICE: \"Trust\",\n\n /** @default \"Untrust\" */\n UNTRUST_DEVICE: \"Untrust\",\n\n /** @default \"Loading devices...\" */\n LOADING_DEVICES: \"Loading devices...\",\n\n /** @default \"No devices found\" */\n NO_DEVICES: \"No devices found\",\n\n /** @default \"Last used:\" */\n LAST_USED: \"Last used:\",\n\n /** @default \"IP:\" */\n IP_LABEL: \"IP:\",\n\n /** @default \"Security\" */\n SECURITY: \"Security\",\n\n /** @default \"Session not fresh. Please sign in again.\" */\n SESSION_NOT_FRESH: \"Session not fresh. Please sign in again.\",\n\n // --- Login Activity & Risk ---\n\n /** @default \"Login Activity\" */\n LOGIN_ACTIVITY: \"Login Activity\",\n\n /** @default \"Recent login attempts\" */\n LOGIN_ACTIVITY_DESCRIPTION: \"Recent login attempts\",\n\n /** @default \"Low\" */\n RISK_LOW: \"Low\",\n\n /** @default \"Medium\" */\n RISK_MEDIUM: \"Medium\",\n\n /** @default \"High\" */\n RISK_HIGH: \"High\",\n\n /** @default \"This was me\" */\n MARK_RECOGNIZED: \"This was me\",\n\n /** @default \"Not me\" */\n REPORT_SUSPICIOUS: \"Not me\",\n\n /** @default \"Loading activity...\" */\n LOADING_ACTIVITY: \"Loading activity...\",\n\n /** @default \"No login activity found\" */\n NO_ACTIVITY: \"No login activity found\",\n\n // --- Accounts & Switching ---\n\n /** @default \"Accounts\" */\n ACCOUNTS: \"Accounts\",\n\n /** @default \"Manage signed in accounts\" */\n ACCOUNTS_DESCRIPTION: \"Manage signed in accounts\",\n\n /** @default \"Add account\" */\n ADD_ACCOUNT: \"Add account\",\n\n /** @default \"Switch Account\" */\n SWITCH_ACCOUNT: \"Switch Account\",\n\n /** @default \"Select account\" */\n SELECT_ACCOUNT: \"Select account\",\n\n /** @default \"Personal Account\" */\n PERSONAL_ACCOUNT: \"Personal Account\",\n\n /** @default \"Sign out\" */\n SIGN_OUT: \"Sign out\",\n\n // --- Organizations ---\n\n /** @default \"Organization\" */\n ORGANIZATION: \"Organization\",\n\n /** @default \"Organizations\" */\n ORGANIZATIONS: \"Organizations\",\n\n /** @default \"Manage your organizations\" */\n ORGANIZATIONS_DESCRIPTION: \"Manage your organizations\",\n\n /** @default \"Select organization\" */\n SELECT_ORGANIZATION: \"Select organization\",\n\n /** @default \"Create organization\" */\n CREATE_ORGANIZATION: \"Create organization\",\n\n /** @default \"Name\" */\n ORGANIZATION_NAME: \"Name\",\n\n /** @default \"Acme Inc.\" */\n ORGANIZATION_NAME_PLACEHOLDER: \"Acme Inc.\",\n\n /** @default \"Leave Organization\" */\n LEAVE_ORGANIZATION: \"Leave Organization\",\n\n /** @default \"Delete Organization\" */\n DELETE_ORGANIZATION: \"Delete Organization\",\n\n /** @default \"Members\" */\n MEMBERS: \"Members\",\n\n /** @default \"Invite Member\" */\n INVITE_MEMBER: \"Invite Member\",\n\n /** @default \"Remove Member\" */\n REMOVE_MEMBER: \"Remove Member\",\n\n /** @default \"Role\" */\n ROLE: \"Role\",\n\n /** @default \"Admin\" */\n ADMIN: \"Admin\",\n\n /** @default \"Member\" */\n MEMBER: \"Member\",\n\n /** @default \"Owner\" */\n OWNER: \"Owner\",\n\n // --- User Menu ---\n\n /** @default \"Settings\" */\n SETTINGS: \"Settings\",\n\n /** @default \"Account\" */\n ACCOUNT: \"Account\",\n\n /** @default \"Avatar\" */\n AVATAR: \"Avatar\",\n\n /** @default \"Click avatar to upload a custom one\" */\n AVATAR_DESCRIPTION: \"Click avatar to upload a custom one\",\n\n /** @default \"Delete Avatar\" */\n DELETE_AVATAR: \"Delete Avatar\",\n\n /** @default \"Upload Avatar\" */\n UPLOAD_AVATAR: \"Upload Avatar\",\n\n /** @default \"Email\" */\n EMAIL: \"Email\",\n\n /** @default \"Name\" */\n NAME: \"Name\",\n\n // --- Two-Factor ---\n\n /** @default \"Two-Factor\" */\n TWO_FACTOR: \"Two-Factor\",\n\n /** @default \"Two-Factor Authentication\" */\n TWO_FACTOR_PROMPT: \"Two-Factor Authentication\",\n\n /** @default \"Enter your one-time password\" */\n TWO_FACTOR_DESCRIPTION: \"Enter your one-time password\",\n\n /** @default \"Verify code\" */\n TWO_FACTOR_ACTION: \"Verify code\",\n\n /** @default \"Two-factor authentication has been enabled\" */\n TWO_FACTOR_ENABLED: \"Two-factor authentication has been enabled\",\n\n /** @default \"Two-factor authentication has been disabled\" */\n TWO_FACTOR_DISABLED: \"Two-factor authentication has been disabled\",\n\n /** @default \"Enable Two-Factor\" */\n ENABLE_TWO_FACTOR: \"Enable Two-Factor\",\n\n /** @default \"Disable Two-Factor\" */\n DISABLE_TWO_FACTOR: \"Disable Two-Factor\",\n\n /** @default \"Backup Codes\" */\n BACKUP_CODES: \"Backup Codes\",\n\n /** @default \"Save these codes in a secure place\" */\n BACKUP_CODES_DESCRIPTION: \"Save these codes in a secure place\",\n\n // --- Validation ---\n\n /** @default \"Passwords do not match\" */\n PASSWORDS_DO_NOT_MATCH: \"Passwords do not match\",\n\n /** @default \"Password is required\" */\n PASSWORD_REQUIRED: \"Password is required\",\n\n /** @default \"Email address is required\" */\n EMAIL_REQUIRED: \"Email address is required\",\n\n /** @default \"is required\" */\n IS_REQUIRED: \"is required\",\n\n /** @default \"is invalid\" */\n IS_INVALID: \"is invalid\",\n\n // --- Error Codes ---\n ...AUTH_ERROR_CODES,\n};\n\nexport type AuthLocalization = Partial<typeof authLocalization>;\n","import { AuthError } from \"@atzentis/auth-sdk\";\nimport type { AuthLocalization } from \"./auth-localization\";\nimport { authLocalization } from \"./auth-localization\";\n\n/**\n * Gets a localized error message from an error object.\n *\n * When `localizeErrors` is true, looks up the error code directly\n * in the localization dictionary (error codes are localization keys).\n *\n * Fallback chain:\n * 1. localization[error.code] (if AuthError and localizeErrors)\n * 2. error.message\n * 3. localization.REQUEST_FAILED\n * 4. \"Request failed\"\n */\nexport function getLocalizedError(\n error: unknown,\n localization: AuthLocalization,\n localizeErrors: boolean,\n): string {\n if (!localizeErrors) {\n if (error instanceof Error && error.message) return error.message;\n return authLocalization.REQUEST_FAILED;\n }\n\n if (error instanceof AuthError) {\n const errorCode = error.code as keyof typeof authLocalization;\n if (localization?.[errorCode]) return localization[errorCode];\n }\n\n if (error instanceof Error && error.message) return error.message;\n\n return localization?.REQUEST_FAILED ?? authLocalization.REQUEST_FAILED;\n}\n","// Internal hook to access auth context with error boundary\n\nimport { useContext } from \"react\";\nimport type { AuthContextValue } from \"../provider\";\nimport { AuthContext } from \"../provider\";\n\nexport function useAuthContext(): AuthContextValue {\n const context = useContext(AuthContext);\n\n if (!context) {\n throw new Error(\"useAuthContext must be used within AuthProvider\");\n }\n\n return context;\n}\n","// useApiKeys hook — API key management\n\nimport type {\n ApiKey,\n AuthError,\n CreateApiKeyRequest,\n UpdateApiKeyRequest,\n} from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useApiKeys() {\n const { client } = useAuthContext();\n\n const [apiKeys, setApiKeys] = useState<ApiKey[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.apiKeys.list();\n setApiKeys(response.data);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const create = useCallback(\n async (data: CreateApiKeyRequest) => {\n const response = await client.apiKeys.create(data);\n await refresh();\n return response;\n },\n [client, refresh],\n );\n\n const get = useCallback(\n async (keyId: string) => {\n return client.apiKeys.get(keyId);\n },\n [client],\n );\n\n const update = useCallback(\n async (keyId: string, data: UpdateApiKeyRequest) => {\n const updated = await client.apiKeys.update(keyId, data);\n await refresh();\n return updated;\n },\n [client, refresh],\n );\n\n const rotate = useCallback(\n async (keyId: string) => {\n const response = await client.apiKeys.rotate(keyId);\n await refresh();\n return response;\n },\n [client, refresh],\n );\n\n const revoke = useCallback(\n async (keyId: string) => {\n await client.apiKeys.revoke(keyId);\n await refresh();\n },\n [client, refresh],\n );\n\n const validate = useCallback(\n async (keyString: string) => {\n return client.apiKeys.validate(keyString);\n },\n [client],\n );\n\n const getUsage = useCallback(\n async (keyId: string) => {\n return client.apiKeys.getUsage(keyId);\n },\n [client],\n );\n\n return {\n apiKeys,\n isLoading,\n error,\n refresh,\n create,\n get,\n update,\n rotate,\n revoke,\n validate,\n getUsage,\n };\n}\n","// useAuth hook — auth state and methods\n\nimport type {\n GetOAuthUrlRequest,\n LoginCredentials,\n SendMagicLinkRequest,\n SignupData,\n UsernameLoginCredentials,\n VerifyMagicLinkRequest,\n VerifyOAuthCodeRequest,\n} from \"@atzentis/auth-sdk\";\nimport { useCallback } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useAuth() {\n const { client, user, isAuthenticated, isLoading, error, setUser, clearError } = useAuthContext();\n\n const login = useCallback(\n async (credentials: LoginCredentials) => {\n const response = await client.login(credentials);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const loginWithUsername = useCallback(\n async (credentials: UsernameLoginCredentials) => {\n const response = await client.loginWithUsername(credentials);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const signup = useCallback(\n async (data: SignupData) => {\n const response = await client.signup(data);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const logout = useCallback(async () => {\n await client.logout();\n setUser(null);\n }, [client, setUser]);\n\n const logoutAllDevices = useCallback(async () => {\n await client.logoutAllDevices();\n setUser(null);\n }, [client, setUser]);\n\n const getOAuthUrl = useCallback(\n (config: GetOAuthUrlRequest) => {\n return client.getOAuthUrl(config);\n },\n [client],\n );\n\n const verifyOAuthCode = useCallback(\n async (request: VerifyOAuthCodeRequest) => {\n const response = await client.verifyOAuthCode(request);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const sendMagicLink = useCallback(\n async (request: SendMagicLinkRequest) => {\n await client.sendMagicLink(request);\n },\n [client],\n );\n\n const verifyMagicLink = useCallback(\n async (request: VerifyMagicLinkRequest) => {\n const response = await client.verifyMagicLink(request);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const isUsernameAvailable = useCallback(\n async (username: string) => {\n return client.isUsernameAvailable(username);\n },\n [client],\n );\n\n const getAccessToken = useCallback(async () => {\n return client.getAccessToken();\n }, [client]);\n\n const refreshToken = useCallback(async () => {\n return client.refreshToken();\n }, [client]);\n\n const getAuthHeader = useCallback(async () => {\n const token = await client.getAccessToken();\n if (token) {\n return { Authorization: `Bearer ${token}` };\n }\n return {};\n }, [client]);\n\n return {\n user,\n isAuthenticated,\n isLoading,\n error,\n login,\n loginWithUsername,\n signup,\n logout,\n logoutAllDevices,\n getOAuthUrl,\n verifyOAuthCode,\n sendMagicLink,\n verifyMagicLink,\n isUsernameAvailable,\n getAccessToken,\n refreshToken,\n getAuthHeader,\n clearError,\n };\n}\n","import { useContext } from \"react\";\nimport type { AuthLocalization } from \"../localization\";\nimport { authLocalization } from \"../localization\";\nimport { LocalizationContext } from \"../provider\";\n\nexport interface UseAuthLocalizationResult {\n localization: Required<AuthLocalization>;\n localizeErrors: boolean;\n}\n\nexport function useAuthLocalization(): UseAuthLocalizationResult {\n const ctx = useContext(LocalizationContext);\n const localization = ctx.overrides ? { ...authLocalization, ...ctx.overrides } : authLocalization;\n return { localization, localizeErrors: ctx.localizeErrors };\n}\n","// useDevices hook — device management and trust settings\n\nimport type { AuthError, Device } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useDevices() {\n const { client } = useAuthContext();\n\n const [devices, setDevices] = useState<Device[]>([]);\n const [currentDevice, setCurrentDevice] = useState<Device | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.devices.list();\n setDevices(response.data);\n const current = response.data.find((d) => d.isCurrent) ?? null;\n setCurrentDevice(current);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const trustDevice = useCallback(\n async (id: string) => {\n await client.devices.trust(id);\n await refresh();\n },\n [client, refresh],\n );\n\n const untrustDevice = useCallback(\n async (id: string) => {\n await client.devices.untrust(id);\n await refresh();\n },\n [client, refresh],\n );\n\n const removeDevice = useCallback(\n async (id: string) => {\n await client.devices.remove(id);\n await refresh();\n },\n [client, refresh],\n );\n\n const removeAllOtherDevices = useCallback(async () => {\n await client.devices.removeAllOthers();\n await refresh();\n }, [client, refresh]);\n\n return {\n devices,\n currentDevice,\n isLoading,\n error,\n refresh,\n trustDevice,\n untrustDevice,\n removeDevice,\n removeAllOtherDevices,\n };\n}\n","// useLoginActivity hook — login history with filtering and reporting\n\nimport type { AuthError, ListLoginEventsRequest, LoginEvent } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\ninterface UseLoginActivityOptions {\n limit?: number;\n}\n\nexport function useLoginActivity(options: UseLoginActivityOptions = {}) {\n const { client } = useAuthContext();\n\n const [events, setEvents] = useState<LoginEvent[]>([]);\n const [total, setTotal] = useState(0);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n const [filterOptions, setFilterOptions] = useState<ListLoginEventsRequest>({\n limit: options.limit ?? 50,\n offset: 0,\n });\n\n const hasMore = events.length < total;\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.loginActivity.list(filterOptions);\n setEvents(response.data);\n setTotal(response.total);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client, filterOptions]);\n\n const loadMore = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.loginActivity.list({\n ...filterOptions,\n offset: events.length,\n });\n setEvents((prev) => [...prev, ...response.data]);\n setTotal(response.total);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client, filterOptions, events.length]);\n\n const filter = useCallback(\n (newOptions: ListLoginEventsRequest) => {\n const merged = { ...filterOptions, ...newOptions, offset: 0 };\n setFilterOptions(merged);\n setEvents([]);\n setTotal(0);\n },\n [filterOptions],\n );\n\n const markRecognized = useCallback(\n async (eventId: string) => {\n await client.loginActivity.markRecognized(eventId);\n },\n [client],\n );\n\n const reportSuspicious = useCallback(\n async (eventId: string) => {\n return client.loginActivity.reportSuspicious(eventId);\n },\n [client],\n );\n\n return {\n events,\n total,\n hasMore,\n isLoading,\n error,\n refresh,\n loadMore,\n filter,\n markRecognized,\n reportSuspicious,\n };\n}\n","// useOrganizations hook — organization management\n\nimport type {\n AcceptInvitationRequest,\n AuthError,\n CreateOrganizationRequest,\n DeclineInvitationRequest,\n InviteMemberRequest,\n ListInvitationsRequest,\n ListMembersRequest,\n Organization,\n UpdateMemberRequest,\n UpdateOrganizationRequest,\n} from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useOrganizations() {\n const { client } = useAuthContext();\n\n const [organizations, setOrganizations] = useState<Organization[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.organizations.list();\n setOrganizations(response.data);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const create = useCallback(\n async (data: CreateOrganizationRequest) => {\n const org = await client.organizations.create(data);\n await refresh();\n return org;\n },\n [client, refresh],\n );\n\n const update = useCallback(\n async (orgId: string, data: UpdateOrganizationRequest) => {\n const org = await client.organizations.update(orgId, data);\n await refresh();\n return org;\n },\n [client, refresh],\n );\n\n const deleteOrg = useCallback(\n async (orgId: string) => {\n await client.organizations.delete(orgId);\n await refresh();\n },\n [client, refresh],\n );\n\n const listMembers = useCallback(\n async (orgId: string, options?: ListMembersRequest) => {\n return client.organizations.listMembers(orgId, options);\n },\n [client],\n );\n\n const updateMember = useCallback(\n async (orgId: string, userId: string, data: UpdateMemberRequest) => {\n return client.organizations.updateMember(orgId, userId, data);\n },\n [client],\n );\n\n const removeMember = useCallback(\n async (orgId: string, userId: string) => {\n await client.organizations.removeMember(orgId, userId);\n },\n [client],\n );\n\n const inviteMember = useCallback(\n async (orgId: string, data: InviteMemberRequest) => {\n return client.organizations.inviteMember(orgId, data);\n },\n [client],\n );\n\n const listInvitations = useCallback(\n async (orgId: string, options?: ListInvitationsRequest) => {\n return client.organizations.listInvitations(orgId, options);\n },\n [client],\n );\n\n const resendInvitation = useCallback(\n async (orgId: string, invitationId: string) => {\n await client.organizations.resendInvitation(orgId, invitationId);\n },\n [client],\n );\n\n const cancelInvitation = useCallback(\n async (orgId: string, invitationId: string) => {\n await client.organizations.cancelInvitation(orgId, invitationId);\n },\n [client],\n );\n\n const acceptInvitation = useCallback(\n async (data: AcceptInvitationRequest) => {\n await client.organizations.acceptInvitation(data);\n },\n [client],\n );\n\n const declineInvitation = useCallback(\n async (data: DeclineInvitationRequest) => {\n await client.organizations.declineInvitation(data);\n },\n [client],\n );\n\n const leave = useCallback(\n async (orgId: string) => {\n await client.organizations.leave(orgId);\n await refresh();\n },\n [client, refresh],\n );\n\n return {\n organizations,\n isLoading,\n error,\n refresh,\n create,\n update,\n delete: deleteOrg,\n listMembers,\n updateMember,\n removeMember,\n inviteMember,\n listInvitations,\n resendInvitation,\n cancelInvitation,\n acceptInvitation,\n declineInvitation,\n leave,\n };\n}\n","// usePhone hook — phone OTP authentication\n\nimport type { AuthError } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function usePhone() {\n const { client, setUser } = useAuthContext();\n\n const [isSending, setIsSending] = useState(false);\n const [isVerifying, setIsVerifying] = useState(false);\n const [codeSent, setCodeSent] = useState(false);\n const [expiresIn, setExpiresIn] = useState<number | null>(null);\n const [error, setError] = useState<AuthError | null>(null);\n\n const sendOTP = useCallback(\n async (phoneNumber: string) => {\n setIsSending(true);\n setError(null);\n try {\n const response = await client.phone.sendOTP({ phoneNumber });\n setCodeSent(true);\n setExpiresIn(response.expiresIn);\n return response;\n } catch (err) {\n setError(err as AuthError);\n throw err;\n } finally {\n setIsSending(false);\n }\n },\n [client],\n );\n\n const verify = useCallback(\n async (phoneNumber: string, code: string) => {\n setIsVerifying(true);\n setError(null);\n try {\n const response = await client.phone.verify({ phoneNumber, code });\n setUser(response.user);\n return response;\n } catch (err) {\n setError(err as AuthError);\n throw err;\n } finally {\n setIsVerifying(false);\n }\n },\n [client, setUser],\n );\n\n const signIn = useCallback(\n async (phoneNumber: string, password: string) => {\n setIsVerifying(true);\n setError(null);\n try {\n const response = await client.phone.signIn({ phoneNumber, password });\n setUser(response.user);\n return response;\n } catch (err) {\n setError(err as AuthError);\n throw err;\n } finally {\n setIsVerifying(false);\n }\n },\n [client, setUser],\n );\n\n return {\n isSending,\n isVerifying,\n codeSent,\n expiresIn,\n error,\n sendOTP,\n verify,\n signIn,\n };\n}\n","// useSession hook — current session state\n\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useSession() {\n const { user, session, isAuthenticated, isLoading } = useAuthContext();\n\n return {\n user,\n session,\n isAuthenticated,\n isLoading,\n };\n}\n","// useSessions hook — session management with multi-session support\n\nimport type {\n AuthError,\n DeviceSession,\n RevokeAllSessionsOptions,\n Session,\n} from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useSessions() {\n const { client, session, setUser } = useAuthContext();\n\n const [sessions, setSessions] = useState<Session[]>([]);\n const [deviceSessions, setDeviceSessions] = useState<DeviceSession[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const [sessionsResponse, deviceSessionsResponse] = await Promise.all([\n client.sessions.list(),\n client.sessions.listDeviceSessions(),\n ]);\n setSessions(sessionsResponse.data);\n setDeviceSessions(deviceSessionsResponse);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const revokeSession = useCallback(\n async (id: string) => {\n await client.sessions.revoke(id);\n await refresh();\n },\n [client, refresh],\n );\n\n const revokeAllSessions = useCallback(\n async (options?: RevokeAllSessionsOptions) => {\n await client.sessions.revokeAll(options);\n await refresh();\n },\n [client, refresh],\n );\n\n const switchAccount = useCallback(\n async (sessionToken: string) => {\n const response = await client.sessions.setActive({ sessionToken });\n setUser(response.user);\n },\n [client, setUser],\n );\n\n const revokeDeviceSession = useCallback(\n async (sessionToken: string) => {\n await client.sessions.revokeDeviceSession({ sessionToken });\n await refresh();\n },\n [client, refresh],\n );\n\n return {\n session,\n sessions,\n deviceSessions,\n isLoading,\n error,\n refresh,\n revokeSession,\n revokeAllSessions,\n switchAccount,\n revokeDeviceSession,\n };\n}\n","// useUser hook — profile, 2FA, OAuth, and phone management\n\nimport type { AuthError, ConnectOAuthRequest, UserUpdate } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useUser() {\n const { client, user, setUser } = useAuthContext();\n\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const updateProfile = useCallback(\n async (data: UserUpdate) => {\n setIsLoading(true);\n setError(null);\n try {\n const updated = await client.users.update(data);\n setUser(updated);\n return updated;\n } catch (err) {\n setError(err as AuthError);\n throw err;\n } finally {\n setIsLoading(false);\n }\n },\n [client, setUser],\n );\n\n const changePassword = useCallback(\n async (currentPassword: string, newPassword: string) => {\n await client.users.changePassword({ currentPassword, newPassword });\n },\n [client],\n );\n\n const setupTwoFactor = useCallback(async () => {\n return client.users.setupTwoFactor();\n }, [client]);\n\n const verifyTwoFactorSetup = useCallback(\n async (code: string) => {\n await client.users.verifyTwoFactorSetup({ code });\n },\n [client],\n );\n\n const disableTwoFactor = useCallback(\n async (password: string) => {\n await client.users.disableTwoFactor({ password });\n },\n [client],\n );\n\n const deleteAccount = useCallback(\n async (password: string, reason?: string) => {\n await client.users.deleteAccount({ password, reason });\n setUser(null);\n },\n [client, setUser],\n );\n\n const listConnectedProviders = useCallback(async () => {\n return client.users.listConnectedProviders();\n }, [client]);\n\n const connectOAuthProvider = useCallback(\n async (data: ConnectOAuthRequest) => {\n return client.users.connectOAuthProvider(data);\n },\n [client],\n );\n\n const disconnectOAuthProvider = useCallback(\n async (provider: string) => {\n await client.users.disconnectOAuthProvider(provider);\n },\n [client],\n );\n\n const addPhoneNumber = useCallback(\n async (phoneNumber: string) => {\n await client.users.addPhoneNumber({ phoneNumber });\n },\n [client],\n );\n\n const verifyPhoneNumber = useCallback(\n async (code: string) => {\n await client.users.verifyPhoneNumber({ code });\n },\n [client],\n );\n\n const removePhoneNumber = useCallback(\n async (password: string) => {\n await client.users.removePhoneNumber({ password });\n },\n [client],\n );\n\n return {\n user,\n isLoading,\n error,\n updateProfile,\n changePassword,\n setupTwoFactor,\n verifyTwoFactorSetup,\n disableTwoFactor,\n deleteAccount,\n listConnectedProviders,\n connectOAuthProvider,\n disconnectOAuthProvider,\n addPhoneNumber,\n verifyPhoneNumber,\n removePhoneNumber,\n };\n}\n","export function getInitials(name: string): string {\n return name\n .split(\" \")\n .map((w) => w[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n}\n","\"use client\";\n\nimport type { User } from \"@atzentis/auth-sdk\";\nimport {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@atzentis/ui-shadcn\";\nimport { useCallback, useEffect } from \"react\";\nimport { getInitials } from \"../../helpers/initials\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport { useSessions } from \"../../hooks/use-sessions\";\nimport type { AccountSwitcherProps } from \"../../types/components\";\n\nexport function AccountSwitcher({\n showAddAccount = false,\n onSwitch,\n onAddAccount,\n maxAccounts = 5,\n className,\n}: AccountSwitcherProps) {\n const { deviceSessions, switchAccount, isLoading, refresh } = useSessions();\n const { localization } = useAuthLocalization();\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n const handleSwitch = useCallback(\n async (sessionToken: string, user: User) => {\n await switchAccount(sessionToken);\n onSwitch?.(user);\n },\n [switchAccount, onSwitch],\n );\n\n const visibleSessions = deviceSessions.slice(0, maxAccounts);\n const activeSession = deviceSessions.find((s) => s.isActive);\n\n return (\n <div className={className}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" disabled={isLoading}>\n {activeSession ? activeSession.user.name : localization.SELECT_ACCOUNT}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {visibleSessions.map((session) => (\n <DropdownMenuItem\n key={session.sessionToken}\n onClick={() => handleSwitch(session.sessionToken, session.user)}\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"flex h-8 w-8 items-center justify-center rounded-full bg-gray-200 text-xs font-medium\">\n {session.user.avatar ? (\n <img src={session.user.avatar} alt=\"\" className=\"h-8 w-8 rounded-full\" />\n ) : (\n getInitials(session.user.name)\n )}\n </span>\n <div className=\"flex flex-col\">\n <span className=\"text-sm font-medium\">{session.user.name}</span>\n <span className=\"text-xs text-gray-500\">{session.user.email}</span>\n </div>\n {session.isActive && <span className=\"ml-auto text-sm\">{\"\\u2713\"}</span>}\n </div>\n </DropdownMenuItem>\n ))}\n\n {showAddAccount && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={onAddAccount}>{localization.ADD_ACCOUNT}</DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n","\"use client\";\n\nimport { useSession } from \"../../hooks/use-session\";\nimport type { SessionGuardProps } from \"../../types/components\";\n\nexport function SessionGuard({\n children,\n fallback,\n loadingFallback = null,\n freshRequired = false,\n freshThreshold = 300,\n requiredRole,\n className,\n}: SessionGuardProps) {\n const { user, session, isAuthenticated, isLoading } = useSession();\n\n if (isLoading) {\n return className ? <div className={className}>{loadingFallback}</div> : <>{loadingFallback}</>;\n }\n\n if (!isAuthenticated) {\n return className ? <div className={className}>{fallback}</div> : <>{fallback}</>;\n }\n\n if (freshRequired && session) {\n const sessionAge = (Date.now() - new Date(session.createdAt).getTime()) / 1000;\n if (sessionAge > freshThreshold) {\n return className ? <div className={className}>{fallback}</div> : <>{fallback}</>;\n }\n }\n\n if (requiredRole && user) {\n const userRole = (user as unknown as Record<string, unknown>).role as string | undefined;\n if (userRole !== requiredRole) {\n return className ? <div className={className}>{fallback}</div> : <>{fallback}</>;\n }\n }\n\n return className ? <div className={className}>{children}</div> : <>{children}</>;\n}\n","\"use client\";\n\nimport type { Device } from \"@atzentis/auth-sdk\";\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { useCallback, useEffect } from \"react\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport { useDevices } from \"../../hooks/use-devices\";\nimport type { DeviceListProps } from \"../../types/components\";\n\nconst DEFAULT_DEVICE_ICONS: Record<string, string> = {\n mobile: \"\\u{1F4F1}\",\n desktop: \"\\u{1F4BB}\",\n tablet: \"\\u{1F4DF}\",\n};\n\nexport function DeviceList({\n showTrustToggle = false,\n showRemoveAction = false,\n onDeviceTrusted,\n onDeviceUntrusted,\n onDeviceRemoved,\n renderDeviceIcon,\n className,\n}: DeviceListProps) {\n const { devices, isLoading, error, refresh, trustDevice, untrustDevice, removeDevice } =\n useDevices();\n const { localization } = useAuthLocalization();\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n const handleTrustToggle = useCallback(\n async (device: Device) => {\n if (device.isTrusted) {\n await untrustDevice(device.id);\n onDeviceUntrusted?.(device);\n } else {\n await trustDevice(device.id);\n onDeviceTrusted?.(device);\n }\n },\n [trustDevice, untrustDevice, onDeviceTrusted, onDeviceUntrusted],\n );\n\n const handleRemove = useCallback(\n async (device: Device) => {\n await removeDevice(device.id);\n onDeviceRemoved?.(device);\n },\n [removeDevice, onDeviceRemoved],\n );\n\n if (isLoading && devices.length === 0) {\n return (\n <Card className={className}>\n <div className=\"p-6 text-center text-sm text-gray-500\">{localization.LOADING_DEVICES}</div>\n </Card>\n );\n }\n\n if (error) {\n return (\n <Card className={className}>\n <div className=\"p-6 text-center text-sm text-red-600\">{error.message}</div>\n </Card>\n );\n }\n\n if (devices.length === 0) {\n return (\n <Card className={className}>\n <div className=\"p-6 text-center text-sm text-gray-500\">{localization.NO_DEVICES}</div>\n </Card>\n );\n }\n\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n {devices.map((device) => (\n <div\n key={device.id}\n className=\"flex items-start justify-between gap-4 rounded border p-4\"\n >\n <div className=\"flex items-start gap-3\">\n <span className=\"text-2xl\">\n {renderDeviceIcon\n ? renderDeviceIcon(device)\n : (DEFAULT_DEVICE_ICONS[device.deviceType] ?? \"\\u{1F4BB}\")}\n </span>\n <div>\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium\">{device.name}</span>\n {device.isCurrent && (\n <span className=\"rounded bg-blue-100 px-2 py-0.5 text-xs text-blue-700\">\n {localization.CURRENT_DEVICE}\n </span>\n )}\n </div>\n <p className=\"text-sm text-gray-500\">\n {device.browser} &middot; {device.os}\n </p>\n {(device.lastCity || device.lastCountry) && (\n <p className=\"text-sm text-gray-500\">\n {[device.lastCity, device.lastCountry].filter(Boolean).join(\", \")}\n </p>\n )}\n <p className=\"text-xs text-gray-400\">\n {localization.LAST_USED} {device.lastUsedAt} &middot; {localization.IP_LABEL}{\" \"}\n {device.lastIp}\n </p>\n </div>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {showTrustToggle && (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleTrustToggle(device)}\n >\n {device.isTrusted ? localization.UNTRUST_DEVICE : localization.TRUST_DEVICE}\n </Button>\n )}\n {showRemoveAction && (\n <Button\n type=\"button\"\n variant=\"destructive\"\n size=\"sm\"\n disabled={device.isCurrent}\n onClick={() => handleRemove(device)}\n >\n {localization.REMOVE}\n </Button>\n )}\n </div>\n </div>\n ))}\n </div>\n </Card>\n );\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { useSession } from \"../../hooks/use-session\";\nimport type { LoadingBoundaryProps } from \"../../types/components\";\n\nexport function LoadingBoundary({\n children,\n spinner = <div>Loading...</div>,\n delay = 0,\n className,\n}: LoadingBoundaryProps) {\n const { isLoading } = useSession();\n const [showSpinner, setShowSpinner] = useState(delay === 0 && isLoading);\n\n useEffect(() => {\n if (!isLoading) {\n setShowSpinner(false);\n return;\n }\n\n if (delay === 0) {\n setShowSpinner(true);\n return;\n }\n\n const timer = setTimeout(() => {\n setShowSpinner(true);\n }, delay);\n\n return () => clearTimeout(timer);\n }, [isLoading, delay]);\n\n if (isLoading && showSpinner) {\n return className ? <div className={className}>{spinner}</div> : <>{spinner}</>;\n }\n\n if (isLoading) {\n return null;\n }\n\n return <>{children}</>;\n}\n","\"use client\";\n\nimport { Button } from \"@atzentis/ui-shadcn\";\n\nexport interface SubmitButtonProps {\n loading: boolean;\n loadingLabel: string;\n actionLabel: string;\n className?: string;\n}\n\nexport function SubmitButton({ loading, loadingLabel, actionLabel, className }: SubmitButtonProps) {\n return (\n <Button type=\"submit\" disabled={loading} className={className ?? \"w-full\"}>\n {loading ? loadingLabel : actionLabel}\n </Button>\n );\n}\n","export type RiskLevel = \"low\" | \"medium\" | \"high\";\n\nexport function getRiskLevel(score: number): RiskLevel {\n if (score < 30) return \"low\";\n if (score < 60) return \"medium\";\n return \"high\";\n}\n\nexport const RISK_COLORS: Record<RiskLevel, string> = {\n low: \"text-green-600 bg-green-50\",\n medium: \"text-yellow-600 bg-yellow-50\",\n high: \"text-red-600 bg-red-50\",\n};\n","\"use client\";\n\nimport type { LoginEvent } from \"@atzentis/auth-sdk\";\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { useCallback, useEffect } from \"react\";\nimport { RISK_COLORS, getRiskLevel } from \"../../helpers/risk-utils\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport { useLoginActivity } from \"../../hooks/use-login-activity\";\nimport type { LoginActivityFeedProps } from \"../../types/components\";\n\nexport function LoginActivityFeed({\n limit = 20,\n showRiskBadge = false,\n showReportActions = false,\n filterByStatus,\n onSuspiciousReported,\n className,\n}: LoginActivityFeedProps) {\n const {\n events,\n hasMore,\n isLoading,\n error,\n refresh,\n loadMore,\n filter,\n markRecognized,\n reportSuspicious,\n } = useLoginActivity({ limit });\n const { localization } = useAuthLocalization();\n\n useEffect(() => {\n if (filterByStatus) {\n filter({ status: filterByStatus, limit });\n }\n refresh();\n }, [refresh, filter, filterByStatus, limit]);\n\n const handleMarkRecognized = useCallback(\n async (event: LoginEvent) => {\n await markRecognized(event.id);\n },\n [markRecognized],\n );\n\n const handleReportSuspicious = useCallback(\n async (event: LoginEvent) => {\n await reportSuspicious(event.id);\n onSuspiciousReported?.(event);\n },\n [reportSuspicious, onSuspiciousReported],\n );\n\n if (isLoading && events.length === 0) {\n return (\n <Card className={className}>\n <div className=\"p-6 text-center text-sm text-gray-500\">{localization.LOADING_ACTIVITY}</div>\n </Card>\n );\n }\n\n if (error) {\n return (\n <Card className={className}>\n <div className=\"p-6 text-center text-sm text-red-600\">{error.message}</div>\n </Card>\n );\n }\n\n if (events.length === 0) {\n return (\n <Card className={className}>\n <div className=\"p-6 text-center text-sm text-gray-500\">{localization.NO_ACTIVITY}</div>\n </Card>\n );\n }\n\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n {events.map((event) => {\n const riskLevel = getRiskLevel(event.riskScore);\n return (\n <div\n key={event.id}\n className=\"flex items-start justify-between gap-4 rounded border p-4\"\n >\n <div>\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium\">{event.deviceName}</span>\n <span className=\"rounded bg-gray-100 px-2 py-0.5 text-xs text-gray-600\">\n {event.status}\n </span>\n {showRiskBadge && (\n <span className={`rounded px-2 py-0.5 text-xs ${RISK_COLORS[riskLevel]}`}>\n {riskLevel}\n </span>\n )}\n </div>\n <p className=\"text-sm text-gray-500\">\n {event.method} &middot; {event.ip}\n </p>\n {(event.city || event.country) && (\n <p className=\"text-sm text-gray-500\">\n {[event.city, event.country].filter(Boolean).join(\", \")}\n </p>\n )}\n <p className=\"text-xs text-gray-400\">{event.createdAt}</p>\n </div>\n\n {showReportActions && (\n <div className=\"flex items-center gap-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleMarkRecognized(event)}\n >\n {localization.MARK_RECOGNIZED}\n </Button>\n <Button\n type=\"button\"\n variant=\"destructive\"\n size=\"sm\"\n onClick={() => handleReportSuspicious(event)}\n >\n {localization.REPORT_SUSPICIOUS}\n </Button>\n </div>\n )}\n </div>\n );\n })}\n\n {hasMore && (\n <div className=\"text-center\">\n <Button type=\"button\" variant=\"outline\" disabled={isLoading} onClick={loadMore}>\n {isLoading ? localization.LOADING : localization.LOAD_MORE}\n </Button>\n </div>\n )}\n </div>\n </Card>\n );\n}\n","import { AuthError, AuthErrorCode } from \"@atzentis/auth-sdk\";\n\n/**\n * Safely converts an unknown caught value to AuthError.\n * If the value is already an AuthError, returns it directly.\n * Otherwise wraps the message in a new AuthError.\n */\nexport function toAuthError(error: unknown): AuthError {\n if (error instanceof AuthError) return error;\n const message = error instanceof Error ? error.message : String(error);\n return new AuthError({\n code: AuthErrorCode.NetworkError,\n message,\n statusCode: 0,\n });\n}\n","import { z } from \"zod\";\n\n// Credential mode: email-or-username + password\nexport const credentialLoginSchema = z.object({\n identity: z.string().min(1, \"Email or username is required\"),\n password: z.string().min(1, \"Password is required\"),\n captchaToken: z.string().optional(),\n});\nexport type CredentialLoginFormData = z.infer<typeof credentialLoginSchema>;\n\n// Phone mode: phone number + OTP code\nexport const phoneLoginSchema = z.object({\n countryCode: z.string(),\n phoneNumber: z.string().min(1, \"Phone number is required\"),\n});\nexport type PhoneLoginFormData = z.infer<typeof phoneLoginSchema>;\n\nexport const otpVerifySchema = z.object({\n code: z.string().length(6, \"Code must be 6 digits\"),\n});\nexport type OtpVerifyFormData = z.infer<typeof otpVerifySchema>;\n","export function isEmail(value: string): boolean {\n return value.includes(\"@\");\n}\n","\"use client\";\n\nimport type { OAuthProvider } from \"@atzentis/auth-sdk\";\nimport { Button } from \"@atzentis/ui-shadcn\";\nimport { useCallback, useState } from \"react\";\nimport { useAuth } from \"../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport type { OAuthButtonProps } from \"../../types/components\";\n\nconst PROVIDER_NAMES: Record<OAuthProvider, string> = {\n google: \"Google\",\n github: \"GitHub\",\n apple: \"Apple\",\n microsoft: \"Microsoft\",\n atzentis: \"Atzentis\",\n};\n\nexport function OAuthButton({\n provider,\n redirectUri,\n state,\n variant = \"outline\",\n size = \"md\",\n className,\n}: OAuthButtonProps) {\n const { getOAuthUrl } = useAuth();\n const { localization } = useAuthLocalization();\n const [isLoading, setIsLoading] = useState(false);\n\n const sizeMap = {\n sm: \"sm\" as const,\n md: \"default\" as const,\n lg: \"lg\" as const,\n };\n\n const providerName = PROVIDER_NAMES[provider];\n\n const handleClick = useCallback(async () => {\n setIsLoading(true);\n try {\n const url = await getOAuthUrl({ provider, redirectUri, state: state ?? \"\" });\n window.location.href = url;\n } catch {\n setIsLoading(false);\n }\n }, [getOAuthUrl, provider, redirectUri, state]);\n\n return (\n <Button\n type=\"button\"\n variant={variant === \"filled\" ? \"default\" : \"outline\"}\n size={sizeMap[size]}\n disabled={isLoading}\n onClick={handleClick}\n aria-label={`${localization.SIGN_IN_WITH} ${providerName}`}\n className={className}\n >\n {isLoading ? localization.REDIRECTING : `${localization.CONTINUE_WITH} ${providerName}`}\n </Button>\n );\n}\n","import { z } from \"zod\";\n\nexport const phoneNumberSchema = z.object({\n countryCode: z.string(),\n phoneNumber: z.string().min(1, \"Phone number is required\"),\n});\nexport type PhoneNumberFormData = z.infer<typeof phoneNumberSchema>;\n\nexport const otpVerifySchema = z.object({\n code: z.string().length(6, \"Code must be 6 digits\"),\n});\nexport type OtpVerifyFormData = z.infer<typeof otpVerifySchema>;\n\nexport const phonePasswordSchema = z.object({\n countryCode: z.string(),\n phoneNumber: z.string().min(1, \"Phone number is required\"),\n password: z.string().min(1, \"Password is required\"),\n});\nexport type PhonePasswordFormData = z.infer<typeof phonePasswordSchema>;\n","export interface CountryCode {\n code: string;\n country: string;\n name: string;\n flag: string;\n}\n\nexport const COUNTRY_CODES: CountryCode[] = [\n { code: \"+30\", country: \"GR\", name: \"Greece\", flag: \"\\u{1F1EC}\\u{1F1F7}\" },\n { code: \"+49\", country: \"DE\", name: \"Germany\", flag: \"\\u{1F1E9}\\u{1F1EA}\" },\n { code: \"+1\", country: \"US\", name: \"United States\", flag: \"\\u{1F1FA}\\u{1F1F8}\" },\n { code: \"+44\", country: \"GB\", name: \"United Kingdom\", flag: \"\\u{1F1EC}\\u{1F1E7}\" },\n { code: \"+33\", country: \"FR\", name: \"France\", flag: \"\\u{1F1EB}\\u{1F1F7}\" },\n { code: \"+39\", country: \"IT\", name: \"Italy\", flag: \"\\u{1F1EE}\\u{1F1F9}\" },\n { code: \"+34\", country: \"ES\", name: \"Spain\", flag: \"\\u{1F1EA}\\u{1F1F8}\" },\n { code: \"+31\", country: \"NL\", name: \"Netherlands\", flag: \"\\u{1F1F3}\\u{1F1F1}\" },\n { code: \"+43\", country: \"AT\", name: \"Austria\", flag: \"\\u{1F1E6}\\u{1F1F9}\" },\n { code: \"+41\", country: \"CH\", name: \"Switzerland\", flag: \"\\u{1F1E8}\\u{1F1ED}\" },\n { code: \"+357\", country: \"CY\", name: \"Cyprus\", flag: \"\\u{1F1E8}\\u{1F1FE}\" },\n { code: \"+90\", country: \"TR\", name: \"Turkey\", flag: \"\\u{1F1F9}\\u{1F1F7}\" },\n];\n","\"use client\";\n\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { FormInput, FormPasswordInput, FormSelect, OTPInput } from \"@atzentis/ui-shared\";\nimport type { FormSelectOption } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../helpers/to-auth-error\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport { usePhone } from \"../../hooks/use-phone\";\nimport { getLocalizedError } from \"../../localization\";\nimport type { OtpVerifyFormData, PhoneNumberFormData } from \"../../schemas/phone-login-schema\";\nimport { otpVerifySchema, phoneNumberSchema } from \"../../schemas/phone-login-schema\";\nimport type { PhoneLoginFormProps } from \"../../types/components\";\nimport { COUNTRY_CODES } from \"../shared/country-codes\";\nimport { SubmitButton } from \"../shared/submit-button\";\n\nexport function PhoneLoginForm({\n onSuccess,\n onError,\n allowedCountryCodes = [\"+30\", \"+49\"],\n showPasswordFallback = false,\n className,\n}: PhoneLoginFormProps) {\n const { sendOTP, verify, signIn, isSending, isVerifying, expiresIn } = usePhone();\n const { localization, localizeErrors } = useAuthLocalization();\n const [step, setStep] = useState<\"phone\" | \"otp\" | \"password\">(\"phone\");\n const [formError, setFormError] = useState<string | null>(null);\n const [fullPhoneNumber, setFullPhoneNumber] = useState(\"\");\n\n const filteredCountryCodes = useMemo(\n () => COUNTRY_CODES.filter((c) => allowedCountryCodes.includes(c.code)),\n [allowedCountryCodes],\n );\n\n const phoneForm = useForm<PhoneNumberFormData>({\n resolver: zodResolver(phoneNumberSchema),\n defaultValues: {\n countryCode: filteredCountryCodes[0]?.code ?? \"+30\",\n phoneNumber: \"\",\n },\n });\n\n const otpForm = useForm<OtpVerifyFormData>({\n resolver: zodResolver(otpVerifySchema),\n defaultValues: { code: \"\" },\n });\n\n const [passwordValue, setPasswordValue] = useState(\"\");\n\n const countryCodeOptions: FormSelectOption[] = filteredCountryCodes.map((c) => ({\n value: c.code,\n label: `${c.flag} ${c.name} (${c.code})`,\n }));\n\n const handlePhoneSubmit = useCallback(\n async (data: PhoneNumberFormData) => {\n setFormError(null);\n const phone = `${data.countryCode}${data.phoneNumber}`;\n setFullPhoneNumber(phone);\n try {\n await sendOTP(phone);\n setStep(\"otp\");\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n }\n },\n [sendOTP, onError, localization, localizeErrors],\n );\n\n const handleOtpSubmit = useCallback(\n async (data: OtpVerifyFormData) => {\n setFormError(null);\n try {\n const response = await verify(fullPhoneNumber, data.code);\n onSuccess(response.user);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n }\n },\n [verify, fullPhoneNumber, onSuccess, onError, localization, localizeErrors],\n );\n\n const handleOtpComplete = useCallback(\n (code: string) => {\n otpForm.setValue(\"code\", code);\n otpForm.handleSubmit(handleOtpSubmit)();\n },\n [otpForm, handleOtpSubmit],\n );\n\n const handlePasswordSubmit = useCallback(\n async (e: React.FormEvent) => {\n e.preventDefault();\n setFormError(null);\n try {\n const response = await signIn(fullPhoneNumber, passwordValue);\n onSuccess(response.user);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n }\n },\n [signIn, fullPhoneNumber, passwordValue, onSuccess, onError, localization, localizeErrors],\n );\n\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n {step === \"phone\" && (\n <form onSubmit={phoneForm.handleSubmit(handlePhoneSubmit)} className=\"space-y-4\">\n <FormSelect\n label={localization.COUNTRY_CODE}\n options={countryCodeOptions}\n value={phoneForm.watch(\"countryCode\")}\n onValueChange={(value) => phoneForm.setValue(\"countryCode\", value)}\n />\n\n <FormInput\n label={localization.PHONE_NUMBER_PLACEHOLDER}\n id=\"phone-number\"\n type=\"tel\"\n error={phoneForm.formState.errors.phoneNumber?.message}\n {...phoneForm.register(\"phoneNumber\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSending}\n loadingLabel={localization.SENDING_VERIFICATION_CODE}\n actionLabel={localization.SEND_VERIFICATION_CODE}\n />\n </form>\n )}\n\n {step === \"otp\" && (\n <form onSubmit={otpForm.handleSubmit(handleOtpSubmit)} className=\"space-y-4\">\n {/* biome-ignore lint/a11y/noLabelWithoutControl: OTPInput renders its own input cells */}\n <label className=\"block text-sm font-medium\">\n {localization.VERIFICATION_CODE_LABEL}\n <OTPInput length={6} onComplete={handleOtpComplete} disabled={isVerifying} />\n </label>\n\n {expiresIn !== null && (\n <p className=\"text-sm text-gray-500\">\n {localization.CODE_EXPIRES_IN} {expiresIn}s\n </p>\n )}\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isVerifying}\n loadingLabel={localization.VERIFYING}\n actionLabel={localization.VERIFY}\n />\n\n {showPasswordFallback && (\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"p-0 h-auto text-sm\"\n onClick={() => setStep(\"password\")}\n >\n {localization.USE_PASSWORD_INSTEAD}\n </Button>\n )}\n </form>\n )}\n\n {step === \"password\" && (\n <form onSubmit={handlePasswordSubmit} className=\"space-y-4\">\n <FormPasswordInput\n label={localization.PASSWORD}\n id=\"phone-password\"\n value={passwordValue}\n onChange={(e) => setPasswordValue(e.target.value)}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isVerifying}\n loadingLabel={localization.SIGNING_IN}\n actionLabel={localization.SIGN_IN}\n />\n </form>\n )}\n </div>\n </Card>\n );\n}\n","\"use client\";\n\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { FormInput, FormPasswordInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../helpers/to-auth-error\";\nimport { useAuth } from \"../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport { getLocalizedError } from \"../../localization\";\nimport type { CredentialLoginFormData } from \"../../schemas/login-schema\";\nimport { credentialLoginSchema } from \"../../schemas/login-schema\";\nimport type { LoginFormProps } from \"../../types/components\";\nimport { SubmitButton } from \"../shared/submit-button\";\nimport { isEmail } from \"../shared/utils\";\nimport { OAuthButton } from \"./oauth-button\";\nimport { PhoneLoginForm } from \"./phone-login-form\";\n\nexport function LoginForm({\n onSuccess,\n onError,\n enablePhone = false,\n enableForgotPassword = false,\n onForgotPasswordClick,\n className,\n ...oauthProps\n}: LoginFormProps) {\n const oauthProviders = \"oauthProviders\" in oauthProps ? oauthProps.oauthProviders : undefined;\n const oauthRedirectUri = \"oauthRedirectUri\" in oauthProps ? oauthProps.oauthRedirectUri : \"\";\n\n const { login, loginWithUsername } = useAuth();\n const { localization, localizeErrors } = useAuthLocalization();\n const [mode, setMode] = useState<\"credential\" | \"phone\">(\"credential\");\n const [formError, setFormError] = useState<string | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const {\n register,\n handleSubmit,\n watch,\n formState: { errors },\n } = useForm<CredentialLoginFormData>({\n resolver: zodResolver(credentialLoginSchema),\n defaultValues: { identity: \"\", password: \"\" },\n });\n\n const identityValue = watch(\"identity\");\n\n const onSubmit = useCallback(\n async (data: CredentialLoginFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n if (isEmail(data.identity)) {\n const response = await login({\n email: data.identity,\n password: data.password,\n captchaToken: data.captchaToken,\n });\n onSuccess(response.user);\n } else {\n const response = await loginWithUsername({\n username: data.identity,\n password: data.password,\n captchaToken: data.captchaToken,\n });\n onSuccess(response.user);\n }\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [login, loginWithUsername, onSuccess, onError, localization, localizeErrors],\n );\n\n const handleSwitchToPhone = useCallback(() => {\n setMode(\"phone\");\n setFormError(null);\n }, []);\n\n const handleSwitchToCredential = useCallback(() => {\n setMode(\"credential\");\n setFormError(null);\n }, []);\n\n if (mode === \"phone\") {\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n <PhoneLoginForm onSuccess={onSuccess} onError={onError} />\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"p-0 h-auto text-sm\"\n onClick={handleSwitchToCredential}\n >\n {localization.USE_EMAIL_INSTEAD}\n </Button>\n </div>\n </Card>\n );\n }\n\n return (\n <Card className={className}>\n <form onSubmit={handleSubmit(onSubmit)} className=\"p-6 space-y-4\">\n <FormInput\n label={localization.SIGN_IN_USERNAME_PLACEHOLDER}\n id=\"login-identity\"\n type=\"text\"\n autoComplete=\"username\"\n error={errors.identity?.message}\n {...register(\"identity\")}\n />\n\n {identityValue && (\n <FormPasswordInput\n label={localization.PASSWORD}\n id=\"login-password\"\n autoComplete=\"current-password\"\n error={errors.password?.message}\n {...register(\"password\")}\n />\n )}\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.SIGNING_IN}\n actionLabel={localization.SIGN_IN}\n />\n\n <div className=\"flex items-center justify-between text-sm\">\n {enableForgotPassword && (\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"p-0 h-auto\"\n onClick={onForgotPasswordClick}\n >\n {localization.FORGOT_PASSWORD_LINK}\n </Button>\n )}\n {enablePhone && (\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"p-0 h-auto\"\n onClick={handleSwitchToPhone}\n >\n {localization.USE_PHONE_INSTEAD}\n </Button>\n )}\n </div>\n\n {oauthProviders && oauthProviders.length > 0 && (\n <>\n <div className=\"relative flex items-center py-2\">\n <div className=\"flex-grow border-t border-gray-300\" />\n <span className=\"mx-4 text-sm text-gray-500\">{localization.OR_CONTINUE_WITH}</span>\n <div className=\"flex-grow border-t border-gray-300\" />\n </div>\n <div className=\"space-y-2\">\n {oauthProviders.map((provider) => (\n <OAuthButton key={provider} provider={provider} redirectUri={oauthRedirectUri} />\n ))}\n </div>\n </>\n )}\n </form>\n </Card>\n );\n}\n","import { z } from \"zod\";\n\nexport const magicLinkSchema = z.object({\n email: z.string().email(\"Invalid email address\"),\n});\nexport type MagicLinkFormData = z.infer<typeof magicLinkSchema>;\n","\"use client\";\n\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { FormInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../helpers/to-auth-error\";\nimport { useAuth } from \"../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport { getLocalizedError } from \"../../localization\";\nimport type { MagicLinkFormData } from \"../../schemas/magic-link-schema\";\nimport { magicLinkSchema } from \"../../schemas/magic-link-schema\";\nimport type { MagicLinkFormProps } from \"../../types/components\";\nimport { SubmitButton } from \"../shared/submit-button\";\n\nfunction maskEmail(email: string): string {\n const [local, domain] = email.split(\"@\");\n if (!local || !domain) return email;\n const masked = local.length <= 2 ? `${local[0]}***` : `${local[0]}***${local[local.length - 1]}`;\n return `${masked}@${domain}`;\n}\n\nexport function MagicLinkForm({ redirectUrl, onSuccess, onError, className }: MagicLinkFormProps) {\n const { sendMagicLink } = useAuth();\n const { localization, localizeErrors } = useAuthLocalization();\n const [sent, setSent] = useState(false);\n const [sentEmail, setSentEmail] = useState(\"\");\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [formError, setFormError] = useState<string | null>(null);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n getValues,\n } = useForm<MagicLinkFormData>({\n resolver: zodResolver(magicLinkSchema),\n defaultValues: { email: \"\" },\n });\n\n const onSubmit = useCallback(\n async (data: MagicLinkFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await sendMagicLink({ email: data.email, redirectUrl });\n setSent(true);\n setSentEmail(data.email);\n onSuccess?.();\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [sendMagicLink, redirectUrl, onSuccess, onError, localization, localizeErrors],\n );\n\n const handleResend = useCallback(async () => {\n const email = getValues(\"email\");\n setFormError(null);\n setIsSubmitting(true);\n try {\n await sendMagicLink({ email, redirectUrl });\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n } finally {\n setIsSubmitting(false);\n }\n }, [sendMagicLink, redirectUrl, getValues, localization, localizeErrors]);\n\n if (sent) {\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4 text-center\">\n <p className=\"text-sm\">\n {localization.MAGIC_LINK_EMAIL} <strong>{maskEmail(sentEmail)}</strong>\n </p>\n <p className=\"text-sm text-gray-500\">{localization.MAGIC_LINK_HINT}</p>\n <Button type=\"button\" variant=\"outline\" disabled={isSubmitting} onClick={handleResend}>\n {isSubmitting ? localization.RESENDING : localization.RESEND}\n </Button>\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n </div>\n </Card>\n );\n }\n\n return (\n <Card className={className}>\n <form onSubmit={handleSubmit(onSubmit)} className=\"p-6 space-y-4\">\n <FormInput\n label={localization.EMAIL}\n id=\"magic-link-email\"\n type=\"email\"\n autoComplete=\"email\"\n error={errors.email?.message}\n {...register(\"email\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.SENDING}\n actionLabel={localization.MAGIC_LINK_ACTION}\n />\n </form>\n </Card>\n );\n}\n","import { z } from \"zod\";\n\nexport const signupSchema = z.object({\n email: z.string().email(\"Invalid email address\"),\n password: z.string().min(8, \"Password must be at least 8 characters\"),\n name: z.string().min(1, \"Name is required\"),\n username: z.string().optional(),\n phoneNumber: z.string().optional(),\n organizationName: z.string().optional(),\n acceptTerms: z.boolean(),\n captchaToken: z.string().optional(),\n});\nexport type SignupFormData = z.infer<typeof signupSchema>;\n","\"use client\";\n\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { FormInput, FormPasswordInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../helpers/to-auth-error\";\nimport { useAuth } from \"../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport { getLocalizedError } from \"../../localization\";\nimport type { SignupFormData } from \"../../schemas/signup-schema\";\nimport { signupSchema } from \"../../schemas/signup-schema\";\nimport type { SignupFormProps } from \"../../types/components\";\nimport { SubmitButton } from \"../shared/submit-button\";\n\nexport function SignupForm({\n onSuccess,\n onError,\n showUsernameField = false,\n showPhoneField = false,\n organizationName,\n acceptTermsRequired = false,\n onLoginClick,\n className,\n}: SignupFormProps) {\n const { signup } = useAuth();\n const { localization, localizeErrors } = useAuthLocalization();\n const [formError, setFormError] = useState<string | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm<SignupFormData>({\n resolver: zodResolver(\n acceptTermsRequired\n ? signupSchema.refine((data) => data.acceptTerms === true, {\n message: localization.ACCEPT_TERMS_ERROR,\n path: [\"acceptTerms\"],\n })\n : signupSchema,\n ),\n defaultValues: {\n email: \"\",\n password: \"\",\n name: \"\",\n username: \"\",\n phoneNumber: \"\",\n organizationName: organizationName ?? \"\",\n acceptTerms: false,\n },\n });\n\n const onSubmit = useCallback(\n async (data: SignupFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n const response = await signup({\n email: data.email,\n password: data.password,\n name: data.name,\n username: data.username,\n organizationName: data.organizationName,\n acceptTerms: data.acceptTerms,\n });\n onSuccess(response.user);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [signup, onSuccess, onError, localization, localizeErrors],\n );\n\n return (\n <Card className={className}>\n <form onSubmit={handleSubmit(onSubmit)} className=\"p-6 space-y-4\">\n <FormInput\n label={localization.NAME}\n id=\"signup-name\"\n type=\"text\"\n autoComplete=\"name\"\n error={errors.name?.message}\n {...register(\"name\")}\n />\n\n <FormInput\n label={localization.EMAIL}\n id=\"signup-email\"\n type=\"email\"\n autoComplete=\"email\"\n error={errors.email?.message}\n {...register(\"email\")}\n />\n\n <FormPasswordInput\n label={localization.PASSWORD}\n id=\"signup-password\"\n autoComplete=\"new-password\"\n error={errors.password?.message}\n {...register(\"password\")}\n />\n\n {showUsernameField && (\n <FormInput\n label={localization.USERNAME}\n id=\"signup-username\"\n type=\"text\"\n autoComplete=\"username\"\n error={errors.username?.message}\n {...register(\"username\")}\n />\n )}\n\n {showPhoneField && (\n <FormInput\n label={localization.PHONE_NUMBER_PLACEHOLDER}\n id=\"signup-phone\"\n type=\"tel\"\n autoComplete=\"tel\"\n error={errors.phoneNumber?.message}\n {...register(\"phoneNumber\")}\n />\n )}\n\n {acceptTermsRequired && (\n <div className=\"flex items-center gap-2\">\n <input\n id=\"signup-terms\"\n type=\"checkbox\"\n aria-invalid={errors.acceptTerms ? true : undefined}\n {...register(\"acceptTerms\")}\n />\n <label htmlFor=\"signup-terms\" className=\"text-sm\">\n {localization.ACCEPT_TERMS}\n </label>\n {errors.acceptTerms && (\n <p className=\"text-sm text-red-600\">{errors.acceptTerms.message}</p>\n )}\n </div>\n )}\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.SIGNING_IN}\n actionLabel={localization.SIGN_UP_ACTION}\n />\n\n {onLoginClick && (\n <p className=\"text-sm text-center\">\n {localization.ALREADY_HAVE_AN_ACCOUNT}{\" \"}\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"p-0 h-auto text-sm\"\n onClick={onLoginClick}\n >\n {localization.SIGN_IN}\n </Button>\n </p>\n )}\n </form>\n </Card>\n );\n}\n","\"use client\";\n\nimport {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@atzentis/ui-shadcn\";\nimport { useEffect } from \"react\";\nimport { getInitials } from \"../../helpers/initials\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport { useOrganizations } from \"../../hooks/use-organizations\";\nimport type { OrganizationMenuProps } from \"../../types/components\";\n\nexport function OrganizationMenu({\n showCreateNew = false,\n currentOrgId,\n onSwitch,\n onCreateNew,\n className,\n}: OrganizationMenuProps) {\n const { organizations, isLoading, refresh } = useOrganizations();\n const { localization } = useAuthLocalization();\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n const currentOrg = organizations.find((o) => o.id === currentOrgId);\n\n return (\n <div className={className}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" disabled={isLoading}>\n {currentOrg ? (\n <span className=\"flex items-center gap-2\">\n {currentOrg.logo ? (\n <img src={currentOrg.logo} alt=\"\" className=\"h-5 w-5 rounded\" />\n ) : (\n <span className=\"flex h-5 w-5 items-center justify-center rounded bg-gray-200 text-xs\">\n {getInitials(currentOrg.name)}\n </span>\n )}\n {currentOrg.name}\n </span>\n ) : (\n localization.SELECT_ORGANIZATION\n )}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {organizations.map((org) => (\n <DropdownMenuItem key={org.id} onClick={() => onSwitch?.(org)}>\n <div className=\"flex items-center gap-2\">\n {org.logo ? (\n <img src={org.logo} alt=\"\" className=\"h-5 w-5 rounded\" />\n ) : (\n <span className=\"flex h-5 w-5 items-center justify-center rounded bg-gray-200 text-xs\">\n {getInitials(org.name)}\n </span>\n )}\n <span>{org.name}</span>\n {org.id === currentOrgId && <span className=\"ml-auto\">{\"\\u2713\"}</span>}\n </div>\n </DropdownMenuItem>\n ))}\n\n {showCreateNew && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={onCreateNew}>\n {localization.CREATE_ORGANIZATION}\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n","\"use client\";\n\nimport {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@atzentis/ui-shadcn\";\nimport { useCallback } from \"react\";\nimport { getInitials } from \"../../helpers/initials\";\nimport { useAuth } from \"../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport { useSession } from \"../../hooks/use-session\";\nimport type { UserMenuProps } from \"../../types/components\";\n\nexport function UserMenu({ showOrganization = false, menuItems, className }: UserMenuProps) {\n const { user } = useSession();\n const { logout } = useAuth();\n const { localization } = useAuthLocalization();\n\n const handleSignOut = useCallback(async () => {\n await logout();\n }, [logout]);\n\n if (!user) return null;\n\n return (\n <div className={className}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\">\n <span className=\"flex items-center gap-2\">\n {user.avatar ? (\n <img src={user.avatar} alt=\"\" className=\"h-8 w-8 rounded-full\" />\n ) : (\n <span className=\"flex h-8 w-8 items-center justify-center rounded-full bg-gray-200 text-xs font-medium\">\n {getInitials(user.name)}\n </span>\n )}\n <span className=\"text-sm font-medium\">{user.name}</span>\n </span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuLabel>\n <div>\n <p className=\"text-sm\">{user.email}</p>\n {showOrganization && (\n <p className=\"text-xs text-gray-500\">{localization.ORGANIZATION}</p>\n )}\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n\n {menuItems?.map((item) => (\n <DropdownMenuItem key={item.label} onClick={item.onClick}>\n {item.label}\n </DropdownMenuItem>\n ))}\n\n {menuItems && menuItems.length > 0 && <DropdownMenuSeparator />}\n\n <DropdownMenuItem onClick={handleSignOut}>{localization.SIGN_OUT}</DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/provider/auth-provider.tsx","../src/localization/error-codes.ts","../src/localization/auth-localization.ts","../src/localization/get-localized-error.ts","../src/hooks/use-auth-context.ts","../src/hooks/use-api-keys.ts","../src/hooks/use-auth.ts","../src/hooks/use-auth-localization.ts","../src/hooks/use-devices.ts","../src/hooks/use-login-activity.ts","../src/hooks/use-organizations.ts","../src/hooks/use-passkeys.ts","../src/hooks/use-phone.ts","../src/hooks/use-session.ts","../src/hooks/use-sessions.ts","../src/hooks/use-user.ts","../src/components/settings/account-view-sections.ts","../src/helpers/to-auth-error.ts","../src/schemas/change-email-schema.ts","../src/components/shared/submit-button.tsx","../src/components/shared/utils.ts","../src/components/settings/cards/change-email.tsx","../src/helpers/initials.ts","../src/components/settings/cards/update-avatar.tsx","../src/schemas/update-name-schema.ts","../src/components/settings/cards/update-name.tsx","../src/schemas/update-username-schema.ts","../src/components/settings/cards/update-username.tsx","../src/components/settings/cards/account-settings.tsx","../src/components/settings/cards/api-keys.tsx","../src/components/settings/cards/delete-account.tsx","../src/components/settings/cards/providers.tsx","../src/schemas/change-password-schema.ts","../src/components/settings/cards/change-password.tsx","../src/components/settings/cards/passkeys.tsx","../src/components/settings/cards/two-factor.tsx","../src/components/settings/cards/security-settings.tsx","../src/components/settings/cards/sessions.tsx","../src/components/settings/account-view.tsx","../src/components/sessions/account-switcher.tsx","../src/components/sessions/session-guard.tsx","../src/components/auth/auth-view-paths.ts","../src/schemas/email-otp-schema.ts","../src/components/auth/forms/email-otp.tsx","../src/components/auth/forms/email-verification.tsx","../src/schemas/forgot-password-schema.ts","../src/components/auth/forms/forgot-password.tsx","../src/schemas/login-schema.ts","../src/components/auth/oauth-button.tsx","../src/schemas/phone-login-schema.ts","../src/components/shared/country-codes.ts","../src/components/auth/forms/phone-login.tsx","../src/components/auth/forms/login.tsx","../src/schemas/recover-account-schema.ts","../src/components/auth/forms/recover-account.tsx","../src/schemas/reset-password-schema.ts","../src/components/auth/forms/reset-password.tsx","../src/schemas/signup-schema.ts","../src/components/auth/forms/signup.tsx","../src/schemas/two-factor-schema.ts","../src/components/auth/forms/two-factor.tsx","../src/components/auth/auth-view.tsx","../src/schemas/magic-link-schema.ts","../src/components/auth/forms/magic-link.tsx","../src/components/devices/device-list.tsx","../src/components/shared/loading-boundary.tsx","../src/helpers/risk-utils.ts","../src/components/activity/login-activity-feed.tsx","../src/components/organizations/organization-menu.tsx","../src/components/users/user-menu.tsx"],"names":["useState","useCallback","useContext","AuthError","jsx","Button","useEffect","Card","jsxs","z","useForm","zodResolver","FormInput","Input","CardHeader","CardTitle","CardDescription","CardContent","FormPasswordInput","Fragment","useRef","useMemo","OTPInput","otpVerifySchema","FormSelect","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem","DropdownMenuSeparator"],"mappings":"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","file":"index.js","sourcesContent":["// AuthProvider — React context provider for @atzentis/auth-react\n\nimport type { AuthError, User } from \"@atzentis/auth-sdk\";\nimport { AuthClient } from \"@atzentis/auth-sdk\";\nimport type { Session } from \"@atzentis/auth-sdk\";\nimport { createContext, useCallback, useMemo, useState } from \"react\";\nimport type { AuthLocalization } from \"../localization\";\nimport type { AuthContextValue, AuthProviderProps } from \"./provider.types\";\n\nexport const AuthContext = createContext<AuthContextValue | null>(null);\nexport interface LocalizationContextValue {\n overrides: AuthLocalization | null;\n localizeErrors: boolean;\n}\n\nexport const LocalizationContext = createContext<LocalizationContextValue>({\n overrides: null,\n localizeErrors: true,\n});\n\nexport function AuthProvider({\n apiKey,\n baseUrl,\n autoRefreshToken,\n refreshThreshold,\n timeout,\n collectDeviceSignals,\n onSessionExpired,\n onTokenRefreshed,\n onNewDeviceAlert,\n children,\n initialUser,\n storage,\n localization,\n localizeErrors = true,\n}: AuthProviderProps) {\n const [client] = useState(() => {\n const handleSessionExpired = () => {\n setUser(null);\n setSession(null);\n onSessionExpired?.();\n };\n\n return new AuthClient({\n apiKey,\n baseUrl,\n timeout,\n autoRefreshToken,\n refreshThreshold,\n collectDeviceSignals,\n onSessionExpired: handleSessionExpired,\n onTokenRefreshed,\n onNewDeviceAlert,\n storage,\n });\n });\n\n const [user, setUser] = useState<User | null>(initialUser ?? null);\n const [session, setSession] = useState<Session | null>(null);\n const [isLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const clearError = useCallback(() => {\n setError(null);\n }, []);\n\n const value: AuthContextValue = useMemo(\n () => ({\n client,\n user,\n session,\n isAuthenticated: user !== null,\n isLoading,\n error,\n setUser,\n setSession,\n setError,\n clearError,\n }),\n [client, user, session, isLoading, error, clearError],\n );\n\n const localizationValue = useMemo(\n () => ({ overrides: localization ?? null, localizeErrors }),\n [localization, localizeErrors],\n );\n\n return (\n <AuthContext.Provider value={value}>\n <LocalizationContext.Provider value={localizationValue}>\n {children}\n </LocalizationContext.Provider>\n </AuthContext.Provider>\n );\n}\n","// Error code defaults from @atzentis/auth-sdk\n// Keys match AuthErrorCode enum string values exactly\n\nexport const AUTH_ERROR_CODES = {\n INVALID_CREDENTIALS: \"Invalid email or password\",\n EMAIL_NOT_VERIFIED: \"Email address is not verified\",\n TWO_FACTOR_REQUIRED: \"Two-factor authentication is required\",\n INVALID_PHONE_NUMBER: \"Invalid phone number\",\n OTP_EXPIRED: \"Verification code has expired\",\n OTP_INVALID: \"Invalid verification code\",\n OTP_MAX_ATTEMPTS: \"Too many verification attempts\",\n PHONE_NUMBER_IN_USE: \"Phone number is already in use\",\n FRAUD_DETECTED: \"Suspicious activity detected\",\n USERNAME_TAKEN: \"Username is already taken\",\n USERNAME_INVALID: \"Invalid username\",\n USERNAME_RESERVED: \"This username is reserved\",\n DEVICE_NOT_FOUND: \"Device not found\",\n LOGIN_EVENT_NOT_FOUND: \"Login event not found\",\n REAUTH_REQUIRED: \"Please sign in again to continue\",\n MAX_SESSIONS_EXCEEDED: \"Maximum number of sessions exceeded\",\n CAPTCHA_REQUIRED: \"CAPTCHA verification is required\",\n CAPTCHA_INVALID: \"CAPTCHA verification failed\",\n PASSWORD_BREACHED: \"This password has been found in a data breach\",\n SESSION_EXPIRED: \"Session expired\",\n TOKEN_EXPIRED: \"Token has expired\",\n INVALID_TOKEN: \"Invalid token\",\n UNAUTHORIZED_ROLE: \"You do not have permission to perform this action\",\n ORGANIZATION_NOT_FOUND: \"Organization not found\",\n PERMISSION_DENIED: \"Permission denied\",\n RATE_LIMITED: \"Too many requests. Please try again later.\",\n NETWORK_ERROR: \"Network error. Please check your connection.\",\n TIMEOUT: \"Request timed out. Please try again.\",\n USER_NOT_FOUND: \"User not found\",\n USER_ALREADY_EXISTS: \"A user with this email already exists\",\n INVALID_EMAIL: \"Invalid email address\",\n WEAK_PASSWORD: \"Password is too weak\",\n ORG_LIMIT_EXCEEDED: \"Organization limit exceeded\",\n MEMBER_LIMIT_EXCEEDED: \"Member limit exceeded\",\n KEY_NOT_FOUND: \"API key not found\",\n KEY_REVOKED: \"API key has been revoked\",\n KEY_EXPIRED: \"API key has expired\",\n};\n","import { AUTH_ERROR_CODES } from \"./error-codes\";\n\n/**\n * Centralized localization for all @atzentis/auth-react components.\n *\n * This const object contains all default English strings.\n * The `AuthLocalization` type is derived as `Partial<typeof authLocalization>`.\n *\n * Pass a partial override to AuthProvider:\n * ```tsx\n * const de: AuthLocalization = { SIGN_IN: \"Anmelden\", ... };\n * <AuthProvider localization={de}>\n * ```\n */\nexport const authLocalization = {\n // --- General / Shared ---\n\n /** @default \"Continue\" */\n CONTINUE: \"Continue\",\n\n /** @default \"Cancel\" */\n CANCEL: \"Cancel\",\n\n /** @default \"Save\" */\n SAVE: \"Save\",\n\n /** @default \"Delete\" */\n DELETE: \"Delete\",\n\n /** @default \"Update\" */\n UPDATE: \"Update\",\n\n /** @default \"Remove\" */\n REMOVE: \"Remove\",\n\n /** @default \"Done\" */\n DONE: \"Done\",\n\n /** @default \"Go back\" */\n GO_BACK: \"Go back\",\n\n /** @default \"Loading...\" */\n LOADING: \"Loading...\",\n\n /** @default \"Load more\" */\n LOAD_MORE: \"Load more\",\n\n /** @default \"Unknown\" */\n UNKNOWN: \"Unknown\",\n\n /** @default \"Request failed\" */\n REQUEST_FAILED: \"Request failed\",\n\n /** @default \"Updated successfully\" */\n UPDATED_SUCCESSFULLY: \"Updated successfully\",\n\n // --- Sign In (LoginForm) ---\n\n /** @default \"Sign in\" */\n SIGN_IN: \"Sign in\",\n\n /** @default \"Sign in\" */\n SIGN_IN_ACTION: \"Sign in\",\n\n /** @default \"Enter your email below to sign in\" */\n SIGN_IN_DESCRIPTION: \"Enter your email below to sign in\",\n\n /** @default \"Enter your username or email to sign in\" */\n SIGN_IN_USERNAME_DESCRIPTION: \"Enter your username or email to sign in\",\n\n /** @default \"Username or email\" */\n SIGN_IN_USERNAME_PLACEHOLDER: \"Username or email\",\n\n /** @default \"Signing in...\" */\n SIGNING_IN: \"Signing in...\",\n\n /** @default \"m@example.com\" */\n EMAIL_PLACEHOLDER: \"m@example.com\",\n\n /** @default \"Password\" */\n PASSWORD_PLACEHOLDER: \"Password\",\n\n /** @default \"Forgot your password?\" */\n FORGOT_PASSWORD_LINK: \"Forgot your password?\",\n\n /** @default \"Use phone instead\" */\n USE_PHONE_INSTEAD: \"Use phone instead\",\n\n /** @default \"Use email instead\" */\n USE_EMAIL_INSTEAD: \"Use email instead\",\n\n /** @default \"Or continue with\" */\n OR_CONTINUE_WITH: \"Or continue with\",\n\n /** @default \"Sign in with\" */\n SIGN_IN_WITH: \"Sign in with\",\n\n /** @default \"Don't have an account?\" */\n DONT_HAVE_AN_ACCOUNT: \"Don't have an account?\",\n\n /** @default \"Remember me\" */\n REMEMBER_ME: \"Remember me\",\n\n // --- Sign Up (SignupForm) ---\n\n /** @default \"Sign up\" */\n SIGN_UP: \"Sign up\",\n\n /** @default \"Create account\" */\n SIGN_UP_ACTION: \"Create account\",\n\n /** @default \"Enter your information to create an account\" */\n SIGN_UP_DESCRIPTION: \"Enter your information to create an account\",\n\n /** @default \"Check your email for the verification link.\" */\n SIGN_UP_EMAIL: \"Check your email for the verification link.\",\n\n /** @default \"Name\" */\n NAME_PLACEHOLDER: \"Name\",\n\n /** @default \"Please enter your full name.\" */\n NAME_DESCRIPTION: \"Please enter your full name.\",\n\n /** @default \"Username\" */\n USERNAME_PLACEHOLDER: \"Username\",\n\n /** @default \"Username\" */\n USERNAME: \"Username\",\n\n /** @default \"Confirm password\" */\n CONFIRM_PASSWORD_PLACEHOLDER: \"Confirm password\",\n\n /** @default \"Already have an account?\" */\n ALREADY_HAVE_AN_ACCOUNT: \"Already have an account?\",\n\n /** @default \"I accept the terms and conditions\" */\n ACCEPT_TERMS: \"I accept the terms and conditions\",\n\n /** @default \"You must accept the terms\" */\n ACCEPT_TERMS_ERROR: \"You must accept the terms\",\n\n /** @default \"By continuing, you agree to the\" */\n BY_CONTINUING_YOU_AGREE: \"By continuing, you agree to the\",\n\n /** @default \"Terms of Service\" */\n TERMS_OF_SERVICE: \"Terms of Service\",\n\n /** @default \"Privacy Policy\" */\n PRIVACY_POLICY: \"Privacy Policy\",\n\n // --- Phone Login (PhoneLoginForm) ---\n\n /** @default \"Phone number\" */\n PHONE_NUMBER_PLACEHOLDER: \"Phone number\",\n\n /** @default \"Country code\" */\n COUNTRY_CODE: \"Country code\",\n\n /** @default \"Send code\" */\n SEND_VERIFICATION_CODE: \"Send code\",\n\n /** @default \"Sending code...\" */\n SENDING_VERIFICATION_CODE: \"Sending code...\",\n\n /** @default \"One-Time Password\" */\n ONE_TIME_PASSWORD: \"One-Time Password\",\n\n /** @default \"Verification code\" */\n VERIFICATION_CODE_LABEL: \"Verification code\",\n\n /** @default \"Verify\" */\n VERIFY: \"Verify\",\n\n /** @default \"Verifying...\" */\n VERIFYING: \"Verifying...\",\n\n /** @default \"Code expires in\" */\n CODE_EXPIRES_IN: \"Code expires in\",\n\n /** @default \"Resend code\" */\n RESEND_CODE: \"Resend code\",\n\n /** @default \"Sign in with password\" */\n USE_PASSWORD_INSTEAD: \"Sign in with password\",\n\n // --- OAuth ---\n\n /** @default \"Continue with\" */\n CONTINUE_WITH: \"Continue with\",\n\n /** @default \"Redirecting...\" */\n REDIRECTING: \"Redirecting...\",\n\n // --- Magic Link ---\n\n /** @default \"Magic Link\" */\n MAGIC_LINK: \"Magic Link\",\n\n /** @default \"Send magic link\" */\n MAGIC_LINK_ACTION: \"Send magic link\",\n\n /** @default \"Enter your email to receive a magic link\" */\n MAGIC_LINK_DESCRIPTION: \"Enter your email to receive a magic link\",\n\n /** @default \"We sent a magic link to\" */\n MAGIC_LINK_EMAIL: \"We sent a magic link to\",\n\n /** @default \"Check your inbox and click the link to sign in.\" */\n MAGIC_LINK_HINT: \"Check your inbox and click the link to sign in.\",\n\n /** @default \"Sending...\" */\n SENDING: \"Sending...\",\n\n /** @default \"Resend\" */\n RESEND: \"Resend\",\n\n /** @default \"Resending...\" */\n RESENDING: \"Resending...\",\n\n // --- Password Management ---\n\n /** @default \"Password\" */\n PASSWORD: \"Password\",\n\n /** @default \"New Password\" */\n NEW_PASSWORD: \"New Password\",\n\n /** @default \"Current Password\" */\n CURRENT_PASSWORD: \"Current Password\",\n\n /** @default \"Change Password\" */\n CHANGE_PASSWORD: \"Change Password\",\n\n /** @default \"Enter your current and new password\" */\n CHANGE_PASSWORD_DESCRIPTION: \"Enter your current and new password\",\n\n /** @default \"Password has been changed\" */\n CHANGE_PASSWORD_SUCCESS: \"Password has been changed\",\n\n /** @default \"Changing password...\" */\n CHANGING_PASSWORD: \"Changing password...\",\n\n /** @default \"Forgot Password\" */\n FORGOT_PASSWORD: \"Forgot Password\",\n\n /** @default \"Send reset link\" */\n FORGOT_PASSWORD_ACTION: \"Send reset link\",\n\n /** @default \"Enter your email to reset your password\" */\n FORGOT_PASSWORD_DESCRIPTION: \"Enter your email to reset your password\",\n\n /** @default \"Check your email for the reset link\" */\n FORGOT_PASSWORD_EMAIL: \"Check your email for the reset link\",\n\n /** @default \"Reset Password\" */\n RESET_PASSWORD: \"Reset Password\",\n\n /** @default \"Save new password\" */\n RESET_PASSWORD_ACTION: \"Save new password\",\n\n /** @default \"Password reset successfully\" */\n RESET_PASSWORD_SUCCESS: \"Password reset successfully\",\n\n /** @default \"Confirm new password\" */\n CONFIRM_NEW_PASSWORD: \"Confirm new password\",\n\n /** @default \"Set Password\" */\n SET_PASSWORD: \"Set Password\",\n\n /** @default \"Click the button to receive an email to set your password\" */\n SET_PASSWORD_DESCRIPTION: \"Click the button to receive an email to set your password\",\n\n /** @default \"Change Username\" */\n CHANGE_USERNAME: \"Change Username\",\n\n /** @default \"Your unique username\" */\n CHANGE_USERNAME_DESCRIPTION: \"Your unique username\",\n\n /** @default \"Username available\" */\n USERNAME_AVAILABLE_STATUS: \"Username available\",\n\n /** @default \"Username is taken\" */\n USERNAME_TAKEN_STATUS: \"Username is taken\",\n\n /** @default \"Checking...\" */\n CHECKING_AVAILABILITY: \"Checking...\",\n\n /** @default \"Username updated\" */\n USERNAME_UPDATED: \"Username updated\",\n\n // --- Forgot Password (P11) ---\n\n /** @default \"Check your email\" */\n CHECK_YOUR_EMAIL: \"Check your email\",\n\n /** @default \"Resend in {{seconds}}s\" */\n RESEND_IN: \"Resend in {{seconds}}s\",\n\n // --- Email Verification (P11) ---\n\n /** @default \"Email Verification\" */\n EMAIL_VERIFICATION: \"Email Verification\",\n\n /** @default \"Verify your email address\" */\n EMAIL_VERIFICATION_DESCRIPTION: \"Verify your email address\",\n\n /** @default \"Email verified successfully\" */\n EMAIL_VERIFICATION_SUCCESS: \"Email verified successfully\",\n\n /** @default \"Verifying your email...\" */\n EMAIL_VERIFICATION_CHECKING: \"Verifying your email...\",\n\n /** @default \"Resend verification email\" */\n RESEND_VERIFICATION_EMAIL: \"Resend verification email\",\n\n /** @default \"Verification email sent\" */\n VERIFICATION_EMAIL_SENT: \"Verification email sent\",\n\n // --- Email OTP (P11) ---\n\n /** @default \"Email Code Verification\" */\n EMAIL_OTP: \"Email Code Verification\",\n\n /** @default \"Enter your email to receive a verification code\" */\n EMAIL_OTP_DESCRIPTION: \"Enter your email to receive a verification code\",\n\n /** @default \"We sent a code to\" */\n EMAIL_OTP_SENT: \"We sent a code to\",\n\n /** @default \"Enter the 6-digit code\" */\n ENTER_VERIFICATION_CODE: \"Enter the 6-digit code\",\n\n // --- Account Recovery ---\n\n /** @default \"Recover Account\" */\n RECOVER_ACCOUNT: \"Recover Account\",\n\n /** @default \"Recover access to your account\" */\n RECOVER_ACCOUNT_DESCRIPTION: \"Recover access to your account\",\n\n /** @default \"Select recovery method\" */\n SELECT_RECOVERY_METHOD: \"Select recovery method\",\n\n /** @default \"Reset via email link\" */\n RESET_VIA_EMAIL: \"Reset via email link\",\n\n /** @default \"Verify with email code\" */\n VERIFY_WITH_CODE: \"Verify with email code\",\n\n /** @default \"Verify via phone\" */\n VERIFY_VIA_PHONE: \"Verify via phone\",\n\n /** @default \"Step {{current}} of {{total}}\" */\n STEP_OF: \"Step {{current}} of {{total}}\",\n\n // --- Devices & Sessions ---\n\n /** @default \"Current Session\" */\n CURRENT_SESSION: \"Current Session\",\n\n /** @default \"Current device\" */\n CURRENT_DEVICE: \"Current device\",\n\n /** @default \"Sessions\" */\n SESSIONS: \"Sessions\",\n\n /** @default \"Manage your active sessions\" */\n SESSIONS_DESCRIPTION: \"Manage your active sessions\",\n\n /** @default \"Revoke\" */\n REVOKE_SESSION: \"Revoke\",\n\n /** @default \"Revoke all other sessions\" */\n REVOKE_ALL_OTHER_SESSIONS: \"Revoke all other sessions\",\n\n /** @default \"Session revoked\" */\n SESSION_REVOKED: \"Session revoked\",\n\n /** @default \"All other sessions revoked\" */\n ALL_SESSIONS_REVOKED: \"All other sessions revoked\",\n\n /** @default \"No other sessions\" */\n NO_OTHER_SESSIONS: \"No other sessions\",\n\n /** @default \"Loading sessions...\" */\n LOADING_SESSIONS: \"Loading sessions...\",\n\n /** @default \"Trust\" */\n TRUST_DEVICE: \"Trust\",\n\n /** @default \"Untrust\" */\n UNTRUST_DEVICE: \"Untrust\",\n\n /** @default \"Loading devices...\" */\n LOADING_DEVICES: \"Loading devices...\",\n\n /** @default \"No devices found\" */\n NO_DEVICES: \"No devices found\",\n\n /** @default \"Last used:\" */\n LAST_USED: \"Last used:\",\n\n /** @default \"IP:\" */\n IP_LABEL: \"IP:\",\n\n /** @default \"Security\" */\n SECURITY: \"Security\",\n\n /** @default \"Session not fresh. Please sign in again.\" */\n SESSION_NOT_FRESH: \"Session not fresh. Please sign in again.\",\n\n // --- Login Activity & Risk ---\n\n /** @default \"Login Activity\" */\n LOGIN_ACTIVITY: \"Login Activity\",\n\n /** @default \"Recent login attempts\" */\n LOGIN_ACTIVITY_DESCRIPTION: \"Recent login attempts\",\n\n /** @default \"Low\" */\n RISK_LOW: \"Low\",\n\n /** @default \"Medium\" */\n RISK_MEDIUM: \"Medium\",\n\n /** @default \"High\" */\n RISK_HIGH: \"High\",\n\n /** @default \"This was me\" */\n MARK_RECOGNIZED: \"This was me\",\n\n /** @default \"Not me\" */\n REPORT_SUSPICIOUS: \"Not me\",\n\n /** @default \"Loading activity...\" */\n LOADING_ACTIVITY: \"Loading activity...\",\n\n /** @default \"No login activity found\" */\n NO_ACTIVITY: \"No login activity found\",\n\n // --- Accounts & Switching ---\n\n /** @default \"Accounts\" */\n ACCOUNTS: \"Accounts\",\n\n /** @default \"Manage signed in accounts\" */\n ACCOUNTS_DESCRIPTION: \"Manage signed in accounts\",\n\n /** @default \"Add account\" */\n ADD_ACCOUNT: \"Add account\",\n\n /** @default \"Switch Account\" */\n SWITCH_ACCOUNT: \"Switch Account\",\n\n /** @default \"Select account\" */\n SELECT_ACCOUNT: \"Select account\",\n\n /** @default \"Personal Account\" */\n PERSONAL_ACCOUNT: \"Personal Account\",\n\n /** @default \"Sign out\" */\n SIGN_OUT: \"Sign out\",\n\n // --- Organizations ---\n\n /** @default \"Organization\" */\n ORGANIZATION: \"Organization\",\n\n /** @default \"Organizations\" */\n ORGANIZATIONS: \"Organizations\",\n\n /** @default \"Manage your organizations\" */\n ORGANIZATIONS_DESCRIPTION: \"Manage your organizations\",\n\n /** @default \"Select organization\" */\n SELECT_ORGANIZATION: \"Select organization\",\n\n /** @default \"Create organization\" */\n CREATE_ORGANIZATION: \"Create organization\",\n\n /** @default \"Name\" */\n ORGANIZATION_NAME: \"Name\",\n\n /** @default \"Acme Inc.\" */\n ORGANIZATION_NAME_PLACEHOLDER: \"Acme Inc.\",\n\n /** @default \"Leave Organization\" */\n LEAVE_ORGANIZATION: \"Leave Organization\",\n\n /** @default \"Delete Organization\" */\n DELETE_ORGANIZATION: \"Delete Organization\",\n\n /** @default \"Members\" */\n MEMBERS: \"Members\",\n\n /** @default \"Invite Member\" */\n INVITE_MEMBER: \"Invite Member\",\n\n /** @default \"Remove Member\" */\n REMOVE_MEMBER: \"Remove Member\",\n\n /** @default \"Role\" */\n ROLE: \"Role\",\n\n /** @default \"Admin\" */\n ADMIN: \"Admin\",\n\n /** @default \"Member\" */\n MEMBER: \"Member\",\n\n /** @default \"Owner\" */\n OWNER: \"Owner\",\n\n // --- User Menu ---\n\n /** @default \"Settings\" */\n SETTINGS: \"Settings\",\n\n /** @default \"Account\" */\n ACCOUNT: \"Account\",\n\n /** @default \"Avatar\" */\n AVATAR: \"Avatar\",\n\n /** @default \"Click avatar to upload a custom one\" */\n AVATAR_DESCRIPTION: \"Click avatar to upload a custom one\",\n\n /** @default \"Delete Avatar\" */\n DELETE_AVATAR: \"Delete Avatar\",\n\n /** @default \"Upload Avatar\" */\n UPLOAD_AVATAR: \"Upload Avatar\",\n\n /** @default \"Avatar updated\" */\n AVATAR_UPDATED: \"Avatar updated\",\n\n /** @default \"Avatar deleted\" */\n AVATAR_DELETED: \"Avatar deleted\",\n\n /** @default \"Click to upload\" */\n CLICK_TO_UPLOAD: \"Click to upload\",\n\n /** @default \"File too large\" */\n FILE_TOO_LARGE: \"File too large\",\n\n /** @default \"Max file size:\" */\n MAX_FILE_SIZE: \"Max file size:\",\n\n /** @default \"Email\" */\n EMAIL: \"Email\",\n\n /** @default \"Name\" */\n NAME: \"Name\",\n\n /** @default \"Update Name\" */\n UPDATE_NAME: \"Update Name\",\n\n /** @default \"Your display name\" */\n UPDATE_NAME_DESCRIPTION: \"Your display name\",\n\n /** @default \"Name updated\" */\n NAME_UPDATED: \"Name updated\",\n\n // --- Two-Factor ---\n\n /** @default \"Two-Factor\" */\n TWO_FACTOR: \"Two-Factor\",\n\n /** @default \"Two-Factor Authentication\" */\n TWO_FACTOR_PROMPT: \"Two-Factor Authentication\",\n\n /** @default \"Enter your one-time password\" */\n TWO_FACTOR_DESCRIPTION: \"Enter your one-time password\",\n\n /** @default \"Verify code\" */\n TWO_FACTOR_ACTION: \"Verify code\",\n\n /** @default \"Two-factor authentication has been enabled\" */\n TWO_FACTOR_ENABLED: \"Two-factor authentication has been enabled\",\n\n /** @default \"Two-factor authentication has been disabled\" */\n TWO_FACTOR_DISABLED: \"Two-factor authentication has been disabled\",\n\n /** @default \"Enable Two-Factor\" */\n ENABLE_TWO_FACTOR: \"Enable Two-Factor\",\n\n /** @default \"Disable Two-Factor\" */\n DISABLE_TWO_FACTOR: \"Disable Two-Factor\",\n\n /** @default \"Backup Codes\" */\n BACKUP_CODES: \"Backup Codes\",\n\n /** @default \"Save these codes in a secure place\" */\n BACKUP_CODES_DESCRIPTION: \"Save these codes in a secure place\",\n\n // --- Two-Factor (P11) ---\n\n /** @default \"Enter your 6-digit code\" */\n ENTER_TOTP_CODE: \"Enter your 6-digit code\",\n\n /** @default \"Use backup code\" */\n USE_BACKUP_CODE: \"Use backup code\",\n\n /** @default \"Use authenticator\" */\n USE_AUTHENTICATOR: \"Use authenticator\",\n\n /** @default \"Enter backup code\" */\n BACKUP_CODE_PLACEHOLDER: \"Enter backup code\",\n\n /** @default \"Scan this QR code with your authenticator app\" */\n SCAN_QR_CODE: \"Scan this QR code with your authenticator app\",\n\n /** @default \"Or enter this code manually\" */\n MANUAL_ENTRY_CODE: \"Or enter this code manually\",\n\n /** @default \"Enter the code from your authenticator\" */\n ENTER_CODE_TO_VERIFY: \"Enter the code from your authenticator\",\n\n /** @default \"Copy all codes\" */\n COPY_BACKUP_CODES: \"Copy all codes\",\n\n /** @default \"Codes copied\" */\n BACKUP_CODES_COPIED: \"Codes copied\",\n\n /** @default \"Enter your password to disable two-factor\" */\n CONFIRM_DISABLE_2FA: \"Enter your password to disable two-factor\",\n\n /** @default \"Two-factor enabled\" */\n TWO_FACTOR_SETUP_SUCCESS: \"Two-factor enabled\",\n\n /** @default \"Status\" */\n STATUS: \"Status\",\n\n /** @default \"Enabled\" */\n ENABLED: \"Enabled\",\n\n /** @default \"Disabled\" */\n DISABLED: \"Disabled\",\n\n /** @default \"Enable\" */\n ENABLE: \"Enable\",\n\n /** @default \"Disable\" */\n DISABLE: \"Disable\",\n\n /** @default \"Back\" */\n BACK: \"Back\",\n\n /** @default \"Next\" */\n NEXT: \"Next\",\n\n /** @default \"Finish\" */\n FINISH: \"Finish\",\n\n // --- Email Management (P12) ---\n\n /** @default \"Change Email\" */\n CHANGE_EMAIL: \"Change Email\",\n\n /** @default \"Enter a new email address\" */\n CHANGE_EMAIL_DESCRIPTION: \"Enter a new email address\",\n\n /** @default \"Current email\" */\n CURRENT_EMAIL: \"Current email\",\n\n /** @default \"New email\" */\n NEW_EMAIL_PLACEHOLDER: \"New email\",\n\n /** @default \"Verification email sent to your new address\" */\n CHANGE_EMAIL_SENT: \"Verification email sent to your new address\",\n\n // --- OAuth Provider Management (P12) ---\n\n /** @default \"Connected Accounts\" */\n CONNECTED_PROVIDERS: \"Connected Accounts\",\n\n /** @default \"Manage linked sign-in methods\" */\n CONNECTED_PROVIDERS_DESCRIPTION: \"Manage linked sign-in methods\",\n\n /** @default \"Connect\" */\n CONNECT_PROVIDER: \"Connect\",\n\n /** @default \"Disconnect\" */\n DISCONNECT_PROVIDER: \"Disconnect\",\n\n /** @default \"No accounts connected\" */\n NO_PROVIDERS_CONNECTED: \"No accounts connected\",\n\n /** @default \"Provider disconnected\" */\n PROVIDER_DISCONNECTED: \"Provider disconnected\",\n\n /** @default \"Connected on\" */\n CONNECTED_ON: \"Connected on\",\n\n // --- Passkeys (P12) ---\n\n /** @default \"Passkeys\" */\n PASSKEYS: \"Passkeys\",\n\n /** @default \"Manage your passkeys for passwordless sign-in\" */\n PASSKEYS_DESCRIPTION: \"Manage your passkeys for passwordless sign-in\",\n\n /** @default \"Register passkey\" */\n REGISTER_PASSKEY: \"Register passkey\",\n\n /** @default \"Remove\" */\n REMOVE_PASSKEY: \"Remove\",\n\n /** @default \"Passkey name\" */\n PASSKEY_NAME: \"Passkey name\",\n\n /** @default \"No passkeys registered\" */\n NO_PASSKEYS: \"No passkeys registered\",\n\n /** @default \"Your browser doesn't support passkeys\" */\n WEBAUTHN_NOT_SUPPORTED: \"Your browser doesn't support passkeys\",\n\n /** @default \"Passkey registered\" */\n PASSKEY_REGISTERED: \"Passkey registered\",\n\n /** @default \"Passkey removed\" */\n PASSKEY_REMOVED: \"Passkey removed\",\n\n /** @default \"Loading passkeys...\" */\n LOADING_PASSKEYS: \"Loading passkeys...\",\n\n /** @default \"Created\" */\n CREATED: \"Created\",\n\n /** @default \"Last used\" */\n LAST_USED_DATE: \"Last used\",\n\n /** @default \"Never\" */\n NEVER: \"Never\",\n\n /** @default \"Are you sure you want to remove this passkey?\" */\n CONFIRM_REMOVE_PASSKEY: \"Are you sure you want to remove this passkey?\",\n\n /** @default \"Registering...\" */\n REGISTERING_PASSKEY: \"Registering...\",\n\n /** @default \"Removing...\" */\n REMOVING_PASSKEY: \"Removing...\",\n\n // --- Account Deletion (P12) ---\n\n /** @default \"Delete Account\" */\n DELETE_ACCOUNT: \"Delete Account\",\n\n /** @default \"Permanently delete your account and all data\" */\n DELETE_ACCOUNT_WARNING: \"Permanently delete your account and all data\",\n\n /** @default \"Type \\\"{{phrase}}\\\" to confirm\" */\n TYPE_TO_CONFIRM: 'Type \"{{phrase}}\" to confirm',\n\n /** @default \"delete my account\" */\n DEFAULT_CONFIRM_PHRASE: \"delete my account\",\n\n /** @default \"Confirm deletion\" */\n CONFIRM_DELETION: \"Confirm deletion\",\n\n /** @default \"Deleting account...\" */\n DELETING_ACCOUNT: \"Deleting account...\",\n\n /** @default \"Reason for leaving (optional)\" */\n DELETE_REASON: \"Reason for leaving (optional)\",\n\n // --- API Keys (P12) ---\n\n /** @default \"API Keys\" */\n API_KEYS: \"API Keys\",\n\n /** @default \"Manage your API keys\" */\n API_KEYS_DESCRIPTION: \"Manage your API keys\",\n\n /** @default \"Create API key\" */\n CREATE_API_KEY: \"Create API key\",\n\n /** @default \"Revoke\" */\n REVOKE_API_KEY: \"Revoke\",\n\n /** @default \"Key name\" */\n KEY_NAME: \"Key name\",\n\n /** @default \"Scopes\" */\n KEY_SCOPES: \"Scopes\",\n\n /** @default \"Expires\" */\n KEY_EXPIRES: \"Expires\",\n\n /** @default \"Copy this key now — it won't be shown again\" */\n KEY_CREATED_WARNING: \"Copy this key now — it won't be shown again\",\n\n /** @default \"Copy key\" */\n COPY_KEY: \"Copy key\",\n\n /** @default \"Key copied\" */\n KEY_COPIED: \"Key copied\",\n\n /** @default \"No API keys\" */\n NO_API_KEYS: \"No API keys\",\n\n /** @default \"30 days\" */\n EXPIRES_30_DAYS: \"30 days\",\n\n /** @default \"90 days\" */\n EXPIRES_90_DAYS: \"90 days\",\n\n /** @default \"1 year\" */\n EXPIRES_1_YEAR: \"1 year\",\n\n /** @default \"Loading API keys...\" */\n LOADING_API_KEYS: \"Loading API keys...\",\n\n /** @default \"my-api-key\" */\n KEY_NAME_PLACEHOLDER: \"my-api-key\",\n\n // --- Account View (P12) ---\n\n /** @default \"Account Settings\" */\n ACCOUNT_SETTINGS: \"Account Settings\",\n\n /** @default \"Danger Zone\" */\n DANGER_ZONE: \"Danger Zone\",\n\n // --- Validation ---\n\n /** @default \"Passwords do not match\" */\n PASSWORDS_DO_NOT_MATCH: \"Passwords do not match\",\n\n /** @default \"Password is required\" */\n PASSWORD_REQUIRED: \"Password is required\",\n\n /** @default \"Email address is required\" */\n EMAIL_REQUIRED: \"Email address is required\",\n\n /** @default \"is required\" */\n IS_REQUIRED: \"is required\",\n\n /** @default \"is invalid\" */\n IS_INVALID: \"is invalid\",\n\n // --- Error Codes ---\n ...AUTH_ERROR_CODES,\n};\n\nexport type AuthLocalization = Partial<typeof authLocalization>;\n","import { AuthError } from \"@atzentis/auth-sdk\";\nimport type { AuthLocalization } from \"./auth-localization\";\nimport { authLocalization } from \"./auth-localization\";\n\n/**\n * Gets a localized error message from an error object.\n *\n * When `localizeErrors` is true, looks up the error code directly\n * in the localization dictionary (error codes are localization keys).\n *\n * Fallback chain:\n * 1. localization[error.code] (if AuthError and localizeErrors)\n * 2. error.message\n * 3. localization.REQUEST_FAILED\n * 4. \"Request failed\"\n */\nexport function getLocalizedError(\n error: unknown,\n localization: AuthLocalization,\n localizeErrors: boolean,\n): string {\n if (!localizeErrors) {\n if (error instanceof Error && error.message) return error.message;\n return authLocalization.REQUEST_FAILED;\n }\n\n if (error instanceof AuthError) {\n const errorCode = error.code as keyof typeof authLocalization;\n if (localization?.[errorCode]) return localization[errorCode];\n }\n\n if (error instanceof Error && error.message) return error.message;\n\n return localization?.REQUEST_FAILED ?? authLocalization.REQUEST_FAILED;\n}\n","// Internal hook to access auth context with error boundary\n\nimport { useContext } from \"react\";\nimport type { AuthContextValue } from \"../provider\";\nimport { AuthContext } from \"../provider\";\n\nexport function useAuthContext(): AuthContextValue {\n const context = useContext(AuthContext);\n\n if (!context) {\n throw new Error(\"useAuthContext must be used within AuthProvider\");\n }\n\n return context;\n}\n","// useApiKeys hook — API key management\n\nimport type {\n ApiKey,\n AuthError,\n CreateApiKeyRequest,\n UpdateApiKeyRequest,\n} from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useApiKeys() {\n const { client } = useAuthContext();\n\n const [apiKeys, setApiKeys] = useState<ApiKey[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.apiKeys.list();\n setApiKeys(response.data);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const create = useCallback(\n async (data: CreateApiKeyRequest) => {\n const response = await client.apiKeys.create(data);\n await refresh();\n return response;\n },\n [client, refresh],\n );\n\n const get = useCallback(\n async (keyId: string) => {\n return client.apiKeys.get(keyId);\n },\n [client],\n );\n\n const update = useCallback(\n async (keyId: string, data: UpdateApiKeyRequest) => {\n const updated = await client.apiKeys.update(keyId, data);\n await refresh();\n return updated;\n },\n [client, refresh],\n );\n\n const rotate = useCallback(\n async (keyId: string) => {\n const response = await client.apiKeys.rotate(keyId);\n await refresh();\n return response;\n },\n [client, refresh],\n );\n\n const revoke = useCallback(\n async (keyId: string) => {\n await client.apiKeys.revoke(keyId);\n await refresh();\n },\n [client, refresh],\n );\n\n const validate = useCallback(\n async (keyString: string) => {\n return client.apiKeys.validate(keyString);\n },\n [client],\n );\n\n const getUsage = useCallback(\n async (keyId: string) => {\n return client.apiKeys.getUsage(keyId);\n },\n [client],\n );\n\n return {\n apiKeys,\n isLoading,\n error,\n refresh,\n create,\n get,\n update,\n rotate,\n revoke,\n validate,\n getUsage,\n };\n}\n","// useAuth hook — auth state and methods\n\nimport type {\n GetOAuthUrlRequest,\n LoginCredentials,\n RequestPasswordResetRequest,\n ResetPasswordRequest,\n SendMagicLinkRequest,\n SendVerificationEmailRequest,\n SignupData,\n UsernameLoginCredentials,\n VerifyEmailRequest,\n VerifyMagicLinkRequest,\n VerifyOAuthCodeRequest,\n} from \"@atzentis/auth-sdk\";\nimport { useCallback } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useAuth() {\n const { client, user, isAuthenticated, isLoading, error, setUser, clearError } = useAuthContext();\n\n const login = useCallback(\n async (credentials: LoginCredentials) => {\n const response = await client.login(credentials);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const loginWithUsername = useCallback(\n async (credentials: UsernameLoginCredentials) => {\n const response = await client.loginWithUsername(credentials);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const signup = useCallback(\n async (data: SignupData) => {\n const response = await client.signup(data);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const logout = useCallback(async () => {\n await client.logout();\n setUser(null);\n }, [client, setUser]);\n\n const logoutAllDevices = useCallback(async () => {\n await client.logoutAllDevices();\n setUser(null);\n }, [client, setUser]);\n\n const getOAuthUrl = useCallback(\n (config: GetOAuthUrlRequest) => {\n return client.getOAuthUrl(config);\n },\n [client],\n );\n\n const verifyOAuthCode = useCallback(\n async (request: VerifyOAuthCodeRequest) => {\n const response = await client.verifyOAuthCode(request);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const sendMagicLink = useCallback(\n async (request: SendMagicLinkRequest) => {\n await client.sendMagicLink(request);\n },\n [client],\n );\n\n const verifyMagicLink = useCallback(\n async (request: VerifyMagicLinkRequest) => {\n const response = await client.verifyMagicLink(request);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const isUsernameAvailable = useCallback(\n async (username: string) => {\n return client.isUsernameAvailable(username);\n },\n [client],\n );\n\n const getAccessToken = useCallback(async () => {\n return client.getAccessToken();\n }, [client]);\n\n const refreshToken = useCallback(async () => {\n return client.refreshToken();\n }, [client]);\n\n const getAuthHeader = useCallback(async () => {\n const token = await client.getAccessToken();\n if (token) {\n return { Authorization: `Bearer ${token}` };\n }\n return {};\n }, [client]);\n\n const requestPasswordReset = useCallback(\n async (request: RequestPasswordResetRequest) => {\n await client.requestPasswordReset(request);\n },\n [client],\n );\n\n const resetPassword = useCallback(\n async (request: ResetPasswordRequest) => {\n return client.resetPassword(request);\n },\n [client],\n );\n\n const sendVerificationEmail = useCallback(\n async (request: SendVerificationEmailRequest) => {\n await client.sendVerificationEmail(request);\n },\n [client],\n );\n\n const verifyEmail = useCallback(\n async (request: VerifyEmailRequest) => {\n const response = await client.verifyEmail(request);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n return {\n user,\n isAuthenticated,\n isLoading,\n error,\n clearError,\n getAccessToken,\n getAuthHeader,\n getOAuthUrl,\n isUsernameAvailable,\n login,\n loginWithUsername,\n logout,\n logoutAllDevices,\n refreshToken,\n requestPasswordReset,\n resetPassword,\n sendMagicLink,\n sendVerificationEmail,\n signup,\n verifyEmail,\n verifyMagicLink,\n verifyOAuthCode,\n };\n}\n","import { useContext } from \"react\";\nimport type { AuthLocalization } from \"../localization\";\nimport { authLocalization } from \"../localization\";\nimport { LocalizationContext } from \"../provider\";\n\nexport interface UseAuthLocalizationResult {\n localization: Required<AuthLocalization>;\n localizeErrors: boolean;\n}\n\nexport function useAuthLocalization(): UseAuthLocalizationResult {\n const ctx = useContext(LocalizationContext);\n const localization = ctx.overrides ? { ...authLocalization, ...ctx.overrides } : authLocalization;\n return { localization, localizeErrors: ctx.localizeErrors };\n}\n","// useDevices hook — device management and trust settings\n\nimport type { AuthError, Device } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useDevices() {\n const { client } = useAuthContext();\n\n const [devices, setDevices] = useState<Device[]>([]);\n const [currentDevice, setCurrentDevice] = useState<Device | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.devices.list();\n setDevices(response.data);\n const current = response.data.find((d) => d.isCurrent) ?? null;\n setCurrentDevice(current);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const trustDevice = useCallback(\n async (id: string) => {\n await client.devices.trust(id);\n await refresh();\n },\n [client, refresh],\n );\n\n const untrustDevice = useCallback(\n async (id: string) => {\n await client.devices.untrust(id);\n await refresh();\n },\n [client, refresh],\n );\n\n const removeDevice = useCallback(\n async (id: string) => {\n await client.devices.remove(id);\n await refresh();\n },\n [client, refresh],\n );\n\n const removeAllOtherDevices = useCallback(async () => {\n await client.devices.removeAllOthers();\n await refresh();\n }, [client, refresh]);\n\n return {\n devices,\n currentDevice,\n isLoading,\n error,\n refresh,\n trustDevice,\n untrustDevice,\n removeDevice,\n removeAllOtherDevices,\n };\n}\n","// useLoginActivity hook — login history with filtering and reporting\n\nimport type { AuthError, ListLoginEventsRequest, LoginEvent } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\ninterface UseLoginActivityOptions {\n limit?: number;\n}\n\nexport function useLoginActivity(options: UseLoginActivityOptions = {}) {\n const { client } = useAuthContext();\n\n const [events, setEvents] = useState<LoginEvent[]>([]);\n const [total, setTotal] = useState(0);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n const [filterOptions, setFilterOptions] = useState<ListLoginEventsRequest>({\n limit: options.limit ?? 50,\n offset: 0,\n });\n\n const hasMore = events.length < total;\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.loginActivity.list(filterOptions);\n setEvents(response.data);\n setTotal(response.total);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client, filterOptions]);\n\n const loadMore = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.loginActivity.list({\n ...filterOptions,\n offset: events.length,\n });\n setEvents((prev) => [...prev, ...response.data]);\n setTotal(response.total);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client, filterOptions, events.length]);\n\n const filter = useCallback(\n (newOptions: ListLoginEventsRequest) => {\n const merged = { ...filterOptions, ...newOptions, offset: 0 };\n setFilterOptions(merged);\n setEvents([]);\n setTotal(0);\n },\n [filterOptions],\n );\n\n const markRecognized = useCallback(\n async (eventId: string) => {\n await client.loginActivity.markRecognized(eventId);\n },\n [client],\n );\n\n const reportSuspicious = useCallback(\n async (eventId: string) => {\n return client.loginActivity.reportSuspicious(eventId);\n },\n [client],\n );\n\n return {\n events,\n total,\n hasMore,\n isLoading,\n error,\n refresh,\n loadMore,\n filter,\n markRecognized,\n reportSuspicious,\n };\n}\n","// useOrganizations hook — organization management\n\nimport type {\n AcceptInvitationRequest,\n AuthError,\n CreateOrganizationRequest,\n DeclineInvitationRequest,\n InviteMemberRequest,\n ListInvitationsRequest,\n ListMembersRequest,\n Organization,\n UpdateMemberRequest,\n UpdateOrganizationRequest,\n} from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useOrganizations() {\n const { client } = useAuthContext();\n\n const [organizations, setOrganizations] = useState<Organization[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.organizations.list();\n setOrganizations(response.data);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const create = useCallback(\n async (data: CreateOrganizationRequest) => {\n const org = await client.organizations.create(data);\n await refresh();\n return org;\n },\n [client, refresh],\n );\n\n const update = useCallback(\n async (orgId: string, data: UpdateOrganizationRequest) => {\n const org = await client.organizations.update(orgId, data);\n await refresh();\n return org;\n },\n [client, refresh],\n );\n\n const deleteOrg = useCallback(\n async (orgId: string) => {\n await client.organizations.delete(orgId);\n await refresh();\n },\n [client, refresh],\n );\n\n const listMembers = useCallback(\n async (orgId: string, options?: ListMembersRequest) => {\n return client.organizations.listMembers(orgId, options);\n },\n [client],\n );\n\n const updateMember = useCallback(\n async (orgId: string, userId: string, data: UpdateMemberRequest) => {\n return client.organizations.updateMember(orgId, userId, data);\n },\n [client],\n );\n\n const removeMember = useCallback(\n async (orgId: string, userId: string) => {\n await client.organizations.removeMember(orgId, userId);\n },\n [client],\n );\n\n const inviteMember = useCallback(\n async (orgId: string, data: InviteMemberRequest) => {\n return client.organizations.inviteMember(orgId, data);\n },\n [client],\n );\n\n const listInvitations = useCallback(\n async (orgId: string, options?: ListInvitationsRequest) => {\n return client.organizations.listInvitations(orgId, options);\n },\n [client],\n );\n\n const resendInvitation = useCallback(\n async (orgId: string, invitationId: string) => {\n await client.organizations.resendInvitation(orgId, invitationId);\n },\n [client],\n );\n\n const cancelInvitation = useCallback(\n async (orgId: string, invitationId: string) => {\n await client.organizations.cancelInvitation(orgId, invitationId);\n },\n [client],\n );\n\n const acceptInvitation = useCallback(\n async (data: AcceptInvitationRequest) => {\n await client.organizations.acceptInvitation(data);\n },\n [client],\n );\n\n const declineInvitation = useCallback(\n async (data: DeclineInvitationRequest) => {\n await client.organizations.declineInvitation(data);\n },\n [client],\n );\n\n const leave = useCallback(\n async (orgId: string) => {\n await client.organizations.leave(orgId);\n await refresh();\n },\n [client, refresh],\n );\n\n return {\n organizations,\n isLoading,\n error,\n refresh,\n create,\n update,\n delete: deleteOrg,\n listMembers,\n updateMember,\n removeMember,\n inviteMember,\n listInvitations,\n resendInvitation,\n cancelInvitation,\n acceptInvitation,\n declineInvitation,\n leave,\n };\n}\n","// usePasskeys hook — passkey management\n\nimport type { AuthError, Passkey, RegisterPasskeyRequest } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function usePasskeys() {\n const { client } = useAuthContext();\n\n const [passkeys, setPasskeys] = useState<Passkey[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.passkeys.list();\n setPasskeys(response.data);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const register = useCallback(\n async (name: string) => {\n // Get challenge\n const challenge = await client.passkeys.getRegistrationChallenge();\n\n // Create credential using WebAuthn API\n const credential = await navigator.credentials.create({\n publicKey: {\n challenge: Uint8Array.from(challenge.challenge, (c) => c.charCodeAt(0)),\n rp: {\n id: challenge.rpId,\n name: challenge.rpName,\n },\n user: {\n id: Uint8Array.from(challenge.userId, (c) => c.charCodeAt(0)),\n name: challenge.userName,\n displayName: challenge.userName,\n },\n pubKeyCredParams: [\n { alg: -7, type: \"public-key\" }, // ES256\n { alg: -257, type: \"public-key\" }, // RS256\n ],\n timeout: challenge.timeout,\n attestation: \"none\",\n },\n });\n\n // Register passkey\n const request: RegisterPasskeyRequest = {\n name,\n credential,\n };\n const response = await client.passkeys.register(request);\n await refresh();\n return response;\n },\n [client, refresh],\n );\n\n const remove = useCallback(\n async (passkeyId: string) => {\n await client.passkeys.remove(passkeyId);\n await refresh();\n },\n [client, refresh],\n );\n\n return {\n passkeys,\n isLoading,\n error,\n refresh,\n register,\n remove,\n };\n}\n","// usePhone hook — phone OTP authentication\n\nimport type { AuthError } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function usePhone() {\n const { client, setUser } = useAuthContext();\n\n const [isSending, setIsSending] = useState(false);\n const [isVerifying, setIsVerifying] = useState(false);\n const [codeSent, setCodeSent] = useState(false);\n const [expiresIn, setExpiresIn] = useState<number | null>(null);\n const [error, setError] = useState<AuthError | null>(null);\n\n const sendOTP = useCallback(\n async (phoneNumber: string) => {\n setIsSending(true);\n setError(null);\n try {\n const response = await client.phone.sendOTP({ phoneNumber });\n setCodeSent(true);\n setExpiresIn(response.expiresIn);\n return response;\n } catch (err) {\n setError(err as AuthError);\n throw err;\n } finally {\n setIsSending(false);\n }\n },\n [client],\n );\n\n const verify = useCallback(\n async (phoneNumber: string, code: string) => {\n setIsVerifying(true);\n setError(null);\n try {\n const response = await client.phone.verify({ phoneNumber, code });\n setUser(response.user);\n return response;\n } catch (err) {\n setError(err as AuthError);\n throw err;\n } finally {\n setIsVerifying(false);\n }\n },\n [client, setUser],\n );\n\n const signIn = useCallback(\n async (phoneNumber: string, password: string) => {\n setIsVerifying(true);\n setError(null);\n try {\n const response = await client.phone.signIn({ phoneNumber, password });\n setUser(response.user);\n return response;\n } catch (err) {\n setError(err as AuthError);\n throw err;\n } finally {\n setIsVerifying(false);\n }\n },\n [client, setUser],\n );\n\n return {\n isSending,\n isVerifying,\n codeSent,\n expiresIn,\n error,\n sendOTP,\n verify,\n signIn,\n };\n}\n","// useSession hook — current session state\n\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useSession() {\n const { user, session, isAuthenticated, isLoading } = useAuthContext();\n\n return {\n user,\n session,\n isAuthenticated,\n isLoading,\n };\n}\n","// useSessions hook — session management with multi-session support\n\nimport type {\n AuthError,\n DeviceSession,\n RevokeAllSessionsOptions,\n Session,\n} from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useSessions() {\n const { client, session, setUser } = useAuthContext();\n\n const [sessions, setSessions] = useState<Session[]>([]);\n const [deviceSessions, setDeviceSessions] = useState<DeviceSession[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const [sessionsResponse, deviceSessionsResponse] = await Promise.all([\n client.sessions.list(),\n client.sessions.listDeviceSessions(),\n ]);\n setSessions(sessionsResponse.data);\n setDeviceSessions(deviceSessionsResponse);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const revokeSession = useCallback(\n async (id: string) => {\n await client.sessions.revoke(id);\n await refresh();\n },\n [client, refresh],\n );\n\n const revokeAllSessions = useCallback(\n async (options?: RevokeAllSessionsOptions) => {\n await client.sessions.revokeAll(options);\n await refresh();\n },\n [client, refresh],\n );\n\n const switchAccount = useCallback(\n async (sessionToken: string) => {\n const response = await client.sessions.setActive({ sessionToken });\n setUser(response.user);\n },\n [client, setUser],\n );\n\n const revokeDeviceSession = useCallback(\n async (sessionToken: string) => {\n await client.sessions.revokeDeviceSession({ sessionToken });\n await refresh();\n },\n [client, refresh],\n );\n\n return {\n session,\n sessions,\n deviceSessions,\n isLoading,\n error,\n refresh,\n revokeSession,\n revokeAllSessions,\n switchAccount,\n revokeDeviceSession,\n };\n}\n","// useUser hook — profile, 2FA, OAuth, and phone management\n\nimport type { AuthError, ConnectOAuthRequest, UserUpdate } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useUser() {\n const { client, user, setUser } = useAuthContext();\n\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const updateProfile = useCallback(\n async (data: UserUpdate) => {\n setIsLoading(true);\n setError(null);\n try {\n const updated = await client.users.update(data);\n setUser(updated);\n return updated;\n } catch (err) {\n setError(err as AuthError);\n throw err;\n } finally {\n setIsLoading(false);\n }\n },\n [client, setUser],\n );\n\n const changePassword = useCallback(\n async (currentPassword: string, newPassword: string) => {\n await client.users.changePassword({ currentPassword, newPassword });\n },\n [client],\n );\n\n const setupTwoFactor = useCallback(async () => {\n return client.users.setupTwoFactor();\n }, [client]);\n\n const verifyTwoFactorSetup = useCallback(\n async (code: string) => {\n await client.users.verifyTwoFactorSetup({ code });\n },\n [client],\n );\n\n const disableTwoFactor = useCallback(\n async (password: string) => {\n await client.users.disableTwoFactor({ password });\n },\n [client],\n );\n\n const deleteAccount = useCallback(\n async (password: string, reason?: string) => {\n await client.users.deleteAccount({ password, reason });\n setUser(null);\n },\n [client, setUser],\n );\n\n const listConnectedProviders = useCallback(async () => {\n return client.users.listConnectedProviders();\n }, [client]);\n\n const connectOAuthProvider = useCallback(\n async (data: ConnectOAuthRequest) => {\n return client.users.connectOAuthProvider(data);\n },\n [client],\n );\n\n const disconnectOAuthProvider = useCallback(\n async (provider: string) => {\n await client.users.disconnectOAuthProvider(provider);\n },\n [client],\n );\n\n const addPhoneNumber = useCallback(\n async (phoneNumber: string) => {\n await client.users.addPhoneNumber({ phoneNumber });\n },\n [client],\n );\n\n const verifyPhoneNumber = useCallback(\n async (code: string) => {\n await client.users.verifyPhoneNumber({ code });\n },\n [client],\n );\n\n const removePhoneNumber = useCallback(\n async (password: string) => {\n await client.users.removePhoneNumber({ password });\n },\n [client],\n );\n\n return {\n user,\n isLoading,\n error,\n updateProfile,\n changePassword,\n setupTwoFactor,\n verifyTwoFactorSetup,\n disableTwoFactor,\n deleteAccount,\n listConnectedProviders,\n connectOAuthProvider,\n disconnectOAuthProvider,\n addPhoneNumber,\n verifyPhoneNumber,\n removePhoneNumber,\n };\n}\n","import type { AccountViewSection } from \"../../types/components\";\n\n/**\n * Default section mapping for AccountView component.\n * Maps logical settings sections to URL paths.\n *\n * @example\n * // Use in Next.js App Router:\n * <AccountView section={pathname} sections={accountViewSections} />\n *\n * // Override specific sections:\n * <AccountView\n * section={pathname}\n * sections={{ ...accountViewSections, \"/account\": \"/profile\" }}\n * />\n */\nexport const accountViewSections: Record<AccountViewSection, string> = {\n \"/account\": \"/account\",\n \"/security\": \"/security\",\n \"/sessions\": \"/sessions\",\n \"/providers\": \"/providers\",\n \"/api-keys\": \"/api-keys\",\n \"/danger\": \"/danger\",\n};\n","import { AuthError, AuthErrorCode } from \"@atzentis/auth-sdk\";\n\n/**\n * Safely converts an unknown caught value to AuthError.\n * If the value is already an AuthError, returns it directly.\n * Otherwise wraps the message in a new AuthError.\n */\nexport function toAuthError(error: unknown): AuthError {\n if (error instanceof AuthError) return error;\n const message = error instanceof Error ? error.message : String(error);\n return new AuthError({\n code: AuthErrorCode.NetworkError,\n message,\n statusCode: 0,\n });\n}\n","import { z } from \"zod\";\n\nexport const changeEmailSchema = z.object({\n email: z.string().min(1).email(),\n});\n\nexport type ChangeEmailFormData = z.infer<typeof changeEmailSchema>;\n","\"use client\";\n\nimport { Button } from \"@atzentis/ui-shadcn\";\n\nexport interface SubmitButtonProps {\n loading: boolean;\n loadingLabel: string;\n actionLabel: string;\n className?: string;\n disabled?: boolean;\n}\n\nexport function SubmitButton({\n loading,\n loadingLabel,\n actionLabel,\n className,\n disabled,\n}: SubmitButtonProps) {\n return (\n <Button type=\"submit\" disabled={loading || disabled} className={className ?? \"w-full\"}>\n {loading ? loadingLabel : actionLabel}\n </Button>\n );\n}\n","export function isEmail(value: string): boolean {\n return value.includes(\"@\");\n}\n\nexport function maskEmail(email: string): string {\n const [local, domain] = email.split(\"@\");\n if (!local || !domain) return email;\n const masked =\n local.length <= 1 ? local : `${local[0]}${\"*\".repeat(Math.min(local.length - 1, 3))}`;\n return `${masked}@${domain}`;\n}\n","\"use client\";\n\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { FormInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuth } from \"../../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { useUser } from \"../../../hooks/use-user\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { ChangeEmailFormData } from \"../../../schemas/change-email-schema\";\nimport { changeEmailSchema } from \"../../../schemas/change-email-schema\";\nimport type { ChangeEmailCardProps } from \"../../../types/components\";\nimport { SubmitButton } from \"../../shared/submit-button\";\nimport { maskEmail } from \"../../shared/utils\";\n\nexport function ChangeEmailCard({\n redirectUrl,\n onSuccess,\n onError,\n resendCooldown = 60,\n className,\n}: ChangeEmailCardProps) {\n const { sendVerificationEmail } = useAuth();\n const { user } = useUser();\n const { localization, localizeErrors } = useAuthLocalization();\n const [sent, setSent] = useState(false);\n const [sentEmail, setSentEmail] = useState(\"\");\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [formError, setFormError] = useState<string | null>(null);\n const [cooldownRemaining, setCooldownRemaining] = useState(0);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n getValues,\n } = useForm<ChangeEmailFormData>({\n resolver: zodResolver(changeEmailSchema),\n defaultValues: { email: \"\" },\n });\n\n useEffect(() => {\n if (cooldownRemaining <= 0) return;\n\n const timer = setInterval(() => {\n setCooldownRemaining((prev) => Math.max(0, prev - 1));\n }, 1000);\n\n return () => clearInterval(timer);\n }, [cooldownRemaining]);\n\n const onSubmit = useCallback(\n async (data: ChangeEmailFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await sendVerificationEmail({ email: data.email, redirectUrl });\n setSent(true);\n setSentEmail(data.email);\n setCooldownRemaining(resendCooldown);\n onSuccess?.();\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [\n sendVerificationEmail,\n redirectUrl,\n resendCooldown,\n onSuccess,\n onError,\n localization,\n localizeErrors,\n ],\n );\n\n const handleResend = useCallback(async () => {\n const email = getValues(\"email\");\n setFormError(null);\n setIsSubmitting(true);\n try {\n await sendVerificationEmail({ email, redirectUrl });\n setCooldownRemaining(resendCooldown);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n } finally {\n setIsSubmitting(false);\n }\n }, [sendVerificationEmail, redirectUrl, resendCooldown, getValues, localization, localizeErrors]);\n\n if (sent) {\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n <div className=\"space-y-2\">\n <h3 className=\"text-lg font-semibold\">{localization.CHANGE_EMAIL}</h3>\n <p className=\"text-sm text-gray-500\">{localization.CHANGE_EMAIL_SENT}</p>\n <p className=\"text-sm font-medium\">{maskEmail(sentEmail)}</p>\n </div>\n\n <div className=\"space-y-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={isSubmitting || cooldownRemaining > 0}\n onClick={handleResend}\n className=\"w-full\"\n >\n {cooldownRemaining > 0\n ? localization.RESEND_IN.replace(\"{{seconds}}\", String(cooldownRemaining))\n : isSubmitting\n ? localization.RESENDING\n : localization.RESEND}\n </Button>\n </div>\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n </div>\n </Card>\n );\n }\n\n const currentEmail = user?.email ?? \"\";\n\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n <div className=\"space-y-2\">\n <h3 className=\"text-lg font-semibold\">{localization.CHANGE_EMAIL}</h3>\n <p className=\"text-sm text-gray-500\">{localization.CHANGE_EMAIL_DESCRIPTION}</p>\n </div>\n\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\" htmlFor=\"current-email\">\n {localization.CURRENT_EMAIL}\n </label>\n <div className=\"text-sm text-gray-700 bg-gray-50 rounded-md p-3 border border-gray-200\">\n {currentEmail}\n </div>\n </div>\n\n <FormInput\n label={localization.EMAIL}\n id=\"new-email\"\n type=\"email\"\n autoComplete=\"email\"\n placeholder={localization.NEW_EMAIL_PLACEHOLDER}\n error={errors.email?.message}\n disabled={isSubmitting}\n {...register(\"email\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.SENDING}\n actionLabel={localization.CONTINUE}\n />\n </form>\n </div>\n </Card>\n );\n}\n","export function getInitials(name: string): string {\n return name\n .split(\" \")\n .map((w) => w[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n}\n","\"use client\";\n\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { getInitials } from \"../../../helpers/initials\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { useUser } from \"../../../hooks/use-user\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { UpdateAvatarCardProps } from \"../../../types/components\";\n\nexport function UpdateAvatarCard({\n onUpload,\n onSuccess,\n onError,\n maxSizeMB = 5,\n className,\n}: UpdateAvatarCardProps) {\n const { user, updateProfile } = useUser();\n const { localization, localizeErrors } = useAuthLocalization();\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n const [isUploading, setIsUploading] = useState(false);\n const [previewUrl, setPreviewUrl] = useState<string | null>(null);\n const [selectedFile, setSelectedFile] = useState<File | null>(null);\n const [formError, setFormError] = useState<string | null>(null);\n const [successMessage, setSuccessMessage] = useState<string | null>(null);\n\n useEffect(() => {\n if (!successMessage) return;\n\n const timer = setTimeout(() => {\n setSuccessMessage(null);\n }, 3000);\n\n return () => clearTimeout(timer);\n }, [successMessage]);\n\n const handleAvatarClick = useCallback(() => {\n const input = fileInputRef.current;\n if (input) {\n input.click();\n }\n }, []);\n\n const handleFileChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const file = event.target.files?.[0];\n if (!file) return;\n\n setFormError(null);\n\n // Validate file size\n const fileSizeMB = file.size / 1024 / 1024;\n if (fileSizeMB > maxSizeMB) {\n setFormError(\n `${localization.FILE_TOO_LARGE} (${localization.MAX_FILE_SIZE} ${maxSizeMB}MB)`,\n );\n return;\n }\n\n // Create preview\n const reader = new FileReader();\n reader.onload = (e) => {\n const result = e.target?.result;\n if (typeof result === \"string\") {\n setPreviewUrl(result);\n }\n };\n reader.readAsDataURL(file);\n\n setSelectedFile(file);\n },\n [maxSizeMB, localization],\n );\n\n const handleSave = useCallback(async () => {\n if (!selectedFile) return;\n\n setFormError(null);\n setSuccessMessage(null);\n setIsUploading(true);\n\n try {\n // Call consumer's upload handler to get URL\n const avatarUrl = await onUpload(selectedFile);\n\n // Update profile with new avatar URL\n const updatedUser = await updateProfile({ avatar: avatarUrl });\n\n setSuccessMessage(localization.AVATAR_UPDATED);\n setPreviewUrl(null);\n setSelectedFile(null);\n onSuccess?.(updatedUser);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsUploading(false);\n }\n }, [selectedFile, onUpload, updateProfile, localization, localizeErrors, onSuccess, onError]);\n\n const handleDelete = useCallback(async () => {\n setFormError(null);\n setSuccessMessage(null);\n setIsUploading(true);\n\n try {\n const updatedUser = await updateProfile({ avatar: \"\" });\n setSuccessMessage(localization.AVATAR_DELETED);\n setPreviewUrl(null);\n setSelectedFile(null);\n onSuccess?.(updatedUser);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsUploading(false);\n }\n }, [updateProfile, localization, localizeErrors, onSuccess, onError]);\n\n const handleCancel = useCallback(() => {\n setPreviewUrl(null);\n setSelectedFile(null);\n setFormError(null);\n if (fileInputRef.current) {\n fileInputRef.current.value = \"\";\n }\n }, []);\n\n const displayUrl = previewUrl ?? user?.avatar;\n const showPreview = !!selectedFile;\n const hasAvatar = !!user?.avatar;\n\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n <div>\n <h3 className=\"text-lg font-semibold\">{localization.AVATAR}</h3>\n <p className=\"text-sm text-gray-500\">{localization.AVATAR_DESCRIPTION}</p>\n </div>\n\n <div className=\"flex items-center gap-4\">\n <button\n type=\"button\"\n onClick={handleAvatarClick}\n disabled={isUploading}\n className=\"relative h-20 w-20 rounded-full overflow-hidden border-2 border-gray-200 hover:border-gray-300 transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n {displayUrl ? (\n <img\n src={displayUrl}\n alt={localization.AVATAR}\n className=\"h-full w-full object-cover\"\n />\n ) : (\n <div className=\"h-full w-full bg-gray-200 flex items-center justify-center text-gray-600 text-lg font-medium\">\n {getInitials(user?.name ?? \"\")}\n </div>\n )}\n <div className=\"absolute inset-0 bg-black bg-opacity-0 hover:bg-opacity-10 transition-opacity flex items-center justify-center\">\n <span className=\"text-white text-xs opacity-0 hover:opacity-100 transition-opacity\">\n {localization.CLICK_TO_UPLOAD}\n </span>\n </div>\n </button>\n\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n onChange={handleFileChange}\n disabled={isUploading}\n className=\"hidden\"\n />\n\n <div className=\"flex-1\">\n <p className=\"text-sm text-gray-600\">\n {localization.MAX_FILE_SIZE} {maxSizeMB}MB\n </p>\n </div>\n </div>\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n {successMessage && (\n <div aria-live=\"polite\" className=\"text-sm text-green-600\">\n {successMessage}\n </div>\n )}\n\n {showPreview ? (\n <div className=\"flex gap-2\">\n <Button type=\"button\" onClick={handleSave} disabled={isUploading}>\n {isUploading ? localization.LOADING : localization.SAVE}\n </Button>\n <Button type=\"button\" variant=\"outline\" onClick={handleCancel} disabled={isUploading}>\n {localization.CANCEL}\n </Button>\n </div>\n ) : (\n hasAvatar && (\n <Button\n type=\"button\"\n variant=\"destructive\"\n onClick={handleDelete}\n disabled={isUploading}\n className=\"w-full sm:w-auto\"\n >\n {isUploading ? localization.LOADING : localization.DELETE_AVATAR}\n </Button>\n )\n )}\n </div>\n </Card>\n );\n}\n","import { z } from \"zod\";\n\nexport const updateNameSchema = z.object({\n name: z.string().min(1),\n});\n\nexport type UpdateNameFormData = z.infer<typeof updateNameSchema>;\n","\"use client\";\n\nimport { Card } from \"@atzentis/ui-shadcn\";\nimport { FormInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { useUser } from \"../../../hooks/use-user\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { UpdateNameFormData } from \"../../../schemas/update-name-schema\";\nimport { updateNameSchema } from \"../../../schemas/update-name-schema\";\nimport type { UpdateNameCardProps } from \"../../../types/components\";\nimport { SubmitButton } from \"../../shared/submit-button\";\n\nexport function UpdateNameCard({ onSuccess, onError, className }: UpdateNameCardProps) {\n const { user, updateProfile } = useUser();\n const { localization, localizeErrors } = useAuthLocalization();\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [formError, setFormError] = useState<string | null>(null);\n const [showSuccess, setShowSuccess] = useState(false);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm<UpdateNameFormData>({\n resolver: zodResolver(updateNameSchema),\n defaultValues: { name: user?.name ?? \"\" },\n });\n\n useEffect(() => {\n if (!showSuccess) return;\n\n const timer = setTimeout(() => {\n setShowSuccess(false);\n }, 3000);\n\n return () => clearTimeout(timer);\n }, [showSuccess]);\n\n const onSubmit = useCallback(\n async (data: UpdateNameFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n const updatedUser = await updateProfile({ name: data.name });\n setShowSuccess(true);\n onSuccess?.(updatedUser);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [updateProfile, onSuccess, onError, localization, localizeErrors],\n );\n\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n <div>\n <h3 className=\"text-lg font-semibold\">{localization.UPDATE_NAME}</h3>\n <p className=\"text-sm text-gray-500\">{localization.UPDATE_NAME_DESCRIPTION}</p>\n </div>\n\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-4\">\n <FormInput\n label={localization.NAME}\n id=\"update-name-input\"\n type=\"text\"\n autoComplete=\"name\"\n error={errors.name?.message}\n disabled={isSubmitting}\n {...register(\"name\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n {showSuccess && (\n <div aria-live=\"polite\" className=\"text-sm text-green-600\">\n {localization.NAME_UPDATED}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.LOADING}\n actionLabel={localization.SAVE}\n />\n </form>\n </div>\n </Card>\n );\n}\n","import { z } from \"zod\";\n\nexport const updateUsernameSchema = z.object({\n username: z\n .string()\n .min(3, \"Username must be at least 3 characters\")\n .max(30, \"Username must not exceed 30 characters\")\n .regex(\n /^[a-zA-Z0-9_-]+$/,\n \"Username can only contain letters, numbers, underscores, and hyphens\",\n ),\n});\n\nexport type UpdateUsernameFormData = z.infer<typeof updateUsernameSchema>;\n","\"use client\";\n\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { FormInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuth } from \"../../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { useUser } from \"../../../hooks/use-user\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { UpdateUsernameFormData } from \"../../../schemas/update-username-schema\";\nimport { updateUsernameSchema } from \"../../../schemas/update-username-schema\";\nimport type { UpdateUsernameCardProps } from \"../../../types/components\";\n\ntype AvailabilityState = \"idle\" | \"checking\" | \"available\" | \"taken\";\n\nexport function UpdateUsernameCard({ onSuccess, onError, className }: UpdateUsernameCardProps) {\n const { user, updateProfile } = useUser();\n const { isUsernameAvailable } = useAuth();\n const { localization, localizeErrors } = useAuthLocalization();\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [formError, setFormError] = useState<string | null>(null);\n const [showSuccess, setShowSuccess] = useState(false);\n const [availabilityState, setAvailabilityState] = useState<AvailabilityState>(\"idle\");\n\n const {\n register,\n handleSubmit,\n watch,\n formState: { errors },\n } = useForm<UpdateUsernameFormData>({\n resolver: zodResolver(updateUsernameSchema),\n defaultValues: { username: user?.username ?? \"\" },\n });\n\n const usernameValue = watch(\"username\");\n\n // Success message auto-dismiss after 3s\n useEffect(() => {\n if (!showSuccess) return;\n\n const timer = setTimeout(() => {\n setShowSuccess(false);\n }, 3000);\n\n return () => clearTimeout(timer);\n }, [showSuccess]);\n\n // Debounced availability check\n // biome-ignore lint/correctness/useExhaustiveDependencies: usernameValue and user.username are the only deps needed for availability check\n useEffect(() => {\n const currentUsername = usernameValue?.trim();\n const originalUsername = user?.username;\n\n // Skip check if empty, invalid format, or matches current username\n if (!currentUsername || currentUsername === originalUsername) {\n setAvailabilityState(\"idle\");\n return;\n }\n\n // Validate format before checking availability\n const isValidFormat = /^[a-zA-Z0-9_-]+$/.test(currentUsername);\n if (!isValidFormat || currentUsername.length < 3 || currentUsername.length > 30) {\n setAvailabilityState(\"idle\");\n return;\n }\n\n // Set checking state immediately\n setAvailabilityState(\"checking\");\n\n // Debounce: wait 300ms after user stops typing\n const timer = setTimeout(() => {\n isUsernameAvailable(currentUsername)\n .then((available) => {\n setAvailabilityState(available ? \"available\" : \"taken\");\n })\n .catch(() => {\n setAvailabilityState(\"idle\");\n });\n }, 300);\n\n return () => clearTimeout(timer);\n }, [usernameValue, user?.username]);\n\n const onSubmit = useCallback(\n async (data: UpdateUsernameFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n const updatedUser = await updateProfile({ username: data.username });\n setShowSuccess(true);\n setAvailabilityState(\"idle\");\n onSuccess?.(updatedUser);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [updateProfile, onSuccess, onError, localization, localizeErrors],\n );\n\n // Determine if submit should be disabled\n const isSubmitDisabled =\n isSubmitting || availabilityState === \"checking\" || availabilityState === \"taken\";\n\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n <div>\n <h3 className=\"text-lg font-semibold\">{localization.CHANGE_USERNAME}</h3>\n <p className=\"text-sm text-gray-500\">{localization.CHANGE_USERNAME_DESCRIPTION}</p>\n </div>\n\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-4\">\n <div>\n <FormInput\n label={localization.USERNAME}\n id=\"update-username-input\"\n type=\"text\"\n autoComplete=\"username\"\n error={errors.username?.message}\n disabled={isSubmitting}\n {...register(\"username\")}\n />\n {/* Availability indicator */}\n {availabilityState === \"checking\" && (\n <p className=\"text-xs text-gray-500 mt-1\">{localization.CHECKING_AVAILABILITY}</p>\n )}\n {availabilityState === \"available\" && (\n <p className=\"text-xs text-green-600 mt-1\">\n {localization.USERNAME_AVAILABLE_STATUS}\n </p>\n )}\n {availabilityState === \"taken\" && (\n <p className=\"text-xs text-red-600 mt-1\">{localization.USERNAME_TAKEN_STATUS}</p>\n )}\n </div>\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n {showSuccess && (\n <div aria-live=\"polite\" className=\"text-sm text-green-600\">\n {localization.USERNAME_UPDATED}\n </div>\n )}\n\n <Button type=\"submit\" disabled={isSubmitDisabled} className=\"w-full\">\n {isSubmitting ? localization.LOADING : localization.SAVE}\n </Button>\n </form>\n </div>\n </Card>\n );\n}\n","\"use client\";\n\nimport type { AuthError, User } from \"@atzentis/auth-sdk\";\nimport { ChangeEmailCard } from \"./change-email\";\nimport { UpdateAvatarCard } from \"./update-avatar\";\nimport { UpdateNameCard } from \"./update-name\";\nimport { UpdateUsernameCard } from \"./update-username\";\n\nexport interface AccountSettingsCardsProps {\n redirectUrl?: string;\n onUpload?: (file: File) => Promise<string>;\n onSuccess?: (user: User) => void;\n onError?: (error: AuthError) => void;\n className?: string;\n}\n\nexport function AccountSettingsCards({\n redirectUrl,\n onUpload,\n onSuccess,\n onError,\n className,\n}: AccountSettingsCardsProps) {\n return (\n <div className={`space-y-6 ${className ?? \"\"}`}>\n <UpdateNameCard onSuccess={onSuccess} onError={onError} />\n <UpdateUsernameCard onSuccess={onSuccess} onError={onError} />\n {onUpload && <UpdateAvatarCard onUpload={onUpload} onSuccess={onSuccess} onError={onError} />}\n {redirectUrl && <ChangeEmailCard redirectUrl={redirectUrl} onError={onError} />}\n </div>\n );\n}\n","\"use client\";\n\nimport type { ApiKey, CreateApiKeyResponse } from \"@atzentis/auth-sdk\";\nimport {\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Input,\n} from \"@atzentis/ui-shadcn\";\nimport { FormInput, FormSelect } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { z } from \"zod\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useApiKeys } from \"../../../hooks/use-api-keys\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { ApiKeysCardProps } from \"../../../types/components\";\n\nconst MILLISECONDS_PER_DAY = 1000 * 60 * 60 * 24;\n\nconst createApiKeySchema = z.object({\n name: z.string().min(1, \"Name is required\"),\n expiresIn: z.string(),\n});\n\ntype CreateApiKeyFormData = z.infer<typeof createApiKeySchema>;\n\nexport function ApiKeysCard({\n availableScopes,\n onCreated,\n onRevoked,\n onError,\n className,\n}: ApiKeysCardProps) {\n const { apiKeys, isLoading, refresh, create, revoke } = useApiKeys();\n const { localization, localizeErrors } = useAuthLocalization();\n const [showCreateForm, setShowCreateForm] = useState(false);\n const [isCreating, setIsCreating] = useState(false);\n const [isRevoking, setIsRevoking] = useState<string | null>(null);\n const [createdKey, setCreatedKey] = useState<CreateApiKeyResponse | null>(null);\n const [successMessage, setSuccessMessage] = useState<string | null>(null);\n const [formError, setFormError] = useState<string | null>(null);\n const [copiedKey, setCopiedKey] = useState(false);\n\n const expirationOptions = [\n { value: String(MILLISECONDS_PER_DAY * 30), label: localization.EXPIRES_30_DAYS },\n { value: String(MILLISECONDS_PER_DAY * 90), label: localization.EXPIRES_90_DAYS },\n { value: String(MILLISECONDS_PER_DAY * 365), label: localization.EXPIRES_1_YEAR },\n { value: \"0\", label: localization.NEVER },\n ];\n\n const {\n register,\n handleSubmit,\n watch,\n setValue,\n reset: resetForm,\n formState: { errors },\n } = useForm<CreateApiKeyFormData>({\n resolver: zodResolver(createApiKeySchema),\n defaultValues: { name: \"\", expiresIn: String(MILLISECONDS_PER_DAY * 30) },\n });\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n useEffect(() => {\n if (!successMessage) return;\n\n const timer = setTimeout(() => {\n setSuccessMessage(null);\n }, 3000);\n\n return () => clearTimeout(timer);\n }, [successMessage]);\n\n const handleCreateSubmit = useCallback(\n async (data: CreateApiKeyFormData) => {\n setFormError(null);\n setSuccessMessage(null);\n setIsCreating(true);\n\n try {\n const expiresInMs = Number.parseInt(data.expiresIn, 10);\n const response = await create({\n name: data.name,\n scopes: availableScopes,\n expiresIn: expiresInMs > 0 ? expiresInMs : undefined,\n });\n\n setCreatedKey(response);\n resetForm();\n setShowCreateForm(false);\n onCreated?.(response.apiKey);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsCreating(false);\n }\n },\n [create, availableScopes, localization, localizeErrors, onCreated, onError, resetForm],\n );\n\n const handleRevoke = useCallback(\n async (keyId: string) => {\n setIsRevoking(keyId);\n setSuccessMessage(null);\n\n try {\n await revoke(keyId);\n setSuccessMessage(localization.KEY_REVOKED);\n onRevoked?.(keyId);\n } catch (err) {\n onError?.(toAuthError(err));\n } finally {\n setIsRevoking(null);\n }\n },\n [revoke, localization, onRevoked, onError],\n );\n\n const handleCopyKey = useCallback(\n async (key: string) => {\n try {\n await navigator.clipboard.writeText(key);\n setCopiedKey(true);\n setTimeout(() => setCopiedKey(false), 2000);\n } catch (err) {\n // Clipboard API might fail in some contexts\n onError?.(toAuthError(err));\n }\n },\n [onError],\n );\n\n const handleDismissCreatedKey = useCallback(() => {\n setCreatedKey(null);\n }, []);\n\n const formatDate = (dateString?: string | null) => {\n if (!dateString) return localization.NEVER;\n try {\n return new Date(dateString).toLocaleString();\n } catch {\n return dateString;\n }\n };\n\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.API_KEYS}</CardTitle>\n <CardDescription>{localization.API_KEYS_DESCRIPTION}</CardDescription>\n </CardHeader>\n <CardContent>\n {isLoading && apiKeys.length === 0 ? (\n <div className=\"text-center text-sm text-gray-500\">{localization.LOADING_API_KEYS}</div>\n ) : (\n <div className=\"space-y-4\">\n {successMessage && (\n <div aria-live=\"polite\" className=\"text-sm text-green-600\">\n {successMessage}\n </div>\n )}\n\n {createdKey && (\n <div className=\"rounded-lg border border-yellow-300 bg-yellow-50 p-4 space-y-3\">\n <p className=\"text-sm font-semibold text-yellow-900\">\n {localization.KEY_CREATED_WARNING}\n </p>\n <div className=\"flex items-center gap-2\">\n <Input\n type=\"text\"\n value={createdKey.key}\n readOnly\n className=\"font-mono text-xs bg-white\"\n />\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => handleCopyKey(createdKey.key)}\n variant=\"outline\"\n >\n {copiedKey ? localization.KEY_COPIED : localization.COPY_KEY}\n </Button>\n </div>\n <Button type=\"button\" size=\"sm\" onClick={handleDismissCreatedKey} variant=\"ghost\">\n {localization.DONE}\n </Button>\n </div>\n )}\n\n {showCreateForm ? (\n <form\n onSubmit={handleSubmit(handleCreateSubmit)}\n className=\"rounded border p-4 space-y-4\"\n >\n <FormInput\n label={localization.KEY_NAME}\n required\n placeholder={localization.KEY_NAME_PLACEHOLDER}\n error={errors.name?.message}\n disabled={isCreating}\n {...register(\"name\")}\n />\n\n <FormSelect\n label={localization.KEY_EXPIRES}\n required\n options={expirationOptions}\n value={watch(\"expiresIn\")}\n onValueChange={(value) => setValue(\"expiresIn\", value)}\n disabled={isCreating}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <div className=\"flex items-center gap-2\">\n <Button type=\"submit\" disabled={isCreating} size=\"sm\">\n {isCreating ? localization.LOADING : localization.CREATE_API_KEY}\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n setShowCreateForm(false);\n resetForm();\n setFormError(null);\n }}\n disabled={isCreating}\n >\n {localization.CANCEL}\n </Button>\n </div>\n </form>\n ) : (\n <Button type=\"button\" onClick={() => setShowCreateForm(true)} size=\"sm\">\n {localization.CREATE_API_KEY}\n </Button>\n )}\n\n {apiKeys.length === 0 ? (\n <div className=\"text-center text-sm text-gray-500\">{localization.NO_API_KEYS}</div>\n ) : (\n <div className=\"space-y-3\">\n {apiKeys.map((apiKey: ApiKey) => {\n const isRevokingThis = isRevoking === apiKey.id;\n\n return (\n <div\n key={apiKey.id}\n className=\"flex items-start justify-between gap-4 rounded border p-4\"\n >\n <div className=\"flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium\">{apiKey.name}</span>\n <span className=\"rounded bg-gray-100 px-2 py-0.5 text-xs font-mono text-gray-700\">\n {apiKey.prefix}...\n </span>\n </div>\n\n {apiKey.scopes && apiKey.scopes.length > 0 && (\n <div className=\"flex items-center gap-1 mt-2 flex-wrap\">\n <span className=\"text-xs text-gray-500\">\n {localization.KEY_SCOPES}:\n </span>\n {apiKey.scopes.map((scope) => (\n <span\n key={scope}\n className=\"rounded bg-blue-100 px-2 py-0.5 text-xs text-blue-700\"\n >\n {scope}\n </span>\n ))}\n </div>\n )}\n\n <p className=\"text-xs text-gray-500 mt-2\">\n {localization.CREATED}: {formatDate(apiKey.createdAt)}\n </p>\n\n <p className=\"text-xs text-gray-500\">\n {localization.LAST_USED_DATE}: {formatDate(apiKey.lastUsedAt)}\n </p>\n\n <p className=\"text-xs text-gray-500\">\n {localization.KEY_EXPIRES}: {formatDate(apiKey.expiresAt)}\n </p>\n </div>\n\n <Button\n type=\"button\"\n variant=\"destructive\"\n size=\"sm\"\n disabled={isRevokingThis}\n onClick={() => handleRevoke(apiKey.id)}\n >\n {isRevokingThis ? localization.LOADING : localization.REVOKE_API_KEY}\n </Button>\n </div>\n );\n })}\n </div>\n )}\n </div>\n )}\n </CardContent>\n </Card>\n );\n}\n","\"use client\";\n\nimport { Button, Card, Input, Textarea } from \"@atzentis/ui-shadcn\";\nimport { FormPasswordInput } from \"@atzentis/ui-shared\";\nimport { useCallback, useState } from \"react\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { useUser } from \"../../../hooks/use-user\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { DeleteAccountCardProps } from \"../../../types/components\";\n\ntype Step = \"warning\" | \"confirmation\" | \"password\";\n\nexport function DeleteAccountCard({\n onDeleted,\n onError,\n confirmationPhrase,\n className,\n}: DeleteAccountCardProps) {\n const { deleteAccount } = useUser();\n const { localization, localizeErrors } = useAuthLocalization();\n\n const [step, setStep] = useState<Step>(\"warning\");\n const [confirmationText, setConfirmationText] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [reason, setReason] = useState(\"\");\n const [isDeleting, setIsDeleting] = useState(false);\n const [formError, setFormError] = useState<string | null>(null);\n\n const requiredPhrase = confirmationPhrase ?? localization.DEFAULT_CONFIRM_PHRASE;\n\n const isConfirmationValid =\n confirmationText.trim().toLowerCase() === requiredPhrase.toLowerCase();\n\n const handleDeleteClick = useCallback(() => {\n setStep(\"confirmation\");\n setFormError(null);\n }, []);\n\n const handleConfirmationNext = useCallback(() => {\n if (!isConfirmationValid) return;\n setStep(\"password\");\n setFormError(null);\n }, [isConfirmationValid]);\n\n const handleSubmit = useCallback(\n async (e: React.FormEvent) => {\n e.preventDefault();\n if (!password) return;\n\n setFormError(null);\n setIsDeleting(true);\n\n try {\n await deleteAccount(password, reason || undefined);\n onDeleted?.();\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsDeleting(false);\n }\n },\n [password, reason, deleteAccount, onDeleted, onError, localization, localizeErrors],\n );\n\n const handleBack = useCallback(() => {\n if (step === \"password\") {\n setStep(\"confirmation\");\n setPassword(\"\");\n setReason(\"\");\n } else if (step === \"confirmation\") {\n setStep(\"warning\");\n setConfirmationText(\"\");\n }\n setFormError(null);\n }, [step]);\n\n return (\n <Card className={`border-red-600 ${className ?? \"\"}`}>\n <div className=\"p-6 space-y-4\">\n <div>\n <h3 className=\"text-lg font-semibold text-red-600\">{localization.DELETE_ACCOUNT}</h3>\n <p className=\"text-sm text-gray-500\">{localization.DELETE_ACCOUNT_WARNING}</p>\n </div>\n\n {step === \"warning\" && (\n <div className=\"space-y-4\">\n <Button variant=\"destructive\" onClick={handleDeleteClick}>\n {localization.DELETE_ACCOUNT}\n </Button>\n </div>\n )}\n\n {step === \"confirmation\" && (\n <div className=\"space-y-4\">\n <div>\n <label htmlFor=\"delete-confirmation\" className=\"block text-sm font-medium mb-2\">\n {localization.TYPE_TO_CONFIRM.replace(\"{{phrase}}\", requiredPhrase)}\n </label>\n <Input\n id=\"delete-confirmation\"\n type=\"text\"\n value={confirmationText}\n onChange={(e) => setConfirmationText(e.target.value)}\n placeholder={requiredPhrase}\n className=\"w-full\"\n />\n </div>\n\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" onClick={handleBack}>\n {localization.CANCEL}\n </Button>\n <Button\n variant=\"destructive\"\n onClick={handleConfirmationNext}\n disabled={!isConfirmationValid}\n >\n {localization.CONTINUE}\n </Button>\n </div>\n </div>\n )}\n\n {step === \"password\" && (\n <form onSubmit={handleSubmit} className=\"space-y-4\">\n <FormPasswordInput\n label={localization.PASSWORD}\n id=\"delete-account-password\"\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n disabled={isDeleting}\n required\n />\n\n <div>\n <label htmlFor=\"delete-account-reason\" className=\"block text-sm font-medium mb-2\">\n {localization.DELETE_REASON}\n </label>\n <Textarea\n id=\"delete-account-reason\"\n value={reason}\n onChange={(e) => setReason(e.target.value)}\n disabled={isDeleting}\n placeholder=\"\"\n rows={3}\n className=\"w-full\"\n />\n </div>\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <div className=\"flex gap-2\">\n <Button type=\"button\" variant=\"outline\" onClick={handleBack} disabled={isDeleting}>\n {localization.GO_BACK}\n </Button>\n <Button type=\"submit\" variant=\"destructive\" disabled={!password || isDeleting}>\n {isDeleting ? localization.DELETING_ACCOUNT : localization.CONFIRM_DELETION}\n </Button>\n </div>\n </form>\n )}\n </div>\n </Card>\n );\n}\n","\"use client\";\n\nimport type { ConnectedProvider, OAuthProvider } from \"@atzentis/auth-sdk\";\nimport {\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@atzentis/ui-shadcn\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { useUser } from \"../../../hooks/use-user\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { ProvidersCardProps } from \"../../../types/components\";\n\nexport function ProvidersCard({\n availableProviders,\n oauthRedirectUri: _oauthRedirectUri,\n onConnect,\n onDisconnect,\n onError,\n className,\n}: ProvidersCardProps) {\n const { listConnectedProviders, disconnectOAuthProvider } = useUser();\n const { localization, localizeErrors } = useAuthLocalization();\n const [connectedProviders, setConnectedProviders] = useState<ConnectedProvider[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n const [disconnectingProvider, setDisconnectingProvider] = useState<string | null>(null);\n const [error, setError] = useState<string | null>(null);\n const [successMessage, setSuccessMessage] = useState<string | null>(null);\n\n const loadProviders = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const providers = await listConnectedProviders();\n setConnectedProviders(providers);\n } catch (err) {\n const errorMessage = getLocalizedError(err, localization, localizeErrors);\n setError(errorMessage);\n onError?.(toAuthError(err));\n } finally {\n setIsLoading(false);\n }\n }, [listConnectedProviders, localization, localizeErrors, onError]);\n\n useEffect(() => {\n loadProviders();\n }, [loadProviders]);\n\n useEffect(() => {\n if (!successMessage) return;\n\n const timer = setTimeout(() => {\n setSuccessMessage(null);\n }, 3000);\n\n return () => clearTimeout(timer);\n }, [successMessage]);\n\n const handleDisconnect = useCallback(\n async (provider: string) => {\n setDisconnectingProvider(provider);\n setError(null);\n setSuccessMessage(null);\n try {\n await disconnectOAuthProvider(provider);\n setSuccessMessage(localization.PROVIDER_DISCONNECTED);\n onDisconnect?.(provider);\n await loadProviders();\n } catch (err) {\n const errorMessage = getLocalizedError(err, localization, localizeErrors);\n setError(errorMessage);\n onError?.(toAuthError(err));\n } finally {\n setDisconnectingProvider(null);\n }\n },\n [disconnectOAuthProvider, localization, localizeErrors, onDisconnect, onError, loadProviders],\n );\n\n const handleConnect = useCallback(\n (provider: OAuthProvider) => {\n onConnect?.(provider);\n },\n [onConnect],\n );\n\n const getProviderDisplayName = (provider: string): string => {\n const providerNames: Record<string, string> = {\n google: \"Google\",\n github: \"GitHub\",\n apple: \"Apple\",\n microsoft: \"Microsoft\",\n atzentis: \"Atzentis\",\n };\n return providerNames[provider] ?? provider;\n };\n\n const connectedProviderIds = new Set(connectedProviders.map((p) => p.provider));\n const unconnectedProviders = availableProviders.filter((p) => !connectedProviderIds.has(p));\n\n const formatDate = (dateString: string): string => {\n try {\n const date = new Date(dateString);\n return date.toLocaleDateString(undefined, { year: \"numeric\", month: \"long\", day: \"numeric\" });\n } catch {\n return dateString;\n }\n };\n\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.CONNECTED_PROVIDERS}</CardTitle>\n <CardDescription>{localization.CONNECTED_PROVIDERS_DESCRIPTION}</CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-4\">\n {error && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {error}\n </div>\n )}\n\n {successMessage && (\n <div aria-live=\"polite\" className=\"text-sm text-green-600\">\n {successMessage}\n </div>\n )}\n\n {isLoading ? (\n <div className=\"text-sm text-gray-500\">{localization.LOADING}</div>\n ) : (\n <>\n {connectedProviders.length === 0 && unconnectedProviders.length === 0 && (\n <div className=\"text-sm text-gray-500\">{localization.NO_PROVIDERS_CONNECTED}</div>\n )}\n\n {connectedProviders.length > 0 && (\n <div className=\"space-y-3\">\n {connectedProviders.map((provider) => (\n <div\n key={provider.provider}\n className=\"flex items-center justify-between border rounded-lg p-4\"\n >\n <div className=\"flex-1\">\n <div className=\"font-medium\">\n {getProviderDisplayName(provider.provider)}\n </div>\n {provider.email && (\n <div className=\"text-sm text-gray-500\">{provider.email}</div>\n )}\n <div className=\"text-xs text-gray-400\">\n {localization.CONNECTED_ON} {formatDate(provider.connectedAt)}\n </div>\n </div>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleDisconnect(provider.provider)}\n disabled={disconnectingProvider === provider.provider}\n >\n {disconnectingProvider === provider.provider\n ? localization.LOADING\n : localization.DISCONNECT_PROVIDER}\n </Button>\n </div>\n ))}\n </div>\n )}\n\n {unconnectedProviders.length > 0 && (\n <div className=\"space-y-3\">\n {connectedProviders.length > 0 && (\n <div className=\"text-sm font-medium text-gray-700 mt-4\">\n {localization.CONNECT_PROVIDER}\n </div>\n )}\n {unconnectedProviders.map((provider) => (\n <div\n key={provider}\n className=\"flex items-center justify-between border rounded-lg p-4\"\n >\n <div className=\"font-medium\">{getProviderDisplayName(provider)}</div>\n <Button variant=\"outline\" size=\"sm\" onClick={() => handleConnect(provider)}>\n {localization.CONNECT_PROVIDER}\n </Button>\n </div>\n ))}\n </div>\n )}\n </>\n )}\n </div>\n </CardContent>\n </Card>\n );\n}\n","import { z } from \"zod\";\n\nexport const changePasswordSchema = z\n .object({\n confirmPassword: z.string().min(1),\n currentPassword: z.string().min(1),\n newPassword: z.string().min(8),\n })\n .refine((data) => data.newPassword === data.confirmPassword, {\n message: \"PASSWORDS_DO_NOT_MATCH\",\n path: [\"confirmPassword\"],\n });\n\nexport type ChangePasswordFormData = z.infer<typeof changePasswordSchema>;\n","\"use client\";\n\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@atzentis/ui-shadcn\";\nimport { FormPasswordInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { useUser } from \"../../../hooks/use-user\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { ChangePasswordFormData } from \"../../../schemas/change-password-schema\";\nimport { changePasswordSchema } from \"../../../schemas/change-password-schema\";\nimport type { ChangePasswordCardProps } from \"../../../types/components\";\nimport { SubmitButton } from \"../../shared/submit-button\";\n\nexport function ChangePasswordCard({ onSuccess, onError, className }: ChangePasswordCardProps) {\n const { changePassword } = useUser();\n const { localization, localizeErrors } = useAuthLocalization();\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [formError, setFormError] = useState<string | null>(null);\n const [successMessage, setSuccessMessage] = useState<string | null>(null);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n reset,\n } = useForm<ChangePasswordFormData>({\n resolver: zodResolver(changePasswordSchema),\n defaultValues: { confirmPassword: \"\", currentPassword: \"\", newPassword: \"\" },\n });\n\n useEffect(() => {\n if (!successMessage) return;\n\n const timer = setTimeout(() => {\n setSuccessMessage(null);\n }, 3000);\n\n return () => clearTimeout(timer);\n }, [successMessage]);\n\n const onSubmit = useCallback(\n async (data: ChangePasswordFormData) => {\n setFormError(null);\n setSuccessMessage(null);\n setIsSubmitting(true);\n try {\n await changePassword(data.currentPassword, data.newPassword);\n setSuccessMessage(localization.CHANGE_PASSWORD_SUCCESS);\n reset();\n onSuccess?.();\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [changePassword, localization, localizeErrors, onSuccess, onError, reset],\n );\n\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.CHANGE_PASSWORD}</CardTitle>\n <CardDescription>{localization.CHANGE_PASSWORD_DESCRIPTION}</CardDescription>\n </CardHeader>\n <CardContent>\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-4\">\n <FormPasswordInput\n label={localization.CURRENT_PASSWORD}\n id=\"change-password-current\"\n autoComplete=\"current-password\"\n error={errors.currentPassword?.message}\n disabled={isSubmitting}\n {...register(\"currentPassword\")}\n />\n\n <FormPasswordInput\n label={localization.NEW_PASSWORD}\n id=\"change-password-new\"\n autoComplete=\"new-password\"\n error={errors.newPassword?.message}\n disabled={isSubmitting}\n {...register(\"newPassword\")}\n />\n\n <FormPasswordInput\n label={localization.CONFIRM_PASSWORD_PLACEHOLDER}\n id=\"change-password-confirm\"\n autoComplete=\"new-password\"\n error={errors.confirmPassword?.message}\n disabled={isSubmitting}\n {...register(\"confirmPassword\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n {successMessage && (\n <div aria-live=\"polite\" className=\"text-sm text-green-600\">\n {successMessage}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.CHANGING_PASSWORD}\n actionLabel={localization.CHANGE_PASSWORD}\n />\n </form>\n </CardContent>\n </Card>\n );\n}\n","\"use client\";\n\nimport type { Passkey } from \"@atzentis/auth-sdk\";\nimport {\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@atzentis/ui-shadcn\";\nimport { FormInput } from \"@atzentis/ui-shared\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { usePasskeys } from \"../../../hooks/use-passkeys\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { PasskeysCardProps } from \"../../../types/components\";\n\nexport function PasskeysCard({ onRegistered, onRemoved, onError, className }: PasskeysCardProps) {\n const { passkeys, isLoading, error, refresh, register, remove } = usePasskeys();\n const { localization, localizeErrors } = useAuthLocalization();\n\n const [isWebAuthnSupported, setIsWebAuthnSupported] = useState(false);\n const [isRegistering, setIsRegistering] = useState(false);\n const [showRegisterForm, setShowRegisterForm] = useState(false);\n const [passkeyName, setPasskeyName] = useState(\"\");\n const [removingId, setRemovingId] = useState<string | null>(null);\n const [confirmRemoveId, setConfirmRemoveId] = useState<string | null>(null);\n const [formError, setFormError] = useState<string | null>(null);\n const [successMessage, setSuccessMessage] = useState<string | null>(null);\n\n // Check WebAuthn support\n useEffect(() => {\n const supported = typeof window !== \"undefined\" && !!window.PublicKeyCredential;\n setIsWebAuthnSupported(supported);\n }, []);\n\n // Auto-load passkeys on mount\n useEffect(() => {\n if (isWebAuthnSupported) {\n refresh();\n }\n }, [isWebAuthnSupported, refresh]);\n\n // Clear success message after 3 seconds\n useEffect(() => {\n if (!successMessage) return;\n\n const timer = setTimeout(() => {\n setSuccessMessage(null);\n }, 3000);\n\n return () => clearTimeout(timer);\n }, [successMessage]);\n\n const handleRegister = useCallback(async () => {\n if (!passkeyName.trim()) {\n setFormError(localization.IS_REQUIRED);\n return;\n }\n\n setFormError(null);\n setSuccessMessage(null);\n setIsRegistering(true);\n\n try {\n const response = await register(passkeyName.trim());\n setSuccessMessage(localization.PASSKEY_REGISTERED);\n setPasskeyName(\"\");\n setShowRegisterForm(false);\n onRegistered?.(response.passkey);\n } catch (err) {\n const errorMessage = getLocalizedError(err, localization, localizeErrors);\n setFormError(errorMessage);\n onError?.(toAuthError(err));\n } finally {\n setIsRegistering(false);\n }\n }, [passkeyName, register, localization, localizeErrors, onRegistered, onError]);\n\n const handleRemove = useCallback(\n async (passkeyId: string) => {\n setFormError(null);\n setSuccessMessage(null);\n setRemovingId(passkeyId);\n\n try {\n await remove(passkeyId);\n setSuccessMessage(localization.PASSKEY_REMOVED);\n setConfirmRemoveId(null);\n onRemoved?.(passkeyId);\n } catch (err) {\n const errorMessage = getLocalizedError(err, localization, localizeErrors);\n setFormError(errorMessage);\n onError?.(toAuthError(err));\n } finally {\n setRemovingId(null);\n }\n },\n [remove, localization, localizeErrors, onRemoved, onError],\n );\n\n const formatDate = (dateString: string | null) => {\n if (!dateString) return localization.NEVER;\n try {\n return new Date(dateString).toLocaleDateString();\n } catch {\n return localization.UNKNOWN;\n }\n };\n\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.PASSKEYS}</CardTitle>\n <CardDescription>{localization.PASSKEYS_DESCRIPTION}</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {!isWebAuthnSupported && (\n <div className=\"text-sm text-muted-foreground\">{localization.WEBAUTHN_NOT_SUPPORTED}</div>\n )}\n\n {isWebAuthnSupported && (\n <>\n {isLoading && (\n <div className=\"text-sm text-muted-foreground\">{localization.LOADING_PASSKEYS}</div>\n )}\n\n {error && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {getLocalizedError(error, localization, localizeErrors)}\n </div>\n )}\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n {successMessage && (\n <div aria-live=\"polite\" className=\"text-sm text-green-600\">\n {successMessage}\n </div>\n )}\n\n {!isLoading && passkeys.length === 0 && (\n <div className=\"text-sm text-muted-foreground\">{localization.NO_PASSKEYS}</div>\n )}\n\n {!isLoading && passkeys.length > 0 && (\n <div className=\"space-y-3\">\n {passkeys.map((passkey: Passkey) => (\n <div\n key={passkey.id}\n className=\"flex items-start justify-between rounded-lg border p-3 space-y-1\"\n >\n <div className=\"space-y-1\">\n <div className=\"font-medium\">{passkey.name}</div>\n <div className=\"text-xs text-muted-foreground\">\n {localization.CREATED}: {formatDate(passkey.createdAt)}\n </div>\n <div className=\"text-xs text-muted-foreground\">\n {localization.LAST_USED_DATE}: {formatDate(passkey.lastUsedAt)}\n </div>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {confirmRemoveId === passkey.id ? (\n <>\n <Button\n size=\"sm\"\n variant=\"destructive\"\n onClick={() => handleRemove(passkey.id)}\n disabled={removingId === passkey.id}\n >\n {removingId === passkey.id\n ? localization.REMOVING_PASSKEY\n : localization.REMOVE}\n </Button>\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => setConfirmRemoveId(null)}\n disabled={removingId === passkey.id}\n >\n {localization.CANCEL}\n </Button>\n </>\n ) : (\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => setConfirmRemoveId(passkey.id)}\n disabled={removingId !== null}\n >\n {localization.REMOVE_PASSKEY}\n </Button>\n )}\n </div>\n </div>\n ))}\n </div>\n )}\n\n {showRegisterForm ? (\n <div className=\"space-y-3 rounded-lg border p-3\">\n <FormInput\n label={localization.PASSKEY_NAME}\n id=\"passkey-name\"\n value={passkeyName}\n onChange={(e) => {\n setPasskeyName(e.target.value);\n setFormError(null);\n }}\n placeholder={localization.PASSKEY_NAME}\n disabled={isRegistering}\n autoFocus\n />\n <div className=\"flex items-center gap-2\">\n <Button\n onClick={handleRegister}\n disabled={isRegistering || !passkeyName.trim()}\n size=\"sm\"\n >\n {isRegistering\n ? localization.REGISTERING_PASSKEY\n : localization.REGISTER_PASSKEY}\n </Button>\n <Button\n variant=\"outline\"\n onClick={() => {\n setShowRegisterForm(false);\n setPasskeyName(\"\");\n setFormError(null);\n }}\n disabled={isRegistering}\n size=\"sm\"\n >\n {localization.CANCEL}\n </Button>\n </div>\n </div>\n ) : (\n <Button\n onClick={() => setShowRegisterForm(true)}\n disabled={isLoading}\n variant=\"outline\"\n size=\"sm\"\n >\n {localization.REGISTER_PASSKEY}\n </Button>\n )}\n </>\n )}\n </CardContent>\n </Card>\n );\n}\n","\"use client\";\n\nimport type { TwoFactorSetup } from \"@atzentis/auth-sdk\";\nimport {\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@atzentis/ui-shadcn\";\nimport { FormPasswordInput, OTPInput } from \"@atzentis/ui-shared\";\nimport { useCallback, useRef, useState } from \"react\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { useUser } from \"../../../hooks/use-user\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { TwoFactorCardProps } from \"../../../types/components\";\n\ntype Step = \"status\" | \"qr\" | \"verify\" | \"backup-codes\" | \"disable\";\n\nexport function TwoFactorCard({ onEnabled, onDisabled, onError, className }: TwoFactorCardProps) {\n const { user, setupTwoFactor, verifyTwoFactorSetup, disableTwoFactor } = useUser();\n const { localization, localizeErrors } = useAuthLocalization();\n const [step, setStep] = useState<Step>(\"status\");\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [formError, setFormError] = useState<string | null>(null);\n const [twoFactorData, setTwoFactorData] = useState<TwoFactorSetup | null>(null);\n const [disablePassword, setDisablePassword] = useState(\"\");\n const codeRef = useRef(\"\");\n\n const isEnabled = user?.twoFactorEnabled ?? false;\n\n const handleEnable = useCallback(async () => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n const setup = await setupTwoFactor();\n setTwoFactorData(setup);\n setStep(\"qr\");\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n }, [setupTwoFactor, localization, localizeErrors, onError]);\n\n const handleOtpComplete = useCallback((code: string) => {\n codeRef.current = code;\n }, []);\n\n const handleVerify = useCallback(async () => {\n const code = codeRef.current;\n if (!code || code.length !== 6) {\n setFormError(localization.REQUEST_FAILED);\n return;\n }\n\n setFormError(null);\n setIsSubmitting(true);\n try {\n await verifyTwoFactorSetup(code);\n setStep(\"backup-codes\");\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n }, [verifyTwoFactorSetup, localization, localizeErrors, onError]);\n\n const handleCopyBackupCodes = useCallback(async () => {\n if (!twoFactorData?.backupCodes) return;\n\n try {\n await navigator.clipboard.writeText(twoFactorData.backupCodes.join(\"\\n\"));\n setFormError(null);\n // Show success message briefly\n const successMsg = localization.BACKUP_CODES_COPIED;\n setFormError(successMsg);\n setTimeout(() => {\n setFormError(null);\n }, 2000);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n }\n }, [twoFactorData, localization, localizeErrors]);\n\n const handleFinishSetup = useCallback(() => {\n setStep(\"status\");\n setTwoFactorData(null);\n codeRef.current = \"\";\n onEnabled?.();\n }, [onEnabled]);\n\n const handleDisableSubmit = useCallback(\n async (e: React.FormEvent) => {\n e.preventDefault();\n if (!disablePassword.trim()) {\n setFormError(localization.PASSWORD_REQUIRED);\n return;\n }\n\n setFormError(null);\n setIsSubmitting(true);\n try {\n await disableTwoFactor(disablePassword);\n setStep(\"status\");\n setDisablePassword(\"\");\n onDisabled?.();\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [disablePassword, disableTwoFactor, localization, localizeErrors, onDisabled, onError],\n );\n\n const handleBack = useCallback(() => {\n if (step === \"qr\") {\n setStep(\"status\");\n setTwoFactorData(null);\n codeRef.current = \"\";\n } else if (step === \"verify\") {\n setStep(\"qr\");\n codeRef.current = \"\";\n } else if (step === \"disable\") {\n setStep(\"status\");\n setDisablePassword(\"\");\n }\n setFormError(null);\n }, [step]);\n\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle className=\"flex items-center justify-between\">\n <span>{localization.TWO_FACTOR}</span>\n {step === \"status\" && (\n <span\n className={`rounded px-2 py-0.5 text-xs ${\n isEnabled ? \"bg-blue-100 text-blue-700\" : \"bg-gray-100 text-gray-700\"\n }`}\n >\n {isEnabled ? localization.ENABLED : localization.DISABLED}\n </span>\n )}\n </CardTitle>\n <CardDescription>\n {step === \"status\" && localization.TWO_FACTOR_DESCRIPTION}\n {step === \"qr\" && localization.SCAN_QR_CODE}\n {step === \"verify\" && localization.ENTER_CODE_TO_VERIFY}\n {step === \"backup-codes\" && localization.BACKUP_CODES_DESCRIPTION}\n {step === \"disable\" && localization.CONFIRM_DISABLE_2FA}\n </CardDescription>\n </CardHeader>\n <CardContent>\n {/* Status View */}\n {step === \"status\" && (\n <div className=\"space-y-4\">\n {isEnabled ? (\n <Button\n variant=\"destructive\"\n onClick={() => setStep(\"disable\")}\n disabled={isSubmitting}\n >\n {localization.DISABLE_TWO_FACTOR}\n </Button>\n ) : (\n <Button onClick={handleEnable} disabled={isSubmitting}>\n {isSubmitting ? localization.LOADING : localization.ENABLE_TWO_FACTOR}\n </Button>\n )}\n </div>\n )}\n\n {/* QR Code Step */}\n {step === \"qr\" && twoFactorData && (\n <div className=\"space-y-6\">\n <div className=\"flex justify-center\">\n <img src={twoFactorData.qrCode} alt=\"QR Code\" className=\"max-w-xs\" />\n </div>\n <div className=\"space-y-2\">\n <p className=\"text-sm text-muted-foreground\">{localization.MANUAL_ENTRY_CODE}</p>\n <code className=\"block rounded bg-muted p-3 text-sm font-mono break-all\">\n {twoFactorData.secret}\n </code>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" onClick={handleBack} disabled={isSubmitting}>\n {localization.BACK}\n </Button>\n <Button onClick={() => setStep(\"verify\")} disabled={isSubmitting}>\n {localization.NEXT}\n </Button>\n </div>\n </div>\n )}\n\n {/* Verification Step */}\n {step === \"verify\" && (\n <div className=\"space-y-4\">\n {/* biome-ignore lint/a11y/noLabelWithoutControl: OTPInput renders its own input cells */}\n <label className=\"block text-sm font-medium\">\n {localization.VERIFICATION_CODE_LABEL}\n <OTPInput\n length={6}\n onComplete={handleOtpComplete}\n disabled={isSubmitting}\n className=\"mt-2\"\n />\n </label>\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" onClick={handleBack} disabled={isSubmitting}>\n {localization.BACK}\n </Button>\n <Button type=\"button\" onClick={handleVerify} disabled={isSubmitting}>\n {isSubmitting ? localization.VERIFYING : localization.VERIFY}\n </Button>\n </div>\n </div>\n )}\n\n {/* Backup Codes Step */}\n {step === \"backup-codes\" && twoFactorData && (\n <div className=\"space-y-4\">\n <div className=\"rounded-md border p-4\">\n <div className=\"grid grid-cols-2 gap-2 font-mono text-sm\">\n {twoFactorData.backupCodes.map((code) => (\n <div key={code} className=\"p-2 bg-muted rounded\">\n {code}\n </div>\n ))}\n </div>\n </div>\n\n <Button variant=\"outline\" onClick={handleCopyBackupCodes} className=\"w-full\">\n {localization.COPY_BACKUP_CODES}\n </Button>\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-green-600\">\n {formError}\n </div>\n )}\n\n <Button onClick={handleFinishSetup} className=\"w-full\">\n {localization.FINISH}\n </Button>\n </div>\n )}\n\n {/* Disable Step */}\n {step === \"disable\" && (\n <form onSubmit={handleDisableSubmit} className=\"space-y-4\">\n <FormPasswordInput\n label={localization.PASSWORD}\n id=\"disable-2fa-password\"\n autoComplete=\"current-password\"\n value={disablePassword}\n onChange={(e) => setDisablePassword(e.target.value)}\n disabled={isSubmitting}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" type=\"button\" onClick={handleBack} disabled={isSubmitting}>\n {localization.CANCEL}\n </Button>\n <Button type=\"submit\" variant=\"destructive\" disabled={isSubmitting}>\n {isSubmitting ? localization.LOADING : localization.DISABLE_TWO_FACTOR}\n </Button>\n </div>\n </form>\n )}\n </CardContent>\n </Card>\n );\n}\n","\"use client\";\n\nimport type { AuthError } from \"@atzentis/auth-sdk\";\nimport { ChangePasswordCard } from \"./change-password\";\nimport { PasskeysCard } from \"./passkeys\";\nimport { TwoFactorCard } from \"./two-factor\";\n\nexport interface SecuritySettingsCardsProps {\n onError?: (error: AuthError) => void;\n className?: string;\n}\n\nexport function SecuritySettingsCards({ onError, className }: SecuritySettingsCardsProps) {\n return (\n <div className={`space-y-6 ${className ?? \"\"}`}>\n <ChangePasswordCard onError={onError} />\n <TwoFactorCard onError={onError} />\n <PasskeysCard onError={onError} />\n </div>\n );\n}\n","\"use client\";\n\nimport type { Session } from \"@atzentis/auth-sdk\";\nimport {\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@atzentis/ui-shadcn\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { useSessions } from \"../../../hooks/use-sessions\";\nimport type { SessionsCardProps } from \"../../../types/components\";\n\nexport function SessionsCard({ onSessionRevoked, className }: SessionsCardProps) {\n const {\n sessions,\n session: currentSession,\n isLoading,\n refresh,\n revokeSession,\n revokeAllSessions,\n } = useSessions();\n const { localization } = useAuthLocalization();\n const [isRevoking, setIsRevoking] = useState<string | null>(null);\n const [isRevokingAll, setIsRevokingAll] = useState(false);\n const [successMessage, setSuccessMessage] = useState<string | null>(null);\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n useEffect(() => {\n if (!successMessage) return;\n\n const timer = setTimeout(() => {\n setSuccessMessage(null);\n }, 3000);\n\n return () => clearTimeout(timer);\n }, [successMessage]);\n\n const handleRevokeSession = useCallback(\n async (sessionId: string) => {\n setIsRevoking(sessionId);\n setSuccessMessage(null);\n try {\n await revokeSession(sessionId);\n setSuccessMessage(localization.SESSION_REVOKED);\n onSessionRevoked?.(sessionId);\n } catch {\n // Error handling could be added here\n } finally {\n setIsRevoking(null);\n }\n },\n [revokeSession, localization, onSessionRevoked],\n );\n\n const handleRevokeAllOtherSessions = useCallback(async () => {\n setIsRevokingAll(true);\n setSuccessMessage(null);\n try {\n await revokeAllSessions({ exceptCurrent: true });\n setSuccessMessage(localization.ALL_SESSIONS_REVOKED);\n } catch {\n // Error handling could be added here\n } finally {\n setIsRevokingAll(false);\n }\n }, [revokeAllSessions, localization]);\n\n const formatDate = (dateString?: string) => {\n if (!dateString) return \"\";\n try {\n return new Date(dateString).toLocaleString();\n } catch {\n return dateString;\n }\n };\n\n const getDeviceName = (session: Session) => {\n return session.device?.name || session.userAgent || localization.UNKNOWN;\n };\n\n const isCurrentSession = (session: Session) => {\n return currentSession?.id === session.id;\n };\n\n const otherSessions = sessions.filter((s) => !isCurrentSession(s));\n\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.SESSIONS}</CardTitle>\n <CardDescription>{localization.SESSIONS_DESCRIPTION}</CardDescription>\n </CardHeader>\n <CardContent>\n {isLoading && sessions.length === 0 ? (\n <div className=\"text-center text-sm text-gray-500\">{localization.LOADING_SESSIONS}</div>\n ) : (\n <div className=\"space-y-4\">\n {successMessage && (\n <div aria-live=\"polite\" className=\"text-sm text-green-600\">\n {successMessage}\n </div>\n )}\n\n {sessions.length === 0 ? (\n <div className=\"text-center text-sm text-gray-500\">\n {localization.NO_OTHER_SESSIONS}\n </div>\n ) : (\n <div className=\"space-y-3\">\n {sessions.map((session) => {\n const isCurrent = isCurrentSession(session);\n const isRevokingThis = isRevoking === session.id;\n\n return (\n <div\n key={session.id}\n className=\"flex items-start justify-between gap-4 rounded border p-4\"\n >\n <div className=\"flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium\">{getDeviceName(session)}</span>\n {isCurrent && (\n <span className=\"rounded bg-blue-100 px-2 py-0.5 text-xs text-blue-700\">\n {localization.CURRENT_SESSION}\n </span>\n )}\n </div>\n <p className=\"text-sm text-gray-500\">\n {localization.IP_LABEL} {session.ip}\n </p>\n {session.lastActivityAt && (\n <p className=\"text-xs text-gray-400\">\n {localization.LAST_USED} {formatDate(session.lastActivityAt)}\n </p>\n )}\n </div>\n\n {!isCurrent && (\n <Button\n type=\"button\"\n variant=\"destructive\"\n size=\"sm\"\n disabled={isRevokingThis || isRevokingAll}\n onClick={() => handleRevokeSession(session.id)}\n >\n {isRevokingThis ? localization.LOADING : localization.REVOKE_SESSION}\n </Button>\n )}\n </div>\n );\n })}\n </div>\n )}\n\n {otherSessions.length > 0 && (\n <div className=\"pt-4 border-t\">\n <Button\n type=\"button\"\n variant=\"outline\"\n className=\"w-full\"\n disabled={isRevokingAll || isRevoking !== null}\n onClick={handleRevokeAllOtherSessions}\n >\n {isRevokingAll ? localization.LOADING : localization.REVOKE_ALL_OTHER_SESSIONS}\n </Button>\n </div>\n )}\n </div>\n )}\n </CardContent>\n </Card>\n );\n}\n","\"use client\";\n\nimport { useMemo } from \"react\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport type { AccountViewProps, AccountViewSection } from \"../../types/components\";\nimport { accountViewSections } from \"./account-view-sections\";\nimport { AccountSettingsCards } from \"./cards/account-settings\";\nimport { ApiKeysCard } from \"./cards/api-keys\";\nimport { DeleteAccountCard } from \"./cards/delete-account\";\nimport { ProvidersCard } from \"./cards/providers\";\nimport { SecuritySettingsCards } from \"./cards/security-settings\";\nimport { SessionsCard } from \"./cards/sessions\";\n\n/**\n * AccountView — Section-based settings page orchestrator.\n * Renders navigation sidebar and the appropriate settings card group.\n *\n * @example\n * // Next.js App Router:\n * import { AccountView } from \"@atzentis/auth-react\";\n *\n * export default function SettingsPage({ params }) {\n * const section = `/${params.section || \"account\"}`;\n * return (\n * <AccountView\n * section={section}\n * onSectionChange={(s) => router.push(`/settings${s}`)}\n * redirectUrl=\"/settings/account\"\n * onUpload={async (file) => uploadToR2(file)}\n * />\n * );\n * }\n */\nexport function AccountView({\n section,\n sections,\n fallback = null,\n onSectionChange,\n oauthProviders,\n oauthRedirectUri,\n redirectUrl,\n onUpload,\n availableScopes,\n className,\n}: AccountViewProps) {\n const { localization } = useAuthLocalization();\n\n // Merge default sections with consumer overrides\n const resolvedSections = useMemo(() => {\n return { ...accountViewSections, ...sections };\n }, [sections]);\n\n // Section labels for navigation\n const sectionLabels: Record<AccountViewSection, string> = useMemo(\n () => ({\n \"/account\": localization.ACCOUNT,\n \"/security\": localization.SECURITY,\n \"/sessions\": localization.SESSIONS,\n \"/providers\": localization.CONNECTED_PROVIDERS,\n \"/api-keys\": localization.API_KEYS,\n \"/danger\": localization.DANGER_ZONE,\n }),\n [localization],\n );\n\n // Reverse lookup: find which section matches the current section prop\n const matchedSection = Object.entries(resolvedSections).find(\n ([, mappedPath]) => mappedPath === section,\n )?.[0] as AccountViewSection | undefined;\n\n // Render the content for a section\n const renderContent = () => {\n switch (matchedSection) {\n case \"/account\":\n return <AccountSettingsCards redirectUrl={redirectUrl} onUpload={onUpload} />;\n\n case \"/security\":\n return <SecuritySettingsCards />;\n\n case \"/sessions\":\n return <SessionsCard />;\n\n case \"/providers\":\n if (oauthProviders && oauthRedirectUri) {\n return (\n <ProvidersCard\n availableProviders={oauthProviders}\n oauthRedirectUri={oauthRedirectUri}\n />\n );\n }\n return <ProvidersCard availableProviders={[]} oauthRedirectUri=\"\" />;\n\n case \"/api-keys\":\n return <ApiKeysCard availableScopes={availableScopes} />;\n\n case \"/danger\":\n return <DeleteAccountCard />;\n\n default:\n return <>{fallback}</>;\n }\n };\n\n return (\n <div className={`flex flex-col md:flex-row gap-8 ${className ?? \"\"}`}>\n {/* Sidebar Navigation */}\n <nav className=\"w-full md:w-48 shrink-0\">\n <ul className=\"flex md:flex-col gap-1 overflow-x-auto md:overflow-visible\">\n {(Object.entries(resolvedSections) as Array<[AccountViewSection, string]>).map(\n ([sectionKey, sectionPath]) => {\n const isActive = sectionPath === section;\n return (\n <li key={sectionKey}>\n <button\n type=\"button\"\n onClick={() => onSectionChange?.(sectionPath)}\n className={`w-full text-left px-3 py-2 rounded-md text-sm whitespace-nowrap transition-colors ${\n isActive\n ? \"bg-gray-100 font-medium text-gray-900\"\n : \"text-gray-600 hover:bg-gray-50 hover:text-gray-900\"\n }`}\n >\n {sectionLabels[sectionKey]}\n </button>\n </li>\n );\n },\n )}\n </ul>\n </nav>\n\n {/* Content Area */}\n <div className=\"flex-1 min-w-0\">{renderContent()}</div>\n </div>\n );\n}\n","\"use client\";\n\nimport type { User } from \"@atzentis/auth-sdk\";\nimport {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@atzentis/ui-shadcn\";\nimport { useCallback, useEffect } from \"react\";\nimport { getInitials } from \"../../helpers/initials\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport { useSessions } from \"../../hooks/use-sessions\";\nimport type { AccountSwitcherProps } from \"../../types/components\";\n\nexport function AccountSwitcher({\n showAddAccount = false,\n onSwitch,\n onAddAccount,\n maxAccounts = 5,\n className,\n}: AccountSwitcherProps) {\n const { deviceSessions, switchAccount, isLoading, refresh } = useSessions();\n const { localization } = useAuthLocalization();\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n const handleSwitch = useCallback(\n async (sessionToken: string, user: User) => {\n await switchAccount(sessionToken);\n onSwitch?.(user);\n },\n [switchAccount, onSwitch],\n );\n\n const visibleSessions = deviceSessions.slice(0, maxAccounts);\n const activeSession = deviceSessions.find((s) => s.isActive);\n\n return (\n <div className={className}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" disabled={isLoading}>\n {activeSession ? activeSession.user.name : localization.SELECT_ACCOUNT}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {visibleSessions.map((session) => (\n <DropdownMenuItem\n key={session.sessionToken}\n onClick={() => handleSwitch(session.sessionToken, session.user)}\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"flex h-8 w-8 items-center justify-center rounded-full bg-gray-200 text-xs font-medium\">\n {session.user.avatar ? (\n <img src={session.user.avatar} alt=\"\" className=\"h-8 w-8 rounded-full\" />\n ) : (\n getInitials(session.user.name)\n )}\n </span>\n <div className=\"flex flex-col\">\n <span className=\"text-sm font-medium\">{session.user.name}</span>\n <span className=\"text-xs text-gray-500\">{session.user.email}</span>\n </div>\n {session.isActive && <span className=\"ml-auto text-sm\">{\"\\u2713\"}</span>}\n </div>\n </DropdownMenuItem>\n ))}\n\n {showAddAccount && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={onAddAccount}>{localization.ADD_ACCOUNT}</DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n","\"use client\";\n\nimport { useSession } from \"../../hooks/use-session\";\nimport type { SessionGuardProps } from \"../../types/components\";\n\nexport function SessionGuard({\n children,\n fallback,\n loadingFallback = null,\n freshRequired = false,\n freshThreshold = 300,\n requiredRole,\n className,\n}: SessionGuardProps) {\n const { user, session, isAuthenticated, isLoading } = useSession();\n\n if (isLoading) {\n return className ? <div className={className}>{loadingFallback}</div> : <>{loadingFallback}</>;\n }\n\n if (!isAuthenticated) {\n return className ? <div className={className}>{fallback}</div> : <>{fallback}</>;\n }\n\n if (freshRequired && session) {\n const sessionAge = (Date.now() - new Date(session.createdAt).getTime()) / 1000;\n if (sessionAge > freshThreshold) {\n return className ? <div className={className}>{fallback}</div> : <>{fallback}</>;\n }\n }\n\n if (requiredRole && user) {\n const userRole = (user as unknown as Record<string, unknown>).role as string | undefined;\n if (userRole !== requiredRole) {\n return className ? <div className={className}>{fallback}</div> : <>{fallback}</>;\n }\n }\n\n return className ? <div className={className}>{children}</div> : <>{children}</>;\n}\n","import type { AuthViewPath } from \"../../types/components\";\n\n/**\n * Default path mapping for AuthView component.\n * Maps logical auth flow paths to actual URL paths.\n *\n * @example\n * // Use in Next.js App Router:\n * <AuthView pathname={pathname} paths={authViewPaths} />\n *\n * // Override specific paths:\n * <AuthView\n * pathname={pathname}\n * paths={{ ...authViewPaths, \"/sign-in\": \"/login\" }}\n * />\n */\nexport const authViewPaths: Record<AuthViewPath, string> = {\n \"/sign-in\": \"/sign-in\",\n \"/sign-up\": \"/sign-up\",\n \"/forgot-password\": \"/forgot-password\",\n \"/reset-password\": \"/reset-password\",\n \"/verify-email\": \"/verify-email\",\n \"/email-otp\": \"/email-otp\",\n \"/recover-account\": \"/recover-account\",\n \"/two-factor\": \"/two-factor\",\n};\n","import { z } from \"zod\";\n\nexport const emailOtpEmailSchema = z.object({\n email: z.string().min(1).email(),\n});\n\nexport type EmailOtpEmailFormData = z.infer<typeof emailOtpEmailSchema>;\n\nexport const emailOtpCodeSchema = z.object({\n code: z\n .string()\n .length(6)\n .regex(/^\\d{6}$/),\n});\n\nexport type EmailOtpCodeFormData = z.infer<typeof emailOtpCodeSchema>;\n","\"use client\";\n\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { FormInput, OTPInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuth } from \"../../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { EmailOtpEmailFormData } from \"../../../schemas/email-otp-schema\";\nimport { emailOtpEmailSchema } from \"../../../schemas/email-otp-schema\";\nimport type { EmailOTPFormProps } from \"../../../types/components\";\nimport { SubmitButton } from \"../../shared/submit-button\";\nimport { maskEmail } from \"../../shared/utils\";\n\nexport function EmailOTPForm({\n redirectUrl,\n onSuccess,\n onError,\n resendCooldown = 60,\n autoSubmit = true,\n className,\n}: EmailOTPFormProps) {\n const { sendVerificationEmail, verifyEmail } = useAuth();\n const { localization, localizeErrors } = useAuthLocalization();\n const [step, setStep] = useState<1 | 2>(1);\n const [email, setEmail] = useState(\"\");\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [formError, setFormError] = useState<string | null>(null);\n const [cooldownRemaining, setCooldownRemaining] = useState(0);\n const codeRef = useRef(\"\");\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm<EmailOtpEmailFormData>({\n resolver: zodResolver(emailOtpEmailSchema),\n defaultValues: { email: \"\" },\n });\n\n useEffect(() => {\n if (cooldownRemaining <= 0) return;\n\n const timer = setInterval(() => {\n setCooldownRemaining((prev) => Math.max(0, prev - 1));\n }, 1000);\n\n return () => clearInterval(timer);\n }, [cooldownRemaining]);\n\n const onEmailSubmit = useCallback(\n async (data: EmailOtpEmailFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await sendVerificationEmail({ email: data.email, redirectUrl });\n setEmail(data.email);\n setStep(2);\n setCooldownRemaining(resendCooldown);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [sendVerificationEmail, redirectUrl, resendCooldown, onError, localization, localizeErrors],\n );\n\n const handleVerifyCode = useCallback(\n async (code: string) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n const response = await verifyEmail({ token: code });\n onSuccess?.(response.user);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [verifyEmail, onSuccess, onError, localization, localizeErrors],\n );\n\n const handleOtpComplete = useCallback(\n (code: string) => {\n codeRef.current = code;\n if (autoSubmit) {\n handleVerifyCode(code);\n }\n },\n [autoSubmit, handleVerifyCode],\n );\n\n const handleManualVerify = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n if (codeRef.current) {\n handleVerifyCode(codeRef.current);\n }\n },\n [handleVerifyCode],\n );\n\n const handleResend = useCallback(async () => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await sendVerificationEmail({ email, redirectUrl });\n setCooldownRemaining(resendCooldown);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n } finally {\n setIsSubmitting(false);\n }\n }, [sendVerificationEmail, email, redirectUrl, resendCooldown, localization, localizeErrors]);\n\n const handleGoBack = useCallback(() => {\n setStep(1);\n setFormError(null);\n codeRef.current = \"\";\n }, []);\n\n if (step === 2) {\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n <div className=\"text-center space-y-2\">\n <h2 className=\"text-lg font-semibold\">{localization.EMAIL_OTP}</h2>\n <p className=\"text-sm\">\n {localization.EMAIL_OTP_SENT} <strong>{maskEmail(email)}</strong>\n </p>\n </div>\n\n <form onSubmit={handleManualVerify} className=\"space-y-4\">\n {/* biome-ignore lint/a11y/noLabelWithoutControl: OTPInput renders its own input cells */}\n <label className=\"block text-sm font-medium\">\n {localization.ENTER_VERIFICATION_CODE}\n <OTPInput\n length={6}\n onComplete={handleOtpComplete}\n disabled={isSubmitting}\n className=\"mt-2\"\n />\n </label>\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.VERIFYING}\n actionLabel={localization.VERIFY}\n />\n\n <div className=\"space-y-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={isSubmitting || cooldownRemaining > 0}\n onClick={handleResend}\n className=\"w-full\"\n >\n {cooldownRemaining > 0\n ? localization.RESEND_IN.replace(\"{{seconds}}\", String(cooldownRemaining))\n : isSubmitting\n ? localization.RESENDING\n : localization.RESEND}\n </Button>\n\n <Button type=\"button\" variant=\"ghost\" onClick={handleGoBack} className=\"w-full\">\n {localization.GO_BACK}\n </Button>\n </div>\n </form>\n </div>\n </Card>\n );\n }\n\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n <div className=\"text-center space-y-2\">\n <h2 className=\"text-lg font-semibold\">{localization.EMAIL_OTP}</h2>\n <p className=\"text-sm text-gray-500\">{localization.EMAIL_OTP_DESCRIPTION}</p>\n </div>\n\n <form onSubmit={handleSubmit(onEmailSubmit)} className=\"space-y-4\">\n <FormInput\n label={localization.EMAIL}\n id=\"email-otp-email\"\n type=\"email\"\n autoComplete=\"email\"\n error={errors.email?.message}\n disabled={isSubmitting}\n {...register(\"email\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.SENDING}\n actionLabel={localization.SEND_VERIFICATION_CODE}\n />\n </form>\n </div>\n </Card>\n );\n}\n","\"use client\";\n\nimport {\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@atzentis/ui-shadcn\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuth } from \"../../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { EmailVerificationFormProps } from \"../../../types/components\";\nimport { maskEmail } from \"../../shared/utils\";\n\nexport function EmailVerificationForm({\n token,\n email,\n redirectUrl,\n onSuccess,\n onError,\n resendCooldown = 60,\n className,\n}: EmailVerificationFormProps) {\n const { sendVerificationEmail, verifyEmail } = useAuth();\n const { localization, localizeErrors } = useAuthLocalization();\n const [status, setStatus] = useState<\"verifying\" | \"success\" | \"error\" | \"resend\">(\n token ? \"verifying\" : \"resend\",\n );\n const [formError, setFormError] = useState<string | null>(null);\n const [cooldownRemaining, setCooldownRemaining] = useState(0);\n const [isResending, setIsResending] = useState(false);\n\n // Verify token on mount if provided\n // biome-ignore lint/correctness/useExhaustiveDependencies: Only run once on mount for token verification\n useEffect(() => {\n if (!token) return;\n\n setStatus(\"verifying\");\n verifyEmail({ token })\n .then((response) => {\n setStatus(\"success\");\n onSuccess?.(response.user);\n })\n .catch((err) => {\n setStatus(\"error\");\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n });\n }, []);\n\n // Cooldown timer effect\n useEffect(() => {\n if (cooldownRemaining <= 0) return;\n const timer = setInterval(() => {\n setCooldownRemaining((prev) => {\n if (prev <= 1) {\n clearInterval(timer);\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n return () => clearInterval(timer);\n }, [cooldownRemaining]);\n\n const handleResend = useCallback(async () => {\n if (!email) return;\n\n setFormError(null);\n setIsResending(true);\n try {\n await sendVerificationEmail({ email, redirectUrl });\n setCooldownRemaining(resendCooldown);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsResending(false);\n }\n }, [\n email,\n redirectUrl,\n resendCooldown,\n sendVerificationEmail,\n localization,\n localizeErrors,\n onError,\n ]);\n\n // Verifying state — loading spinner\n if (status === \"verifying\") {\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.EMAIL_VERIFICATION}</CardTitle>\n <CardDescription>{localization.EMAIL_VERIFICATION_DESCRIPTION}</CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"flex items-center justify-center py-8\" aria-live=\"polite\">\n <div className=\"flex items-center space-x-3\">\n <div className=\"h-5 w-5 animate-spin rounded-full border-2 border-gray-300 border-t-gray-900\" />\n <p className=\"text-sm text-gray-600\">{localization.EMAIL_VERIFICATION_CHECKING}</p>\n </div>\n </div>\n </CardContent>\n </Card>\n );\n }\n\n // Success state\n if (status === \"success\") {\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.EMAIL_VERIFICATION}</CardTitle>\n <CardDescription>{localization.EMAIL_VERIFICATION_DESCRIPTION}</CardDescription>\n </CardHeader>\n <CardContent>\n <div\n className=\"flex flex-col items-center justify-center py-8 space-y-4\"\n aria-live=\"polite\"\n >\n <div className=\"rounded-full bg-green-100 p-3\">\n <svg\n className=\"h-8 w-8 text-green-600\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M5 13l4 4L19 7\"\n />\n </svg>\n </div>\n <p className=\"text-sm font-medium text-green-600\">\n {localization.EMAIL_VERIFICATION_SUCCESS}\n </p>\n </div>\n </CardContent>\n </Card>\n );\n }\n\n // Error or resend state\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.EMAIL_VERIFICATION}</CardTitle>\n <CardDescription>{localization.EMAIL_VERIFICATION_DESCRIPTION}</CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-4\">\n {email && (\n <div className=\"text-sm text-gray-600\">\n {localization.CHECK_YOUR_EMAIL}: <strong>{maskEmail(email)}</strong>\n </div>\n )}\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={isResending || cooldownRemaining > 0}\n onClick={handleResend}\n className=\"w-full\"\n >\n {isResending\n ? localization.RESENDING\n : cooldownRemaining > 0\n ? localization.RESEND_IN.replace(\"{{seconds}}\", cooldownRemaining.toString())\n : localization.RESEND_VERIFICATION_EMAIL}\n </Button>\n </div>\n </CardContent>\n </Card>\n );\n}\n","import { z } from \"zod\";\n\nexport const forgotPasswordSchema = z.object({\n email: z.string().min(1).email(),\n});\n\nexport type ForgotPasswordFormData = z.infer<typeof forgotPasswordSchema>;\n","\"use client\";\n\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { FormInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuth } from \"../../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { ForgotPasswordFormData } from \"../../../schemas/forgot-password-schema\";\nimport { forgotPasswordSchema } from \"../../../schemas/forgot-password-schema\";\nimport type { ForgotPasswordFormProps } from \"../../../types/components\";\nimport { SubmitButton } from \"../../shared/submit-button\";\nimport { maskEmail } from \"../../shared/utils\";\n\nexport function ForgotPasswordForm({\n redirectUrl,\n onSuccess,\n onError,\n onBackToLogin,\n resendCooldown = 60,\n className,\n}: ForgotPasswordFormProps) {\n const { requestPasswordReset } = useAuth();\n const { localization, localizeErrors } = useAuthLocalization();\n const [sent, setSent] = useState(false);\n const [sentEmail, setSentEmail] = useState(\"\");\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [formError, setFormError] = useState<string | null>(null);\n const [cooldownRemaining, setCooldownRemaining] = useState(0);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n getValues,\n } = useForm<ForgotPasswordFormData>({\n resolver: zodResolver(forgotPasswordSchema),\n defaultValues: { email: \"\" },\n });\n\n useEffect(() => {\n if (cooldownRemaining <= 0) return;\n\n const timer = setInterval(() => {\n setCooldownRemaining((prev) => Math.max(0, prev - 1));\n }, 1000);\n\n return () => clearInterval(timer);\n }, [cooldownRemaining]);\n\n const onSubmit = useCallback(\n async (data: ForgotPasswordFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await requestPasswordReset({ email: data.email, redirectUrl });\n setSent(true);\n setSentEmail(data.email);\n setCooldownRemaining(resendCooldown);\n onSuccess?.();\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [\n requestPasswordReset,\n redirectUrl,\n resendCooldown,\n onSuccess,\n onError,\n localization,\n localizeErrors,\n ],\n );\n\n const handleResend = useCallback(async () => {\n const email = getValues(\"email\");\n setFormError(null);\n setIsSubmitting(true);\n try {\n await requestPasswordReset({ email, redirectUrl });\n setCooldownRemaining(resendCooldown);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n } finally {\n setIsSubmitting(false);\n }\n }, [requestPasswordReset, redirectUrl, resendCooldown, getValues, localization, localizeErrors]);\n\n if (sent) {\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n <div className=\"text-center space-y-2\">\n <h2 className=\"text-lg font-semibold\">{localization.CHECK_YOUR_EMAIL}</h2>\n <p className=\"text-sm\">{localization.FORGOT_PASSWORD_EMAIL}</p>\n <p className=\"text-sm font-medium\">{maskEmail(sentEmail)}</p>\n </div>\n\n <div className=\"space-y-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={isSubmitting || cooldownRemaining > 0}\n onClick={handleResend}\n className=\"w-full\"\n >\n {cooldownRemaining > 0\n ? localization.RESEND_IN.replace(\"{{seconds}}\", String(cooldownRemaining))\n : isSubmitting\n ? localization.RESENDING\n : localization.RESEND}\n </Button>\n\n {onBackToLogin && (\n <Button type=\"button\" variant=\"ghost\" onClick={onBackToLogin} className=\"w-full\">\n {localization.GO_BACK}\n </Button>\n )}\n </div>\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600 text-center\">\n {formError}\n </div>\n )}\n </div>\n </Card>\n );\n }\n\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n <div className=\"text-center space-y-2\">\n <h2 className=\"text-lg font-semibold\">{localization.FORGOT_PASSWORD}</h2>\n <p className=\"text-sm text-gray-500\">{localization.FORGOT_PASSWORD_DESCRIPTION}</p>\n </div>\n\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-4\">\n <FormInput\n label={localization.EMAIL}\n id=\"forgot-password-email\"\n type=\"email\"\n autoComplete=\"email\"\n error={errors.email?.message}\n disabled={isSubmitting}\n {...register(\"email\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.SENDING}\n actionLabel={localization.FORGOT_PASSWORD_ACTION}\n />\n\n {onBackToLogin && (\n <Button type=\"button\" variant=\"ghost\" onClick={onBackToLogin} className=\"w-full\">\n {localization.GO_BACK}\n </Button>\n )}\n </form>\n </div>\n </Card>\n );\n}\n","import { z } from \"zod\";\n\n// Credential mode: email-or-username + password\nexport const credentialLoginSchema = z.object({\n identity: z.string().min(1, \"Email or username is required\"),\n password: z.string().min(1, \"Password is required\"),\n captchaToken: z.string().optional(),\n});\nexport type CredentialLoginFormData = z.infer<typeof credentialLoginSchema>;\n\n// Phone mode: phone number + OTP code\nexport const phoneLoginSchema = z.object({\n countryCode: z.string(),\n phoneNumber: z.string().min(1, \"Phone number is required\"),\n});\nexport type PhoneLoginFormData = z.infer<typeof phoneLoginSchema>;\n\nexport const otpVerifySchema = z.object({\n code: z.string().length(6, \"Code must be 6 digits\"),\n});\nexport type OtpVerifyFormData = z.infer<typeof otpVerifySchema>;\n","\"use client\";\n\nimport type { OAuthProvider } from \"@atzentis/auth-sdk\";\nimport { Button } from \"@atzentis/ui-shadcn\";\nimport { useCallback, useState } from \"react\";\nimport { useAuth } from \"../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport type { OAuthButtonProps } from \"../../types/components\";\n\nconst PROVIDER_NAMES: Record<OAuthProvider, string> = {\n google: \"Google\",\n github: \"GitHub\",\n apple: \"Apple\",\n microsoft: \"Microsoft\",\n atzentis: \"Atzentis\",\n};\n\nexport function OAuthButton({\n provider,\n redirectUri,\n state,\n variant = \"outline\",\n size = \"md\",\n className,\n}: OAuthButtonProps) {\n const { getOAuthUrl } = useAuth();\n const { localization } = useAuthLocalization();\n const [isLoading, setIsLoading] = useState(false);\n\n const sizeMap = {\n sm: \"sm\" as const,\n md: \"default\" as const,\n lg: \"lg\" as const,\n };\n\n const providerName = PROVIDER_NAMES[provider];\n\n const handleClick = useCallback(async () => {\n setIsLoading(true);\n try {\n const url = await getOAuthUrl({ provider, redirectUri, state: state ?? \"\" });\n window.location.href = url;\n } catch {\n setIsLoading(false);\n }\n }, [getOAuthUrl, provider, redirectUri, state]);\n\n return (\n <Button\n type=\"button\"\n variant={variant === \"filled\" ? \"default\" : \"outline\"}\n size={sizeMap[size]}\n disabled={isLoading}\n onClick={handleClick}\n aria-label={`${localization.SIGN_IN_WITH} ${providerName}`}\n className={className}\n >\n {isLoading ? localization.REDIRECTING : `${localization.CONTINUE_WITH} ${providerName}`}\n </Button>\n );\n}\n","import { z } from \"zod\";\n\nexport const phoneNumberSchema = z.object({\n countryCode: z.string(),\n phoneNumber: z.string().min(1, \"Phone number is required\"),\n});\nexport type PhoneNumberFormData = z.infer<typeof phoneNumberSchema>;\n\nexport const otpVerifySchema = z.object({\n code: z.string().length(6, \"Code must be 6 digits\"),\n});\nexport type OtpVerifyFormData = z.infer<typeof otpVerifySchema>;\n\nexport const phonePasswordSchema = z.object({\n countryCode: z.string(),\n phoneNumber: z.string().min(1, \"Phone number is required\"),\n password: z.string().min(1, \"Password is required\"),\n});\nexport type PhonePasswordFormData = z.infer<typeof phonePasswordSchema>;\n","export interface CountryCode {\n code: string;\n country: string;\n name: string;\n flag: string;\n}\n\nexport const COUNTRY_CODES: CountryCode[] = [\n { code: \"+30\", country: \"GR\", name: \"Greece\", flag: \"\\u{1F1EC}\\u{1F1F7}\" },\n { code: \"+49\", country: \"DE\", name: \"Germany\", flag: \"\\u{1F1E9}\\u{1F1EA}\" },\n { code: \"+1\", country: \"US\", name: \"United States\", flag: \"\\u{1F1FA}\\u{1F1F8}\" },\n { code: \"+44\", country: \"GB\", name: \"United Kingdom\", flag: \"\\u{1F1EC}\\u{1F1E7}\" },\n { code: \"+33\", country: \"FR\", name: \"France\", flag: \"\\u{1F1EB}\\u{1F1F7}\" },\n { code: \"+39\", country: \"IT\", name: \"Italy\", flag: \"\\u{1F1EE}\\u{1F1F9}\" },\n { code: \"+34\", country: \"ES\", name: \"Spain\", flag: \"\\u{1F1EA}\\u{1F1F8}\" },\n { code: \"+31\", country: \"NL\", name: \"Netherlands\", flag: \"\\u{1F1F3}\\u{1F1F1}\" },\n { code: \"+43\", country: \"AT\", name: \"Austria\", flag: \"\\u{1F1E6}\\u{1F1F9}\" },\n { code: \"+41\", country: \"CH\", name: \"Switzerland\", flag: \"\\u{1F1E8}\\u{1F1ED}\" },\n { code: \"+357\", country: \"CY\", name: \"Cyprus\", flag: \"\\u{1F1E8}\\u{1F1FE}\" },\n { code: \"+90\", country: \"TR\", name: \"Turkey\", flag: \"\\u{1F1F9}\\u{1F1F7}\" },\n];\n","\"use client\";\n\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { FormInput, FormPasswordInput, FormSelect, OTPInput } from \"@atzentis/ui-shared\";\nimport type { FormSelectOption } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { usePhone } from \"../../../hooks/use-phone\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { OtpVerifyFormData, PhoneNumberFormData } from \"../../../schemas/phone-login-schema\";\nimport { otpVerifySchema, phoneNumberSchema } from \"../../../schemas/phone-login-schema\";\nimport type { PhoneLoginFormProps } from \"../../../types/components\";\nimport { COUNTRY_CODES } from \"../../shared/country-codes\";\nimport { SubmitButton } from \"../../shared/submit-button\";\n\nexport function PhoneLoginForm({\n onSuccess,\n onError,\n allowedCountryCodes = [\"+30\", \"+49\"],\n showPasswordFallback = false,\n className,\n}: PhoneLoginFormProps) {\n const { sendOTP, verify, signIn, isSending, isVerifying, expiresIn } = usePhone();\n const { localization, localizeErrors } = useAuthLocalization();\n const [step, setStep] = useState<\"phone\" | \"otp\" | \"password\">(\"phone\");\n const [formError, setFormError] = useState<string | null>(null);\n const [fullPhoneNumber, setFullPhoneNumber] = useState(\"\");\n\n const filteredCountryCodes = useMemo(\n () => COUNTRY_CODES.filter((c) => allowedCountryCodes.includes(c.code)),\n [allowedCountryCodes],\n );\n\n const phoneForm = useForm<PhoneNumberFormData>({\n resolver: zodResolver(phoneNumberSchema),\n defaultValues: {\n countryCode: filteredCountryCodes[0]?.code ?? \"+30\",\n phoneNumber: \"\",\n },\n });\n\n const otpForm = useForm<OtpVerifyFormData>({\n resolver: zodResolver(otpVerifySchema),\n defaultValues: { code: \"\" },\n });\n\n const [passwordValue, setPasswordValue] = useState(\"\");\n\n const countryCodeOptions: FormSelectOption[] = filteredCountryCodes.map((c) => ({\n value: c.code,\n label: `${c.flag} ${c.name} (${c.code})`,\n }));\n\n const handlePhoneSubmit = useCallback(\n async (data: PhoneNumberFormData) => {\n setFormError(null);\n const phone = `${data.countryCode}${data.phoneNumber}`;\n setFullPhoneNumber(phone);\n try {\n await sendOTP(phone);\n setStep(\"otp\");\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n }\n },\n [sendOTP, onError, localization, localizeErrors],\n );\n\n const handleOtpSubmit = useCallback(\n async (data: OtpVerifyFormData) => {\n setFormError(null);\n try {\n const response = await verify(fullPhoneNumber, data.code);\n onSuccess(response.user);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n }\n },\n [verify, fullPhoneNumber, onSuccess, onError, localization, localizeErrors],\n );\n\n const handleOtpComplete = useCallback(\n (code: string) => {\n otpForm.setValue(\"code\", code);\n otpForm.handleSubmit(handleOtpSubmit)();\n },\n [otpForm, handleOtpSubmit],\n );\n\n const handlePasswordSubmit = useCallback(\n async (e: React.FormEvent) => {\n e.preventDefault();\n setFormError(null);\n try {\n const response = await signIn(fullPhoneNumber, passwordValue);\n onSuccess(response.user);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n }\n },\n [signIn, fullPhoneNumber, passwordValue, onSuccess, onError, localization, localizeErrors],\n );\n\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n {step === \"phone\" && (\n <form onSubmit={phoneForm.handleSubmit(handlePhoneSubmit)} className=\"space-y-4\">\n <FormSelect\n label={localization.COUNTRY_CODE}\n options={countryCodeOptions}\n value={phoneForm.watch(\"countryCode\")}\n onValueChange={(value) => phoneForm.setValue(\"countryCode\", value)}\n />\n\n <FormInput\n label={localization.PHONE_NUMBER_PLACEHOLDER}\n id=\"phone-number\"\n type=\"tel\"\n error={phoneForm.formState.errors.phoneNumber?.message}\n {...phoneForm.register(\"phoneNumber\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSending}\n loadingLabel={localization.SENDING_VERIFICATION_CODE}\n actionLabel={localization.SEND_VERIFICATION_CODE}\n />\n </form>\n )}\n\n {step === \"otp\" && (\n <form onSubmit={otpForm.handleSubmit(handleOtpSubmit)} className=\"space-y-4\">\n {/* biome-ignore lint/a11y/noLabelWithoutControl: OTPInput renders its own input cells */}\n <label className=\"block text-sm font-medium\">\n {localization.VERIFICATION_CODE_LABEL}\n <OTPInput length={6} onComplete={handleOtpComplete} disabled={isVerifying} />\n </label>\n\n {expiresIn !== null && (\n <p className=\"text-sm text-gray-500\">\n {localization.CODE_EXPIRES_IN} {expiresIn}s\n </p>\n )}\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isVerifying}\n loadingLabel={localization.VERIFYING}\n actionLabel={localization.VERIFY}\n />\n\n {showPasswordFallback && (\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"p-0 h-auto text-sm\"\n onClick={() => setStep(\"password\")}\n >\n {localization.USE_PASSWORD_INSTEAD}\n </Button>\n )}\n </form>\n )}\n\n {step === \"password\" && (\n <form onSubmit={handlePasswordSubmit} className=\"space-y-4\">\n <FormPasswordInput\n label={localization.PASSWORD}\n id=\"phone-password\"\n value={passwordValue}\n onChange={(e) => setPasswordValue(e.target.value)}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isVerifying}\n loadingLabel={localization.SIGNING_IN}\n actionLabel={localization.SIGN_IN}\n />\n </form>\n )}\n </div>\n </Card>\n );\n}\n","\"use client\";\n\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { FormInput, FormPasswordInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuth } from \"../../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { CredentialLoginFormData } from \"../../../schemas/login-schema\";\nimport { credentialLoginSchema } from \"../../../schemas/login-schema\";\nimport type { LoginFormProps } from \"../../../types/components\";\nimport { SubmitButton } from \"../../shared/submit-button\";\nimport { isEmail } from \"../../shared/utils\";\nimport { OAuthButton } from \"../oauth-button\";\nimport { PhoneLoginForm } from \"./phone-login\";\n\nexport function LoginForm({\n onSuccess,\n onError,\n enablePhone = false,\n enableForgotPassword = false,\n onForgotPasswordClick,\n className,\n ...oauthProps\n}: LoginFormProps) {\n const oauthProviders = \"oauthProviders\" in oauthProps ? oauthProps.oauthProviders : undefined;\n const oauthRedirectUri = \"oauthRedirectUri\" in oauthProps ? oauthProps.oauthRedirectUri : \"\";\n\n const { login, loginWithUsername } = useAuth();\n const { localization, localizeErrors } = useAuthLocalization();\n const [mode, setMode] = useState<\"credential\" | \"phone\">(\"credential\");\n const [formError, setFormError] = useState<string | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const {\n register,\n handleSubmit,\n watch,\n formState: { errors },\n } = useForm<CredentialLoginFormData>({\n resolver: zodResolver(credentialLoginSchema),\n defaultValues: { identity: \"\", password: \"\" },\n });\n\n const identityValue = watch(\"identity\");\n\n const onSubmit = useCallback(\n async (data: CredentialLoginFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n if (isEmail(data.identity)) {\n const response = await login({\n email: data.identity,\n password: data.password,\n captchaToken: data.captchaToken,\n });\n onSuccess(response.user);\n } else {\n const response = await loginWithUsername({\n username: data.identity,\n password: data.password,\n captchaToken: data.captchaToken,\n });\n onSuccess(response.user);\n }\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [login, loginWithUsername, onSuccess, onError, localization, localizeErrors],\n );\n\n const handleSwitchToPhone = useCallback(() => {\n setMode(\"phone\");\n setFormError(null);\n }, []);\n\n const handleSwitchToCredential = useCallback(() => {\n setMode(\"credential\");\n setFormError(null);\n }, []);\n\n if (mode === \"phone\") {\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n <PhoneLoginForm onSuccess={onSuccess} onError={onError} />\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"p-0 h-auto text-sm\"\n onClick={handleSwitchToCredential}\n >\n {localization.USE_EMAIL_INSTEAD}\n </Button>\n </div>\n </Card>\n );\n }\n\n return (\n <Card className={className}>\n <form onSubmit={handleSubmit(onSubmit)} className=\"p-6 space-y-4\">\n <FormInput\n label={localization.SIGN_IN_USERNAME_PLACEHOLDER}\n id=\"login-identity\"\n type=\"text\"\n autoComplete=\"username\"\n error={errors.identity?.message}\n {...register(\"identity\")}\n />\n\n {identityValue && (\n <FormPasswordInput\n label={localization.PASSWORD}\n id=\"login-password\"\n autoComplete=\"current-password\"\n error={errors.password?.message}\n {...register(\"password\")}\n />\n )}\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.SIGNING_IN}\n actionLabel={localization.SIGN_IN}\n />\n\n <div className=\"flex items-center justify-between text-sm\">\n {enableForgotPassword && (\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"p-0 h-auto\"\n onClick={onForgotPasswordClick}\n >\n {localization.FORGOT_PASSWORD_LINK}\n </Button>\n )}\n {enablePhone && (\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"p-0 h-auto\"\n onClick={handleSwitchToPhone}\n >\n {localization.USE_PHONE_INSTEAD}\n </Button>\n )}\n </div>\n\n {oauthProviders && oauthProviders.length > 0 && (\n <>\n <div className=\"relative flex items-center py-2\">\n <div className=\"flex-grow border-t border-gray-300\" />\n <span className=\"mx-4 text-sm text-gray-500\">{localization.OR_CONTINUE_WITH}</span>\n <div className=\"flex-grow border-t border-gray-300\" />\n </div>\n <div className=\"space-y-2\">\n {oauthProviders.map((provider) => (\n <OAuthButton key={provider} provider={provider} redirectUri={oauthRedirectUri} />\n ))}\n </div>\n </>\n )}\n </form>\n </Card>\n );\n}\n","import { z } from \"zod\";\n\nexport const recoverEmailSchema = z.object({\n email: z.string().min(1).email(),\n});\n\nexport type RecoverEmailFormData = z.infer<typeof recoverEmailSchema>;\n\nexport const recoverCodeSchema = z.object({\n code: z\n .string()\n .length(6)\n .regex(/^\\d{6}$/),\n});\n\nexport type RecoverCodeFormData = z.infer<typeof recoverCodeSchema>;\n\nexport const recoverNewPasswordSchema = z\n .object({\n newPassword: z.string().min(8),\n confirmPassword: z.string().min(1),\n })\n .refine((data) => data.newPassword === data.confirmPassword, {\n message: \"PASSWORDS_DO_NOT_MATCH\",\n path: [\"confirmPassword\"],\n });\n\nexport type RecoverNewPasswordFormData = z.infer<typeof recoverNewPasswordSchema>;\n\nexport const recoverPhoneSchema = z.object({\n phoneNumber: z.string().min(1),\n});\n\nexport type RecoverPhoneFormData = z.infer<typeof recoverPhoneSchema>;\n\nexport type RecoveryMethod = \"email_link\" | \"email_code\" | \"phone_otp\";\n","\"use client\";\n\nimport {\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@atzentis/ui-shadcn\";\nimport { FormInput, FormPasswordInput, OTPInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuth } from \"../../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { usePhone } from \"../../../hooks/use-phone\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type {\n RecoverEmailFormData,\n RecoverNewPasswordFormData,\n RecoverPhoneFormData,\n RecoveryMethod,\n} from \"../../../schemas/recover-account-schema\";\nimport {\n recoverEmailSchema,\n recoverNewPasswordSchema,\n recoverPhoneSchema,\n} from \"../../../schemas/recover-account-schema\";\nimport type { RecoverAccountFormProps } from \"../../../types/components\";\nimport { SubmitButton } from \"../../shared/submit-button\";\nimport { maskEmail } from \"../../shared/utils\";\n\nexport function RecoverAccountForm({\n redirectUrl,\n enablePhone = false,\n onSuccess,\n onError,\n resendCooldown = 60,\n className,\n}: RecoverAccountFormProps) {\n const { requestPasswordReset, sendVerificationEmail, verifyEmail, resetPassword } = useAuth();\n const { sendOTP, verify: verifyPhone } = usePhone();\n const { localization, localizeErrors } = useAuthLocalization();\n\n const [step, setStep] = useState<1 | 2 | 3 | 4>(1);\n const [email, setEmail] = useState(\"\");\n const [phoneNumber, setPhoneNumber] = useState(\"\");\n const [selectedMethod, setSelectedMethod] = useState<RecoveryMethod | null>(null);\n const [verificationToken, setVerificationToken] = useState<string | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [formError, setFormError] = useState<string | null>(null);\n const [cooldownRemaining, setCooldownRemaining] = useState(0);\n const codeRef = useRef(\"\");\n\n const emailForm = useForm<RecoverEmailFormData>({\n resolver: zodResolver(recoverEmailSchema),\n defaultValues: { email: \"\" },\n });\n\n const phoneForm = useForm<RecoverPhoneFormData>({\n resolver: zodResolver(recoverPhoneSchema),\n defaultValues: { phoneNumber: \"\" },\n });\n\n const passwordForm = useForm<RecoverNewPasswordFormData>({\n resolver: zodResolver(recoverNewPasswordSchema),\n defaultValues: { newPassword: \"\", confirmPassword: \"\" },\n });\n\n useEffect(() => {\n if (cooldownRemaining <= 0) return;\n\n const timer = setInterval(() => {\n setCooldownRemaining((prev) => Math.max(0, prev - 1));\n }, 1000);\n\n return () => clearInterval(timer);\n }, [cooldownRemaining]);\n\n const getTotalSteps = useCallback(() => {\n if (selectedMethod === \"email_link\") return 3;\n return 4;\n }, [selectedMethod]);\n\n const handleGoBack = useCallback(() => {\n if (step === 2) {\n setStep(1);\n setSelectedMethod(null);\n } else if (step === 3) {\n setStep(2);\n codeRef.current = \"\";\n } else if (step === 4) {\n setStep(3);\n }\n setFormError(null);\n }, [step]);\n\n const onEmailSubmit = useCallback(async (data: RecoverEmailFormData) => {\n setFormError(null);\n setEmail(data.email);\n setStep(2);\n }, []);\n\n const handleMethodSelect = useCallback(\n async (method: RecoveryMethod) => {\n setFormError(null);\n setIsSubmitting(true);\n setSelectedMethod(method);\n\n try {\n if (method === \"email_link\") {\n await requestPasswordReset({ email, redirectUrl });\n setCooldownRemaining(resendCooldown);\n setStep(3);\n } else if (method === \"email_code\") {\n await sendVerificationEmail({ email, redirectUrl });\n setCooldownRemaining(resendCooldown);\n setStep(3);\n } else if (method === \"phone_otp\") {\n setStep(3);\n }\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [\n email,\n redirectUrl,\n resendCooldown,\n requestPasswordReset,\n sendVerificationEmail,\n onError,\n localization,\n localizeErrors,\n ],\n );\n\n const handleResendEmailLink = useCallback(async () => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await requestPasswordReset({ email, redirectUrl });\n setCooldownRemaining(resendCooldown);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n } finally {\n setIsSubmitting(false);\n }\n }, [email, redirectUrl, resendCooldown, requestPasswordReset, localization, localizeErrors]);\n\n const handleResendEmailCode = useCallback(async () => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await sendVerificationEmail({ email, redirectUrl });\n setCooldownRemaining(resendCooldown);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n } finally {\n setIsSubmitting(false);\n }\n }, [email, redirectUrl, resendCooldown, sendVerificationEmail, localization, localizeErrors]);\n\n const handleResendPhoneOTP = useCallback(async () => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await sendOTP(phoneNumber);\n setCooldownRemaining(resendCooldown);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n } finally {\n setIsSubmitting(false);\n }\n }, [phoneNumber, resendCooldown, sendOTP, localization, localizeErrors]);\n\n const onPhoneSubmit = useCallback(\n async (data: RecoverPhoneFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n setPhoneNumber(data.phoneNumber);\n await sendOTP(data.phoneNumber);\n setCooldownRemaining(resendCooldown);\n setFormError(null);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [sendOTP, resendCooldown, onError, localization, localizeErrors],\n );\n\n const handleVerifyEmailCode = useCallback(\n async (code: string) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await verifyEmail({ token: code });\n setVerificationToken(code);\n setStep(4);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [verifyEmail, onError, localization, localizeErrors],\n );\n\n const handleVerifyPhoneCode = useCallback(\n async (code: string) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await verifyPhone(phoneNumber, code);\n setVerificationToken(code);\n setStep(4);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [verifyPhone, phoneNumber, onError, localization, localizeErrors],\n );\n\n const handleOtpComplete = useCallback(\n (code: string) => {\n codeRef.current = code;\n if (selectedMethod === \"email_code\") {\n handleVerifyEmailCode(code);\n } else if (selectedMethod === \"phone_otp\") {\n handleVerifyPhoneCode(code);\n }\n },\n [selectedMethod, handleVerifyEmailCode, handleVerifyPhoneCode],\n );\n\n const handleManualVerify = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n if (codeRef.current) {\n if (selectedMethod === \"email_code\") {\n handleVerifyEmailCode(codeRef.current);\n } else if (selectedMethod === \"phone_otp\") {\n handleVerifyPhoneCode(codeRef.current);\n }\n }\n },\n [selectedMethod, handleVerifyEmailCode, handleVerifyPhoneCode],\n );\n\n const onPasswordSubmit = useCallback(\n async (data: RecoverNewPasswordFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n const token = verificationToken ?? \"\";\n await resetPassword({ token, newPassword: data.newPassword });\n onSuccess?.();\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [verificationToken, resetPassword, onSuccess, onError, localization, localizeErrors],\n );\n\n if (step === 1) {\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.RECOVER_ACCOUNT}</CardTitle>\n <CardDescription>{localization.RECOVER_ACCOUNT_DESCRIPTION}</CardDescription>\n </CardHeader>\n <CardContent>\n <form onSubmit={emailForm.handleSubmit(onEmailSubmit)} className=\"space-y-4\">\n <FormInput\n label={localization.EMAIL}\n id=\"recover-email\"\n type=\"email\"\n autoComplete=\"email\"\n error={emailForm.formState.errors.email?.message}\n disabled={isSubmitting}\n {...emailForm.register(\"email\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.LOADING}\n actionLabel={localization.CONTINUE}\n />\n </form>\n </CardContent>\n </Card>\n );\n }\n\n if (step === 2) {\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.SELECT_RECOVERY_METHOD}</CardTitle>\n <CardDescription>\n {localization.STEP_OF.replace(\"{{current}}\", \"2\").replace(\n \"{{total}}\",\n String(getTotalSteps()),\n )}\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <button\n type=\"button\"\n onClick={() => handleMethodSelect(\"email_link\")}\n disabled={isSubmitting}\n className=\"w-full p-4 text-left border rounded-lg hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n >\n <div className=\"space-y-1\">\n <div className=\"font-medium\">{localization.RESET_VIA_EMAIL}</div>\n <div className=\"text-sm text-gray-500\">{localization.FORGOT_PASSWORD_EMAIL}</div>\n </div>\n </button>\n\n <button\n type=\"button\"\n onClick={() => handleMethodSelect(\"email_code\")}\n disabled={isSubmitting}\n className=\"w-full p-4 text-left border rounded-lg hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n >\n <div className=\"space-y-1\">\n <div className=\"font-medium\">{localization.VERIFY_WITH_CODE}</div>\n <div className=\"text-sm text-gray-500\">{localization.EMAIL_OTP_DESCRIPTION}</div>\n </div>\n </button>\n\n {enablePhone && (\n <button\n type=\"button\"\n onClick={() => handleMethodSelect(\"phone_otp\")}\n disabled={isSubmitting}\n className=\"w-full p-4 text-left border rounded-lg hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n >\n <div className=\"space-y-1\">\n <div className=\"font-medium\">{localization.VERIFY_VIA_PHONE}</div>\n <div className=\"text-sm text-gray-500\">\n {localization.SENDING_VERIFICATION_CODE}\n </div>\n </div>\n </button>\n )}\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <Button type=\"button\" variant=\"ghost\" onClick={handleGoBack} className=\"w-full\">\n {localization.GO_BACK}\n </Button>\n </CardContent>\n </Card>\n );\n }\n\n if (step === 3) {\n if (selectedMethod === \"email_link\") {\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.CHECK_YOUR_EMAIL}</CardTitle>\n <CardDescription>\n {localization.STEP_OF.replace(\"{{current}}\", \"3\").replace(\n \"{{total}}\",\n String(getTotalSteps()),\n )}\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"text-center space-y-2\">\n <p className=\"text-sm\">{localization.FORGOT_PASSWORD_EMAIL}</p>\n <p className=\"text-sm font-medium\">{maskEmail(email)}</p>\n </div>\n\n <div className=\"space-y-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={isSubmitting || cooldownRemaining > 0}\n onClick={handleResendEmailLink}\n className=\"w-full\"\n >\n {cooldownRemaining > 0\n ? localization.RESEND_IN.replace(\"{{seconds}}\", String(cooldownRemaining))\n : isSubmitting\n ? localization.RESENDING\n : localization.RESEND}\n </Button>\n\n <Button type=\"button\" variant=\"ghost\" onClick={handleGoBack} className=\"w-full\">\n {localization.GO_BACK}\n </Button>\n </div>\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600 text-center\">\n {formError}\n </div>\n )}\n </CardContent>\n </Card>\n );\n }\n\n if (selectedMethod === \"email_code\") {\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.EMAIL_OTP}</CardTitle>\n <CardDescription>\n {localization.STEP_OF.replace(\"{{current}}\", \"3\").replace(\n \"{{total}}\",\n String(getTotalSteps()),\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-4\">\n <div className=\"text-center space-y-2\">\n <p className=\"text-sm\">\n {localization.EMAIL_OTP_SENT} <strong>{maskEmail(email)}</strong>\n </p>\n </div>\n\n <form onSubmit={handleManualVerify} className=\"space-y-4\">\n {/* biome-ignore lint/a11y/noLabelWithoutControl: OTPInput renders its own input cells */}\n <label className=\"block text-sm font-medium\">\n {localization.ENTER_VERIFICATION_CODE}\n <OTPInput\n length={6}\n onComplete={handleOtpComplete}\n disabled={isSubmitting}\n className=\"mt-2\"\n />\n </label>\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.VERIFYING}\n actionLabel={localization.VERIFY}\n />\n\n <div className=\"space-y-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={isSubmitting || cooldownRemaining > 0}\n onClick={handleResendEmailCode}\n className=\"w-full\"\n >\n {cooldownRemaining > 0\n ? localization.RESEND_IN.replace(\"{{seconds}}\", String(cooldownRemaining))\n : isSubmitting\n ? localization.RESENDING\n : localization.RESEND}\n </Button>\n\n <Button type=\"button\" variant=\"ghost\" onClick={handleGoBack} className=\"w-full\">\n {localization.GO_BACK}\n </Button>\n </div>\n </form>\n </div>\n </CardContent>\n </Card>\n );\n }\n\n if (selectedMethod === \"phone_otp\") {\n if (!phoneNumber) {\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.VERIFY_VIA_PHONE}</CardTitle>\n <CardDescription>\n {localization.STEP_OF.replace(\"{{current}}\", \"3\").replace(\n \"{{total}}\",\n String(getTotalSteps()),\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <form onSubmit={phoneForm.handleSubmit(onPhoneSubmit)} className=\"space-y-4\">\n <FormInput\n label={localization.PHONE_NUMBER_PLACEHOLDER}\n id=\"recover-phone\"\n type=\"tel\"\n autoComplete=\"tel\"\n error={phoneForm.formState.errors.phoneNumber?.message}\n disabled={isSubmitting}\n {...phoneForm.register(\"phoneNumber\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.SENDING_VERIFICATION_CODE}\n actionLabel={localization.SEND_VERIFICATION_CODE}\n />\n\n <Button type=\"button\" variant=\"ghost\" onClick={handleGoBack} className=\"w-full\">\n {localization.GO_BACK}\n </Button>\n </form>\n </CardContent>\n </Card>\n );\n }\n\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.ONE_TIME_PASSWORD}</CardTitle>\n <CardDescription>\n {localization.STEP_OF.replace(\"{{current}}\", \"3\").replace(\n \"{{total}}\",\n String(getTotalSteps()),\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-4\">\n <div className=\"text-center space-y-2\">\n <p className=\"text-sm\">\n {localization.EMAIL_OTP_SENT} <strong>{phoneNumber}</strong>\n </p>\n </div>\n\n <form onSubmit={handleManualVerify} className=\"space-y-4\">\n {/* biome-ignore lint/a11y/noLabelWithoutControl: OTPInput renders its own input cells */}\n <label className=\"block text-sm font-medium\">\n {localization.ENTER_VERIFICATION_CODE}\n <OTPInput\n length={6}\n onComplete={handleOtpComplete}\n disabled={isSubmitting}\n className=\"mt-2\"\n />\n </label>\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.VERIFYING}\n actionLabel={localization.VERIFY}\n />\n\n <div className=\"space-y-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={isSubmitting || cooldownRemaining > 0}\n onClick={handleResendPhoneOTP}\n className=\"w-full\"\n >\n {cooldownRemaining > 0\n ? localization.RESEND_IN.replace(\"{{seconds}}\", String(cooldownRemaining))\n : isSubmitting\n ? localization.RESENDING\n : localization.RESEND}\n </Button>\n\n <Button type=\"button\" variant=\"ghost\" onClick={handleGoBack} className=\"w-full\">\n {localization.GO_BACK}\n </Button>\n </div>\n </form>\n </div>\n </CardContent>\n </Card>\n );\n }\n }\n\n if (step === 4) {\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.RESET_PASSWORD}</CardTitle>\n <CardDescription>\n {localization.STEP_OF.replace(\"{{current}}\", \"4\").replace(\n \"{{total}}\",\n String(getTotalSteps()),\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <form onSubmit={passwordForm.handleSubmit(onPasswordSubmit)} className=\"space-y-4\">\n <FormPasswordInput\n label={localization.NEW_PASSWORD}\n id=\"new-password\"\n autoComplete=\"new-password\"\n error={passwordForm.formState.errors.newPassword?.message}\n disabled={isSubmitting}\n {...passwordForm.register(\"newPassword\")}\n />\n\n <FormPasswordInput\n label={localization.CONFIRM_NEW_PASSWORD}\n id=\"confirm-password\"\n autoComplete=\"new-password\"\n error={passwordForm.formState.errors.confirmPassword?.message}\n disabled={isSubmitting}\n {...passwordForm.register(\"confirmPassword\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.LOADING}\n actionLabel={localization.RESET_PASSWORD_ACTION}\n />\n\n <Button type=\"button\" variant=\"ghost\" onClick={handleGoBack} className=\"w-full\">\n {localization.GO_BACK}\n </Button>\n </form>\n </CardContent>\n </Card>\n );\n }\n\n return null;\n}\n","import { z } from \"zod\";\n\nexport const resetPasswordSchema = z\n .object({\n newPassword: z.string().min(8),\n confirmPassword: z.string().min(1),\n })\n .refine((data) => data.newPassword === data.confirmPassword, {\n message: \"PASSWORDS_DO_NOT_MATCH\",\n path: [\"confirmPassword\"],\n });\n\nexport type ResetPasswordFormData = z.infer<typeof resetPasswordSchema>;\n","\"use client\";\n\nimport { Card } from \"@atzentis/ui-shadcn\";\nimport { FormPasswordInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuth } from \"../../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { ResetPasswordFormData } from \"../../../schemas/reset-password-schema\";\nimport { resetPasswordSchema } from \"../../../schemas/reset-password-schema\";\nimport type { ResetPasswordFormProps } from \"../../../types/components\";\nimport { SubmitButton } from \"../../shared/submit-button\";\n\nexport function ResetPasswordForm({\n token,\n onSuccess,\n onError,\n className,\n}: ResetPasswordFormProps) {\n const { resetPassword } = useAuth();\n const { localization, localizeErrors } = useAuthLocalization();\n const [isSuccess, setIsSuccess] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [formError, setFormError] = useState<string | null>(null);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm<ResetPasswordFormData>({\n resolver: zodResolver(resetPasswordSchema),\n defaultValues: { newPassword: \"\", confirmPassword: \"\" },\n });\n\n const onSubmit = useCallback(\n async (data: ResetPasswordFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await resetPassword({ token, newPassword: data.newPassword });\n setIsSuccess(true);\n onSuccess?.();\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [resetPassword, token, onSuccess, onError, localization, localizeErrors],\n );\n\n if (isSuccess) {\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4 text-center\">\n <h2 className=\"text-lg font-semibold\">{localization.RESET_PASSWORD_SUCCESS}</h2>\n <p className=\"text-sm text-gray-500\">{localization.RESET_PASSWORD_SUCCESS}</p>\n </div>\n </Card>\n );\n }\n\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n <div className=\"text-center space-y-2\">\n <h2 className=\"text-lg font-semibold\">{localization.RESET_PASSWORD}</h2>\n <p className=\"text-sm text-gray-500\">{localization.CHANGE_PASSWORD_DESCRIPTION}</p>\n </div>\n\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-4\">\n <FormPasswordInput\n label={localization.NEW_PASSWORD}\n id=\"reset-password-new\"\n autoComplete=\"new-password\"\n error={errors.newPassword?.message}\n disabled={isSubmitting}\n {...register(\"newPassword\")}\n />\n\n <FormPasswordInput\n label={localization.CONFIRM_NEW_PASSWORD}\n id=\"reset-password-confirm\"\n autoComplete=\"new-password\"\n error={\n errors.confirmPassword?.message === \"PASSWORDS_DO_NOT_MATCH\"\n ? localization.PASSWORDS_DO_NOT_MATCH || \"Passwords do not match\"\n : errors.confirmPassword?.message\n }\n disabled={isSubmitting}\n {...register(\"confirmPassword\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.LOADING}\n actionLabel={localization.RESET_PASSWORD_ACTION}\n />\n </form>\n </div>\n </Card>\n );\n}\n","import { z } from \"zod\";\n\nexport const signupSchema = z.object({\n email: z.string().email(\"Invalid email address\"),\n password: z.string().min(8, \"Password must be at least 8 characters\"),\n name: z.string().min(1, \"Name is required\"),\n username: z.string().optional(),\n phoneNumber: z.string().optional(),\n organizationName: z.string().optional(),\n acceptTerms: z.boolean(),\n captchaToken: z.string().optional(),\n});\nexport type SignupFormData = z.infer<typeof signupSchema>;\n","\"use client\";\n\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { FormInput, FormPasswordInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuth } from \"../../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { SignupFormData } from \"../../../schemas/signup-schema\";\nimport { signupSchema } from \"../../../schemas/signup-schema\";\nimport type { SignupFormProps } from \"../../../types/components\";\nimport { SubmitButton } from \"../../shared/submit-button\";\n\nexport function SignupForm({\n onSuccess,\n onError,\n showUsernameField = false,\n showPhoneField = false,\n organizationName,\n acceptTermsRequired = false,\n onLoginClick,\n className,\n}: SignupFormProps) {\n const { signup } = useAuth();\n const { localization, localizeErrors } = useAuthLocalization();\n const [formError, setFormError] = useState<string | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm<SignupFormData>({\n resolver: zodResolver(\n acceptTermsRequired\n ? signupSchema.refine((data) => data.acceptTerms === true, {\n message: localization.ACCEPT_TERMS_ERROR,\n path: [\"acceptTerms\"],\n })\n : signupSchema,\n ),\n defaultValues: {\n email: \"\",\n password: \"\",\n name: \"\",\n username: \"\",\n phoneNumber: \"\",\n organizationName: organizationName ?? \"\",\n acceptTerms: false,\n },\n });\n\n const onSubmit = useCallback(\n async (data: SignupFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n const response = await signup({\n email: data.email,\n password: data.password,\n name: data.name,\n username: data.username,\n organizationName: data.organizationName,\n acceptTerms: data.acceptTerms,\n });\n onSuccess(response.user);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [signup, onSuccess, onError, localization, localizeErrors],\n );\n\n return (\n <Card className={className}>\n <form onSubmit={handleSubmit(onSubmit)} className=\"p-6 space-y-4\">\n <FormInput\n label={localization.NAME}\n id=\"signup-name\"\n type=\"text\"\n autoComplete=\"name\"\n error={errors.name?.message}\n {...register(\"name\")}\n />\n\n <FormInput\n label={localization.EMAIL}\n id=\"signup-email\"\n type=\"email\"\n autoComplete=\"email\"\n error={errors.email?.message}\n {...register(\"email\")}\n />\n\n <FormPasswordInput\n label={localization.PASSWORD}\n id=\"signup-password\"\n autoComplete=\"new-password\"\n error={errors.password?.message}\n {...register(\"password\")}\n />\n\n {showUsernameField && (\n <FormInput\n label={localization.USERNAME}\n id=\"signup-username\"\n type=\"text\"\n autoComplete=\"username\"\n error={errors.username?.message}\n {...register(\"username\")}\n />\n )}\n\n {showPhoneField && (\n <FormInput\n label={localization.PHONE_NUMBER_PLACEHOLDER}\n id=\"signup-phone\"\n type=\"tel\"\n autoComplete=\"tel\"\n error={errors.phoneNumber?.message}\n {...register(\"phoneNumber\")}\n />\n )}\n\n {acceptTermsRequired && (\n <div className=\"flex items-center gap-2\">\n <input\n id=\"signup-terms\"\n type=\"checkbox\"\n aria-invalid={errors.acceptTerms ? true : undefined}\n {...register(\"acceptTerms\")}\n />\n <label htmlFor=\"signup-terms\" className=\"text-sm\">\n {localization.ACCEPT_TERMS}\n </label>\n {errors.acceptTerms && (\n <p className=\"text-sm text-red-600\">{errors.acceptTerms.message}</p>\n )}\n </div>\n )}\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.SIGNING_IN}\n actionLabel={localization.SIGN_UP_ACTION}\n />\n\n {onLoginClick && (\n <p className=\"text-sm text-center\">\n {localization.ALREADY_HAVE_AN_ACCOUNT}{\" \"}\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"p-0 h-auto text-sm\"\n onClick={onLoginClick}\n >\n {localization.SIGN_IN}\n </Button>\n </p>\n )}\n </form>\n </Card>\n );\n}\n","import { z } from \"zod\";\n\nexport const totpSchema = z.object({\n code: z\n .string()\n .length(6)\n .regex(/^\\d{6}$/),\n});\n\nexport type TotpFormData = z.infer<typeof totpSchema>;\n\nexport const backupCodeSchema = z.object({\n backupCode: z.string().min(1),\n});\n\nexport type BackupCodeFormData = z.infer<typeof backupCodeSchema>;\n","\"use client\";\n\nimport {\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@atzentis/ui-shadcn\";\nimport { FormInput, OTPInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useRef, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { BackupCodeFormData } from \"../../../schemas/two-factor-schema\";\nimport { backupCodeSchema } from \"../../../schemas/two-factor-schema\";\nimport type { TwoFactorFormProps } from \"../../../types/components\";\nimport { SubmitButton } from \"../../shared/submit-button\";\n\nexport function TwoFactorForm({\n onVerify,\n onError,\n autoSubmit = true,\n isLoading,\n className,\n}: TwoFactorFormProps) {\n const { localization, localizeErrors } = useAuthLocalization();\n const [mode, setMode] = useState<\"totp\" | \"backup\">(\"totp\");\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [formError, setFormError] = useState<string | null>(null);\n const codeRef = useRef(\"\");\n\n const loading = isLoading ?? isSubmitting;\n\n const backupForm = useForm<BackupCodeFormData>({\n resolver: zodResolver(backupCodeSchema),\n defaultValues: { backupCode: \"\" },\n });\n\n const handleVerify = useCallback(\n async (code: string) => {\n setIsSubmitting(true);\n setFormError(null);\n try {\n await onVerify(code);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [onVerify, onError, localization, localizeErrors],\n );\n\n const handleOtpComplete = useCallback(\n (code: string) => {\n codeRef.current = code;\n if (autoSubmit) {\n handleVerify(code);\n }\n },\n [autoSubmit, handleVerify],\n );\n\n const handleManualVerify = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n if (codeRef.current) {\n handleVerify(codeRef.current);\n }\n },\n [handleVerify],\n );\n\n const handleBackupSubmit = useCallback(\n async (data: BackupCodeFormData) => {\n await handleVerify(data.backupCode);\n },\n [handleVerify],\n );\n\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.TWO_FACTOR_PROMPT}</CardTitle>\n <CardDescription>\n {mode === \"totp\" ? localization.ENTER_TOTP_CODE : localization.BACKUP_CODES}\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {mode === \"totp\" && (\n <form onSubmit={handleManualVerify} className=\"space-y-4\">\n {/* biome-ignore lint/a11y/noLabelWithoutControl: OTPInput renders its own input cells */}\n <label className=\"block text-sm font-medium\">\n {localization.VERIFICATION_CODE_LABEL}\n <OTPInput\n length={6}\n onComplete={handleOtpComplete}\n disabled={loading}\n className=\"mt-2\"\n />\n </label>\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={loading}\n loadingLabel={localization.VERIFYING}\n actionLabel={localization.TWO_FACTOR_ACTION}\n />\n\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"p-0 h-auto text-sm\"\n onClick={() => setMode(\"backup\")}\n disabled={loading}\n >\n {localization.USE_BACKUP_CODE}\n </Button>\n </form>\n )}\n\n {mode === \"backup\" && (\n <form onSubmit={backupForm.handleSubmit(handleBackupSubmit)} className=\"space-y-4\">\n <FormInput\n label={localization.BACKUP_CODE_PLACEHOLDER}\n id=\"backup-code\"\n error={backupForm.formState.errors.backupCode?.message}\n disabled={loading}\n {...backupForm.register(\"backupCode\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={loading}\n loadingLabel={localization.VERIFYING}\n actionLabel={localization.VERIFY}\n />\n\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"p-0 h-auto text-sm\"\n onClick={() => setMode(\"totp\")}\n disabled={loading}\n >\n {localization.USE_AUTHENTICATOR}\n </Button>\n </form>\n )}\n </CardContent>\n </Card>\n );\n}\n","\"use client\";\n\nimport type { User } from \"@atzentis/auth-sdk\";\nimport { useMemo } from \"react\";\nimport type { AuthViewProps } from \"../../types/components\";\nimport { authViewPaths } from \"./auth-view-paths\";\nimport { EmailOTPForm } from \"./forms/email-otp\";\nimport { EmailVerificationForm } from \"./forms/email-verification\";\nimport { ForgotPasswordForm } from \"./forms/forgot-password\";\nimport { LoginForm } from \"./forms/login\";\nimport { RecoverAccountForm } from \"./forms/recover-account\";\nimport { ResetPasswordForm } from \"./forms/reset-password\";\nimport { SignupForm } from \"./forms/signup\";\nimport { TwoFactorForm } from \"./forms/two-factor\";\n\n/**\n * AuthView — Pathname-based router for auth flows.\n * Renders the appropriate auth form component based on the pathname prop.\n *\n * @example\n * // Next.js App Router:\n * import { AuthView } from \"@atzentis/auth-react\";\n *\n * export default function AuthPage({ params, searchParams }) {\n * const pathname = `/${params.slug?.join(\"/\") || \"\"}`;\n * return <AuthView pathname={pathname} searchParams={searchParams} />;\n * }\n *\n * @example\n * // Custom path mapping:\n * <AuthView\n * pathname=\"/login\"\n * paths={{ \"/sign-in\": \"/login\", \"/sign-up\": \"/register\" }}\n * onSuccess={(user) => router.push(\"/dashboard\")}\n * />\n */\nexport function AuthView({\n pathname,\n paths,\n fallback = null,\n searchParams,\n getSearchParam,\n onSuccess,\n onError,\n enablePhone,\n oauthProviders,\n oauthRedirectUri,\n redirectUrl,\n className,\n}: AuthViewProps) {\n // Merge default paths with consumer overrides\n const resolvedPaths = useMemo(() => {\n return { ...authViewPaths, ...paths };\n }, [paths]);\n\n // Helper to extract search params\n const getParam = (key: string): string | undefined => {\n if (searchParams) {\n return searchParams[key];\n }\n if (getSearchParam) {\n return getSearchParam(key);\n }\n return undefined;\n };\n\n // Reverse lookup: find which AuthViewPath maps to this pathname\n const matchedPath = Object.entries(resolvedPaths).find(\n ([, mappedPath]) => mappedPath === pathname,\n )?.[0];\n\n // Render matched component\n switch (matchedPath) {\n case \"/sign-in\": {\n // LoginForm expects OAuthProvider[] when oauthProviders is passed\n if (oauthProviders && oauthRedirectUri) {\n return (\n <LoginForm\n onSuccess={(user) => onSuccess?.(user)}\n onError={onError}\n enablePhone={enablePhone}\n oauthProviders={oauthProviders}\n oauthRedirectUri={oauthRedirectUri}\n className={className}\n />\n );\n }\n return (\n <LoginForm\n onSuccess={(user) => onSuccess?.(user)}\n onError={onError}\n enablePhone={enablePhone}\n className={className}\n />\n );\n }\n\n case \"/sign-up\": {\n return (\n <SignupForm\n onSuccess={(user) => onSuccess?.(user)}\n onError={onError}\n className={className}\n />\n );\n }\n\n case \"/forgot-password\": {\n if (!redirectUrl) {\n throw new Error(\"AuthView: redirectUrl is required for /forgot-password\");\n }\n return (\n <ForgotPasswordForm\n redirectUrl={redirectUrl}\n onSuccess={() => onSuccess?.()}\n onError={onError}\n className={className}\n />\n );\n }\n\n case \"/reset-password\": {\n const token = getParam(\"token\");\n if (!token) {\n throw new Error(\"AuthView: token query param is required for /reset-password\");\n }\n return (\n <ResetPasswordForm\n token={token}\n onSuccess={() => onSuccess?.()}\n onError={onError}\n className={className}\n />\n );\n }\n\n case \"/verify-email\": {\n if (!redirectUrl) {\n throw new Error(\"AuthView: redirectUrl is required for /verify-email\");\n }\n const token = getParam(\"token\");\n const email = getParam(\"email\");\n return (\n <EmailVerificationForm\n token={token}\n email={email}\n redirectUrl={redirectUrl}\n onSuccess={(user: User) => onSuccess?.(user)}\n onError={onError}\n className={className}\n />\n );\n }\n\n case \"/email-otp\": {\n if (!redirectUrl) {\n throw new Error(\"AuthView: redirectUrl is required for /email-otp\");\n }\n return (\n <EmailOTPForm\n redirectUrl={redirectUrl}\n onSuccess={(user: User) => onSuccess?.(user)}\n onError={onError}\n className={className}\n />\n );\n }\n\n case \"/recover-account\": {\n if (!redirectUrl) {\n throw new Error(\"AuthView: redirectUrl is required for /recover-account\");\n }\n return (\n <RecoverAccountForm\n redirectUrl={redirectUrl}\n enablePhone={enablePhone}\n onSuccess={() => onSuccess?.()}\n onError={onError}\n className={className}\n />\n );\n }\n\n case \"/two-factor\": {\n return (\n <TwoFactorForm\n onVerify={() => {\n // Map onVerify to onSuccess for consistency\n onSuccess?.();\n }}\n onError={onError}\n className={className}\n />\n );\n }\n\n default: {\n // No match — render fallback\n return <>{fallback}</>;\n }\n }\n}\n","import { z } from \"zod\";\n\nexport const magicLinkSchema = z.object({\n email: z.string().email(\"Invalid email address\"),\n});\nexport type MagicLinkFormData = z.infer<typeof magicLinkSchema>;\n","\"use client\";\n\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { FormInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuth } from \"../../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { MagicLinkFormData } from \"../../../schemas/magic-link-schema\";\nimport { magicLinkSchema } from \"../../../schemas/magic-link-schema\";\nimport type { MagicLinkFormProps } from \"../../../types/components\";\nimport { SubmitButton } from \"../../shared/submit-button\";\nimport { maskEmail } from \"../../shared/utils\";\n\nexport function MagicLinkForm({ redirectUrl, onSuccess, onError, className }: MagicLinkFormProps) {\n const { sendMagicLink } = useAuth();\n const { localization, localizeErrors } = useAuthLocalization();\n const [sent, setSent] = useState(false);\n const [sentEmail, setSentEmail] = useState(\"\");\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [formError, setFormError] = useState<string | null>(null);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n getValues,\n } = useForm<MagicLinkFormData>({\n resolver: zodResolver(magicLinkSchema),\n defaultValues: { email: \"\" },\n });\n\n const onSubmit = useCallback(\n async (data: MagicLinkFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await sendMagicLink({ email: data.email, redirectUrl });\n setSent(true);\n setSentEmail(data.email);\n onSuccess?.();\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [sendMagicLink, redirectUrl, onSuccess, onError, localization, localizeErrors],\n );\n\n const handleResend = useCallback(async () => {\n const email = getValues(\"email\");\n setFormError(null);\n setIsSubmitting(true);\n try {\n await sendMagicLink({ email, redirectUrl });\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n } finally {\n setIsSubmitting(false);\n }\n }, [sendMagicLink, redirectUrl, getValues, localization, localizeErrors]);\n\n if (sent) {\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4 text-center\">\n <p className=\"text-sm\">\n {localization.MAGIC_LINK_EMAIL} <strong>{maskEmail(sentEmail)}</strong>\n </p>\n <p className=\"text-sm text-gray-500\">{localization.MAGIC_LINK_HINT}</p>\n <Button type=\"button\" variant=\"outline\" disabled={isSubmitting} onClick={handleResend}>\n {isSubmitting ? localization.RESENDING : localization.RESEND}\n </Button>\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n </div>\n </Card>\n );\n }\n\n return (\n <Card className={className}>\n <form onSubmit={handleSubmit(onSubmit)} className=\"p-6 space-y-4\">\n <FormInput\n label={localization.EMAIL}\n id=\"magic-link-email\"\n type=\"email\"\n autoComplete=\"email\"\n error={errors.email?.message}\n {...register(\"email\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.SENDING}\n actionLabel={localization.MAGIC_LINK_ACTION}\n />\n </form>\n </Card>\n );\n}\n","\"use client\";\n\nimport type { Device } from \"@atzentis/auth-sdk\";\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { useCallback, useEffect } from \"react\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport { useDevices } from \"../../hooks/use-devices\";\nimport type { DeviceListProps } from \"../../types/components\";\n\nconst DEFAULT_DEVICE_ICONS: Record<string, string> = {\n mobile: \"\\u{1F4F1}\",\n desktop: \"\\u{1F4BB}\",\n tablet: \"\\u{1F4DF}\",\n};\n\nexport function DeviceList({\n showTrustToggle = false,\n showRemoveAction = false,\n onDeviceTrusted,\n onDeviceUntrusted,\n onDeviceRemoved,\n renderDeviceIcon,\n className,\n}: DeviceListProps) {\n const { devices, isLoading, error, refresh, trustDevice, untrustDevice, removeDevice } =\n useDevices();\n const { localization } = useAuthLocalization();\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n const handleTrustToggle = useCallback(\n async (device: Device) => {\n if (device.isTrusted) {\n await untrustDevice(device.id);\n onDeviceUntrusted?.(device);\n } else {\n await trustDevice(device.id);\n onDeviceTrusted?.(device);\n }\n },\n [trustDevice, untrustDevice, onDeviceTrusted, onDeviceUntrusted],\n );\n\n const handleRemove = useCallback(\n async (device: Device) => {\n await removeDevice(device.id);\n onDeviceRemoved?.(device);\n },\n [removeDevice, onDeviceRemoved],\n );\n\n if (isLoading && devices.length === 0) {\n return (\n <Card className={className}>\n <div className=\"p-6 text-center text-sm text-gray-500\">{localization.LOADING_DEVICES}</div>\n </Card>\n );\n }\n\n if (error) {\n return (\n <Card className={className}>\n <div className=\"p-6 text-center text-sm text-red-600\">{error.message}</div>\n </Card>\n );\n }\n\n if (devices.length === 0) {\n return (\n <Card className={className}>\n <div className=\"p-6 text-center text-sm text-gray-500\">{localization.NO_DEVICES}</div>\n </Card>\n );\n }\n\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n {devices.map((device) => (\n <div\n key={device.id}\n className=\"flex items-start justify-between gap-4 rounded border p-4\"\n >\n <div className=\"flex items-start gap-3\">\n <span className=\"text-2xl\">\n {renderDeviceIcon\n ? renderDeviceIcon(device)\n : (DEFAULT_DEVICE_ICONS[device.deviceType] ?? \"\\u{1F4BB}\")}\n </span>\n <div>\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium\">{device.name}</span>\n {device.isCurrent && (\n <span className=\"rounded bg-blue-100 px-2 py-0.5 text-xs text-blue-700\">\n {localization.CURRENT_DEVICE}\n </span>\n )}\n </div>\n <p className=\"text-sm text-gray-500\">\n {device.browser} &middot; {device.os}\n </p>\n {(device.lastCity || device.lastCountry) && (\n <p className=\"text-sm text-gray-500\">\n {[device.lastCity, device.lastCountry].filter(Boolean).join(\", \")}\n </p>\n )}\n <p className=\"text-xs text-gray-400\">\n {localization.LAST_USED} {device.lastUsedAt} &middot; {localization.IP_LABEL}{\" \"}\n {device.lastIp}\n </p>\n </div>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {showTrustToggle && (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleTrustToggle(device)}\n >\n {device.isTrusted ? localization.UNTRUST_DEVICE : localization.TRUST_DEVICE}\n </Button>\n )}\n {showRemoveAction && (\n <Button\n type=\"button\"\n variant=\"destructive\"\n size=\"sm\"\n disabled={device.isCurrent}\n onClick={() => handleRemove(device)}\n >\n {localization.REMOVE}\n </Button>\n )}\n </div>\n </div>\n ))}\n </div>\n </Card>\n );\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { useSession } from \"../../hooks/use-session\";\nimport type { LoadingBoundaryProps } from \"../../types/components\";\n\nexport function LoadingBoundary({\n children,\n spinner = <div>Loading...</div>,\n delay = 0,\n className,\n}: LoadingBoundaryProps) {\n const { isLoading } = useSession();\n const [showSpinner, setShowSpinner] = useState(delay === 0 && isLoading);\n\n useEffect(() => {\n if (!isLoading) {\n setShowSpinner(false);\n return;\n }\n\n if (delay === 0) {\n setShowSpinner(true);\n return;\n }\n\n const timer = setTimeout(() => {\n setShowSpinner(true);\n }, delay);\n\n return () => clearTimeout(timer);\n }, [isLoading, delay]);\n\n if (isLoading && showSpinner) {\n return className ? <div className={className}>{spinner}</div> : <>{spinner}</>;\n }\n\n if (isLoading) {\n return null;\n }\n\n return <>{children}</>;\n}\n","export type RiskLevel = \"low\" | \"medium\" | \"high\";\n\nexport function getRiskLevel(score: number): RiskLevel {\n if (score < 30) return \"low\";\n if (score < 60) return \"medium\";\n return \"high\";\n}\n\nexport const RISK_COLORS: Record<RiskLevel, string> = {\n low: \"text-green-600 bg-green-50\",\n medium: \"text-yellow-600 bg-yellow-50\",\n high: \"text-red-600 bg-red-50\",\n};\n","\"use client\";\n\nimport type { LoginEvent } from \"@atzentis/auth-sdk\";\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { useCallback, useEffect } from \"react\";\nimport { RISK_COLORS, getRiskLevel } from \"../../helpers/risk-utils\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport { useLoginActivity } from \"../../hooks/use-login-activity\";\nimport type { LoginActivityFeedProps } from \"../../types/components\";\n\nexport function LoginActivityFeed({\n limit = 20,\n showRiskBadge = false,\n showReportActions = false,\n filterByStatus,\n onSuspiciousReported,\n className,\n}: LoginActivityFeedProps) {\n const {\n events,\n hasMore,\n isLoading,\n error,\n refresh,\n loadMore,\n filter,\n markRecognized,\n reportSuspicious,\n } = useLoginActivity({ limit });\n const { localization } = useAuthLocalization();\n\n useEffect(() => {\n if (filterByStatus) {\n filter({ status: filterByStatus, limit });\n }\n refresh();\n }, [refresh, filter, filterByStatus, limit]);\n\n const handleMarkRecognized = useCallback(\n async (event: LoginEvent) => {\n await markRecognized(event.id);\n },\n [markRecognized],\n );\n\n const handleReportSuspicious = useCallback(\n async (event: LoginEvent) => {\n await reportSuspicious(event.id);\n onSuspiciousReported?.(event);\n },\n [reportSuspicious, onSuspiciousReported],\n );\n\n if (isLoading && events.length === 0) {\n return (\n <Card className={className}>\n <div className=\"p-6 text-center text-sm text-gray-500\">{localization.LOADING_ACTIVITY}</div>\n </Card>\n );\n }\n\n if (error) {\n return (\n <Card className={className}>\n <div className=\"p-6 text-center text-sm text-red-600\">{error.message}</div>\n </Card>\n );\n }\n\n if (events.length === 0) {\n return (\n <Card className={className}>\n <div className=\"p-6 text-center text-sm text-gray-500\">{localization.NO_ACTIVITY}</div>\n </Card>\n );\n }\n\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n {events.map((event) => {\n const riskLevel = getRiskLevel(event.riskScore);\n return (\n <div\n key={event.id}\n className=\"flex items-start justify-between gap-4 rounded border p-4\"\n >\n <div>\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium\">{event.deviceName}</span>\n <span className=\"rounded bg-gray-100 px-2 py-0.5 text-xs text-gray-600\">\n {event.status}\n </span>\n {showRiskBadge && (\n <span className={`rounded px-2 py-0.5 text-xs ${RISK_COLORS[riskLevel]}`}>\n {riskLevel}\n </span>\n )}\n </div>\n <p className=\"text-sm text-gray-500\">\n {event.method} &middot; {event.ip}\n </p>\n {(event.city || event.country) && (\n <p className=\"text-sm text-gray-500\">\n {[event.city, event.country].filter(Boolean).join(\", \")}\n </p>\n )}\n <p className=\"text-xs text-gray-400\">{event.createdAt}</p>\n </div>\n\n {showReportActions && (\n <div className=\"flex items-center gap-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleMarkRecognized(event)}\n >\n {localization.MARK_RECOGNIZED}\n </Button>\n <Button\n type=\"button\"\n variant=\"destructive\"\n size=\"sm\"\n onClick={() => handleReportSuspicious(event)}\n >\n {localization.REPORT_SUSPICIOUS}\n </Button>\n </div>\n )}\n </div>\n );\n })}\n\n {hasMore && (\n <div className=\"text-center\">\n <Button type=\"button\" variant=\"outline\" disabled={isLoading} onClick={loadMore}>\n {isLoading ? localization.LOADING : localization.LOAD_MORE}\n </Button>\n </div>\n )}\n </div>\n </Card>\n );\n}\n","\"use client\";\n\nimport {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@atzentis/ui-shadcn\";\nimport { useEffect } from \"react\";\nimport { getInitials } from \"../../helpers/initials\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport { useOrganizations } from \"../../hooks/use-organizations\";\nimport type { OrganizationMenuProps } from \"../../types/components\";\n\nexport function OrganizationMenu({\n showCreateNew = false,\n currentOrgId,\n onSwitch,\n onCreateNew,\n className,\n}: OrganizationMenuProps) {\n const { organizations, isLoading, refresh } = useOrganizations();\n const { localization } = useAuthLocalization();\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n const currentOrg = organizations.find((o) => o.id === currentOrgId);\n\n return (\n <div className={className}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" disabled={isLoading}>\n {currentOrg ? (\n <span className=\"flex items-center gap-2\">\n {currentOrg.logo ? (\n <img src={currentOrg.logo} alt=\"\" className=\"h-5 w-5 rounded\" />\n ) : (\n <span className=\"flex h-5 w-5 items-center justify-center rounded bg-gray-200 text-xs\">\n {getInitials(currentOrg.name)}\n </span>\n )}\n {currentOrg.name}\n </span>\n ) : (\n localization.SELECT_ORGANIZATION\n )}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {organizations.map((org) => (\n <DropdownMenuItem key={org.id} onClick={() => onSwitch?.(org)}>\n <div className=\"flex items-center gap-2\">\n {org.logo ? (\n <img src={org.logo} alt=\"\" className=\"h-5 w-5 rounded\" />\n ) : (\n <span className=\"flex h-5 w-5 items-center justify-center rounded bg-gray-200 text-xs\">\n {getInitials(org.name)}\n </span>\n )}\n <span>{org.name}</span>\n {org.id === currentOrgId && <span className=\"ml-auto\">{\"\\u2713\"}</span>}\n </div>\n </DropdownMenuItem>\n ))}\n\n {showCreateNew && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={onCreateNew}>\n {localization.CREATE_ORGANIZATION}\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n","\"use client\";\n\nimport {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@atzentis/ui-shadcn\";\nimport { useCallback } from \"react\";\nimport { getInitials } from \"../../helpers/initials\";\nimport { useAuth } from \"../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport { useSession } from \"../../hooks/use-session\";\nimport type { UserMenuProps } from \"../../types/components\";\n\nexport function UserMenu({ showOrganization = false, menuItems, className }: UserMenuProps) {\n const { user } = useSession();\n const { logout } = useAuth();\n const { localization } = useAuthLocalization();\n\n const handleSignOut = useCallback(async () => {\n await logout();\n }, [logout]);\n\n if (!user) return null;\n\n return (\n <div className={className}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\">\n <span className=\"flex items-center gap-2\">\n {user.avatar ? (\n <img src={user.avatar} alt=\"\" className=\"h-8 w-8 rounded-full\" />\n ) : (\n <span className=\"flex h-8 w-8 items-center justify-center rounded-full bg-gray-200 text-xs font-medium\">\n {getInitials(user.name)}\n </span>\n )}\n <span className=\"text-sm font-medium\">{user.name}</span>\n </span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuLabel>\n <div>\n <p className=\"text-sm\">{user.email}</p>\n {showOrganization && (\n <p className=\"text-xs text-gray-500\">{localization.ORGANIZATION}</p>\n )}\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n\n {menuItems?.map((item) => (\n <DropdownMenuItem key={item.label} onClick={item.onClick}>\n {item.label}\n </DropdownMenuItem>\n ))}\n\n {menuItems && menuItems.length > 0 && <DropdownMenuSeparator />}\n\n <DropdownMenuItem onClick={handleSignOut}>{localization.SIGN_OUT}</DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n"]}