+
+ {
+ setInput(e.target.value);
+ if (props.errorMessage) {
+ setError(props.errorMessage(e.target.value));
+ } else {
+ setError(undefined);
+ }
+ }}
+ onKeyDown={(e) => {
+ if (e.key === "Enter") {
+ handleSelect();
+ }
+ }}
+ />
+
+
+ {showError && error && (
+ <>
+
+
+ {error}
+
+ >
+ )}
+
+ {!(showError && error) &&
+ !input &&
+ props.emptyErrorMessage &&
+ showError && (
+ <>
+
+
+ {props.emptyErrorMessage}
+
+ >
+ )}
+
+
+
+
+ );
+}
diff --git a/packages/thirdweb/src/react/wallets/embedded/embeddedWalletConfig.tsx b/packages/thirdweb/src/react/wallets/embedded/embeddedWalletConfig.tsx
new file mode 100644
index 00000000000..2d7be9f6da2
--- /dev/null
+++ b/packages/thirdweb/src/react/wallets/embedded/embeddedWalletConfig.tsx
@@ -0,0 +1,180 @@
+import {
+ embeddedWalletMetadata,
+ embeddedWallet,
+} from "../../../wallets/embedded/core/wallet/index.js";
+import type {
+ ConnectUIProps,
+ SelectUIProps,
+ WalletConfig,
+} from "../../types/wallets.js";
+import { useScreenContext } from "../../ui/ConnectWallet/Modal/screen.js";
+import { WalletEntryButton } from "../../ui/ConnectWallet/WalletSelector.js";
+import { reservedScreens } from "../../ui/ConnectWallet/constants.js";
+import {
+ EmbeddedWalletFormUI,
+ EmbeddedWalletFormUIScreen,
+} from "./EmbeddedWalletFormUI.js";
+import { EmbeddedWalletOTPLoginUI } from "./EmbeddedWalletOTPLoginUI.js";
+import { EmbeddedWalletSocialLogin } from "./EmbeddedWalletSocialLogin.js";
+import type {
+ EmbeddedWalletAuth,
+ EmbeddedWalletSelectUIState,
+} from "./types.js";
+
+export type EmbeddedWalletConfigOptions = {
+ recommended?: boolean;
+ auth: {
+ options: EmbeddedWalletAuth[];
+ };
+};
+
+/**
+ * Integrate Embedded wallet into your app.
+ * @param options - Options for configuring the Embedded wallet.
+ * @example
+ * ```tsx
+ *