From 41c0a9333b30be97ec6cb8a62118b8f25455d6a0 Mon Sep 17 00:00:00 2001 From: Sreeram Sreedhar Date: Mon, 22 Jun 2026 23:02:14 -0700 Subject: [PATCH] Align desktop login with web split layout --- apps/desktop/app/login/page.tsx | 427 +++++++++++++++++++++----------- 1 file changed, 286 insertions(+), 141 deletions(-) diff --git a/apps/desktop/app/login/page.tsx b/apps/desktop/app/login/page.tsx index 64475d4a..e9643eb1 100644 --- a/apps/desktop/app/login/page.tsx +++ b/apps/desktop/app/login/page.tsx @@ -1,6 +1,12 @@ "use client" -import { Logo, LogoFull } from "@ui/assets/Logo" +import { Logo } from "@ui/assets/Logo" +import { + ClaudeDesktopIcon, + GoogleDrive, + MCPIcon, + Notion, +} from "@ui/assets/icons" import { ExternalAuthButton } from "@ui/button/external-auth" import { Badge } from "@ui/components/badge" import { Button } from "@ui/components/button" @@ -100,153 +106,250 @@ export default function LoginPage() { const isAuthBusy = isBrowserAuthPending || isSubmitting return ( -
-
- -
+ - + + Memory API ↗ + + + -
-
-

- Never forget anything, anywhere - with supermemory -

-

- Save from Chrome, Notion, X - search it all in one place. -

-
- -
-
-
-
- - Last used - -
- -
- } - authProvider="Google" - className="w-full" - disabled={isAuthBusy} - onClick={startBrowserAuth} - type="button" - /> - - } - authProvider="Github" - className="w-full" - disabled={isAuthBusy} - onClick={startBrowserAuth} - type="button" - /> - - - -
- setEmail(event.target.value)} - placeholder="your@email.com" - type="email" - autoComplete="email" - className="h-[68px] rounded-[18px] border-[#17202e] bg-[#040a14]/70 px-8 text-[22px] text-foreground placeholder:text-muted-foreground/45" - /> - - -
- -

- By continuing, you agree to our{" "} - - Terms - {" "} - and{" "} - - Privacy Policy - - . -

- - {error ? ( -

- {error} -

- ) : null} - - {desktopDevAuthEnabled ? ( -
-
- - setToken(event.target.value)} - placeholder="sm_..." - type="password" - autoComplete="off" - /> -
- -
- ) : null} -
+
+
+
+

+ Never forget anything, anywhere + with supermemory +

+

+ Save from Chrome, Notion, X - search it all in one place. +

- {isBrowserAuthPending ? ( -
- -

Redirecting...

+
+
+
+ + Last used + +
+ +
+ } + authProvider="Google" + className="w-full" + disabled={isAuthBusy} + onClick={startBrowserAuth} + type="button" + /> + + } + authProvider="Github" + className="w-full" + disabled={isAuthBusy} + onClick={startBrowserAuth} + type="button" + /> + + + +
+ setEmail(event.target.value)} + placeholder="your@email.com" + type="email" + autoComplete="email" + className="h-14 rounded-xl border-[#17202e] bg-[#040a14]/70 px-6 text-base text-foreground placeholder:text-muted-foreground/45" + /> + + +
+ +

+ By continuing, you agree to our{" "} + + Terms + {" "} + and{" "} + + Privacy Policy + + . +

+ + {error ? ( +

+ {error} +

+ ) : null} + + {desktopDevAuthEnabled ? ( +
+ + Development API key + +
+
+ + setToken(event.target.value)} + placeholder="sm_..." + type="password" + autoComplete="off" + /> +
+ +
+
+ ) : null} +
- ) : null} + + {isBrowserAuthPending ? ( +
+ +

+ Redirecting... +

+
+ ) : null} +
-
-
+ + + + ) +} + +function DesktopLoginToolsPanel() { + return ( + + ) +} + +function FloatingToolNode({ + x, + y, + label, + children, +}: { + x: number + y: number + label: string + children: React.ReactNode +}) { + return ( +
+
+ {children} +
) } @@ -299,6 +402,48 @@ function GithubIcon() { ) } +function ChromeLogo({ className }: { className?: string }) { + return ( + + Chrome + + + + + + + ) +} + +function RaycastMark({ className }: { className?: string }) { + return ( + + Raycast + + + ) +} + function formatError(error: unknown, fallback: string) { return error instanceof Error ? error.message