+ {authTypes.map((authType, index) => {
+ switch (authType.type) {
+ case "email":
+ return
;
+ case "passkey":
+ return
;
+ case "social":
+ return
;
+ case "external_wallets":
+ return
;
+ default:
+ throw new Error("Not implemented");
+ }
+ })}
+
+ );
+};
diff --git a/packages/react/src/components/auth/sections/EmailAuth.tsx b/packages/react/src/components/auth/sections/EmailAuth.tsx
new file mode 100644
index 0000000000..f5d40ee3f8
--- /dev/null
+++ b/packages/react/src/components/auth/sections/EmailAuth.tsx
@@ -0,0 +1,119 @@
+import { useForm } from "@tanstack/react-form";
+import { zodValidator } from "@tanstack/zod-form-adapter";
+import { memo } from "react";
+import { z } from "zod";
+import { ChevronRight } from "../../../icons/chevron.js";
+import { MailIcon } from "../../../icons/mail.js";
+import { ls } from "../../strings.js";
+import { Button } from "../../button.js";
+import { Input } from "../../input.js";
+import { useAuthContext } from "../context.js";
+import type { AuthType } from "../types.js";
+import { useSendEmailOtp } from "../../../hooks/useSendEmailOtp.js";
+
+type EmailAuthProps = Extract