Skip to content

Commit 83a943c

Browse files
🪟🧪 [Experiment] Move OAuth to top of signup page (#18899)
* 🪟🧪 [Experiment] Move OAuth to top of signup page * bring separator back to login page
1 parent 7164e1c commit 83a943c

File tree

9 files changed

+67
-33
lines changed

9 files changed

+67
-33
lines changed

airbyte-webapp/src/hooks/services/Experiment/experiments.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,5 @@ export interface Experiments {
1919
"authPage.oauth.google.signUpPage": boolean;
2020
"authPage.oauth.github.signUpPage": boolean;
2121
"onboarding.speedyConnection": boolean;
22+
"authPage.oauth.position": "top" | "bottom";
2223
}

airbyte-webapp/src/packages/cloud/views/auth/LoginPage/LoginPage.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { BottomBlock, FieldItem, Form } from "packages/cloud/views/auth/componen
1717
import { FormTitle } from "packages/cloud/views/auth/components/FormTitle";
1818

1919
import { OAuthLogin } from "../OAuthLogin";
20+
import { Separator } from "../SignupPage/components/Separator";
2021
import { Disclaimer } from "../SignupPage/components/SignupForm";
2122
import styles from "./LoginPage.module.scss";
2223

@@ -112,6 +113,8 @@ const LoginPage: React.FC = () => {
112113
</Form>
113114
)}
114115
</Formik>
116+
117+
<Separator />
115118
<OAuthLogin />
116119
<Disclaimer />
117120
</div>

airbyte-webapp/src/packages/cloud/views/auth/OAuthLogin/OAuthLogin.module.scss

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,6 @@
11
@use "../../../../../scss/variables" as vars;
22
@use "../../../../../scss/colors";
33

4-
.separator {
5-
display: flex;
6-
margin: vars.$spacing-xl 0;
7-
font-size: 16px;
8-
text-align: center;
9-
font-weight: bold;
10-
color: colors.$grey-800;
11-
text-transform: uppercase;
12-
13-
&::before,
14-
&::after {
15-
content: "";
16-
flex: 1 1;
17-
border-bottom: 1px solid colors.$grey-300;
18-
margin: auto;
19-
}
20-
21-
&::before {
22-
margin-right: vars.$spacing-md;
23-
}
24-
25-
&::after {
26-
margin-left: vars.$spacing-md;
27-
}
28-
}
29-
304
.buttons {
315
display: grid;
326
grid-template-columns: 1fr;

airbyte-webapp/src/packages/cloud/views/auth/OAuthLogin/OAuthLogin.tsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,6 @@ export const OAuthLogin: React.FC<OAuthLoginProps> = ({ isSignUpPage }) => {
100100

101101
return (
102102
<div>
103-
<div className={styles.separator}>
104-
<FormattedMessage id="login.oauth.or" />
105-
</div>
106103
{isLoading && (
107104
<div className={styles.spinner}>
108105
<Spinner />

airbyte-webapp/src/packages/cloud/views/auth/SignupPage/SignupPage.module.scss

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
@use "../../../../../scss/colors";
22
@use "../../../../../scss/variables";
33

4+
.container {
5+
display: flex;
6+
flex-direction: column;
7+
gap: variables.$spacing-xl;
8+
}
9+
410
.title {
511
width: 250px;
612
margin-bottom: variables.$spacing-md;

airbyte-webapp/src/packages/cloud/views/auth/SignupPage/SignupPage.tsx

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ import { HeadTitle } from "components/common/HeadTitle";
55
import { Heading } from "components/ui/Heading";
66

77
import { PageTrackingCodes, useTrackPage } from "hooks/services/Analytics";
8+
import { useExperiment } from "hooks/services/Experiment";
89

910
import { OAuthLogin } from "../OAuthLogin";
11+
import { Separator } from "./components/Separator";
1012
import { Disclaimer, SignupForm } from "./components/SignupForm";
1113
import SpecialBlock from "./components/SpecialBlock";
1214
import styles from "./SignupPage.module.scss";
@@ -17,8 +19,10 @@ interface SignupPageProps {
1719

1820
const SignupPage: React.FC<SignupPageProps> = ({ highlightStyle }) => {
1921
useTrackPage(PageTrackingCodes.SIGNUP);
22+
const oAuthPosition = useExperiment("authPage.oauth.position", "bottom");
23+
2024
return (
21-
<div>
25+
<div className={styles.container}>
2226
<HeadTitle titles={[{ id: "login.signup" }]} />
2327
<Heading as="h1" size="xl" className={styles.title}>
2428
<FormattedMessage
@@ -33,8 +37,19 @@ const SignupPage: React.FC<SignupPageProps> = ({ highlightStyle }) => {
3337
/>
3438
</Heading>
3539
<SpecialBlock />
40+
{oAuthPosition === "top" && (
41+
<>
42+
<OAuthLogin isSignUpPage />
43+
<Separator />
44+
</>
45+
)}
3646
<SignupForm />
37-
<OAuthLogin isSignUpPage />
47+
{oAuthPosition === "bottom" && (
48+
<>
49+
<Separator />
50+
<OAuthLogin isSignUpPage />
51+
</>
52+
)}
3853
<Disclaimer />
3954
</div>
4055
);
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
@use "../../../../../../scss/variables" as vars;
2+
@use "../../../../../../scss/colors";
3+
4+
.separator {
5+
display: flex;
6+
padding: vars.$spacing-md 0;
7+
font-size: 16px;
8+
text-align: center;
9+
font-weight: bold;
10+
color: colors.$grey-800;
11+
text-transform: uppercase;
12+
13+
&::before,
14+
&::after {
15+
content: "";
16+
flex: 1 1;
17+
border-bottom: 1px solid colors.$grey-300;
18+
margin: auto;
19+
}
20+
21+
&::before {
22+
margin-right: vars.$spacing-md;
23+
}
24+
25+
&::after {
26+
margin-left: vars.$spacing-md;
27+
}
28+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { FormattedMessage } from "react-intl";
2+
3+
import styles from "./Separator.module.scss";
4+
export const Separator: React.FC = () => {
5+
return (
6+
<div className={styles.separator}>
7+
<FormattedMessage id="login.oauth.or" />
8+
</div>
9+
);
10+
};

airbyte-webapp/src/packages/cloud/views/auth/SignupPage/components/SignupForm.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Field, FieldProps, Formik } from "formik";
1+
import { Field, FieldProps, Formik, Form } from "formik";
22
import React, { useMemo } from "react";
33
import { FormattedMessage, useIntl } from "react-intl";
44
import { useSearchParams } from "react-router-dom";
@@ -15,7 +15,7 @@ import { isGdprCountry } from "utils/dataPrivacy";
1515
import { links } from "utils/links";
1616

1717
import CheckBoxControl from "../../components/CheckBoxControl";
18-
import { BottomBlock, FieldItem, Form, RowFieldItem } from "../../components/FormComponents";
18+
import { BottomBlock, FieldItem, RowFieldItem } from "../../components/FormComponents";
1919
import styles from "./SignupForm.module.scss";
2020

2121
interface FormValues {

0 commit comments

Comments
 (0)