import { Button, Form, Input } from "@heroui/react" import { useMutation } from "@tanstack/react-query" import { createFileRoute, redirect } from "@tanstack/react-router" import { createServerFn, useServerFn } from "@tanstack/react-start" import { getSupabaseServerClient } from "@/integrations/supabase/supabase" export const signupFn = createServerFn({ method: "POST" }) .validator( (d: { email: string; password: string; redirectUrl?: string }) => d ) .handler(async ({ data }) => { const supabase = getSupabaseServerClient() const { error } = await supabase.auth.signUp({ email: data.email, password: data.password }) if (error) { return { error: true, message: error.message } } throw redirect({ href: data.redirectUrl || "/" }) }) export const Route = createFileRoute("/signup")({ component: SignupComp }) function SignupComp() { const signup = useServerFn(signupFn) const signupMutation = useMutation({ mutationKey: ["signup"], mutationFn: async (data: { email: string password: string redirectUrl?: string }) => { return signup({ data: { email: data.email, password: data.password, redirectUrl: data.redirectUrl } }) } }) return (

Signup

{ e.preventDefault() const formData = new FormData(e.currentTarget) const email = formData.get("email") as string const password = formData.get("password") as string signupMutation.mutate({ email, password }) }} >
) }