diff --git a/apps/web/app/(use-page-wrapper)/settings/teams/new/invite/email/page.tsx b/apps/web/app/(use-page-wrapper)/settings/teams/new/invite/email/page.tsx
deleted file mode 100644
index c23bf65896..0000000000
--- a/apps/web/app/(use-page-wrapper)/settings/teams/new/invite/email/page.tsx
+++ /dev/null
@@ -1,34 +0,0 @@
-import { _generateMetadata } from "app/_utils";
-import { cookies, headers } from "next/headers";
-import { redirect } from "next/navigation";
-
-import { getServerSession } from "@calcom/features/auth/lib/getServerSession";
-import { APP_NAME } from "@calcom/lib/constants";
-
-import { buildLegacyRequest } from "@lib/buildLegacyCtx";
-
-import { TeamInviteEmailView } from "~/settings/teams/new/invite/email/team-invite-email-view";
-
-export const generateMetadata = async () => {
- return await _generateMetadata(
- (t) => `${APP_NAME} - ${t("invite")}`,
- () => "",
- true,
- undefined,
- "/settings/teams/new/invite/email"
- );
-};
-
-const ServerPage = async () => {
- const session = await getServerSession({ req: buildLegacyRequest(await headers(), await cookies()) });
-
- if (!session?.user?.id) {
- return redirect("/auth/login");
- }
-
- const userEmail = session.user.email || "";
-
- return
diff --git a/apps/web/modules/onboarding/hooks/useCreateTeam.ts b/apps/web/modules/onboarding/hooks/useCreateTeam.ts
index 0debc8080e..a65971c254 100644
--- a/apps/web/modules/onboarding/hooks/useCreateTeam.ts
+++ b/apps/web/modules/onboarding/hooks/useCreateTeam.ts
@@ -9,12 +9,7 @@ import { trpc } from "@calcom/trpc/react";
import type { OnboardingState } from "../store/onboarding-store";
import { useOnboardingStore } from "../store/onboarding-store";
-type UseCreateTeamOptions = {
- redirectBasePath?: string;
-};
-
-export function useCreateTeam(options: UseCreateTeamOptions = {}) {
- const { redirectBasePath = "/onboarding/teams" } = options;
+export function useCreateTeam() {
const router = useRouter();
const [isSubmitting, setIsSubmitting] = useState(false);
const flags = useFlagMap();
@@ -33,7 +28,7 @@ export function useCreateTeam(options: UseCreateTeamOptions = {}) {
// Validate team details - if empty, redirect back to team details step
if (!teamDetails.name || !teamDetails.name.trim() || !teamDetails.slug || !teamDetails.slug.trim()) {
- router.push(`${redirectBasePath}/details`);
+ router.push("/onboarding/teams/details");
setIsSubmitting(false);
return;
}
@@ -56,7 +51,7 @@ export function useCreateTeam(options: UseCreateTeamOptions = {}) {
if (result.team) {
// Store the teamId and redirect to invite flow after team creation
setTeamId(result.team.id);
- router.push(`${redirectBasePath}/invite/email?teamId=${result.team.id}`);
+ router.push(`/onboarding/teams/invite?teamId=${result.team.id}`);
}
} catch (error) {
console.error("Failed to create team:", error);
diff --git a/apps/web/modules/settings/teams/new/create-new-team-view.tsx b/apps/web/modules/settings/teams/new/create-new-team-view.tsx
index d320d521fe..0b84fcf2a5 100644
--- a/apps/web/modules/settings/teams/new/create-new-team-view.tsx
+++ b/apps/web/modules/settings/teams/new/create-new-team-view.tsx
@@ -1,210 +1,58 @@
"use client";
import { useRouter } from "next/navigation";
-import posthog from "posthog-js";
-import React, { useEffect, useRef, useState, type FormEvent } from "react";
+import React from "react";
+import { z } from "zod";
-import { useLocale } from "@calcom/lib/hooks/useLocale";
-import slugify from "@calcom/lib/slugify";
-import { Avatar } from "@calcom/ui/components/avatar";
-import { Button } from "@calcom/ui/components/button";
-import { Label, TextField, TextArea } from "@calcom/ui/components/form";
-import { ImageUploader } from "@calcom/ui/components/image-uploader";
-import { showToast } from "@calcom/ui/components/toast";
+import { HOSTED_CAL_FEATURES } from "@calcom/lib/constants";
+import { getSafeRedirectUrl } from "@calcom/lib/getSafeRedirectUrl";
+import { useParamsWithFallback } from "@calcom/lib/hooks/useParamsWithFallback";
+import type { RouterOutputs } from "@calcom/trpc/react";
+import { WizardLayout } from "@calcom/ui/components/layout";
+import { CreateANewTeamForm } from "@calcom/web/modules/ee/teams/components/CreateANewTeamForm";
-import { OnboardingCard } from "~/onboarding/components/OnboardingCard";
-import { OnboardingLayout } from "~/onboarding/components/OnboardingLayout";
-import { OnboardingBrowserView } from "~/onboarding/components/onboarding-browser-view";
-import { useCreateTeam } from "~/onboarding/hooks/useCreateTeam";
-import { useOnboardingStore } from "~/onboarding/store/onboarding-store";
-import { ValidatedTeamSlug } from "~/onboarding/teams/details/validated-team-slug";
+const querySchema = z.object({
+ returnTo: z.string().optional(),
+ slug: z.string().optional(),
+});
-type CreateNewTeamViewProps = {
- userEmail: string;
-};
-
-export const CreateNewTeamView = ({ userEmail }: CreateNewTeamViewProps) => {
+const CreateNewTeamPage = () => {
+ const params = useParamsWithFallback();
+ const parsedQuery = querySchema.safeParse(params);
const router = useRouter();
- const { t } = useLocale();
- const store = useOnboardingStore();
- const { teamDetails, teamBrand, setTeamDetails, setTeamBrand, resetOnboardingPreservingPlan } = store;
- const { createTeam, isSubmitting } = useCreateTeam({ redirectBasePath: "/settings/teams/new" });
- const logoRef = useRef {t("onboarding_logo_size_hint")}