diff --git a/apps/admin/app/(all)/(dashboard)/sidebar-dropdown.tsx b/apps/admin/app/(all)/(dashboard)/sidebar-dropdown.tsx index 5554947be..656d0531d 100644 --- a/apps/admin/app/(all)/(dashboard)/sidebar-dropdown.tsx +++ b/apps/admin/app/(all)/(dashboard)/sidebar-dropdown.tsx @@ -42,7 +42,7 @@ export const AdminSidebarDropdown = observer(() => { )} >
- {currentUser?.email} + {currentUser?.email}
Set a new password to your Plane account - - + + - + - + @@ -94,9 +94,9 @@ @@ -187,7 +187,7 @@ @@ -236,7 +236,7 @@ diff --git a/apps/api/templates/emails/auth/magic_signin.html b/apps/api/templates/emails/auth/magic_signin.html index a7a86a94c..c32b399fb 100644 --- a/apps/api/templates/emails/auth/magic_signin.html +++ b/apps/api/templates/emails/auth/magic_signin.html @@ -9,7 +9,7 @@ - + - + - + @@ -80,7 +80,7 @@ - + @@ -145,7 +145,7 @@ ­
-

Despite our popularity, we are humbly early-stage. We are shipping fast, so please reach out to us with feature requests, major and minor nits, and anything else you find missing. We read every message, tweet, and conversation and update our public roadmap.

+

Despite our popularity, we are humbly early-stage. We are shipping fast, so please reach out to us with feature requests, major and minor nits, and anything else you find missing. We read every message, tweet, and conversation and update our public roadmap.

­ @@ -194,7 +194,7 @@ - + @@ -202,7 +202,7 @@ - + @@ -210,7 +210,7 @@ - + @@ -218,7 +218,7 @@ - + diff --git a/apps/api/templates/emails/invitations/project_invitation.html b/apps/api/templates/emails/invitations/project_invitation.html index 0a40d42bf..254408ac5 100644 --- a/apps/api/templates/emails/invitations/project_invitation.html +++ b/apps/api/templates/emails/invitations/project_invitation.html @@ -8,7 +8,7 @@ {{ first_name }} invited you to join {{ project_name }} on Plane - + @@ -58,7 +58,7 @@ ­ - + ­ @@ -91,17 +91,17 @@ - -

Accept the invite

+
+

Accept the invite

diff --git a/apps/api/templates/emails/invitations/workspace_invitation.html b/apps/api/templates/emails/invitations/workspace_invitation.html index a94745383..619f03992 100644 --- a/apps/api/templates/emails/invitations/workspace_invitation.html +++ b/apps/api/templates/emails/invitations/workspace_invitation.html @@ -8,8 +8,8 @@ {{first_name}} has invited you to join them in {{workspace_name}} on Plane. - - + + - + - + @@ -88,9 +88,9 @@ @@ -131,7 +131,7 @@ diff --git a/apps/api/templates/emails/notifications/issue-updates.html b/apps/api/templates/emails/notifications/issue-updates.html index 8ba91c6fe..c6fe3b278 100644 --- a/apps/api/templates/emails/notifications/issue-updates.html +++ b/apps/api/templates/emails/notifications/issue-updates.html @@ -8,14 +8,14 @@ - +
-
+
diff --git a/apps/api/templates/emails/notifications/project_addition.html b/apps/api/templates/emails/notifications/project_addition.html index ccf0f7a95..59c7e0e4d 100644 --- a/apps/api/templates/emails/notifications/project_addition.html +++ b/apps/api/templates/emails/notifications/project_addition.html @@ -164,7 +164,7 @@ text-align: center !important; } .r15-r { - background-color: #3f76ff !important; + background-color: #006399 !important; border-radius: 4px !important; border-width: 0px !important; box-sizing: border-box; @@ -296,7 +296,7 @@ } a, a:link { - color: #3f76ff; + color: #006399; text-decoration: underline; } .nl2go-default-textstyle { @@ -372,7 +372,7 @@ [endif]--> @@ -380,7 +380,7 @@ @@ -483,7 +483,7 @@ " > @@ -1308,7 +1308,7 @@ href="https://www.linkedin.com/company/planepowers/" target="_blank" style=" - color: #3f76ff; + color: #006399; text-decoration: underline; " > @@ -1368,7 +1368,7 @@ href="https://twitter.com/planepowers" target="_blank" style=" - color: #3f76ff; + color: #006399; text-decoration: underline; " > @@ -1428,7 +1428,7 @@ href="https://plane.so/" target="_blank" style=" - color: #3f76ff; + color: #006399; text-decoration: underline; " > diff --git a/apps/api/templates/emails/notifications/webhook-deactivate.html b/apps/api/templates/emails/notifications/webhook-deactivate.html index 0755eb498..272271f96 100644 --- a/apps/api/templates/emails/notifications/webhook-deactivate.html +++ b/apps/api/templates/emails/notifications/webhook-deactivate.html @@ -8,8 +8,8 @@ {{ message }} - - + + - + - + @@ -80,7 +80,7 @@ - + @@ -155,7 +155,7 @@ ­
-

Despite our popularity, we are humbly early-stage. We are shipping fast, so please reach out to us with feature requests, major and minor nits, and anything else you find missing. We read every message, tweet, and conversation and update our public roadmap.

+

Despite our popularity, we are humbly early-stage. We are shipping fast, so please reach out to us with feature requests, major and minor nits, and anything else you find missing. We read every message, tweet, and conversation and update our public roadmap.

­ @@ -204,7 +204,7 @@ - + @@ -212,7 +212,7 @@ - + @@ -220,7 +220,7 @@ - + @@ -228,7 +228,7 @@ - + diff --git a/apps/api/templates/emails/user/user_activation.html b/apps/api/templates/emails/user/user_activation.html index 1ec60e955..a454d0a3c 100644 --- a/apps/api/templates/emails/user/user_activation.html +++ b/apps/api/templates/emails/user/user_activation.html @@ -173,7 +173,7 @@ text-align: center !important; } .r16-r { - background-color: #3f76ff !important; + background-color: #006399 !important; border-radius: 4px !important; border-width: 0px !important; box-sizing: border-box; @@ -305,7 +305,7 @@ } a, a:link { - color: #3f76ff; + color: #006399; text-decoration: underline; } .nl2go-default-textstyle { @@ -382,7 +382,7 @@ @@ -390,7 +390,7 @@ @@ -493,7 +493,7 @@ " > @@ -1287,7 +1287,7 @@ href="https://www.linkedin.com/company/planepowers/" target="_blank" style=" - color: #3f76ff; + color: #006399; text-decoration: underline; " > @@ -1347,7 +1347,7 @@ href="https://twitter.com/planepowers" target="_blank" style=" - color: #3f76ff; + color: #006399; text-decoration: underline; " > @@ -1407,7 +1407,7 @@ href="https://plane.so/" target="_blank" style=" - color: #3f76ff; + color: #006399; text-decoration: underline; " > diff --git a/apps/api/templates/emails/user/user_deactivation.html b/apps/api/templates/emails/user/user_deactivation.html index b6bc7b768..8a0c097a7 100644 --- a/apps/api/templates/emails/user/user_deactivation.html +++ b/apps/api/templates/emails/user/user_deactivation.html @@ -173,7 +173,7 @@ text-align: center !important; } .r16-r { - background-color: #3f76ff !important; + background-color: #006399 !important; border-radius: 4px !important; border-width: 0px !important; box-sizing: border-box; @@ -305,7 +305,7 @@ } a, a:link { - color: #3f76ff; + color: #006399; text-decoration: underline; } .nl2go-default-textstyle { @@ -382,7 +382,7 @@ @@ -390,7 +390,7 @@ @@ -493,7 +493,7 @@ " > @@ -1288,7 +1288,7 @@ href="https://www.linkedin.com/company/planepowers/" target="_blank" style=" - color: #3f76ff; + color: #006399; text-decoration: underline; " > @@ -1348,7 +1348,7 @@ href="https://twitter.com/planepowers" target="_blank" style=" - color: #3f76ff; + color: #006399; text-decoration: underline; " > @@ -1408,7 +1408,7 @@ href="https://plane.so/" target="_blank" style=" - color: #3f76ff; + color: #006399; text-decoration: underline; " > diff --git a/apps/space/app/issues/[anchor]/client-layout.tsx b/apps/space/app/issues/[anchor]/client-layout.tsx index 0e24ab551..3fc4902ff 100644 --- a/apps/space/app/issues/[anchor]/client-layout.tsx +++ b/apps/space/app/issues/[anchor]/client-layout.tsx @@ -39,7 +39,13 @@ export const IssuesClientLayout = observer((props: Props) => { : null ); - if (!publishSettings && !error) return ; + if (!publishSettings && !error) { + return ( +
+ +
+ ); + } if (error) return ; diff --git a/apps/space/app/page.tsx b/apps/space/app/page.tsx index a905f71b7..7ffff361f 100644 --- a/apps/space/app/page.tsx +++ b/apps/space/app/page.tsx @@ -11,7 +11,13 @@ import { useUser } from "@/hooks/store"; const HomePage = observer(() => { const { data: currentUser, isAuthenticated, isLoading } = useUser(); - if (isLoading) return ; + + if (isLoading) + return ( +
+ +
+ ); if (currentUser && isAuthenticated) return ; diff --git a/apps/space/app/views/[anchor]/layout.tsx b/apps/space/app/views/[anchor]/layout.tsx index 57b2971c4..05e113a08 100644 --- a/apps/space/app/views/[anchor]/layout.tsx +++ b/apps/space/app/views/[anchor]/layout.tsx @@ -42,7 +42,13 @@ const IssuesLayout = observer((props: Props) => { if (error) return ; - if (!publishSettings || !viewData) return ; + if (!publishSettings || !viewData) { + return ( +
+ +
+ ); + } return (
diff --git a/apps/space/core/components/account/auth-forms/auth-header.tsx b/apps/space/core/components/account/auth-forms/auth-header.tsx index 95a539ddf..f75dccecf 100644 --- a/apps/space/core/components/account/auth-forms/auth-header.tsx +++ b/apps/space/core/components/account/auth-forms/auth-header.tsx @@ -1,12 +1,11 @@ "use client"; -import { FC, ReactNode } from "react"; +import { FC } from "react"; // helpers import { EAuthModes } from "@/types/auth"; type TAuthHeader = { authMode: EAuthModes; - children: ReactNode; }; type TAuthHeaderContent = { @@ -30,7 +29,7 @@ const Titles: TAuthHeaderDetails = { }; export const AuthHeader: FC = (props) => { - const { authMode, children } = props; + const { authMode } = props; const getHeaderSubHeader = (mode: EAuthModes | null): TAuthHeaderContent => { if (mode) { @@ -38,7 +37,7 @@ export const AuthHeader: FC = (props) => { } return { - header: "Comment or react to work itemss", + header: "Comment or react to work items", subHeader: "Use plane to add your valuable inputs to features.", }; }; @@ -47,11 +46,10 @@ export const AuthHeader: FC = (props) => { return ( <> -
-

{header}

-

{subHeader}

+
+ {header} + {subHeader}
- {children} ); }; diff --git a/apps/space/core/components/account/auth-forms/auth-root.tsx b/apps/space/core/components/account/auth-forms/auth-root.tsx index 2ce944a25..653c97cc7 100644 --- a/apps/space/core/components/account/auth-forms/auth-root.tsx +++ b/apps/space/core/components/account/auth-forms/auth-root.tsx @@ -2,10 +2,14 @@ import React, { FC, useEffect, useState } from "react"; import { observer } from "mobx-react"; +import Image from "next/image"; import { useSearchParams } from "next/navigation"; +import { useTheme } from "next-themes"; // plane imports +import { API_BASE_URL } from "@plane/constants"; import { SitesAuthService } from "@plane/services"; import { IEmailCheckData } from "@plane/types"; +import { OAuthOptions } from "@plane/ui"; // components import { AuthHeader, @@ -13,7 +17,6 @@ import { AuthEmailForm, AuthUniqueCodeForm, AuthPasswordForm, - OAuthOptions, TermsAndConditions, } from "@/components/account"; // helpers @@ -27,6 +30,11 @@ import { import { useInstance } from "@/hooks/store"; // types import { EAuthModes, EAuthSteps } from "@/types/auth"; +// assets +import GithubLightLogo from "/public/logos/github-black.png"; +import GithubDarkLogo from "/public/logos/github-dark.svg"; +import GitlabLogo from "/public/logos/gitlab-logo.svg"; +import GoogleLogo from "/public/logos/google-logo.svg"; const authService = new SitesAuthService(); @@ -36,6 +44,7 @@ export const AuthRoot: FC = observer(() => { const emailParam = searchParams.get("email") || undefined; const error_code = searchParams.get("error_code") || undefined; const nextPath = searchParams.get("next_path") || undefined; + const next_path = searchParams.get("next_path"); // states const [authMode, setAuthMode] = useState(EAuthModes.SIGN_UP); const [authStep, setAuthStep] = useState(EAuthSteps.EMAIL); @@ -43,6 +52,7 @@ export const AuthRoot: FC = observer(() => { const [errorInfo, setErrorInfo] = useState(undefined); const [isPasswordAutoset, setIsPasswordAutoset] = useState(true); // hooks + const { resolvedTheme } = useTheme(); const { config } = useInstance(); useEffect(() => { @@ -146,12 +156,54 @@ export const AuthRoot: FC = observer(() => { }); }; + const content = authMode === EAuthModes.SIGN_UP ? "Sign up" : "Sign in"; + + const OAuthConfig = [ + { + id: "google", + text: `${content} with Google`, + icon: Google Logo, + onClick: () => { + window.location.assign(`${API_BASE_URL}/auth/google/${next_path ? `?next_path=${next_path}` : ``}`); + }, + enabled: config?.is_google_enabled, + }, + { + id: "github", + text: `${content} with GitHub`, + icon: ( + GitHub Logo + ), + onClick: () => { + window.location.assign(`${API_BASE_URL}/auth/github/${next_path ? `?next_path=${next_path}` : ``}`); + }, + enabled: config?.is_github_enabled, + }, + { + id: "gitlab", + text: `${content} with GitLab`, + icon: GitLab Logo, + onClick: () => { + window.location.assign(`${API_BASE_URL}/auth/gitlab/${next_path ? `?next_path=${next_path}` : ``}`); + }, + enabled: config?.is_gitlab_enabled, + }, + ]; + return ( -
- +
+
{errorInfo && errorInfo?.type === EErrorAlertType.BANNER_ALERT && ( setErrorInfo(value)} /> )} + + {isOAuthEnabled && } + {authStep === EAuthSteps.EMAIL && } {authStep === EAuthSteps.UNIQUE_CODE && ( { }} /> )} - {isOAuthEnabled && } - +
); }); diff --git a/apps/space/core/components/account/auth-forms/email.tsx b/apps/space/core/components/account/auth-forms/email.tsx index 4815fef6a..6fb08ff7a 100644 --- a/apps/space/core/components/account/auth-forms/email.tsx +++ b/apps/space/core/components/account/auth-forms/email.tsx @@ -46,13 +46,13 @@ export const AuthEmailForm: FC = observer((props) => { return (
-