Add v2 onboarding invite team page (#22229)
<img width="3024" height="1500" alt="CleanShot 2026-06-26 at 18 09 47@2x" src="https://github.com/user-attachments/assets/e91f30a5-2763-42a0-9abf-d9fa8400870c" /> Adds the v2 onboarding **Invite team** page (`INVITE_TEAM`), shown right after the create-profile step for the onboarding-v2 cohort. It renders full-screen under `BlankLayout` via the shared `OnboardingV2Layout`, matching the Figma (340px column, email inputs with inline remove, dark Invite, Skip). Reuses all v1 invite-team logic via a new `useInviteTeam` hook (v1 `InviteTeam` now consumes it too; its UI is unchanged). Routing mirrors `SyncEmailsV2`/`CreateProfileV2`: new `AppPath.InviteTeamV2`, lazy route, and an `isOnboardingV2`-gated branch in `usePageChangeEffectNavigateLocation` (+ tests and a Storybook story). No backend changes. <!-- This is an auto-generated description by cubic. --> <a href="https://cubic.dev/pr/twentyhq/twenty/pull/22229?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="Review in cubic" src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a> <!-- End of auto-generated description by cubic. -->
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { aiModelsState } from '@/client-config/states/aiModelsState';
|
||||
import { apiConfigState } from '@/client-config/states/apiConfigState';
|
||||
import { onboardingConfigState } from '@/client-config/states/onboardingConfigState';
|
||||
import { appVersionState } from '@/client-config/states/appVersionState';
|
||||
import { authProvidersState } from '@/client-config/states/authProvidersState';
|
||||
import { billingState } from '@/client-config/states/billingState';
|
||||
@@ -69,6 +70,7 @@ export const useClientConfig = (): UseClientConfigResult => {
|
||||
const setCaptcha = useSetAtomState(captchaState);
|
||||
|
||||
const setApiConfig = useSetAtomState(apiConfigState);
|
||||
const setOnboardingConfig = useSetAtomState(onboardingConfigState);
|
||||
|
||||
const setCanManageFeatureFlags = useSetAtomState(canManageFeatureFlagsState);
|
||||
|
||||
@@ -175,6 +177,7 @@ export const useClientConfig = (): UseClientConfigResult => {
|
||||
});
|
||||
|
||||
setApiConfig(clientConfig?.api);
|
||||
setOnboardingConfig(clientConfig?.onboarding);
|
||||
setDomainConfiguration({
|
||||
defaultSubdomain: clientConfig?.defaultSubdomain,
|
||||
frontDomain: clientConfig?.frontDomain,
|
||||
@@ -221,6 +224,7 @@ export const useClientConfig = (): UseClientConfigResult => {
|
||||
}, [
|
||||
setAiModels,
|
||||
setApiConfig,
|
||||
setOnboardingConfig,
|
||||
setAppVersion,
|
||||
setAuthProviders,
|
||||
setBilling,
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
import { type OnboardingConfig } from '@/client-config/types/OnboardingConfig';
|
||||
import { createAtomState } from '@/ui/utilities/state/jotai/utils/createAtomState';
|
||||
|
||||
export const onboardingConfigState = createAtomState<OnboardingConfig | null>({
|
||||
key: 'onboardingConfigState',
|
||||
defaultValue: null,
|
||||
});
|
||||
@@ -9,6 +9,7 @@ import {
|
||||
type Sentry,
|
||||
type Support,
|
||||
} from '~/generated-metadata/graphql';
|
||||
import { type OnboardingConfig } from '@/client-config/types/OnboardingConfig';
|
||||
|
||||
export type ClientConfig = {
|
||||
appVersion?: string;
|
||||
@@ -36,6 +37,7 @@ export type ClientConfig = {
|
||||
isCloudflareIntegrationEnabled: boolean;
|
||||
isClickHouseConfigured: boolean;
|
||||
isWorkspaceSchemaDDLLocked: boolean;
|
||||
onboarding: OnboardingConfig;
|
||||
publicFeatureFlags: Array<PublicFeatureFlag>;
|
||||
sentry: Sentry;
|
||||
signInPrefilled: boolean;
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
export type OnboardingConfig = {
|
||||
importContactsCreditsReward: number;
|
||||
inviteTeamMaxCreditsReward: number;
|
||||
inviteTeamCreditsRewardPerUser: number;
|
||||
};
|
||||
Reference in New Issue
Block a user