diff --git a/vibn-frontend/app/auth/layout.tsx b/vibn-frontend/app/auth/layout.tsx
index 6f0908c..0e9fb78 100644
--- a/vibn-frontend/app/auth/layout.tsx
+++ b/vibn-frontend/app/auth/layout.tsx
@@ -1,19 +1,9 @@
import type { Metadata } from "next";
-import { Plus_Jakarta_Sans } from "next/font/google";
import { Toaster } from "sonner";
-import { JustineAuthShell } from "@/marketing/components/justine/JustineAuthShell";
-import "../styles/justine/02-signup.css";
-
-const justineJakarta = Plus_Jakarta_Sans({
- subsets: ["latin"],
- weight: ["400", "500", "600", "700", "800"],
- variable: "--font-justine-jakarta",
- display: "swap",
-});
+import "../styles/new-site.css";
export const metadata: Metadata = {
- title: "Sign in · vibn",
- description: "Sign in to your vibn workspace with Google.",
+ title: "Vibn — Sign In",
};
export default function AuthLayout({
@@ -22,12 +12,11 @@ export default function AuthLayout({
children: React.ReactNode;
}) {
return (
-
-
{children}
-
+
+
+ {children}
+
+
);
}
diff --git a/vibn-frontend/app/components/NextAuthComponent.tsx b/vibn-frontend/app/components/NextAuthComponent.tsx
index 19f2deb..0cd0fd8 100644
--- a/vibn-frontend/app/components/NextAuthComponent.tsx
+++ b/vibn-frontend/app/components/NextAuthComponent.tsx
@@ -8,193 +8,89 @@ import { Suspense, useState } from "react";
function authErrorMessage(code: string | null): string | null {
if (!code) return null;
if (code === "Callback") {
- return (
- "Google could not complete sign-in. Most often: DATABASE_URL in vibn-frontend/.env.local must reach Postgres from " +
- "this machine (Coolify internal hostnames only work inside Docker). Use a public host/port, tunnel, or proxy; " +
- "then run npx prisma db push. Also confirm NEXTAUTH_URL matches the browser (http://localhost:3000) and " +
- "Google redirect URI http://localhost:3000/api/auth/callback/google. Dev check: GET /api/debug/prisma — see terminal for [next-auth] logs."
- );
- }
- if (code === "Configuration") {
- return "Auth is misconfigured (check GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, NEXTAUTH_SECRET).";
- }
- if (code === "AccessDenied") {
- return "Access was denied. You may need to be added as a test user if the OAuth app is in testing mode.";
- }
- return `Sign-in error: ${code}`;
-}
-
-const showDevLocalSignIn =
- process.env.NODE_ENV === "development" &&
- Boolean(process.env.NEXT_PUBLIC_DEV_LOCAL_AUTH_EMAIL?.trim());
-
-function NextAuthForm() {
- const [isLoading, setIsLoading] = useState(false);
- const [devSecret, setDevSecret] = useState("");
- const searchParams = useSearchParams();
- const callbackUrl = searchParams.get("callbackUrl") ?? "/auth";
- const errorCode = searchParams.get("error");
- const errorHint = authErrorMessage(errorCode);
-
- const handleGoogleSignIn = async () => {
- setIsLoading(true);
- try {
- await signIn("google", { callbackUrl });
- } catch (error) {
- console.error("Google sign-in error:", error);
- setIsLoading(false);
- }
- };
-
- const handleDevLocalSignIn = async () => {
- setIsLoading(true);
- try {
- await signIn("dev-local", {
- callbackUrl,
- password: devSecret,
- redirect: true,
- });
- } catch (error) {
- console.error("Dev local sign-in error:", error);
- setIsLoading(false);
- }
- };
-
- // Detect new-vs-returning purely from local search params; we
- // don't have a session at this render path, but the homepage
- // sends "Get started" links with `?new=1` and "Sign in" links
- // without it. Fall back to neutral copy that works for both.
- const isNewUser = searchParams.get("new") === "1";
- const title = isNewUser ? "Create your account" : "Sign in or sign up";
- const subtitle = isNewUser
- ? "Continue with Google to set up your Vibn workspace."
- : "Continue with Google. New here? An account is created automatically on first sign-in.";
-
+
return (
-
-
-
{title}
-
{subtitle}
+
+ {/* Logo */}
+
+
+ {/* Card */}
+
+
+
+ {title}
+
+
+ {subtitle}
+
+
{errorHint && (
-
+
{errorHint}
)}
{showDevLocalSignIn && (
-
-
- Local only: sign in without Google as{" "}
- {process.env.NEXT_PUBLIC_DEV_LOCAL_AUTH_EMAIL}
+
+
+ Local only: sign in without Google as
+ {process.env.NEXT_PUBLIC_DEV_LOCAL_AUTH_EMAIL}
-
)}
+
-
- By continuing, you agree to our{" "}
- Terms and Privacy Policy.
-
+
);
}
-
-function NextAuthFallback() {
- return (
-
- );
-}
-
-export default function NextAuthComponent() {
- return (
-
}>
-
-
- );
-}