> ## Documentation Index
> Fetch the complete documentation index at: https://docs-staging-fix-update-domain-refs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Login

> Describes all the hooks and methods available to customize the Universal Login `login` screen.

The `login` screen collects the user's identifier and password. Depending on your tenant, this identifier can be an email, phone number, or username. It also supports authentication via federated identity providers and Google One Tap.

<Frame>
  <img style={{maxHeight:"400px"}} src="https://mintcdn.com/docs-staging-fix-update-domain-refs/xHoBXQHi8cKBCqX0/docs/images/cdy7uua7fh8z/5be9XfnulShqeXa4MXfXky/f3a5dded3539d4d683a525dfb6ad8042/Screenshot_2025-01-28_at_10.49.07.png?fit=max&auto=format&n=xHoBXQHi8cKBCqX0&q=85&s=3bae486534fb9d2cd5d42f2c6e29984f" alt="ACUL Login" width="396" height="681" data-path="docs/images/cdy7uua7fh8z/5be9XfnulShqeXa4MXfXky/f3a5dded3539d4d683a525dfb6ad8042/Screenshot_2025-01-28_at_10.49.07.png" />
</Frame>

## Import

Each screen has its own set of hooks and methods. The SDK supports **partial import** and **root import** for each screen.

* Using partial import allows you to include only the code you need for your specific use case.
* Using root import allows you to load all screens from a single bundle, which is useful when you want a unified build to handle all possible screens.

```jsx Import Example theme={null}
// root import
import { useLogin } from '@auth0/auth0-acul-react';

// partial import
import {
  useLogin,
  // Context hooks
  useUser,
  useTenant,
  useBranding,
  useClient,
  useOrganization,
  usePrompt,
  useScreen,
  useTransaction,
  useUntrustedData,
  // Common hooks
  useCurrentScreen,
  useAuth0Themes,
  useErrors,
  // Utility hooks
  useLoginIdentifiers,
  useChangeLanguage,
  // Methods  
  login,
  federatedLogin,
  googleOneTap,
  pickCountryCode,
} from "@auth0/auth0-acul-react/login";

function LoginForm() {
  const { login, federatedLogin } = useLogin();
  return (
    <button onClick={() => login({ username: "user@example.com", password: "secret" })}>
      Sign In
    </button>
  );
}
```

## Context Hooks

Screen-scoped hooks that provide read-only access to Auth0 context data on the `login` screen. Import them from `@auth0/auth0-acul-react/login`.

<ParamField body="useBranding" type={<span>() =&gt; <a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/BrandingMembers">BrandingMembers</a></span>}>
  This hook provides branding configurations, such as logo, colors, and theme settings displayed on the `login` screen.

  ```jsx Example theme={null}
  import { useBranding } from '@auth0/auth0-acul-react/login';
  function CustomTheme() {
    const branding = useBranding();
  }
  ```
</ParamField>

<ParamField body="useClient" type={<span>() =&gt; <a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/ClientMembers">ClientMembers</a></span>}>
  This hook provides client-related configurations, such as `id`, `name`, and `logoUrl`, for the `login` screen.

  ```jsx Example theme={null}
  import { useClient } from '@auth0/auth0-acul-react/login';
  function AppInfo() {
    const client = useClient();
  }
  ```
</ParamField>

<ParamField body="useOrganization" type={<span>() =&gt; <a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/OrganizationMembers">OrganizationMembers</a></span>}>
  This hook provides information about the user's Organization if the login is Organization scoped. Returns `null` when no Organization context is present.

  ```jsx Example theme={null}
  import { useOrganization } from '@auth0/auth0-acul-react/login';
  function OrgSelector() {
    const organization = useOrganization();
    if (!organization) {
      return <p>No organization context</p>;
    }
  }
  ```
</ParamField>

<ParamField body="usePrompt" type={<span>() =&gt; <a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/PromptMembers">PromptMembers</a></span>}>
  This hook contains data about the current prompt in the authentication flow.

  ```jsx Example theme={null}
  import { usePrompt } from '@auth0/auth0-acul-react/login';
  function FlowInfo() {
    const prompt = usePrompt();
  }
  ```
</ParamField>

<ParamField body="useScreen" type={<span>() =&gt; <a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/ScreenMembersOnLogin">ScreenMembersOnLogin</a></span>}>
  This hook contains details specific to the `login` screen, including its configuration and context.

  ```jsx Example theme={null}
  import { useScreen } from '@auth0/auth0-acul-react/login';
  function ScreenDebug() {
    const screen = useScreen();
  }
  ```
</ParamField>

<ParamField body="useTenant" type={<span>() =&gt; <a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/TenantMembers">TenantMembers</a></span>}>
  This hook contains data related to the tenant, such as `id` and associated metadata.

  ```jsx Example theme={null}
  import { useTenant } from '@auth0/auth0-acul-react/login';
  function TenantInfo() {
    const tenant = useTenant();
  }
  ```
</ParamField>

<ParamField body="useTransaction" type={<span>() =&gt; <a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/TransactionMembersOnLogin">TransactionMembersOnLogin</a></span>}>
  This hook provides transaction-specific data for the `login` screen, such as active connections, available login methods, and current flow state.

  ```jsx Example theme={null}
  import { useTransaction } from '@auth0/auth0-acul-react/login';
  function TransactionInfo() {
    const transaction = useTransaction();
  }
  ```
</ParamField>

<ParamField body="useUntrustedData" type={<span>() =&gt; <a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/UntrustedDataMembers">UntrustedDataMembers</a></span>}>
  This hook handles untrusted data passed to the screen, such as a prefilled username from URL parameters.

  ```jsx Example theme={null}
  import { useUntrustedData } from '@auth0/auth0-acul-react/login';
  function PrefilledForm() {
    const untrustedData = useUntrustedData();
  }
  ```
</ParamField>

<ParamField body="useUser" type={<span>() =&gt; <a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/UserMembers">UserMembers</a></span>}>
  This hook provides details of the active user, including `username`, `email`, and available authentication methods.

  ```jsx Example theme={null}
  import { useUser } from '@auth0/auth0-acul-react/login';
  function UserProfile() {
    const user = useUser();
  }
  ```
</ParamField>

<ParamField body="useLogin" type={<a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/LoginMembers">LoginMembers</a>}>
  This hook returns all methods and context available on the `login` screen.
</ParamField>

## Methods

<ParamField body="googleOneTap" type="Promise<void>">
  This method authenticates the user using a Google One Tap credential, enabling one-click sign-in without redirecting to a separate login page.

  ```jsx Example theme={null}
  import { useLogin } from '@auth0/auth0-acul-react/login';

  function GoogleOneTapHandler({ credential }) {
    const { googleOneTap } = useLogin();
    return googleOneTap({ one_tap_credential: credential });
  }
  ```

  **Method Parameters**

  <Expandable title="Parameters">
    <ParamField body="one_tap_credential" type="string" required>
      The Google One Tap credential token returned by the Google Identity Services prompt.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="federatedLogin" type="Promise<void>">
  This method redirects the user to the [Social](/docs/authenticate/identity-providers/social-identity-providers) or [Enterprise Identity Provider](/docs/authenticate/identity-providers/enterprise-identity-providers) (IdP) for authentication.

  ```jsx Example theme={null}
  import { useLogin } from '@auth0/auth0-acul-react/login';

  function SocialButton() {
    const { federatedLogin } = useLogin();
    return (
      <button onClick={() => federatedLogin({ connection: 'google-oauth2' })}>
        Sign in with Google
      </button>
    );
  }
  ```

  **Method Parameters**

  <Expandable title="Parameters">
    <ParamField body="connection" type="string" required>
      The Social or Enterprise Identity Provider connection name.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="login" type="Promise<void>">
  This method submits the user's credentials to complete authentication on the `login` screen.

  ```jsx Example theme={null}
  import { useLogin } from '@auth0/auth0-acul-react/login';

  function LoginForm() {
    const { login } = useLogin();
    return (
      <button onClick={() => login({ username: 'user@example.com', password: 'secret' })}>
        Sign In
      </button>
    );
  }
  ```

  **Method Parameters**

  <Expandable title="Parameters">
    <ParamField body="options">
      [LoginPayloadOptions](/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/LoginPayloadOptions).
    </ParamField>

    <ParamField body="username" type="string" required>
      The username or email to authenticate with.
    </ParamField>

    <ParamField body="password" type="string" required>
      The password for authentication.
    </ParamField>

    <ParamField body="captcha?" type="string">
      Captcha value required when bot detection is enabled on the tenant.
    </ParamField>

    <ParamField body="[`key`: `string`]" type="&#x22;string&#x22; | &#x22;number&#x22; | &#x22;boolean&#x22; | &#x22;undefined&#x22;">
      Additional custom fields prefixed with `ulp-` (for example, `'ulp-custom-field'`).
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="pickCountryCode" type="Promise<void>">
  This method navigates to the country code picker for phone-based login flows.

  ```jsx Example theme={null}
  import { useLogin } from '@auth0/auth0-acul-react/login';

  function PhoneLogin() {
    const { pickCountryCode } = useLogin();
    return (
      <button onClick={() => pickCountryCode()}>
        Select Country Code
      </button>
    );
  }
  ```
</ParamField>

## Common/Utility Hooks

<ParamField body={<a href="/docs/libraries/acul/react-sdk/API-Reference/Hooks/useAuth0Themes">useAuth0Themes</a>} type="Hooks">
  This hook gets the current theme options with flattened configuration from branding context.
</ParamField>

<ParamField body={<a href="/docs/libraries/acul/react-sdk/API-Reference/Hooks/useChangeLanguage">useChangeLanguage</a>} type="Hooks">
  This hook returns a function for changing the display language on the current ACUL screen.
</ParamField>

<ParamField body={<a href="/docs/libraries/acul/react-sdk/API-Reference/Hooks/useCurrentScreen">useCurrentScreen</a>} type="Hooks">
  This hook gets the current screen context and state.
</ParamField>

<ParamField body={<a href="/docs/libraries/acul/react-sdk/API-Reference/Hooks/useErrors">useErrors</a>} type="Hooks">
  This hook reads and manages server, client, and developer errors on the screen.
</ParamField>

<ParamField body={<a href="/docs/libraries/acul/react-sdk/API-Reference/Hooks/useLoginIdentifiers">useLoginIdentifiers</a>} type="Hooks">
  This hook returns a list of active identifier types (`email`, `phone`, `username`) in the current flow.
</ParamField>
