diff --git a/admin/Dockerfile.admin b/admin/Dockerfile.admin index b2908f356..ad9469110 100644 --- a/admin/Dockerfile.admin +++ b/admin/Dockerfile.admin @@ -29,15 +29,21 @@ COPY turbo.json turbo.json ARG NEXT_PUBLIC_API_BASE_URL="" ENV NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL -ARG NEXT_PUBLIC_WEB_BASE_URL="" -ENV NEXT_PUBLIC_WEB_BASE_URL=$NEXT_PUBLIC_WEB_BASE_URL - -ARG NEXT_PUBLIC_SPACE_BASE_URL="/spaces" -ENV NEXT_PUBLIC_SPACE_BASE_URL=$NEXT_PUBLIC_SPACE_BASE_URL +ARG NEXT_PUBLIC_ADMIN_BASE_URL="" +ENV NEXT_PUBLIC_ADMIN_BASE_URL=$NEXT_PUBLIC_ADMIN_BASE_URL ARG NEXT_PUBLIC_ADMIN_BASE_PATH="/god-mode" ENV NEXT_PUBLIC_ADMIN_BASE_PATH=$NEXT_PUBLIC_ADMIN_BASE_PATH +ARG NEXT_PUBLIC_SPACE_BASE_URL="" +ENV NEXT_PUBLIC_SPACE_BASE_URL=$NEXT_PUBLIC_SPACE_BASE_URL + +ARG NEXT_PUBLIC_SPACE_BASE_PATH="/spaces" +ENV NEXT_PUBLIC_SPACE_BASE_PATH=$NEXT_PUBLIC_SPACE_BASE_PATH + +ARG NEXT_PUBLIC_WEB_BASE_URL="" +ENV NEXT_PUBLIC_WEB_BASE_URL=$NEXT_PUBLIC_WEB_BASE_URL + ENV NEXT_TELEMETRY_DISABLED 1 ENV TURBO_TELEMETRY_DISABLED 1 @@ -59,15 +65,21 @@ COPY --from=installer /app/admin/public ./admin/public ARG NEXT_PUBLIC_API_BASE_URL="" ENV NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL -ARG NEXT_PUBLIC_WEB_BASE_URL="" -ENV NEXT_PUBLIC_WEB_BASE_URL=$NEXT_PUBLIC_WEB_BASE_URL - -ARG NEXT_PUBLIC_SPACE_BASE_URL="/spaces" -ENV NEXT_PUBLIC_SPACE_BASE_URL=$NEXT_PUBLIC_SPACE_BASE_URL +ARG NEXT_PUBLIC_ADMIN_BASE_URL="" +ENV NEXT_PUBLIC_ADMIN_BASE_URL=$NEXT_PUBLIC_ADMIN_BASE_URL ARG NEXT_PUBLIC_ADMIN_BASE_PATH="/god-mode" ENV NEXT_PUBLIC_ADMIN_BASE_PATH=$NEXT_PUBLIC_ADMIN_BASE_PATH +ARG NEXT_PUBLIC_SPACE_BASE_URL="" +ENV NEXT_PUBLIC_SPACE_BASE_URL=$NEXT_PUBLIC_SPACE_BASE_URL + +ARG NEXT_PUBLIC_SPACE_BASE_PATH="/spaces" +ENV NEXT_PUBLIC_SPACE_BASE_PATH=$NEXT_PUBLIC_SPACE_BASE_PATH + +ARG NEXT_PUBLIC_WEB_BASE_URL="" +ENV NEXT_PUBLIC_WEB_BASE_URL=$NEXT_PUBLIC_WEB_BASE_URL + ENV NEXT_TELEMETRY_DISABLED 1 ENV TURBO_TELEMETRY_DISABLED 1 diff --git a/admin/helpers/authentication.helper.tsx b/admin/helpers/authentication.helper.tsx index 6bfccd45e..cc9058611 100644 --- a/admin/helpers/authentication.helper.tsx +++ b/admin/helpers/authentication.helper.tsx @@ -1,5 +1,7 @@ import { ReactNode } from "react"; import Link from "next/link"; +// helpers +import { SUPPORT_EMAIL } from "./common.helper"; export enum EPageTypes { PUBLIC = "PUBLIC", @@ -38,6 +40,7 @@ export enum EAuthenticationErrorCodes { ADMIN_AUTHENTICATION_FAILED = "5175", ADMIN_USER_ALREADY_EXIST = "5180", ADMIN_USER_DOES_NOT_EXIST = "5185", + ADMIN_USER_DEACTIVATED = "5190", } export type TAuthErrorInfo = { @@ -99,6 +102,10 @@ const errorCodeMessages: { ), }, + [EAuthenticationErrorCodes.ADMIN_USER_DEACTIVATED]: { + title: `User account deactivated`, + message: () => `User account deactivated. Please contact ${!!SUPPORT_EMAIL ? SUPPORT_EMAIL : "administrator"}.`, + }, }; export const authErrorHandler = ( @@ -106,6 +113,7 @@ export const authErrorHandler = ( email?: string | undefined ): TAuthErrorInfo | undefined => { const bannerAlertErrorCodes = [ + EAuthenticationErrorCodes.ADMIN_ALREADY_EXIST, EAuthenticationErrorCodes.REQUIRED_ADMIN_EMAIL_PASSWORD_FIRST_NAME, EAuthenticationErrorCodes.INVALID_ADMIN_EMAIL, EAuthenticationErrorCodes.INVALID_ADMIN_PASSWORD, @@ -113,6 +121,7 @@ export const authErrorHandler = ( EAuthenticationErrorCodes.ADMIN_AUTHENTICATION_FAILED, EAuthenticationErrorCodes.ADMIN_USER_ALREADY_EXIST, EAuthenticationErrorCodes.ADMIN_USER_DOES_NOT_EXIST, + EAuthenticationErrorCodes.ADMIN_USER_DEACTIVATED, ]; if (bannerAlertErrorCodes.includes(errorCode)) diff --git a/admin/helpers/common.helper.ts b/admin/helpers/common.helper.ts index e7aae0698..e282e5792 100644 --- a/admin/helpers/common.helper.ts +++ b/admin/helpers/common.helper.ts @@ -10,6 +10,8 @@ export const SPACE_BASE_PATH = process.env.NEXT_PUBLIC_SPACE_BASE_PATH || ""; export const WEB_BASE_URL = process.env.NEXT_PUBLIC_WEB_BASE_URL || ""; +export const SUPPORT_EMAIL = process.env.NEXT_PUBLIC_SUPPORT_EMAIL || ""; + export const ASSET_PREFIX = ADMIN_BASE_PATH; export const cn = (...inputs: ClassValue[]) => twMerge(clsx(inputs)); diff --git a/admin/layouts/default-layout.tsx b/admin/layouts/default-layout.tsx index 1621fc0f8..1be40ea12 100644 --- a/admin/layouts/default-layout.tsx +++ b/admin/layouts/default-layout.tsx @@ -2,11 +2,13 @@ import { FC, ReactNode } from "react"; import Image from "next/image"; +import Link from "next/link"; import { useTheme } from "next-themes"; // logo/ images import PlaneBackgroundPatternDark from "public/auth/background-pattern-dark.svg"; import PlaneBackgroundPattern from "public/auth/background-pattern.svg"; -import BluePlaneLogoWithoutText from "public/plane-logos/blue-without-text.png"; +import BlackHorizontalLogo from "public/plane-logos/black-horizontal-with-blue-logo.png"; +import WhiteHorizontalLogo from "public/plane-logos/white-horizontal-with-blue-logo.png"; type TDefaultLayout = { children: ReactNode; @@ -19,13 +21,16 @@ export const DefaultLayout: FC = (props) => { const { resolvedTheme } = useTheme(); const patternBackground = resolvedTheme === "dark" ? PlaneBackgroundPatternDark : PlaneBackgroundPattern; + const logo = resolvedTheme === "light" ? BlackHorizontalLogo : WhiteHorizontalLogo; + return (
- Plane Logo - Plane + + Plane logo +
{!withoutBackground && ( diff --git a/admin/public/plane-logos/black-horizontal-with-blue-logo.png b/admin/public/plane-logos/black-horizontal-with-blue-logo.png new file mode 100644 index 000000000..c14505a6f Binary files /dev/null and b/admin/public/plane-logos/black-horizontal-with-blue-logo.png differ diff --git a/admin/public/plane-logos/white-horizontal-with-blue-logo.png b/admin/public/plane-logos/white-horizontal-with-blue-logo.png new file mode 100644 index 000000000..97560fb9f Binary files /dev/null and b/admin/public/plane-logos/white-horizontal-with-blue-logo.png differ diff --git a/apiserver/plane/authentication/views/app/signout.py b/apiserver/plane/authentication/views/app/signout.py index 10461f240..260a89a8d 100644 --- a/apiserver/plane/authentication/views/app/signout.py +++ b/apiserver/plane/authentication/views/app/signout.py @@ -1,6 +1,3 @@ -# Python imports -from urllib.parse import urljoin - # Django imports from django.views import View from django.contrib.auth import logout @@ -23,9 +20,10 @@ class SignOutAuthEndpoint(View): user.save() # Log the user out logout(request) - url = urljoin(base_host(request=request, is_app=True), "sign-in") - return HttpResponseRedirect(url) + return HttpResponseRedirect( + base_host(request=request, is_app=True) + ) except Exception: return HttpResponseRedirect( - base_host(request=request, is_app=True), "sign-in" + base_host(request=request, is_app=True) ) diff --git a/docker-compose-local.yml b/docker-compose-local.yml index 18d54b688..39c587d2b 100644 --- a/docker-compose-local.yml +++ b/docker-compose-local.yml @@ -97,7 +97,7 @@ services: - dev_env volumes: - ./apiserver:/code - command: ./bin/docker-entrypoint-api.sh + command: ./bin/docker-entrypoint-api-local.sh env_file: - ./apiserver/.env depends_on: diff --git a/nginx/nginx.conf.dev b/nginx/nginx.conf.dev index a6f20cbf5..7c1c4397d 100644 --- a/nginx/nginx.conf.dev +++ b/nginx/nginx.conf.dev @@ -53,7 +53,6 @@ http { } location /spaces/ { - rewrite ^/spaces/?$ /spaces/login break; proxy_http_version 1.1; proxy_set_header Upgrade ${dollar}http_upgrade; proxy_set_header Connection "upgrade"; diff --git a/nginx/nginx.conf.template b/nginx/nginx.conf.template index 56fdae8dc..74758a866 100644 --- a/nginx/nginx.conf.template +++ b/nginx/nginx.conf.template @@ -53,7 +53,6 @@ http { } location /spaces/ { - rewrite ^/spaces/?$ /spaces/login break; proxy_http_version 1.1; proxy_set_header Upgrade ${dollar}http_upgrade; proxy_set_header Connection "upgrade"; diff --git a/space/Dockerfile.space b/space/Dockerfile.space index 229585818..4e53cfc8a 100644 --- a/space/Dockerfile.space +++ b/space/Dockerfile.space @@ -29,12 +29,21 @@ COPY turbo.json turbo.json ARG NEXT_PUBLIC_API_BASE_URL="" ENV NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL -ARG NEXT_PUBLIC_WEB_BASE_URL="" -ENV NEXT_PUBLIC_WEB_BASE_URL=$NEXT_PUBLIC_WEB_BASE_URL +ARG NEXT_PUBLIC_ADMIN_BASE_URL="" +ENV NEXT_PUBLIC_ADMIN_BASE_URL=$NEXT_PUBLIC_ADMIN_BASE_URL + +ARG NEXT_PUBLIC_ADMIN_BASE_PATH="/god-mode" +ENV NEXT_PUBLIC_ADMIN_BASE_PATH=$NEXT_PUBLIC_ADMIN_BASE_PATH + +ARG NEXT_PUBLIC_SPACE_BASE_URL="" +ENV NEXT_PUBLIC_SPACE_BASE_URL=$NEXT_PUBLIC_SPACE_BASE_URL ARG NEXT_PUBLIC_SPACE_BASE_PATH="/spaces" ENV NEXT_PUBLIC_SPACE_BASE_PATH=$NEXT_PUBLIC_SPACE_BASE_PATH +ARG NEXT_PUBLIC_WEB_BASE_URL="" +ENV NEXT_PUBLIC_WEB_BASE_URL=$NEXT_PUBLIC_WEB_BASE_URL + RUN yarn turbo run build --filter=space # ***************************************************************************** @@ -54,12 +63,21 @@ COPY --from=installer /app/space/public ./space/public ARG NEXT_PUBLIC_API_BASE_URL="" ENV NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL -ARG NEXT_PUBLIC_WEB_BASE_URL="" -ENV NEXT_PUBLIC_WEB_BASE_URL=$NEXT_PUBLIC_WEB_BASE_URL +ARG NEXT_PUBLIC_ADMIN_BASE_URL="" +ENV NEXT_PUBLIC_ADMIN_BASE_URL=$NEXT_PUBLIC_ADMIN_BASE_URL + +ARG NEXT_PUBLIC_ADMIN_BASE_PATH="/god-mode" +ENV NEXT_PUBLIC_ADMIN_BASE_PATH=$NEXT_PUBLIC_ADMIN_BASE_PATH + +ARG NEXT_PUBLIC_SPACE_BASE_URL="" +ENV NEXT_PUBLIC_SPACE_BASE_URL=$NEXT_PUBLIC_SPACE_BASE_URL ARG NEXT_PUBLIC_SPACE_BASE_PATH="/spaces" ENV NEXT_PUBLIC_SPACE_BASE_PATH=$NEXT_PUBLIC_SPACE_BASE_PATH +ARG NEXT_PUBLIC_WEB_BASE_URL="" +ENV NEXT_PUBLIC_WEB_BASE_URL=$NEXT_PUBLIC_WEB_BASE_URL + ENV NEXT_TELEMETRY_DISABLED 1 ENV TURBO_TELEMETRY_DISABLED 1 diff --git a/space/app/loading.tsx b/space/app/loading.tsx deleted file mode 100644 index d35e42a76..000000000 --- a/space/app/loading.tsx +++ /dev/null @@ -1,20 +0,0 @@ -"use client"; -import Image from "next/image"; -import { useTheme } from "next-themes"; -// assets -import LogoSpinnerDark from "@/public/images/logo-spinner-dark.gif"; -import LogoSpinnerLight from "@/public/images/logo-spinner-light.gif"; - -export default function LogoSpinner() { - const { resolvedTheme } = useTheme(); - - const logoSrc = resolvedTheme === "dark" ? LogoSpinnerDark : LogoSpinnerLight; - - return ( -
-
- logo -
-
- ); -} diff --git a/space/app/page.tsx b/space/app/page.tsx index d03300a25..a6058fb8a 100644 --- a/space/app/page.tsx +++ b/space/app/page.tsx @@ -1,5 +1,6 @@ "use client"; +import { observer } from "mobx-react-lite"; // components import { UserLoggedIn } from "@/components/account"; import { LogoSpinner } from "@/components/common"; @@ -7,7 +8,7 @@ import { AuthView } from "@/components/views"; // hooks import { useUser } from "@/hooks/store"; -export default function HomePage() { +const HomePage = observer(() => { const { data: currentUser, isAuthenticated, isLoading } = useUser(); if (isLoading) return ; @@ -15,4 +16,6 @@ export default function HomePage() { if (currentUser && isAuthenticated) return ; return ; -} +}); + +export default HomePage; diff --git a/space/components/account/auth-forms/auth-root.tsx b/space/components/account/auth-forms/auth-root.tsx index b0c676fbf..e02947af0 100644 --- a/space/components/account/auth-forms/auth-root.tsx +++ b/space/components/account/auth-forms/auth-root.tsx @@ -94,7 +94,7 @@ export const AuthRoot: FC = observer(() => { await authService .emailCheck(data) .then(async (response) => { - let currentAuthMode: EAuthModes = EAuthModes.SIGN_UP; + let currentAuthMode: EAuthModes = response.existing ? EAuthModes.SIGN_IN : EAuthModes.SIGN_UP; if (response.existing) { currentAuthMode = EAuthModes.SIGN_IN; setAuthMode(() => EAuthModes.SIGN_IN); diff --git a/space/components/account/user-logged-in.tsx b/space/components/account/user-logged-in.tsx index a9930b5fd..33be330fa 100644 --- a/space/components/account/user-logged-in.tsx +++ b/space/components/account/user-logged-in.tsx @@ -6,7 +6,7 @@ import { UserAvatar } from "@/components/issues/navbar/user-avatar"; // hooks import { useUser } from "@/hooks/store"; // assets -import PlaneLogo from "@/public/plane-logos/black-horizontal-with-blue-logo.svg"; +import PlaneLogo from "@/public/plane-logos/black-horizontal-with-blue-logo.png"; import UserLoggedInImage from "@/public/user-logged-in.svg"; export const UserLoggedIn = () => { diff --git a/space/components/instance/not-ready-view.tsx b/space/components/instance/not-ready-view.tsx index e9b472960..be46a9473 100644 --- a/space/components/instance/not-ready-view.tsx +++ b/space/components/instance/not-ready-view.tsx @@ -2,28 +2,33 @@ import { FC } from "react"; import Image from "next/image"; +import Link from "next/link"; import { useTheme } from "next-themes"; // ui import { Button } from "@plane/ui"; // helper -import { GOD_MODE_URL } from "@/helpers/common.helper"; +import { GOD_MODE_URL, SPACE_BASE_PATH } from "@/helpers/common.helper"; // images import PlaneTakeOffImage from "@/public/instance/plane-takeoff.png"; import PlaneBackgroundPatternDark from "public/auth/background-pattern-dark.svg"; import PlaneBackgroundPattern from "public/auth/background-pattern.svg"; -import BluePlaneLogoWithoutText from "public/plane-logos/blue-without-text.png"; +import BlackHorizontalLogo from "public/plane-logos/black-horizontal-with-blue-logo.png"; +import WhiteHorizontalLogo from "public/plane-logos/white-horizontal-with-blue-logo.png"; export const InstanceNotReady: FC = () => { const { resolvedTheme } = useTheme(); const patternBackground = resolvedTheme === "dark" ? PlaneBackgroundPatternDark : PlaneBackgroundPattern; + const logo = resolvedTheme === "light" ? BlackHorizontalLogo : WhiteHorizontalLogo; + return (
- Plane Logo - Plane + + Plane logo +
diff --git a/space/components/views/auth.tsx b/space/components/views/auth.tsx index 15a2bae77..538519696 100644 --- a/space/components/views/auth.tsx +++ b/space/components/views/auth.tsx @@ -2,18 +2,24 @@ import { observer } from "mobx-react-lite"; import Image from "next/image"; +import Link from "next/link"; import { useTheme } from "next-themes"; // components import { AuthRoot } from "@/components/account"; +// helpers +import { SPACE_BASE_PATH } from "@/helpers/common.helper"; // images import PlaneBackgroundPatternDark from "@/public/auth/background-pattern-dark.svg"; import PlaneBackgroundPattern from "@/public/auth/background-pattern.svg"; -import BluePlaneLogoWithoutText from "@/public/plane-logos/blue-without-text-new.png"; +import BlackHorizontalLogo from "public/plane-logos/black-horizontal-with-blue-logo.png"; +import WhiteHorizontalLogo from "public/plane-logos/white-horizontal-with-blue-logo.png"; export const AuthView = observer(() => { // hooks const { resolvedTheme } = useTheme(); + const logo = resolvedTheme === "light" ? BlackHorizontalLogo : WhiteHorizontalLogo; + return (
@@ -26,11 +32,12 @@ export const AuthView = observer(() => {
- Plane Logo - Plane + + Plane logo +
-
+
diff --git a/space/helpers/authentication.helper.tsx b/space/helpers/authentication.helper.tsx index e2be3c617..0e5ab0186 100644 --- a/space/helpers/authentication.helper.tsx +++ b/space/helpers/authentication.helper.tsx @@ -1,5 +1,7 @@ import { ReactNode } from "react"; import Link from "next/link"; +// helpers +import { SUPPORT_EMAIL } from "./common.helper"; export enum EPageTypes { INIT = "INIT", @@ -152,7 +154,7 @@ const errorCodeMessages: { // sign in [EAuthenticationErrorCodes.USER_ACCOUNT_DEACTIVATED]: { title: `User account deactivated`, - message: () =>
Your account is deactivated. Contact support@plane.so.
, + message: () => `User account deactivated. Please contact ${!!SUPPORT_EMAIL ? SUPPORT_EMAIL : "administrator"}.`, }, [EAuthenticationErrorCodes.USER_DOES_NOT_EXIST]: { diff --git a/space/helpers/common.helper.ts b/space/helpers/common.helper.ts index 52c61e4e2..6db73a4a1 100644 --- a/space/helpers/common.helper.ts +++ b/space/helpers/common.helper.ts @@ -8,6 +8,8 @@ export const ADMIN_BASE_PATH = process.env.NEXT_PUBLIC_ADMIN_BASE_PATH || ""; export const SPACE_BASE_PATH = process.env.NEXT_PUBLIC_SPACE_BASE_PATH || ""; +export const SUPPORT_EMAIL = process.env.NEXT_PUBLIC_SUPPORT_EMAIL || ""; + export const WEB_BASE_URL = process.env.NEXT_PUBLIC_WEB_BASE_URL || ""; export const GOD_MODE_URL = encodeURI(`${ADMIN_BASE_URL}${ADMIN_BASE_PATH}`); diff --git a/space/lib/instance-provider.tsx b/space/lib/instance-provider.tsx index 032bc5ae9..8447d8a5f 100644 --- a/space/lib/instance-provider.tsx +++ b/space/lib/instance-provider.tsx @@ -3,17 +3,21 @@ import { ReactNode } from "react"; import { observer } from "mobx-react-lite"; import Image from "next/image"; +import Link from "next/link"; import { useTheme } from "next-themes"; import useSWR from "swr"; // components import { LogoSpinner } from "@/components/common"; import { InstanceFailureView } from "@/components/instance"; +// helpers +import { SPACE_BASE_PATH } from "@/helpers/common.helper"; // hooks import { useInstance, useUser } from "@/hooks/store"; // assets import PlaneBackgroundPatternDark from "public/auth/background-pattern-dark.svg"; import PlaneBackgroundPattern from "public/auth/background-pattern.svg"; -import BluePlaneLogoWithoutText from "public/plane-logos/blue-without-text.png"; +import BlackHorizontalLogo from "public/plane-logos/black-horizontal-with-blue-logo.png"; +import WhiteHorizontalLogo from "public/plane-logos/white-horizontal-with-blue-logo.png"; export const InstanceProvider = observer(({ children }: { children: ReactNode }) => { const { fetchInstanceInfo, instance, error } = useInstance(); @@ -27,7 +31,11 @@ export const InstanceProvider = observer(({ children }: { children: ReactNode }) revalidateIfStale: false, errorRetryCount: 0, }); - useSWR("CURRENT_USER", () => fetchCurrentUser()); + useSWR("CURRENT_USER", () => fetchCurrentUser(), { + shouldRetryOnError: false, + revalidateOnFocus: false, + revalidateIfStale: false, + }); if (!instance && !error) return ( @@ -36,14 +44,16 @@ export const InstanceProvider = observer(({ children }: { children: ReactNode })
); + const logo = resolvedTheme === "light" ? BlackHorizontalLogo : WhiteHorizontalLogo; if (error) { return (
- Plane Logo - Plane + + Plane logo +
diff --git a/space/public/plane-logos/black-horizontal-with-blue-logo.png b/space/public/plane-logos/black-horizontal-with-blue-logo.png new file mode 100644 index 000000000..c14505a6f Binary files /dev/null and b/space/public/plane-logos/black-horizontal-with-blue-logo.png differ diff --git a/space/public/plane-logos/black-horizontal-with-blue-logo.svg b/space/public/plane-logos/black-horizontal-with-blue-logo.svg deleted file mode 100644 index ae79919fc..000000000 --- a/space/public/plane-logos/black-horizontal-with-blue-logo.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/space/public/plane-logos/white-horizontal-with-blue-logo.png b/space/public/plane-logos/white-horizontal-with-blue-logo.png new file mode 100644 index 000000000..97560fb9f Binary files /dev/null and b/space/public/plane-logos/white-horizontal-with-blue-logo.png differ diff --git a/space/public/plane-logos/white-horizontal-with-blue-logo.svg b/space/public/plane-logos/white-horizontal-with-blue-logo.svg deleted file mode 100644 index 1f09cc34a..000000000 --- a/space/public/plane-logos/white-horizontal-with-blue-logo.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/web/Dockerfile.web b/web/Dockerfile.web index e6e7f0a19..eceb6c079 100644 --- a/web/Dockerfile.web +++ b/web/Dockerfile.web @@ -45,6 +45,9 @@ ENV NEXT_PUBLIC_SPACE_BASE_URL=$NEXT_PUBLIC_SPACE_BASE_URL ARG NEXT_PUBLIC_SPACE_BASE_PATH="/spaces" ENV NEXT_PUBLIC_SPACE_BASE_PATH=$NEXT_PUBLIC_SPACE_BASE_PATH +ARG NEXT_PUBLIC_WEB_BASE_URL="" +ENV NEXT_PUBLIC_WEB_BASE_URL=$NEXT_PUBLIC_WEB_BASE_URL + ENV NEXT_TELEMETRY_DISABLED 1 ENV TURBO_TELEMETRY_DISABLED 1 @@ -74,12 +77,15 @@ ENV NEXT_PUBLIC_ADMIN_BASE_URL=$NEXT_PUBLIC_ADMIN_BASE_URL ARG NEXT_PUBLIC_ADMIN_BASE_PATH="/god-mode" ENV NEXT_PUBLIC_ADMIN_BASE_PATH=$NEXT_PUBLIC_ADMIN_BASE_PATH -ARG NEXT_PUBLIC_SPACE_BASE_URL="/spaces" +ARG NEXT_PUBLIC_SPACE_BASE_URL="" ENV NEXT_PUBLIC_SPACE_BASE_URL=$NEXT_PUBLIC_SPACE_BASE_URL ARG NEXT_PUBLIC_SPACE_BASE_PATH="/spaces" ENV NEXT_PUBLIC_SPACE_BASE_PATH=$NEXT_PUBLIC_SPACE_BASE_PATH +ARG NEXT_PUBLIC_WEB_BASE_URL="" +ENV NEXT_PUBLIC_WEB_BASE_URL=$NEXT_PUBLIC_WEB_BASE_URL + ENV NEXT_TELEMETRY_DISABLED 1 ENV TURBO_TELEMETRY_DISABLED 1 diff --git a/web/components/instance/not-ready-view.tsx b/web/components/instance/not-ready-view.tsx index 1e10c4239..68221283f 100644 --- a/web/components/instance/not-ready-view.tsx +++ b/web/components/instance/not-ready-view.tsx @@ -1,5 +1,6 @@ import { FC } from "react"; import Image from "next/image"; +import Link from "next/link"; import { useTheme } from "next-themes"; import { Button } from "@plane/ui"; // helpers @@ -9,19 +10,23 @@ import PlaneTakeOffImage from "@/public/plane-takeoff.png"; // assets import PlaneBackgroundPatternDark from "public/auth/background-pattern-dark.svg"; import PlaneBackgroundPattern from "public/auth/background-pattern.svg"; -import BluePlaneLogoWithoutText from "public/plane-logos/blue-without-text.png"; +import BlackHorizontalLogo from "public/plane-logos/black-horizontal-with-blue-logo.png"; +import WhiteHorizontalLogo from "public/plane-logos/white-horizontal-with-blue-logo.png"; export const InstanceNotReady: FC = () => { const { resolvedTheme } = useTheme(); const patternBackground = resolvedTheme === "dark" ? PlaneBackgroundPatternDark : PlaneBackgroundPattern; + const logo = resolvedTheme === "light" ? BlackHorizontalLogo : WhiteHorizontalLogo; + return (
- Plane Logo - Plane + + Plane logo +
diff --git a/web/components/issues/delete-issue-modal.tsx b/web/components/issues/delete-issue-modal.tsx index 008b4038f..46f8e733d 100644 --- a/web/components/issues/delete-issue-modal.tsx +++ b/web/components/issues/delete-issue-modal.tsx @@ -13,11 +13,12 @@ type Props = { handleClose: () => void; dataId?: string | null | undefined; data?: TIssue; + isSubIssue?: boolean; onSubmit?: () => Promise; }; export const DeleteIssueModal: React.FC = (props) => { - const { dataId, data, isOpen, handleClose, onSubmit } = props; + const { dataId, data, isOpen, handleClose, isSubIssue = false, onSubmit } = props; // states const [isDeleting, setIsDeleting] = useState(false); // store hooks @@ -44,6 +45,11 @@ export const DeleteIssueModal: React.FC = (props) => { if (onSubmit) await onSubmit() .then(() => { + setToast({ + type: TOAST_TYPE.SUCCESS, + title: "Success!", + message: `${isSubIssue ? "Sub-issue" : "Issue"} deleted successfully`, + }); onClose(); }) .catch(() => { diff --git a/web/components/issues/issue-modal/modal.tsx b/web/components/issues/issue-modal/modal.tsx index 04970028b..38b328df6 100644 --- a/web/components/issues/issue-modal/modal.tsx +++ b/web/components/issues/issue-modal/modal.tsx @@ -162,7 +162,7 @@ export const CreateUpdateIssueModal: React.FC = observer((prop setToast({ type: TOAST_TYPE.SUCCESS, title: "Success!", - message: "Issue created successfully.", + message: `${is_draft_issue ? "Draft issue" : "Issue"} created successfully.`, }); captureIssueEvent({ eventName: ISSUE_CREATED, @@ -178,7 +178,7 @@ export const CreateUpdateIssueModal: React.FC = observer((prop setToast({ type: TOAST_TYPE.ERROR, title: "Error!", - message: "Issue could not be created. Please try again.", + message: `${is_draft_issue ? "Draft issue" : "Issue"} could not be created. Please try again.`, }); captureIssueEvent({ eventName: ISSUE_CREATED, diff --git a/web/components/issues/sub-issues/root.tsx b/web/components/issues/sub-issues/root.tsx index a88434e3b..b697ff20a 100644 --- a/web/components/issues/sub-issues/root.tsx +++ b/web/components/issues/sub-issues/root.tsx @@ -1,20 +1,22 @@ import { FC, useCallback, useEffect, useMemo, useState } from "react"; import { observer } from "mobx-react"; import { useRouter } from "next/router"; +// icons import { Plus, ChevronRight, Loader, Pencil } from "lucide-react"; +// types import { IUser, TIssue } from "@plane/types"; -// hooks +// ui import { CircularProgressIndicator, CustomMenu, LayersIcon, TOAST_TYPE, setToast } from "@plane/ui"; +// components import { ExistingIssuesListModal } from "@/components/core"; import { CreateUpdateIssueModal, DeleteIssueModal } from "@/components/issues"; +// helpers import { cn } from "@/helpers/common.helper"; import { copyTextToClipboard } from "@/helpers/string.helper"; +// hooks import { useEventTracker, useIssueDetail } from "@/hooks/store"; -// components +// local components import { IssueList } from "./issues-list"; -// ui -// helpers -// types export interface ISubIssuesRoot { workspaceSlug: string; @@ -248,11 +250,6 @@ export const SubIssuesRoot: FC = observer((props) => { try { setSubIssueHelpers(parentIssueId, "issue_loader", issueId); await deleteSubIssue(workspaceSlug, projectId, parentIssueId, issueId); - setToast({ - type: TOAST_TYPE.SUCCESS, - title: "Error!", - message: "Issue deleted successfully", - }); captureIssueEvent({ eventName: "Sub-issue deleted", payload: { id: issueId, state: "SUCCESS", element: "Issue detail page" }, @@ -535,6 +532,7 @@ export const SubIssuesRoot: FC = observer((props) => { issueCrudState?.delete?.issue?.id as string ) } + isSubIssue /> )} diff --git a/web/layouts/auth-layout/workspace-wrapper.tsx b/web/layouts/auth-layout/workspace-wrapper.tsx index 972bb92cb..603fa9b6b 100644 --- a/web/layouts/auth-layout/workspace-wrapper.tsx +++ b/web/layouts/auth-layout/workspace-wrapper.tsx @@ -12,8 +12,8 @@ import { LogoSpinner } from "@/components/common"; import { useMember, useProject, useUser, useWorkspace } from "@/hooks/store"; import { usePlatformOS } from "@/hooks/use-platform-os"; // images -import PlaneBlackLogo from "public/plane-logos/black-horizontal-with-blue-logo.svg"; -import PlaneWhiteLogo from "public/plane-logos/white-horizontal-with-blue-logo.svg"; +import PlaneBlackLogo from "public/plane-logos/black-horizontal-with-blue-logo.png"; +import PlaneWhiteLogo from "public/plane-logos/white-horizontal-with-blue-logo.png"; import WorkSpaceNotAvailable from "public/workspace/workspace-not-available.png"; export interface IWorkspaceAuthWrapper { diff --git a/web/package.json b/web/package.json index e2a1dc225..52542afc4 100644 --- a/web/package.json +++ b/web/package.json @@ -35,7 +35,7 @@ "@sentry/nextjs": "^7.108.0", "axios": "^1.1.3", "clsx": "^2.0.0", - "cmdk": "^0.2.0", + "cmdk": "^1.0.0", "date-fns": "^2.30.0", "dompurify": "^3.0.11", "dotenv": "^16.0.3", @@ -83,4 +83,4 @@ "tsconfig": "*", "typescript": "4.7.4" } -} +} \ No newline at end of file diff --git a/web/pages/accounts/forgot-password.tsx b/web/pages/accounts/forgot-password.tsx index f5c9df44f..8810e47cd 100644 --- a/web/pages/accounts/forgot-password.tsx +++ b/web/pages/accounts/forgot-password.tsx @@ -30,7 +30,8 @@ import { AuthService } from "@/services/auth.service"; // images import PlaneBackgroundPatternDark from "public/auth/background-pattern-dark.svg"; import PlaneBackgroundPattern from "public/auth/background-pattern.svg"; -import BluePlaneLogoWithoutText from "public/plane-logos/blue-without-text.png"; +import BlackHorizontalLogo from "public/plane-logos/black-horizontal-with-blue-logo.png"; +import WhiteHorizontalLogo from "public/plane-logos/white-horizontal-with-blue-logo.png"; type TForgotPasswordFormValues = { email: string; @@ -95,9 +96,11 @@ const ForgotPasswordPage: NextPageWithLayout = () => { }); }; + const logo = resolvedTheme === "light" ? BlackHorizontalLogo : WhiteHorizontalLogo; + return (
- +
{
- Plane Logo - Plane + + Plane logo +
New to Plane?{" "} diff --git a/web/pages/accounts/reset-password.tsx b/web/pages/accounts/reset-password.tsx index a7e73ae76..92756cd43 100644 --- a/web/pages/accounts/reset-password.tsx +++ b/web/pages/accounts/reset-password.tsx @@ -1,5 +1,6 @@ import { ReactElement, useEffect, useMemo, useState } from "react"; import Image from "next/image"; +import Link from "next/link"; import { useRouter } from "next/router"; // icons import { useTheme } from "next-themes"; @@ -30,7 +31,8 @@ import { AuthService } from "@/services/auth.service"; // images import PlaneBackgroundPatternDark from "public/auth/background-pattern-dark.svg"; import PlaneBackgroundPattern from "public/auth/background-pattern.svg"; -import BluePlaneLogoWithoutText from "public/plane-logos/blue-without-text.png"; +import BlackHorizontalLogo from "public/plane-logos/black-horizontal-with-blue-logo.png"; +import WhiteHorizontalLogo from "public/plane-logos/white-horizontal-with-blue-logo.png"; type TResetPasswordFormValues = { email: string; @@ -101,9 +103,11 @@ const ResetPasswordPage: NextPageWithLayout = () => { const confirmPassword = resetFormData?.confirm_password ?? ""; const renderPasswordMatchError = !isRetryPasswordInputFocused || confirmPassword.length >= password.length; + const logo = resolvedTheme === "light" ? BlackHorizontalLogo : WhiteHorizontalLogo; + return (
- +
{
- Plane Logo - Plane + + Plane logo +
diff --git a/web/pages/accounts/set-password.tsx b/web/pages/accounts/set-password.tsx index d303cb8ca..9328d2cc9 100644 --- a/web/pages/accounts/set-password.tsx +++ b/web/pages/accounts/set-password.tsx @@ -1,6 +1,7 @@ import { FormEvent, ReactElement, useEffect, useMemo, useState } from "react"; import { observer } from "mobx-react-lite"; import Image from "next/image"; +import Link from "next/link"; import { useRouter } from "next/router"; // icons import { useTheme } from "next-themes"; @@ -26,7 +27,8 @@ import { AuthService } from "@/services/auth.service"; // images import PlaneBackgroundPatternDark from "public/auth/background-pattern-dark.svg"; import PlaneBackgroundPattern from "public/auth/background-pattern.svg"; -import BluePlaneLogoWithoutText from "public/plane-logos/blue-without-text.png"; +import BlackHorizontalLogo from "public/plane-logos/black-horizontal-with-blue-logo.png"; +import WhiteHorizontalLogo from "public/plane-logos/white-horizontal-with-blue-logo.png"; type TResetPasswordFormValues = { email: string; @@ -103,9 +105,11 @@ const SetPasswordPage: NextPageWithLayout = observer(() => { const confirmPassword = passwordFormData?.confirm_password ?? ""; const renderPasswordMatchError = !isRetryPasswordInputFocused || confirmPassword.length >= password.length; + const logo = resolvedTheme === "light" ? BlackHorizontalLogo : WhiteHorizontalLogo; + return (
- +
{
- Plane Logo - Plane + + Plane logo +
diff --git a/web/pages/create-workspace.tsx b/web/pages/create-workspace.tsx index 08fcea958..e5992e008 100644 --- a/web/pages/create-workspace.tsx +++ b/web/pages/create-workspace.tsx @@ -16,8 +16,8 @@ import DefaultLayout from "@/layouts/default-layout"; import { NextPageWithLayout } from "@/lib/types"; // wrappers import { AuthenticationWrapper } from "@/lib/wrappers"; -import BlackHorizontalLogo from "public/plane-logos/black-horizontal-with-blue-logo.svg"; -import WhiteHorizontalLogo from "public/plane-logos/white-horizontal-with-blue-logo.svg"; +import BlackHorizontalLogo from "public/plane-logos/black-horizontal-with-blue-logo.png"; +import WhiteHorizontalLogo from "public/plane-logos/white-horizontal-with-blue-logo.png"; // types const CreateWorkspacePage: NextPageWithLayout = observer(() => { @@ -39,6 +39,8 @@ const CreateWorkspacePage: NextPageWithLayout = observer(() => { await updateUserProfile({ last_workspace_id: workspace.id }).then(() => router.push(`/${workspace.slug}`)); }; + const logo = resolvedTheme === "light" ? BlackHorizontalLogo : WhiteHorizontalLogo; + return ( <> @@ -50,11 +52,7 @@ const CreateWorkspacePage: NextPageWithLayout = observer(() => { href="/" >
- {resolvedTheme === "light" ? ( - Plane black logo - ) : ( - Plane white logo - )} + Plane logo
diff --git a/web/pages/index.tsx b/web/pages/index.tsx index 3336185c7..ee22cd77f 100644 --- a/web/pages/index.tsx +++ b/web/pages/index.tsx @@ -22,16 +22,19 @@ import { AuthenticationWrapper } from "@/lib/wrappers"; // assets import PlaneBackgroundPatternDark from "public/auth/background-pattern-dark.svg"; import PlaneBackgroundPattern from "public/auth/background-pattern.svg"; -import BluePlaneLogoWithoutText from "public/plane-logos/blue-without-text.png"; +import BlackHorizontalLogo from "public/plane-logos/black-horizontal-with-blue-logo.png"; +import WhiteHorizontalLogo from "public/plane-logos/white-horizontal-with-blue-logo.png"; const HomePage: NextPageWithLayout = observer(() => { const { resolvedTheme } = useTheme(); // hooks const { captureEvent } = useEventTracker(); + const logo = resolvedTheme === "light" ? BlackHorizontalLogo : WhiteHorizontalLogo; + return (
- +
{
- Plane Logo - Plane + + Plane logo +
New to Plane?{" "} diff --git a/web/pages/invitations/index.tsx b/web/pages/invitations/index.tsx index 0fe64519d..aac6c833b 100644 --- a/web/pages/invitations/index.tsx +++ b/web/pages/invitations/index.tsx @@ -31,8 +31,8 @@ import { AuthenticationWrapper } from "@/lib/wrappers"; import { WorkspaceService } from "@/services/workspace.service"; // images import emptyInvitation from "public/empty-state/invitation.svg"; -import BlackHorizontalLogo from "public/plane-logos/black-horizontal-with-blue-logo.svg"; -import WhiteHorizontalLogo from "public/plane-logos/white-horizontal-with-blue-logo.svg"; +import BlackHorizontalLogo from "public/plane-logos/black-horizontal-with-blue-logo.png"; +import WhiteHorizontalLogo from "public/plane-logos/white-horizontal-with-blue-logo.png"; const workspaceService = new WorkspaceService(); @@ -127,6 +127,8 @@ const UserInvitationsPage: NextPageWithLayout = observer(() => { }); }; + const logo = resolvedTheme === "light" ? BlackHorizontalLogo : WhiteHorizontalLogo; + return ( <> @@ -135,11 +137,7 @@ const UserInvitationsPage: NextPageWithLayout = observer(() => {
- {resolvedTheme === "light" ? ( - Plane black logo - ) : ( - Plane white logo - )} + Plane logo
diff --git a/web/pages/sign-up.tsx b/web/pages/sign-up.tsx index a3013e920..2c511d730 100644 --- a/web/pages/sign-up.tsx +++ b/web/pages/sign-up.tsx @@ -21,7 +21,9 @@ import { AuthenticationWrapper } from "@/lib/wrappers"; // assets import PlaneBackgroundPatternDark from "public/auth/background-pattern-dark.svg"; import PlaneBackgroundPattern from "public/auth/background-pattern.svg"; -import BluePlaneLogoWithoutText from "public/plane-logos/blue-without-text.png"; + +import BlackHorizontalLogo from "public/plane-logos/black-horizontal-with-blue-logo.png"; +import WhiteHorizontalLogo from "public/plane-logos/white-horizontal-with-blue-logo.png"; export type AuthType = "sign-in" | "sign-up"; @@ -31,9 +33,11 @@ const SignInPage: NextPageWithLayout = observer(() => { // hooks const { resolvedTheme } = useTheme(); + const logo = resolvedTheme === "light" ? BlackHorizontalLogo : WhiteHorizontalLogo; + return (
- +
{
- Plane Logo - Plane + + Plane logo +
Already have an account?{" "} diff --git a/web/public/plane-logos/black-horizontal-with-blue-logo.png b/web/public/plane-logos/black-horizontal-with-blue-logo.png new file mode 100644 index 000000000..c14505a6f Binary files /dev/null and b/web/public/plane-logos/black-horizontal-with-blue-logo.png differ diff --git a/web/public/plane-logos/black-horizontal-with-blue-logo.svg b/web/public/plane-logos/black-horizontal-with-blue-logo.svg deleted file mode 100644 index ae79919fc..000000000 --- a/web/public/plane-logos/black-horizontal-with-blue-logo.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/web/public/plane-logos/white-horizontal-with-blue-logo.png b/web/public/plane-logos/white-horizontal-with-blue-logo.png new file mode 100644 index 000000000..97560fb9f Binary files /dev/null and b/web/public/plane-logos/white-horizontal-with-blue-logo.png differ diff --git a/web/public/plane-logos/white-horizontal-with-blue-logo.svg b/web/public/plane-logos/white-horizontal-with-blue-logo.svg deleted file mode 100644 index 1f09cc34a..000000000 --- a/web/public/plane-logos/white-horizontal-with-blue-logo.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/web/store/root.store.ts b/web/store/root.store.ts index b76fc4756..4e6a74815 100644 --- a/web/store/root.store.ts +++ b/web/store/root.store.ts @@ -96,7 +96,6 @@ export class RootStore { this.dashboard = new DashboardStore(this); this.router = new RouterStore(); this.commandPalette = new CommandPaletteStore(); - this.theme = new ThemeStore(this); this.eventTracker = new EventTrackerStore(this); this.instance = new InstanceStore(); this.user = new UserStore(this); diff --git a/yarn.lock b/yarn.lock index 34be66b97..b1a7ba562 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2065,13 +2065,6 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== -"@radix-ui/primitive@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.0.0.tgz#e1d8ef30b10ea10e69c76e896f608d9276352253" - integrity sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.0.1.tgz#e46f9958b35d10e9f6dc71c497305c22e3e55dbd" @@ -2079,13 +2072,6 @@ dependencies: "@babel/runtime" "^7.13.10" -"@radix-ui/react-compose-refs@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz#37595b1f16ec7f228d698590e78eeed18ff218ae" - integrity sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz#7ed868b66946aa6030e580b1ffca386dd4d21989" @@ -2093,13 +2079,6 @@ dependencies: "@babel/runtime" "^7.13.10" -"@radix-ui/react-context@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.0.0.tgz#f38e30c5859a9fb5e9aa9a9da452ee3ed9e0aee0" - integrity sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-context@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.0.1.tgz#fe46e67c96b240de59187dcb7a1a50ce3e2ec00c" @@ -2107,28 +2086,7 @@ dependencies: "@babel/runtime" "^7.13.10" -"@radix-ui/react-dialog@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.0.0.tgz#997e97cb183bc90bd888b26b8e23a355ac9fe5f0" - integrity sha512-Yn9YU+QlHYLWwV1XfKiqnGVpWYWk6MeBVM6x/bcoyPvxgjQGoeT35482viLPctTMWoMw0PoHgqfSox7Ig+957Q== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.0" - "@radix-ui/react-compose-refs" "1.0.0" - "@radix-ui/react-context" "1.0.0" - "@radix-ui/react-dismissable-layer" "1.0.0" - "@radix-ui/react-focus-guards" "1.0.0" - "@radix-ui/react-focus-scope" "1.0.0" - "@radix-ui/react-id" "1.0.0" - "@radix-ui/react-portal" "1.0.0" - "@radix-ui/react-presence" "1.0.0" - "@radix-ui/react-primitive" "1.0.0" - "@radix-ui/react-slot" "1.0.0" - "@radix-ui/react-use-controllable-state" "1.0.0" - aria-hidden "^1.1.1" - react-remove-scroll "2.5.4" - -"@radix-ui/react-dialog@^1.0.5": +"@radix-ui/react-dialog@1.0.5", "@radix-ui/react-dialog@^1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.0.5.tgz#71657b1b116de6c7a0b03242d7d43e01062c7300" integrity sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q== @@ -2149,18 +2107,6 @@ aria-hidden "^1.1.1" react-remove-scroll "2.5.5" -"@radix-ui/react-dismissable-layer@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.0.tgz#35b7826fa262fd84370faef310e627161dffa76b" - integrity sha512-n7kDRfx+LB1zLueRDvZ1Pd0bxdJWDUZNQ/GWoxDn2prnuJKRdxsjulejX/ePkOsLi2tTm6P24mDqlMSgQpsT6g== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.0" - "@radix-ui/react-compose-refs" "1.0.0" - "@radix-ui/react-primitive" "1.0.0" - "@radix-ui/react-use-callback-ref" "1.0.0" - "@radix-ui/react-use-escape-keydown" "1.0.0" - "@radix-ui/react-dismissable-layer@1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz#3f98425b82b9068dfbab5db5fff3df6ebf48b9d4" @@ -2173,13 +2119,6 @@ "@radix-ui/react-use-callback-ref" "1.0.1" "@radix-ui/react-use-escape-keydown" "1.0.3" -"@radix-ui/react-focus-guards@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz#339c1c69c41628c1a5e655f15f7020bf11aa01fa" - integrity sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-focus-guards@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz#1ea7e32092216b946397866199d892f71f7f98ad" @@ -2187,16 +2126,6 @@ dependencies: "@babel/runtime" "^7.13.10" -"@radix-ui/react-focus-scope@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.0.tgz#95a0c1188276dc8933b1eac5f1cdb6471e01ade5" - integrity sha512-C4SWtsULLGf/2L4oGeIHlvWQx7Rf+7cX/vKOAD2dXW0A1b5QXwi3wWeaEgW+wn+SEVrraMUk05vLU9fZZz5HbQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.0" - "@radix-ui/react-primitive" "1.0.0" - "@radix-ui/react-use-callback-ref" "1.0.0" - "@radix-ui/react-focus-scope@1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz#2ac45fce8c5bb33eb18419cdc1905ef4f1906525" @@ -2207,14 +2136,6 @@ "@radix-ui/react-primitive" "1.0.3" "@radix-ui/react-use-callback-ref" "1.0.1" -"@radix-ui/react-id@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.0.0.tgz#8d43224910741870a45a8c9d092f25887bb6d11e" - integrity sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-layout-effect" "1.0.0" - "@radix-ui/react-id@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.0.1.tgz#73cdc181f650e4df24f0b6a5b7aa426b912c88c0" @@ -2223,14 +2144,6 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-use-layout-effect" "1.0.1" -"@radix-ui/react-portal@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.0.0.tgz#7220b66743394fabb50c55cb32381395cc4a276b" - integrity sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-primitive" "1.0.0" - "@radix-ui/react-portal@1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.0.4.tgz#df4bfd353db3b1e84e639e9c63a5f2565fb00e15" @@ -2239,15 +2152,6 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-primitive" "1.0.3" -"@radix-ui/react-presence@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.0.0.tgz#814fe46df11f9a468808a6010e3f3ca7e0b2e84a" - integrity sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.0" - "@radix-ui/react-use-layout-effect" "1.0.0" - "@radix-ui/react-presence@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.0.1.tgz#491990ba913b8e2a5db1b06b203cb24b5cdef9ba" @@ -2257,14 +2161,6 @@ "@radix-ui/react-compose-refs" "1.0.1" "@radix-ui/react-use-layout-effect" "1.0.1" -"@radix-ui/react-primitive@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz#376cd72b0fcd5e0e04d252ed33eb1b1f025af2b0" - integrity sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-slot" "1.0.0" - "@radix-ui/react-primitive@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz#d49ea0f3f0b2fe3ab1cb5667eb03e8b843b914d0" @@ -2273,14 +2169,6 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-slot" "1.0.2" -"@radix-ui/react-slot@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.0.tgz#7fa805b99891dea1e862d8f8fbe07f4d6d0fd698" - integrity sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.0" - "@radix-ui/react-slot@1.0.2", "@radix-ui/react-slot@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.2.tgz#a9ff4423eade67f501ffb32ec22064bc9d3099ab" @@ -2289,13 +2177,6 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-compose-refs" "1.0.1" -"@radix-ui/react-use-callback-ref@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz#9e7b8b6b4946fe3cbe8f748c82a2cce54e7b6a90" - integrity sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-callback-ref@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz#f4bb1f27f2023c984e6534317ebc411fc181107a" @@ -2303,14 +2184,6 @@ dependencies: "@babel/runtime" "^7.13.10" -"@radix-ui/react-use-controllable-state@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz#a64deaafbbc52d5d407afaa22d493d687c538b7f" - integrity sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-callback-ref" "1.0.0" - "@radix-ui/react-use-controllable-state@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz#ecd2ced34e6330caf89a82854aa2f77e07440286" @@ -2319,14 +2192,6 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-use-callback-ref" "1.0.1" -"@radix-ui/react-use-escape-keydown@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.0.tgz#aef375db4736b9de38a5a679f6f49b45a060e5d1" - integrity sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-callback-ref" "1.0.0" - "@radix-ui/react-use-escape-keydown@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz#217b840c250541609c66f67ed7bab2b733620755" @@ -2335,13 +2200,6 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-use-callback-ref" "1.0.1" -"@radix-ui/react-use-layout-effect@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz#2fc19e97223a81de64cd3ba1dc42ceffd82374dc" - integrity sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-layout-effect@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz#be8c7bc809b0c8934acf6657b577daf948a75399" @@ -5610,12 +5468,13 @@ clsx@^2.0.0, clsx@^2.1.0: resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== -cmdk@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/cmdk/-/cmdk-0.2.1.tgz#aa8e1332bb0b8d8484e793017c82537351188d9a" - integrity sha512-U6//9lQ6JvT47+6OF6Gi8BvkxYQ8SCRRSKIJkthIMsFsLZRG0cKvTtuTaefyIKMQb8rvvXy0wGdpTNq/jPtm+g== +cmdk@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cmdk/-/cmdk-1.0.0.tgz#0a095fdafca3dfabed82d1db78a6262fb163ded9" + integrity sha512-gDzVf0a09TvoJ5jnuPvygTB77+XdOSwEmJ88L6XPFPlv7T3RxbP9jgenfylrAMD0+Le1aO0nVjQUzl2g+vjz5Q== dependencies: - "@radix-ui/react-dialog" "1.0.0" + "@radix-ui/react-dialog" "1.0.5" + "@radix-ui/react-primitive" "1.0.3" color-convert@^1.9.0: version "1.9.3" @@ -10896,17 +10755,6 @@ react-remove-scroll-bar@^2.3.3: react-style-singleton "^2.2.1" tslib "^2.0.0" -react-remove-scroll@2.5.4: - version "2.5.4" - resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz#afe6491acabde26f628f844b67647645488d2ea0" - integrity sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA== - dependencies: - react-remove-scroll-bar "^2.3.3" - react-style-singleton "^2.2.1" - tslib "^2.1.0" - use-callback-ref "^1.3.0" - use-sidecar "^1.1.2" - react-remove-scroll@2.5.5: version "2.5.5" resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz#1e31a1260df08887a8a0e46d09271b52b3a37e77" @@ -11760,6 +11608,7 @@ string-argv@0.3.2: integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + name string-width-cjs version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -13252,6 +13101,7 @@ workbox-window@6.6.1, workbox-window@^6.5.4: workbox-core "6.6.1" "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + name wrap-ansi-cjs version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==