* add a layoutfile to use-page-wrapper route group * refactor and move bookings status page to route group * improve logic in pagesAndRewritePaths * fix * add use client directive * move /403 and /500 * move /auth/error * move /connect-and-join * move /enterprise * move /maintenance * move /more * move /upgrade * chore: remove WithLayout from 8 low-risk single pages (#18745) * move /403 and /500 * move /auth/error * move /connect-and-join * move /enterprise * move /maintenance * move /more * move /upgrade * move /availability pages * move /event-types pages * move /insights pages * move /apps to use-page-wrapper group * move /getting-started to use-page-wrapper group * move /signup to use-page-wrapper group * move /workflows to use-page-wrapper group * move /video pages to use-page-wrapper group * pass dehydratedState in layout * pass dehydratedState in layout * move settings/(settings-layout) to use-page-wrapper * move settings/(admin-layout) to use-page-wrapper * move remaining settings pages to (use-page-wrapper) * fix test * remove unused code * remove unused files * fix type check * remove test tag * remove page * RSC should not default export client components
63 lines
1.9 KiB
TypeScript
63 lines
1.9 KiB
TypeScript
"use client";
|
|
|
|
import { useRouter } from "next/navigation";
|
|
import React from "react";
|
|
import { z } from "zod";
|
|
|
|
import { CreateANewTeamForm } from "@calcom/features/ee/teams/components";
|
|
import { HOSTED_CAL_FEATURES } from "@calcom/lib/constants";
|
|
import { getSafeRedirectUrl } from "@calcom/lib/getSafeRedirectUrl";
|
|
import { useParamsWithFallback } from "@calcom/lib/hooks/useParamsWithFallback";
|
|
import { telemetryEventTypes, useTelemetry } from "@calcom/lib/telemetry";
|
|
import type { RouterOutputs } from "@calcom/trpc/react";
|
|
import { WizardLayout } from "@calcom/ui";
|
|
|
|
const querySchema = z.object({
|
|
returnTo: z.string().optional(),
|
|
slug: z.string().optional(),
|
|
});
|
|
|
|
const CreateNewTeamPage = () => {
|
|
const params = useParamsWithFallback();
|
|
const parsedQuery = querySchema.safeParse(params);
|
|
const router = useRouter();
|
|
const telemetry = useTelemetry();
|
|
|
|
const isTeamBillingEnabledClient = !!process.env.NEXT_PUBLIC_STRIPE_PUBLIC_KEY && HOSTED_CAL_FEATURES;
|
|
const flag = isTeamBillingEnabledClient
|
|
? {
|
|
telemetryEvent: telemetryEventTypes.team_checkout_session_created,
|
|
submitLabel: "checkout",
|
|
}
|
|
: {
|
|
telemetryEvent: telemetryEventTypes.team_created,
|
|
submitLabel: "continue",
|
|
};
|
|
|
|
const returnToParam =
|
|
(parsedQuery.success ? getSafeRedirectUrl(parsedQuery.data.returnTo) : "/teams") || "/teams";
|
|
|
|
const onSuccess = (data: RouterOutputs["viewer"]["teams"]["create"]) => {
|
|
telemetry.event(flag.telemetryEvent);
|
|
router.push(data.url);
|
|
};
|
|
|
|
return (
|
|
<CreateANewTeamForm
|
|
slug={parsedQuery.success ? parsedQuery.data.slug : ""}
|
|
onCancel={() => router.push(returnToParam)}
|
|
submitLabel={flag.submitLabel}
|
|
onSuccess={onSuccess}
|
|
/>
|
|
);
|
|
};
|
|
export const LayoutWrapper = ({ children }: { children: React.ReactNode }) => {
|
|
return (
|
|
<WizardLayout currentStep={1} maxSteps={3}>
|
|
{children}
|
|
</WizardLayout>
|
|
);
|
|
};
|
|
|
|
export default CreateNewTeamPage;
|