From fdceb5176b4dec7607ae09c10c22370f5f9b00f2 Mon Sep 17 00:00:00 2001 From: Daffa Abhipraya Date: Wed, 19 Aug 2026 12:28:54 +0700 Subject: [PATCH 1/2] feat: redesign sign-in page --- apps/web/app/signin/page.tsx | 108 +++++++++++++++++++--- apps/web/components/MarkaLogo.tsx | 6 +- apps/web/components/signin/SignInForm.tsx | 12 +-- 3 files changed, 107 insertions(+), 19 deletions(-) diff --git a/apps/web/app/signin/page.tsx b/apps/web/app/signin/page.tsx index f2fe6cc8c..e5fb6bc3c 100644 --- a/apps/web/app/signin/page.tsx +++ b/apps/web/app/signin/page.tsx @@ -1,6 +1,8 @@ import { redirect } from "next/dist/client/components/navigation"; +import Image from "next/image"; import MarkaLogo from "@/components/MarkaLogo"; import SignInForm from "@/components/signin/SignInForm"; +import { MARKA } from "@/lib/brand"; import { getServerAuthSession } from "@/server/auth"; export default async function SignInPage() { @@ -10,17 +12,101 @@ export default async function SignInPage() { } return ( -
-
-
-
- +
+
+ + +
+ {MARKA.name} + +
+ +
+

+ Your personal library +

+

+ Keep the things worth finding. +

+

+ Save links, notes, images, and pages in one private place, then get + back to them when you need them. +

+
+ +

+ Self-hosted. Built for your collection. +

+
+ +
+
+
+ +
+ +

+ Private by design, ready when you are. +

- -
-
+ + ); } diff --git a/apps/web/components/MarkaLogo.tsx b/apps/web/components/MarkaLogo.tsx index ad02a5952..766f8055d 100644 --- a/apps/web/components/MarkaLogo.tsx +++ b/apps/web/components/MarkaLogo.tsx @@ -3,12 +3,14 @@ import Image from "next/image"; import { MARKA } from "@/lib/brand"; export default function MarkaLogo({ height }: { height: number }) { + const width = Math.round((height * 510) / 135); + return ( 0 && ( )} - - - + + + Welcome back - + Sign in to continue to {MARKA.name}. - + {serverConfig.demoMode && ( @@ -61,7 +61,7 @@ export default async function SignInForm() { <>
- + Or continue with
From 6874a0bf088033186a227e8e589199cdad272d98 Mon Sep 17 00:00:00 2001 From: Daffa Abhipraya Date: Wed, 19 Aug 2026 12:54:09 +0700 Subject: [PATCH 2/2] fix: translate sign-in copy --- apps/web/app/signin/page.tsx | 14 ++++++++------ apps/web/lib/i18n/locales/en/translation.json | 7 +++++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/apps/web/app/signin/page.tsx b/apps/web/app/signin/page.tsx index e5fb6bc3c..9c42e6ac0 100644 --- a/apps/web/app/signin/page.tsx +++ b/apps/web/app/signin/page.tsx @@ -3,10 +3,13 @@ import Image from "next/image"; import MarkaLogo from "@/components/MarkaLogo"; import SignInForm from "@/components/signin/SignInForm"; import { MARKA } from "@/lib/brand"; +import { useTranslation } from "@/lib/i18n/server"; import { getServerAuthSession } from "@/server/auth"; export default async function SignInPage() { const session = await getServerAuthSession(); + // oxlint-disable-next-line rules-of-hooks + const { t } = await useTranslation(); if (session) { redirect("/"); } @@ -80,19 +83,18 @@ export default async function SignInPage() {

- Your personal library + {t("signin.eyebrow")}

- Keep the things worth finding. + {t("signin.title")}

- Save links, notes, images, and pages in one private place, then get - back to them when you need them. + {t("signin.description")}

- Self-hosted. Built for your collection. + {t("signin.footer")}

@@ -103,7 +105,7 @@ export default async function SignInPage() {

- Private by design, ready when you are. + {t("signin.privacy_note")}

diff --git a/apps/web/lib/i18n/locales/en/translation.json b/apps/web/lib/i18n/locales/en/translation.json index 15f836569..e3efb0ae4 100644 --- a/apps/web/lib/i18n/locales/en/translation.json +++ b/apps/web/lib/i18n/locales/en/translation.json @@ -45,6 +45,13 @@ "bookmarks": "Bookmarks", "storage": "Storage" }, + "signin": { + "eyebrow": "Your personal library", + "title": "Keep the things worth finding.", + "description": "Save links, notes, images, and pages in one private place, then get back to them when you need them.", + "footer": "Self-hosted. Built for your collection.", + "privacy_note": "Private by design, ready when you are." + }, "layouts": { "masonry": "Masonry", "grid": "Grid",