{
  "markdown": "<img src=\"https://raw.githubusercontent.com/firebase/firebaseui-web/refs/heads/%40invertase/v7-development/.github/readme-banner.png\" alt=\"Banner\" />\n\n# FirebaseUI for Web\n\nFirebase UI for Web brings out-of-the-box components for Firebase for your favourite frameworks:\n\n- Support for [React](https://react.dev/), [Shadcn](https://ui.shadcn.com/) and [Angular](https://angular.dev/).\n- Composable authentication components; Email/Password Sign Up/In, Forgot Password, Email Link, Phone Auth, OAuth, Multi-Factor and more.\n- Configure the behavior of internal logic and UI via behaviors.\n- Framework agnostic core package; bring your own UI.\n- Built-in localization via translations.\n\n## Migration\n\nFirebase UI v7 is a complete rewrite to support modern languages and frameworks. You can find information about the previous version, v6, in the [`v6-archive` branch](https://github.com/firebase/firebaseui-web/tree/v6-archive). \n\nIf you are looking to migrate, please check the [MIGRATION.md](MIGRATION.md) guide.\n\n## Table of contents\n\n- [Getting Started](#getting-started)\n- [Styling](#styling)\n- [Behaviors](#behaviors)\n- [Translations](#translations)\n- [Reference API](#reference)\n- [Bring your own UI](#bring-your-own-ui)\n\n## Getting Started\n\nTo get started, make sure that the [`firebase`](https://www.npmjs.com/package/firebase) package is installed in your project:\n\n```bash\nnpm install firebase\n```\n\nOnce installed, setup Firebase in your project ensuring you have configured your Firebase instance via `initializeApp`:\n\n```ts\nimport { initializeApp } from 'firebase/app';\n\nconst app = initializeApp({ ... });\n```\n\nNext, follow the framework specific installation steps, for either React, Shadcn or Angular:\n\n<details>\n  <summary>React</summary>\n\n  Install the `@firebase-oss/ui-react` package:\n\n  ```bash\n  npm install @firebase-oss/ui-react\n  ```\n\n  Alongside your Firebase configuration, import the `initializeUI` function and pass your configured Firebase App instance:\n\n  ```ts\n  import { initializeApp } from 'firebase/app';\n  import { initializeUI } from '@firebase-oss/ui-core';\n\n  const app = initializeApp({ ... });\n\n  const ui = initializeUI({\n    app,\n  });\n  ```\n\n  Once configured, provide the `ui` instance to your application by wrapping it within the `FirebaseUIProvider` component:\n\n  ```tsx\n  import { FirebaseUIProvider } from '@firebase-oss/ui-react';\n\n  function App() {\n    return (\n      <FirebaseUIProvider ui={ui}>\n        ...\n      </FirebaseUIProvider>\n    );\n  }\n  ```\n\n  Ensure your application includes the bundled styles for Firebase UI (see [styling](#styling) for additional info).\n\n  ```css\n  @import \"@firebase-oss/ui-styles/dist.min.css\";\n  /* Or, if you use tailwind */\n  @import \"@firebase-oss/ui-styles/tailwind\";\n  ```\n\n  That's it 🎉 You can now import components and start building:\n\n  ```tsx\n  import { SignInAuthScreen } from '@firebase-oss/ui-react';\n\n  export function MySignInPage() {\n    return (\n      <>\n        <header>Welcome</header>\n        <SignInAuthScreen onSignIn={() => { ... }} />\n      </>\n    )\n  }\n  ```\n\n  View the [reference API](#reference) for a full list of components.\n</details>\n\n<details>\n  <summary>Shadcn</summary>\n\n  Firstly, ensure you have [installed and setup](https://ui.shadcn.com/docs/installation) Shadcn in your project.\n\n  Once configured, add the `@firebase` registry to your `components.json` file:\n\n  ```json\n  {\n    ...\n    \"registries\": {\n      \"@firebase\": \"https://firebaseopensource.com/r/{name}.json\"\n    }\n  }\n  ```\n\n  Next, add a Firebase UI component from the registry, e.g.\n\n  ```bash\n  npx shadcn@latest add @firebase/sign-in-auth-screen\n  ```\n\n  This will automatically install any required dependencies.\n\n  Alongside your Firebase configuration, import the `initializeUI` function and pass your configured Firebase App instance:\n\n  ```ts\n  import { initializeApp } from 'firebase/app';\n  import { initializeUI } from '@firebase-oss/ui-core';\n\n  const app = initializeApp({ ... });\n\n  const ui = initializeUI({\n    app,\n  });\n  ```\n\n  Once configured, provide the `ui` instance to your application by wrapping it within the `FirebaseUIProvider` component:\n\n  ```tsx\n  import { FirebaseUIProvider } from '@firebase-oss/ui-react';\n\n  function App() {\n    return (\n      <FirebaseUIProvider ui={ui}>\n        ...\n      </FirebaseUIProvider>\n    );\n  }\n  ```\n\n  That's it 🎉 You can now import components and start building:\n\n  ```tsx\n  import { SignInAuthScreen } from '@/components/sign-in-auth-screen';\n\n  export function MySignInPage() {\n    return (\n      <>\n        <header>Welcome</header>\n        <SignInAuthScreen onSignIn={() => { ... }} />\n      </>\n    )\n  }\n  ```\n\n  View the [reference API](#reference) for a full list of components.\n</details>\n\n<details>\n  <summary>Angular</summary>\n\n  The Angular project requires that [AngularFire](https://github.com/angular/angularfire) is setup and configured before using Firebase UI.\n\n  Once you have provided the Firebase App instance to your application using `provideFirebaseApp`, install the Firebase UI for Angular package:\n\n  ```bash\n  npm install @angular/fire @firebase-oss/ui-angular @firebase-oss/ui-core @firebase-oss/ui-styles\n  ```\n\n  Alongside your existing providers, add the `provideFirebaseUI` provider, returning a new Firebase UI instance via `initializeUI`:\n\n  ```ts\n  import { provideFirebaseApp, initializeApp } from '@angular/fire/app';\n  import { initializeUI } from '@firebase-oss/ui-core';\n\n  export const appConfig: ApplicationConfig = {\n    providers: [\n      provideFirebaseApp(() => initializeApp({ ... })),\n      provideFirebaseUI((apps) => initializeUI({ app: apps[0] })),\n    ]\n  };\n  ```\n\n  Ensure your application includes the bundled styles for Firebase UI (see [styling](#styling) for additional info).\n\n  ```css\n  @import \"@firebase-oss/ui-styles/dist.min.css\";\n  /* Or for tailwind users */\n  @import \"@firebase-oss/ui-styles/tailwind\";\n  ```\n\n  That's it 🎉 You can now import components and start building:\n\n  ```tsx\n  import { Component } from \"@angular/core\";\n  import { SignInAuthScreenComponent } from \"@firebase-oss/ui-angular\";\n\n  @Component({\n    selector: \"sign-in-route\",\n    standalone: true,\n    imports: [CommonModule, SignInAuthScreenComponent],\n    template: `\n      <header>Sign In</header>\n      <fui-sign-in-auth-screen (signIn)=\"onSignIn($event)\" />\n    `,\n  })\n  export class SignInRoute {\n    onSignIn(user: User) {\n      // ...\n    }\n  }\n  ```\n\n  View the [reference API](#reference) for a full list of components.\n</details>\n\n## Styling\n\nFirebase UI provides out-of-the-box styling via CSS, and provides means to customize the UI to align with your existing application or guidelines.\n\n> Note: if you are using Shadcn this section does not apply. All styles are inherited from your Shadcn configuration.\n\nEnsure your application imports the Firebase UI CSS file. This can be handled a number of ways depending on your setup:\n\n### CSS Bundling \n\nIf your bundler supports importing CSS files from node_modules:\n\nVia JS:\n\n```ts\nimport '@firebase-oss/ui-styles/dist.min.css';\n```\n\nVia CSS: \n\n```css\n@import \"@firebase-oss/ui-styles/dist.min.css\";\n```\n\n### Tailwind\n\nIf you are using [Tailwind CSS](https://tailwindcss.com/), add the Tailwind specific CSS file:\n\n```css\n@import \"tailwindcss\";\n@import \"@firebase-oss/ui-styles/tailwind\";\n```\n\n### Via CDN\n\nIf none of these options apply, include the CSS file via a CDN:\n\n```html\n<head>\n  <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/@firebase-oss/ui-styles/dist/dist.min.css\">\n</head>\n```\n\n### Theming\n\nOut of the box, Firebase UI provides a neutral light and dark theme with some opinionated styling (colors, border radii etc). These are all controlled via CSS variables, allowing you to update these at will to match any existing UI design guidelines. To modify the variables, override the following CSS variables:\n\n```css\n:root {\n  /* The primary color is used for the button and link colors */\n  --fui-primary: ...;\n  /* The primary hover color is used for the button and link colors when hovered */\n  --fui-primary-hover: ...;\n  /* The primary surface color is used for the button text color */\n  --fui-primary-surface: ...;\n  /* The text color used for body text */\n  --fui-text: ...;\n  /* The muted text color used for body text, such as subtitles */\n  --fui-text-muted: ...;\n  /* The background color of the cards */\n  --fui-background: ...;\n  /* The border color used for none input fields */\n  --fui-border: ...;\n  /* The input color used for input fields */\n  --fui-input: ...;\n  /* The error color used for error messages */\n  --fui-error: ...;\n  /* The radius used for the input fields */\n  --fui-radius: ...;\n  /* The radius used for the cards */\n  --fui-radius-card: ...;\n}\n```\n\n## Behaviors\n\nOut of the box, Firebase UI applies sensible default behaviors for how the UI should handle specific scenarios which may occur during user flows. You can however customize this behavior by modifying your `initializeUI` to provide an array of \"behaviors\", for example:\n\n```ts\nimport { requireDisplayName } from '@firebase-oss/ui-core';\n\nconst ui = initializeUI({\n  app,\n  behaviors: [\n    requireDisplayName(),\n  ],\n});\n```\n\n#### `autoAnonymousLogin`\n\nThe `autoAnonymousLogin` behavior will automatically sign users in via [anonymous authentication](https://firebase.google.com/docs/auth/web/anonymous-auth) when initialized. Whilst authenticating, the Firebase UI state will be set to \"loading\", allowing you to block the loading of the application if you wish.\n\n```ts\nimport { autoAnonymousLogin } from '@firebase-oss/ui-core';\n\nconst ui = initializeUI({\n  app,\n  behaviors: [autoAnonymousLogin()],\n});\n```\n\n#### `autoUpgradeAnonymousUsers`\n\nThe `autoUpgradeAnonymousUsers` behavior will automatically upgrade a user who is anonymously authenticated with your application upon a successful sign in (including OAuth). You can optionally provide callbacks to handle successful upgrades and failed upgrade attempts. During async callbacks, the UI will stay in a pending state.\n\nWhen an upgrade succeeds, the anonymous user's UID is preserved and the new credential is linked to that user. When an upgrade fails (for example, because an OAuth credential is already linked to another account), `onUpgradeFailure` receives the original error and the anonymous user's `oldUserId` so your app can decide whether to migrate anonymous user data into the existing account. Return `\"handled\"` from `onUpgradeFailure` to suppress the default FirebaseUI error. Return `undefined`, omit the callback, or throw from the callback to preserve the default error behavior.\n\n`onUpgradeFailure` also fires for provider-linking failures that only surface after a redirect round trip (i.e. when combined with [`providerRedirectStrategy`](#providerredirectstrategy)), such as `auth/credential-already-in-use` or `auth/email-already-in-use` returned from `getRedirectResult()`. In that case `provider` and `credential` may be `undefined` if FirebaseUI can't recover them from the redirect error.\n\n```ts\nimport { autoUpgradeAnonymousUsers } from '@firebase-oss/ui-core';\n\nconst ui = initializeUI({\n  app,\n  behaviors: [autoUpgradeAnonymousUsers({\n    async onUpgrade(ui, oldUserId, credential) {\n      // Some account upgrade logic.\n    },\n    async onUpgradeFailure({ ui, oldUserId, error, credential, provider }) {\n      // Optional merge-conflict handling.\n      // Return \"handled\" if your app handled the failure and FirebaseUI\n      // should not show the default error.\n    },\n  })],\n});\n```\n\n#### `recaptchaVerification`\n\nThe `recaptchaVerification` behavior allows you to customize how the [reCAPTCHA provider](https://firebase.google.com/docs/app-check/web/recaptcha-provider) is rendered during some UI flows (such as Phone Authentication).\n\nBy default, the reCAPTCHA UI will be rendered in \"invisible\" mode. To override this:\n\n```ts\nimport { recaptchaVerification } from '@firebase-oss/ui-core';\n\nconst ui = initializeUI({\n  app,\n  behaviors: [recaptchaVerification({\n    size: \"compact\", // \"normal\" | \"invisible\" | \"compact\"\n    theme: \"dark\", // \"light\" | \"dark\"\n  })],\n});\n```\n\n#### `providerRedirectStrategy`\n\nThe `providerRedirectStrategy` behavior redirects any external provider authentication (e.g. OAuth) via a redirect flow.\n\n```ts\nimport { providerRedirectStrategy } from '@firebase-oss/ui-core';\n\nconst ui = initializeUI({\n  app,\n  behaviors: [providerRedirectStrategy()],\n});\n```\n\n#### `providerPopupStrategy`\n\nThe `providerPopupStrategy` behavior causes any external provider authentication (e.g. OAuth) to be handled via a popup window.  This is the default strategy.\n\n```ts\nimport { providerPopupStrategy } from '@firebase-oss/ui-core';\n\nconst ui = initializeUI({\n  app,\n  behaviors: [providerPopupStrategy()],\n});\n```\n\n#### `legacyFetchSignInWithEmail`\n\nThe `legacyFetchSignInWithEmail` behavior augments OAuth `auth/account-exists-with-different-credential` flows by calling `fetchSignInMethodsForEmail(auth, email)` and storing the returned methods on the UI instance. In the packaged React and Angular screen components, this recovery state can be rendered as a modal on `SignInAuthScreen` and `OAuthScreen` via the `showLegacySignInRecovery` prop/input, which defaults to `false`. Registering the behavior alone does not show any UI; opt in explicitly (`showLegacySignInRecovery={true}` / `[showLegacySignInRecovery]=\"true\"`) on the screens where you want the built-in recovery modal.\n\nThe original pending credential is still preserved, so after the user signs in with the correct method, Firebase UI can continue the existing linking flow.\n\n> **⚠️ Security note:** This behavior has important limitations and security trade-offs. The `fetchSignInMethodsForEmail()` API only works for Firebase projects that have [Email Enumeration Protection disabled](https://cloud.google.com/identity-platform/docs/admin/email-enumeration-protection). Projects created after September 15, 2023 have this protection enabled by default; on those projects, `fetchSignInMethodsForEmail()` returns an empty array and this behavior becomes a no-op. Additionally, when enabled, this behavior will call `fetchSignInMethodsForEmail()` not only for OAuth conflicts (`auth/account-exists-with-different-credential`), but also for plain password sign-in failures (`auth/wrong-password`, `auth/invalid-credential`, `auth/invalid-login-credentials`). This means enabling this behavior causes the app to actively call an enumeration-capable API and surface which sign-in methods exist for an email address on every failed password attempt—directly opposing the enumeration protection that Firebase's generic error codes are otherwise designed to provide. Enable this behavior only if you explicitly understand and accept this UX-vs-security trade-off.\n\nDuring this recovery flow, a pending OAuth credential is temporarily stored in **plaintext** in the browser's `sessionStorage` so it can be reapplied after the user signs in with the correct method. It is consumed and removed immediately once sign-in succeeds. This is a deliberate, same-origin-scoped, pre-existing trade-off, not an oversight.\n\n```ts\nimport { legacyFetchSignInWithEmail } from '@firebase-oss/ui-core';\n\nconst ui = initializeUI({\n  app,\n  behaviors: [legacyFetchSignInWithEmail()],\n});\n```\n\nIf you want full control over the UI, hide the built-in recovery component on the screen and read the recovery state directly with `useLegacySignInRecovery()`:\n\n```tsx\nimport { GitHubSignInButton, GoogleSignInButton, SignInAuthScreen, useLegacySignInRecovery } from '@firebase-oss/ui-react';\n\nfunction WrongProviderRecovery() {\n  const { recovery, clearRecovery } = useLegacySignInRecovery();\n\n  if (!recovery) {\n    return null;\n  }\n\n  return (\n    <div>\n      <p>You have previously signed in with a different method for {recovery.email}.</p>\n      {recovery.signInMethods.includes('google.com') && (\n        <GoogleSignInButton onSignIn={clearRecovery} />\n      )}\n      {recovery.signInMethods.includes('github.com') && (\n        <GitHubSignInButton onSignIn={clearRecovery} />\n      )}\n    </div>\n  );\n}\n\nexport function CustomSignInScreen() {\n  return (\n    <SignInAuthScreen showLegacySignInRecovery={false}>\n      <WrongProviderRecovery />\n    </SignInAuthScreen>\n  );\n}\n```\n\nAngular apps can hide the built-in recovery UI with `showLegacySignInRecovery=\"false\"` and read the same state with `injectLegacySignInRecovery()` / `injectClearLegacySignInRecovery()`.\n\n#### `oneTapSignIn`\n\nThe `oneTapSignIn` behavior triggers the [Google One Tap](https://developers.google.com/identity/gsi/web/guides/features) experience to render.\n\nNote: This behavior requires that Google Sign In is enabled as an authentication method on the Firebase Console. Once enabled, you can obtain the required `clientId` via the \"Web SDK configuration\" settings on the Console.\n\nThe One Tap popup can be additionally configured via this behavior:\n\n```ts\nimport { oneTapSignIn } from '@firebase-oss/ui-core';\n\nconst ui = initializeUI({\n  app,\n  behaviors: [oneTapSignIn({\n    clientId: \"...\", // required - from Firebase Console under Google provider\n    autoSelect: false, // optional\n    cancelOnTapOutside: false, // optional\n  })],\n});\n```\n\nSee https://developers.google.com/identity/gsi/web/reference/js-reference for a full list of configuration options.\n\n#### `requireDisplayName`\n\nThe `requireDisplayName` behavior configures Firebase UI to display a required \"Display Name\" input box in the UI, which is applied to the users account during sign up flows.\n\nIf you are not using pre-built components, the `createUserWithEmailAndPassword` function from Firebase UI will throw if a display name is not provided.\n\n```ts\nimport { requireDisplayName } from '@firebase-oss/ui-core';\n\nconst ui = initializeUI({\n  app,\n  behaviors: [requireDisplayName()],\n});\n```\n\n#### `countryCodes`\n\nThe `countryCodes` behavior controls how country codes are consumed throughout your application, for example during Phone Authentication flows when selecting a phone numbers country code.\n\n```ts\nimport { countryCodes } from '@firebase-oss/ui-core';\n\nconst ui = initializeUI({\n  app,\n  behaviors: [countryCodes({\n    allowedCountries: ['GB', 'US', 'FR'], // only allow Great Britain, USA and France\n    defaultCountry: 'GB', // GB is default\n  })],\n});\n```\n\n## Translations\n\n> Note: Firebase UI currently only provides English (en-US) translations out of the box.\n\nFirebase UI provides a mechanism for overriding any localized strings in the UI components. To define your own custom locale, use the `registerLocale` function from the `@firebase-oss/ui-translations` package:\n\n```ts\nimport { registerLocale } from '@firebase-oss/ui-translations';\n\nconst frFr = registerLocale('fr-FR', {\n  labels: {\n    signIn: \"Sign In, Matey\",\n  },\n}); \n```\n\nTo use this locale, provide it to the `initializeUI` configuration:\n\n```ts\nconst ui = initializeUI({\n  app,\n  locale: frFr,\n});\n```\n\n### Dynamic translations\n\nTo dynamically change your locale during the applications lifecycle (e.g. a language drop down), you can call the `setLocale` method on the UI instance:\n\n```ts\nconst ui = initializeUI({\n  app,\n  locale: frFr,\n});\n\n...\n\n<button onClick={() => ui.setLocale(frFr)}>\n  French 🇫🇷\n</button>\n```\n\n### Fallback\n\nBy default, any missing translations will fallback to English if not specified. You can pass a 3rd \"fallback\" argument locale to the `registerLocale` function.\n\n## Reference\n\n<details>\n  <summary>@firebase-oss/ui-core</summary>\n\n  **`initializeUI`**\n\n  Initalizes a new `FirebaseUIStore` instance.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | config   | FirebaseUIOptions | The configuration for Firebase UI  |\n  | name     | string?           | An optional name for the instance. |\n\n  Returns `FirebaseUIStore`.\n\n  **`signInWithEmailAndPassword`**\n\n  Signs the user in with an email and password.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n  | email    | string            | The users email address.  |\n  | password | string            | The users password. |\n\n  Returns `Promise<UserCredential>`.\n\n  **`createUserWithEmailAndPassword`**\n\n  Creates a new user account with an email and password.\n\n  | Argument   |        Type       | Description                        |\n  |------------|:-----------------:|------------------------------------|\n  | ui         | FirebaseUI        | The Firebase UI instance.  |\n  | email      | string            | The users email address.  |\n  | password   | string            | The users password. |\n  | displayName| string?           | Optional display name for the user. |\n\n  Returns `Promise<UserCredential>`.\n\n  **`verifyPhoneNumber`**\n\n  Verifies a phone number and sends a verification code.\n\n  | Argument      |        Type       | Description                        |\n  |---------------|:-----------------:|------------------------------------|\n  | ui            | FirebaseUI        | The Firebase UI instance.  |\n  | phoneNumber   | string            | The phone number to verify.  |\n  | appVerifier   | ApplicationVerifier | The reCAPTCHA verifier. |\n  | mfaUser       | MultiFactorUser?  | Optional MFA user for enrollment flow. |\n  | mfaHint       | MultiFactorInfo?  | Optional MFA hint for assertion flow. |\n\n  Returns `Promise<string>` (verification ID).\n\n  **`confirmPhoneNumber`**\n\n  Confirms a phone number verification with the verification code.\n\n  | Argument       |        Type       | Description                        |\n  |----------------|:-----------------:|------------------------------------|\n  | ui             | FirebaseUI        | The Firebase UI instance.  |\n  | verificationId | string            | The verification ID from verifyPhoneNumber. |\n  | verificationCode | string         | The verification code sent to the phone. |\n\n  Returns `Promise<UserCredential>`.\n\n  **`sendPasswordResetEmail`**\n\n  Sends a password reset email to the user.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n  | email    | string            | The users email address.  |\n\n  Returns `Promise<void>`.\n\n  **`sendSignInLinkToEmail`**\n\n  Sends a sign-in link to the user's email address.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n  | email    | string            | The users email address.  |\n\n  Returns `Promise<void>`.\n\n  **`signInWithEmailLink`**\n\n  Signs in a user with an email link.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n  | email    | string            | The users email address.  |\n  | link     | string            | The email link from the sign-in email. |\n\n  Returns `Promise<UserCredential>`.\n\n  **`signInWithCredential`**\n\n  Signs in a user with an authentication credential.\n\n  | Argument  |        Type       | Description                        |\n  |-----------|:-----------------:|------------------------------------|\n  | ui        | FirebaseUI        | The Firebase UI instance.  |\n  | credential| AuthCredential    | The authentication credential. |\n\n  Returns `Promise<UserCredential>`.\n\n  **`signInWithCustomToken`**\n\n  Signs in a user with a custom token.\n\n  | Argument   |        Type       | Description                        |\n  |------------|:-----------------:|------------------------------------|\n  | ui         | FirebaseUI        | The Firebase UI instance.  |\n  | customToken| string            | The custom token. |\n\n  Returns `Promise<UserCredential>`.\n\n  **`signInAnonymously`**\n\n  Signs in a user anonymously.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n\n  Returns `Promise<UserCredential>`.\n\n  **`signInWithProvider`**\n\n  Signs in a user with an OAuth provider (e.g., Google, Facebook, etc.).\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n  | provider | AuthProvider      | The OAuth provider. |\n\n  Returns `Promise<UserCredential | never>`.\n\n  **`completeEmailLinkSignIn`**\n\n  Completes the email link sign-in flow by checking if the current URL is a valid email link.\n\n  | Argument  |        Type       | Description                        |\n  |-----------|:-----------------:|------------------------------------|\n  | ui        | FirebaseUI        | The Firebase UI instance.  |\n  | currentUrl| string            | The current URL to check. |\n\n  Returns `Promise<UserCredential | null>`.\n\n  **`generateTotpQrCode`**\n\n  Generates a QR code data URL for TOTP (Time-based One-Time Password) enrollment.\n\n  | Argument   |        Type       | Description                        |\n  |------------|:-----------------:|------------------------------------|\n  | ui         | FirebaseUI        | The Firebase UI instance.  |\n  | secret     | TotpSecret        | The TOTP secret. |\n  | accountName| string?           | Optional account name for the QR code. |\n  | issuer     | string?           | Optional issuer name for the QR code. |\n\n  Returns `string` (data URL of the QR code).\n\n  **`signInWithMultiFactorAssertion`**\n\n  Signs in a user with a multi-factor authentication assertion.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n  | assertion| MultiFactorAssertion | The MFA assertion. |\n\n  Returns `Promise<UserCredential>`.\n\n  **`enrollWithMultiFactorAssertion`**\n\n  Enrolls a multi-factor authentication method for the current user.\n\n  | Argument   |        Type       | Description                        |\n  |------------|:-----------------:|------------------------------------|\n  | ui         | FirebaseUI        | The Firebase UI instance.  |\n  | assertion  | MultiFactorAssertion | The MFA assertion. |\n  | displayName| string?           | Optional display name for the MFA method. Throws if not provided and the `requireDisplayName` behavior is enabled. |\n\n  Returns `Promise<void>`.\n\n  **`generateTotpSecret`**\n\n  Generates a TOTP secret for multi-factor authentication enrollment.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n\n  Returns `Promise<TotpSecret>`.\n\n  **`autoAnonymousLogin`**\n\n  Automatically signs in users anonymously when the UI initializes.\n\n  Returns `Behavior<\"autoAnonymousLogin\">`.\n\n  **`autoUpgradeAnonymousUsers`**\n\n  Automatically upgrades anonymous users to permanent accounts when they sign in with a credential or provider.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | options  | AutoUpgradeAnonymousUsersOptions? | Optional configuration. |\n  | options.onUpgrade | function? | Optional callback when upgrade occurs. |\n  | options.onUpgradeFailure | function? | Optional callback when upgrade linking fails, including redirect-completed failures. |\n\n  Returns `Behavior<\"autoUpgradeAnonymousCredential\" | \"autoUpgradeAnonymousProvider\" | \"autoUpgradeAnonymousUserRedirectHandler\">`.\n\n  **`recaptchaVerification`**\n\n  Configures reCAPTCHA verification for phone authentication.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | options  | RecaptchaVerificationOptions? | Optional reCAPTCHA configuration. |\n\n  Returns `Behavior<\"recaptchaVerification\">`.\n\n  **`providerRedirectStrategy`**\n\n  Configures OAuth providers to use redirect flow (full page redirect).\n\n  Returns `Behavior<\"providerSignInStrategy\" | \"providerLinkStrategy\">`.\n\n  **`providerPopupStrategy`**\n\n  Configures OAuth providers to use popup flow (popup window).\n\n  Returns `Behavior<\"providerSignInStrategy\" | \"providerLinkStrategy\">`.\n\n  **`oneTapSignIn`**\n\n  Enables Google One Tap sign-in.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | options  | OneTapSignInOptions | Configuration for One Tap sign-in. |\n\n  Returns `Behavior<\"oneTapSignIn\">`.\n\n  **`requireDisplayName`**\n\n  Requires users to provide a display name during registration.\n\n  Returns `Behavior<\"requireDisplayName\">`.\n\n  **`countryCodes`**\n\n  Configures country code handling for phone number input.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | options  | CountryCodesOptions? | Optional country codes configuration. |\n\n  Returns `Behavior<\"countryCodes\">`.\n\n  **`hasBehavior`**\n\n  Checks if a behavior is enabled on a Firebase UI instance.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n  | key      | string            | The behavior key to check. |\n\n  Returns `boolean`.\n\n  **`getBehavior`**\n\n  Gets a behavior handler from a Firebase UI instance.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n  | key      | string            | The behavior key to retrieve. |\n\n  Returns the behavior handler function.\n\n  **`defaultBehaviors`**\n\n  The default behaviors that are automatically included in a Firebase UI instance. Includes `recaptchaVerification`, `providerRedirectStrategy`, and `countryCodes`.\n\n  Type: `Behavior<\"recaptchaVerification\">`.\n\n  **`countryData`**\n\n  An array of country data objects containing name, dial code, country code, and emoji for all supported countries.\n\n  Type: `readonly CountryData[]`.\n\n  **`formatPhoneNumber`**\n\n  Formats a phone number according to the specified country data.\n\n  | Argument   |        Type       | Description                        |\n  |------------|:-----------------:|------------------------------------|\n  | phoneNumber| string            | The phone number to format.  |\n  | countryData| CountryData       | The country data to use for formatting. |\n\n  Returns `string` (formatted phone number in E164 format).\n\n  **`FirebaseUIError`**\n\n  A custom error class that extends FirebaseError with localized error messages.\n\n  **`handleFirebaseError`**\n\n  Handles Firebase errors and converts them to FirebaseUIError with localized messages. Also handles special cases like account linking and multi-factor authentication.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n  | error    | unknown           | The error to handle. |\n\n  Throws `FirebaseUIError`.\n\n  **`getTranslation`**\n\n  Gets a translated string for a given category and key.\n\n  | Argument     |        Type       | Description                        |\n  |--------------|:-----------------:|------------------------------------|\n  | ui           | FirebaseUI        | The Firebase UI instance.  |\n  | category     | TranslationCategory | The translation category. |\n  | key          | TranslationKey    | The translation key. |\n  | replacements | Record<string, string>? | Optional replacements for placeholders. |\n\n  Returns `string`.\n\n  **`createSignInAuthFormSchema`**\n\n  Creates a Zod schema for email/password sign-in form validation.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n\n  Returns `ZodObject` with `email` and `password` fields.\n\n  **`createSignUpAuthFormSchema`**\n\n  Creates a Zod schema for email/password sign-up form validation.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n\n  Returns `ZodObject` with `email`, `password`, and optionally `displayName` fields.\n\n  **`createForgotPasswordAuthFormSchema`**\n\n  Creates a Zod schema for forgot password form validation.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n\n  Returns `ZodObject` with `email` field.\n\n  **`createEmailLinkAuthFormSchema`**\n\n  Creates a Zod schema for email link authentication form validation.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n\n  Returns `ZodObject` with `email` field.\n\n  **`createPhoneAuthNumberFormSchema`**\n\n  Creates a Zod schema for phone number input form validation.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n\n  Returns `ZodObject` with `phoneNumber` field.\n\n  **`createPhoneAuthVerifyFormSchema`**\n\n  Creates a Zod schema for phone verification code form validation.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n\n  Returns `ZodObject` with `verificationId` and `verificationCode` fields.\n\n  **`createMultiFactorPhoneAuthNumberFormSchema`**\n\n  Creates a Zod schema for multi-factor phone authentication number form validation.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n\n  Returns `ZodObject` with `phoneNumber` and `displayName` fields.\n\n  **`createMultiFactorPhoneAuthAssertionFormSchema`**\n\n  Creates a Zod schema for multi-factor phone authentication assertion form validation.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n\n  Returns `ZodObject` with `phoneNumber` field.\n\n  **`createMultiFactorPhoneAuthVerifyFormSchema`**\n\n  Creates a Zod schema for multi-factor phone authentication verification form validation.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n\n  Returns `ZodObject` with `verificationId` and `verificationCode` fields.\n\n  **`createMultiFactorTotpAuthNumberFormSchema`**\n\n  Creates a Zod schema for multi-factor TOTP authentication form validation.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n\n  Returns `ZodObject` with `displayName` field.\n\n  **`createMultiFactorTotpAuthVerifyFormSchema`**\n\n  Creates a Zod schema for multi-factor TOTP verification code form validation.\n\n  | Argument |        Type       | Description                        |\n  |----------|:-----------------:|------------------------------------|\n  | ui       | FirebaseUI        | The Firebase UI instance.  |\n\n  Returns `ZodObject` with `verificationCode` field.\n\n</details>\n\n<details>\n  <summary>@firebase-oss/ui-react</summary>\n\n  **`FirebaseUIProvider`**\n\n  Provider component that wraps your application and provides Firebase UI context.\n\n  | Prop     | Type | Description |\n  |----------|:----:|-------------|\n  | ui | `FirebaseUIStore` | The UI store (from `initializeUI`) |\n  | policies | `{ termsOfServiceUrl: PolicyURL; privacyPolicyUrl: PolicyURL; onNavigate?: (url: PolicyURL) => void; }?` | Optional policies configuration. If provided, UI components will automatically render the policies. |\n  | children | `React.ReactNode` | Child components |\n\n  **`SignInAuthForm`**\n\n  Form component for email/password sign-in.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | onSignIn | `(credential: UserCredential) => void?` | Callback when sign-in succeeds |\n  | onForgotPasswordClick | `() => void?` | Callback when forgot password link is clicked |\n  | onSignUpClick | `() => void?` | Callback when sign-up link is clicked |\n\n  **`SignUpAuthForm`**\n\n  Form component for email/password sign-up.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | onSignUp | `(credential: UserCredential) => void?` | Callback when sign-up succeeds |\n  | onSignInClick | `() => void?` | Callback when sign-in link is clicked |\n\n  **`ForgotPasswordAuthForm`**\n\n  Form component for password reset.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | onSendPasswordResetEmail | `() => void?` | Callback when password reset email is sent |\n  | onBackClick | `() => void?` | Callback when back button is clicked |\n\n  **`EmailLinkAuthForm`**\n\n  Form component for email link authentication.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | onSendSignInLinkToEmail | `() => void?` | Callback when sign-in link email is sent |\n\n  **`PhoneAuthForm`**\n\n  Form component for phone number authentication.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | onVerifyPhoneNumber | `() => void?` | Callback when phone number verification is initiated |\n  | onVerifyCode | `(credential: UserCredential) => void?` | Callback when verification code is verified |\n\n  **`MultiFactorAuthAssertionForm`**\n\n  Form component for multi-factor authentication assertion during sign-in.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | onAssert | `(credential: UserCredential) => void?` | Callback when MFA assertion succeeds |\n\n  **`MultiFactorAuthEnrollmentForm`**\n\n  Form component for multi-factor authentication enrollment.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | onEnroll | `() => void?` | Callback when MFA enrollment succeeds |\n\n  **`SmsMultiFactorAssertionForm`**\n\n  Form component for SMS-based multi-factor authentication assertion.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | onAssert | `(credential: UserCredential) => void?` | Callback when SMS MFA assertion succeeds |\n\n  **`SmsMultiFactorEnrollmentForm`**\n\n  Form component for SMS-based multi-factor authentication enrollment.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | onEnroll | `() => void?` | Callback when SMS MFA enrollment succeeds |\n\n  **`TotpMultiFactorAssertionForm`**\n\n  Form component for TOTP-based multi-factor authentication assertion.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | onAssert | `(credential: UserCredential) => void?` | Callback when TOTP MFA assertion succeeds |\n\n  **`TotpMultiFactorEnrollmentForm`**\n\n  Form component for TOTP-based multi-factor authentication enrollment.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | onEnroll | `() => void?` | Callback when TOTP MFA enrollment succeeds |\n\n  **`SignInAuthScreen`**\n\n  Screen component for email/password sign-in. Extends `SignInAuthFormProps` and accepts `children`.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | onSignIn | `(user: User) => void?` | Callback when sign-in succeeds |\n  | onForgotPasswordClick | `() => void?` | Callback when forgot password link is clicked |\n  | onSignUpClick | `() => void?` | Callback when sign-up link is clicked |\n| showLegacySignInRecovery | `boolean?` | Whether to show the built-in legacy sign-in recovery UI (defaults to `false`) |\n\n  **`SignUpAuthScreen`**\n\n  Screen component for email/password sign-up. Extends `SignUpAuthFormProps` and accepts `children`.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | onSignUp | `(user: User) => void?` | Callback when sign-up succeeds |\n  | onSignInClick | `() => void?` | Callback when sign-in link is clicked |\n\n  **`ForgotPasswordAuthScreen`**\n\n  Screen component for password reset. Extends `ForgotPasswordAuthFormProps`.\n\n  **`EmailLinkAuthScreen`**\n\n  Screen component for email link authentication. Extends `EmailLinkAuthFormProps` and accepts `children`.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | onSendSignInLinkToEmail | `() => void?` | Callback when sign-in link email is sent |\n  | onSignIn | `(user: User) => void?` | Callback when sign-in succeeds |\n\n  **`PhoneAuthScreen`**\n\n  Screen component for phone number authentication. Extends `PhoneAuthFormProps` and accepts `children`.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | onVerifyPhoneNumber | `() => void?` | Callback when phone number verification is initiated |\n  | onVerifyCode | `(user: User) => void?` | Callback when verification code is verified |\n\n  **`MultiFactorAuthAssertionScreen`**\n\n  Screen component for multi-factor authentication assertion. Extends `MultiFactorAuthAssertionFormProps`.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | onAssert | `(user: User) => void?` | Callback when MFA assertion succeeds |\n\n  **`MultiFactorAuthEnrollmentScreen`**\n\n  Screen component for multi-factor authentication enrollment. Extends `MultiFactorAuthEnrollmentFormProps`.\n\n  **`OAuthScreen`**\n\n  Screen component for OAuth provider sign-in.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | onSignIn | `(user: User) => void?` | Callback when sign-in succeeds |\n  | children | `React.ReactNode?` | Child components |\n| showLegacySignInRecovery | `boolean?` | Whether to show the built-in legacy sign-in recovery UI (defaults to `false`) |\n\n  **`OAuthButton`**\n\n  Generic OAuth button component.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | provider | `AuthProvider` | Firebase Auth provider instance |\n  | themed | `boolean \\| string?` | Whether to apply themed styling |\n  | onSignIn | `(credential: UserCredential) => void?` | Callback when sign-in succeeds |\n  | children | `React.ReactNode?` | Button content |\n\n  **`GoogleSignInButton`**\n\n  Google OAuth sign-in button component.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | themed | `boolean \\| string?` | Whether to apply themed styling |\n  | onSignIn | `(credential: UserCredential) => void?` | Callback when sign-in succeeds |\n\n  **`AppleSignInButton`**\n\n  Apple OAuth sign-in button component.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | themed | `boolean \\| string?` | Whether to apply themed styling |\n  | onSignIn | `(credential: UserCredential) => void?` | Callback when sign-in succeeds |\n\n  **`FacebookSignInButton`**\n\n  Facebook OAuth sign-in button component.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | themed | `boolean \\| string?` | Whether to apply themed styling |\n  | onSignIn | `(credential: UserCredential) => void?` | Callback when sign-in succeeds |\n\n  **`GitHubSignInButton`**\n\n  GitHub OAuth sign-in button component.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | themed | `boolean \\| string?` | Whether to apply themed styling |\n  | onSignIn | `(credential: UserCredential) => void?` | Callback when sign-in succeeds |\n\n  **`MicrosoftSignInButton`**\n\n  Microsoft OAuth sign-in button component.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | themed | `boolean \\| string?` | Whether to apply themed styling |\n  | onSignIn | `(credential: UserCredential) => void?` | Callback when sign-in succeeds |\n\n  **`TwitterSignInButton`**\n\n  Twitter OAuth sign-in button component.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | themed | `boolean \\| string?` | Whether to apply themed styling |\n  | onSignIn | `(credential: UserCredential) => void?` | Callback when sign-in succeeds |\n\n  **`Button`**\n\n  Button component with variant support.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | variant | `\"primary\" \\| \"secondary\" \\| \"outline\"?` | Button style variant |\n  | asChild | `boolean?` | Render as child component using Slot |\n  | ...props | `ComponentProps<\"button\">` | Standard button HTML attributes |\n\n  **`LegacySignInRecovery`**\n\n  Default component for displaying suggested previous sign-in methods from `legacyFetchSignInWithEmail`.\n\n  **`Card`**\n\n  Card container component.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | children | `React.ReactNode?` | Card content |\n  | ...props | `ComponentProps<\"div\">` | Standard div HTML attributes |\n\n  **`CardHeader`**\n\n  Card header component. Accepts `children` and standard div props.\n\n  **`CardTitle`**\n\n  Card title component. Accepts `children` and standard h2 props.\n\n  **`CardSubtitle`**\n\n  Card subtitle component. Accepts `children` and standard p props.\n\n  **`CardContent`**\n\n  Card content component. Accepts `children` and standard div props.\n\n  **`CountrySelector`**\n\n  Country selector component for phone number input.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | ...props | `ComponentProps<\"div\">` | Standard div HTML attributes |\n\n  **`Divider`**\n\n  Divider component.\n\n  | Prop | Type | Description |\n  |------|:----:|-------------|\n  | children | `React.ReactNode?` | Divider content |\n  | ...props | `ComponentProps<\"div\">` | Standard div HTML attributes |\n\n  **`Policies`**\n\n  Component that renders terms of service and privacy policy links. Automatically rendered when policies are provided to `FirebaseUIProvider`.\n\n  **`RedirectError`**\n\n  Component that displays redirect errors from Firebase UI authentication flow.\n\n  **`useUI`**\n\n  Gets the Firebase UI configuration from context.\n\n  Returns `FirebaseUI`.\n\n  **`useRedirectError`**\n\n  Gets the redirect error from the UI store.\n\n  Returns `string | undefined`.\n\n  **`useLegacySignInRecovery`**\n\n  Gets the legacy sign-in recovery state populated by `legacyFetchSignInWithEmail`.\n\n  Returns `{ recovery: LegacySignInRecovery | undefined; clearRecovery: () => void }`.\n\n  **`useSignInAuthFormSchema`**\n\n  Creates a Zod schema for sign-in form validation.\n\n  Returns `ZodObject` with `email` and `password` fields.\n\n  **`useSignUpAuthFormSchema`**\n\n  Creates a Zod schema for sign-up form validation.\n\n  Returns `ZodObject` with `email`, `password`, and optionally `displayName` fields.\n\n  **`useForgotPasswordAuthFormSchema`**\n\n  Creates a Zod schema for forgot password form validation.\n\n  Returns `ZodObject` with `email` field.\n\n  **`useEmailLinkAuthFormSchema`**\n\n  Creates a Zod schema for email link authentication form validation.\n\n  Returns `ZodObject` with `email` field.\n\n  **`usePhoneAuthNumberFormSchema`**\n\n  Creates a Zod schema for phone number input form validation.\n\n  Returns `ZodObject` with `phoneNumber` field.\n\n  **`usePhoneAuthVerifyFormSchema`**\n\n  Creates a Zod schema for phone verification code form validation.\n\n  Returns `ZodObject` with `verificationId` and `verificationCode` fields.\n\n  **`useMultiFactorPhoneAuthNumberFormSchema`**\n\n  Creates a Zod schema for multi-factor phone authentication number form validation.\n\n  Returns `ZodObject` with `phoneNumber` and `displayName` fields.\n\n  **`useMultiFactorPhoneAuthVerifyFormSchema`**\n\n  Creates a Zod schema for multi-factor phone authentication verification form validation.\n\n  Returns `ZodObject` with `verificationId` and `verificationCode` fields.\n\n  **`useMultiFactorTotpAuthNumberFormSchema`**\n\n  Creates a Zod schema for multi-factor TOTP authentication form validation.\n\n  Returns `ZodObject` with `displayName` field.\n\n  **`useMultiFactorTotpAuthVerifyFormSchema`**\n\n  Creates a Zod schema for multi-factor TOTP verification code form validation.\n\n  Returns `ZodObject` with `verificationCode` field.\n\n  **`useRecaptchaVerifier`**\n\n  Creates and manages a reCAPTCHA verifier instance.\n\n  | Argument | Type | Description |\n  |----------|:----:|-------------|\n  | ref | `React.RefObject<HTMLDivElement \\| null>` | Reference to the DOM element where reCAPTCHA should be rendered |\n\n  Returns `RecaptchaVerifier \\| null`.\n\n  **`useSignInAuthForm`**\n\n  Hook for managing sign-in form state and validation.\n\n  Returns form state and handlers.\n\n  **`useSignInAuthFormAction`**\n\n  Hook for sign-in form submission action.\n\n  Returns async action handler.\n\n  **`useSignUpAuthForm`**\n\n  Hook for managing sign-up form state and validation.\n\n  Returns form state and handlers.\n\n  **`useSignUpAuthFormAction`**\n\n  Hook for sign-up form submission action.\n\n  Returns async action handler.\n\n  **`useRequireDisplayName`**\n\n  Hook to check if display name is required for sign-up.\n\n  Returns `boolean`.\n\n  **`useForgotPasswordAuthForm`**\n\n  Hook for managing forgot password form state and validation.\n\n  Returns form state and handlers.\n\n  **`useForgotPasswordAuthFormAction`**\n\n  Hook for forgot password form submission action.\n\n  Returns async action handler.\n\n  **`useEmailLinkAuthForm`**\n\n  Hook for managing email link auth form state and validation.\n\n  Returns form state and handlers.\n\n  **`useEmailLinkAuthFormAction`**\n\n  Hook for email link auth form submission action.\n\n  Returns async action handler.\n\n  **`useEmailLinkAuthFormCompleteSignIn`**\n\n  Hook to complete email link authentication.\n\n  Returns async action handler.\n\n  **`usePhoneNumberForm`**\n\n  Hook for managing phone number form state and validation.\n\n  Returns form state and handlers.\n\n  **`usePhoneNumberFormAction`**\n\n  Hook for phone number form submission action.\n\n  Returns async action handler.\n\n  **`useVerifyPhoneNumberForm`**\n\n  Hook for managing phone verification form state and validation.\n\n  Returns form state and handlers.\n\n  **`useVerifyPhoneNumberFormAction`**\n\n  Hook for phone verification form submission action.\n\n  Returns async action handler.\n\n  **`useMultiFactorAssertionCleanup`**\n\n  Hook for cleaning up multi-factor assertion state.\n\n  **`useSmsMultiFactorAssertionPhoneFormAction`**\n\n  Hook for SMS MFA assertion phone form submission action.\n\n  Returns async action handler.\n\n  **`useSmsMultiFactorAssertionVerifyFormAction`**\n\n  Hook for SMS MFA assertion verification form submission action.\n\n  Returns async action handler.\n\n  **`useSmsMultiFactorEnrollmentPhoneNumberForm`**\n\n  Hook for managing SMS MFA enrollment phone number form state.\n\n  Returns form state and handlers.\n\n  **`useSmsMultiFactorEnrollmentPhoneAuthFormAction`**\n\n  Hook for SMS MFA enrollment phone auth form submission action.\n\n  Returns async action handler.\n\n  **`useMultiFactorEnrollmentVerifyPhoneNumberForm`**\n\n  Hook for managing MFA enrollment phone verification form state.\n\n  Returns form state and handlers.\n\n  **`useMultiFactorEnrollmentVerifyPhoneNumberFormAction`**\n\n  Hook for MFA enrollment phone verification form submission action.\n\n  Returns async action handler.\n\n  **`useTotpMultiFactorAssertionForm`**\n\n  Hook for managing TOTP MFA assertion form state.\n\n  Returns form state and handlers.\n\n  **`useTotpMultiFactorAssertionFormAction`**\n\n  Hook for TOTP MFA assertion form submission action.\n\n  Returns async action handler.\n\n  **`useTotpMultiFactorSecretGenerationForm`**\n\n  Hook for managing TOTP secret generation form state.\n\n  Returns form state and handlers.\n\n  **`useTotpMultiFactorSecretGenerationFormAction`**\n\n  Hook for TOTP secret generation form submission action.\n\n  Returns async action handler.\n\n  **`useMultiFactorEnrollmentVerifyTotpForm`**\n\n  Hook for managing MFA enrollment TOTP verification form state.\n\n  Returns form state and handlers.\n\n  **`useMultiFactorEnrollmentVerifyTotpFormAction`**\n\n  Hook for MFA enrollment TOTP verification form submission action.\n\n  Returns async action handler.\n\n  **`useSignInWithProvider`**\n\n  Hook for OAuth provider sign-in.\n\n  | Argument | Type | Description |\n  |----------|:----:|-------------|\n  | provider | `AuthProvider` | Firebase Auth provider instance |\n\n  Returns async action handler.\n\n  **`useCountries`**\n\n  Hook to get list of countries for country selector.\n\n  Returns array of country data.\n\n  **`useDefaultCountry`**\n\n  Hook to get default country for country selector.\n\n  Returns country data or `undefined`.\n\n  **`PolicyContext`**\n\n  React context for policy configuration.\n\n  **`PolicyProps`**\n\n  Type for policy configuration.\n\n  | Property | Type | Description |\n  |----------|:----:|-------------|\n  | termsOfServiceUrl | `PolicyURL` | URL to terms of service |\n  | privacyPolicyUrl | `PolicyURL` | URL to privacy policy |\n  | onNavigate | `(url: PolicyURL) => void?` | Optional navigation handler |\n\n  **`PolicyURL`**\n\n  Type alias: `string \\| URL`\n\n  **`FirebaseUIProviderProps`**\n\n  Type for `FirebaseUIProvider` component props.\n\n</details>\n\n<details>\n  <summary>Shadcn</summary>\n\n  The shadcn registry is available at: https://firebaseopensource.com/r/{name}.json\n\n  | Name     |       Path       | Description |\n  |----------|:----------------:|-------------|\n  | apple-sign-in-button | /r/apple-sign-in-button.json | A button component for Apple OAuth authentication. |\n  | country-selector | /r/country-selector.json | A country selector component for phone number input with country codes and flags. |\n  | email-link-auth-form | /r/email-link-auth-form.json | A form allowing users to sign in via email link. |\n  | email-link-auth-screen | /r/email-link-auth-screen.json | A screen allowing users to sign in via email link. |\n  | facebook-sign-in-button | /r/facebook-sign-in-button.json | A button component for Facebook OAuth authentication. |\n  | forgot-password-auth-form | /r/forgot-password-auth-form.json | A form allowing users to reset their password via email. |\n  | forgot-password-auth-screen | /r/forgot-password-auth-screen.json | A screen allowing users to reset their password via email. |\n  | github-sign-in-button | /r/github-sign-in-button.json | A button component for GitHub OAuth authentication. |\n  | google-sign-in-button | /r/google-sign-in-button.json | A button component for Google OAuth authentication. |\n  | microsoft-sign-in-button | /r/microsoft-sign-in-button.json | A button component for Microsoft OAuth authentication. |\n  | multi-factor-auth-assertion-form | /r/multi-factor-auth-assertion-form.json | A form allowing users to complete multi-factor authentication during sign-in with TOTP or SMS options. |\n  | multi-factor-auth-assertion-screen | /r/multi-factor-auth-assertion-screen.json | A screen allowing users to complete multi-factor authentication during sign-in with TOTP or SMS options. |\n  | multi-factor-auth-enrollment-form | /r/multi-factor-auth-enrollment-form.json | A form allowing users to select and configure multi-factor authentication methods. |\n  | multi-factor-auth-enrollment-screen | /r/multi-factor-auth-enrollment-screen.json | A screen allowing users to set up multi-factor authentication with TOTP or SMS options. |\n  | oauth-button | /r/oauth-button.json | A button component for OAuth authentication providers. |\n  | oauth-screen | /r/oauth-screen.json | A screen allowing users to sign in with OAuth providers. |\n  | phone-auth-form | /r/phone-auth-form.json | A form allowing users to authenticate using their phone number with SMS verification. |\n  | phone-auth-screen | /r/phone-auth-screen.json | A screen allowing users to authenticate using their phone number with SMS verification. |\n  | policies | /r/policies.json | A component allowing users to navigate to the terms of service and privacy policy. |\n  | redirect-error | /r/redirect-error.json | A component that displays redirect errors from Firebase UI authentication flow. |\n  | sign-in-auth-form | /r/sign-in-auth-form.json | A form allowing users to sign in with email and password. |\n  | sign-in-auth-screen | /r/sign-in-auth-screen.json | A screen allowing users to sign in with email and password. |\n  | sign-up-auth-form | /r/sign-up-auth-form.json | A form allowing users to sign up with email and password. |\n  | sign-up-auth-screen | /r/sign-up-auth-screen.json | A screen allowing users to sign up with email and password. |\n  | sms-multi-factor-assertion-form | /r/sms-multi-factor-assertion-form.json | A form allowing users to complete SMS-based multi-factor authentication during sign-in. |\n  | sms-multi-factor-enrollment-form | /r/sms-multi-factor-enrollment-form.json | A form allowing users to enroll SMS-based multi-factor authentication. |\n  | totp-multi-factor-assertion-form | /r/totp-multi-factor-assertion-form.json | A form allowing users to complete TOTP-based multi-factor authentication during sign-in. |\n  | totp-multi-factor-enrollment-form | /r/totp-multi-factor-enrollment-form.json | A form allowing users to enroll TOTP-based multi-factor authentication with QR code generation. |\n  | twitter-sign-in-button | /r/twitter-sign-in-button.json | A button component for Twitter OAuth authentication. |\n\n</details>\n\n<details>\n  <summary>@firebase-oss/ui-angular</summary>\n\n  **`provideFirebaseUI`**\n\n  Provider function that configures Firebase UI for your Angular application.\n\n  | Argument | Type | Description |\n  |----------|:----:|-------------|\n  | uiFactory | `(apps: FirebaseApps) => FirebaseUIStore` | Factory function that creates the UI store from Firebase apps |\n\n  Returns `EnvironmentProviders`.\n\n  **`provideFirebaseUIPolicies`**\n\n  Provider function that configures policies (terms of service and privacy policy) for Firebase UI.\n\n  | Argument | Type | Description |\n  |----------|:----:|-------------|\n  | factory | `() => PolicyConfig` | Factory function that returns policy configuration |\n\n  Returns `EnvironmentProviders`.\n\n  **`SignInAuthFormComponent`**\n\n  Selector: `fui-sign-in-auth-form`\n\n  Form component for email/password sign-in.\n\n  | Output | Type | Description |\n  |--------|:----:|-------------|\n  | signIn | `EventEmitter<UserCredential>` | Emitted when sign-in succeeds |\n  | forgotPassword | `EventEmitter<void>` | Emitted when forgot password link is clicked |\n  | signUp | `EventEmitter<void>` | Emitted when sign-up link is clicked |\n\n  **`SignUpAuthFormComponent`**\n\n  Selector: `fui-sign-up-auth-form`\n\n  Form component for email/password sign-up.\n\n  | Output | Type | Description |\n  |--------|:----:|-------------|\n  | signUp | `EventEmitter<UserCredential>` | Emitted when sign-up succeeds |\n  | signIn | `EventEmitter<void>` | Emitted when sign-in link is clicked |\n\n  **`ForgotPasswordAuthFormComponent`**\n\n  Selector: `fui-forgot-password-auth-form`\n\n  Form component for password reset.\n\n  | Output | Type | Description |\n  |--------|:----:|-------------|\n  | passwordSent | `EventEmitter<void>` | Emitted when password reset email is sent |\n  | backToSignIn | `EventEmitter<void>` | Emitted when back button is clicked |\n\n  **`EmailLinkAuthFormComponent`**\n\n  Selector: `fui-email-link-auth-form`",
  "bytes": 60000,
  "sha": "5cf4db147614a5826b14557418f8528620a77b521a337ee75f78fab730a4d170",
  "repo_slug": "firebase/firebaseui-web",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/okf_firebase_firebaseui_web_developer_docs_i_88bdb479/readme"
}