From c4cc05a94273f45c59ebed91acff52bd89ecce24 Mon Sep 17 00:00:00 2001 From: Schalli Date: Mon, 7 Sep 2026 11:25:14 +0200 Subject: [PATCH] feat(quick-260907-fgv-02): sechs Marken-Stellen auf TesseraLogo umgestellt, Gelbwert zusammengefuehrt - header.tsx, sidebar.tsx (Schublade), login/page.tsx (breit + schmal), reset-password/page.tsx, reset-password/[token]/page.tsx ziehen jetzt alle TesseraLogo statt eines von Hand gesetzten Schriftzugs - login/page.tsx: handgezeichneter Vier-Quadrate-Platzhalter entfernt, gelbes Panel nutzt BRAND_YELLOW per Inline-Style statt eigener Tailwind-Klasse, Kopfkommentar ohne Farbwert neu formuliert - account-settings-form.tsx: DEFAULT_ACCENT liest jetzt BRAND_YELLOW statt eines eigenen Literals - tessera-logo.tsx: Schriftzug setzt keine eigene Textfarbe mehr, sondern erbt sie vom umgebenden Container (Rule 1 -- ohne diese Korrektur waere der Schriftzug auf dem immer gelben Anmelde-Panel im dunklen Erscheinungsbild unlesbar hell auf hell gewesen) - sidebar.tsx: nicht mehr benoetigtes tCommon entfernt; sidebar.test.tsx um common.brand.logoAlt in der Uebersetzungs-Attrappe ergaenzt - vollstaendige Web-Testsuite (221 Tests) und Typpruefung gruen Docker-Neubau und Browser-Abnahme (curl-Health-Check gegen den lokalen Container) bewusst ausgelassen -- der Orchestrator uebernimmt beides in Task 3. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01K5jtbGzC5Sf9npJ3JCjKhq --- apps/web/src/app/(auth)/login/page.tsx | 40 +++++-------------- .../(auth)/reset-password/[token]/page.tsx | 5 +-- .../src/app/(auth)/reset-password/page.tsx | 5 +-- .../web/src/components/brand/tessera-logo.tsx | 4 +- apps/web/src/components/layout/header.tsx | 5 +-- .../src/components/layout/sidebar.test.tsx | 1 + apps/web/src/components/layout/sidebar.tsx | 6 +-- .../settings/account-settings-form.tsx | 3 +- 8 files changed, 23 insertions(+), 46 deletions(-) diff --git a/apps/web/src/app/(auth)/login/page.tsx b/apps/web/src/app/(auth)/login/page.tsx index fab6786..b1d788f 100644 --- a/apps/web/src/app/(auth)/login/page.tsx +++ b/apps/web/src/app/(auth)/login/page.tsx @@ -5,10 +5,12 @@ import { useTranslations } from 'next-intl'; import { useRouter } from 'next/navigation'; import Link from 'next/link'; import { login } from '@/lib/auth-actions'; +import { BRAND_YELLOW } from '@/components/brand/brand'; +import { TesseraLogo } from '@/components/brand/tessera-logo'; /** * Split-screen login page (D-01). - * Left: Tessera branding with primary yellow (#ffed00) background. + * Left: Tessera branding on the brand yellow background (BRAND_YELLOW). * Right: Login form on neutral background. * No sidebar or header (D-04, handled by (auth) layout). */ @@ -37,35 +39,15 @@ export default function LoginPage() { return (
{/* Left: Branding panel (hidden on mobile, visible on md+) */} -
-
- {/* Tessera logo / text */} -

- Tessera -

+
+
+

{t('branding.tagline')}

- {/* Abstract grid icon representing modules */} -
- - - - - - -
@@ -74,9 +56,7 @@ export default function LoginPage() {
{/* Mobile-only branding */}
-

- Tessera -

+

{t('branding.tagline')}

diff --git a/apps/web/src/app/(auth)/reset-password/[token]/page.tsx b/apps/web/src/app/(auth)/reset-password/[token]/page.tsx index c3c240b..cadb64e 100644 --- a/apps/web/src/app/(auth)/reset-password/[token]/page.tsx +++ b/apps/web/src/app/(auth)/reset-password/[token]/page.tsx @@ -4,6 +4,7 @@ import { useState, useTransition, useEffect } from 'react'; import { useTranslations } from 'next-intl'; import { useParams, useRouter } from 'next/navigation'; import Link from 'next/link'; +import { TesseraLogo } from '@/components/brand/tessera-logo'; const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:3001'; @@ -81,9 +82,7 @@ export default function ResetPasswordTokenPage() {
{/* Heading */}
-

- Tessera -

+

{t('resetPassword.newPasswordTitle')}

diff --git a/apps/web/src/app/(auth)/reset-password/page.tsx b/apps/web/src/app/(auth)/reset-password/page.tsx index de1d4e7..8d95bc7 100644 --- a/apps/web/src/app/(auth)/reset-password/page.tsx +++ b/apps/web/src/app/(auth)/reset-password/page.tsx @@ -3,6 +3,7 @@ import { useState, useTransition } from 'react'; import { useTranslations } from 'next-intl'; import Link from 'next/link'; +import { TesseraLogo } from '@/components/brand/tessera-logo'; const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:3001'; @@ -52,9 +53,7 @@ export default function ResetPasswordPage() {
{/* Heading */}
-

- Tessera -

+

{t('resetPassword.title')}

diff --git a/apps/web/src/components/brand/tessera-logo.tsx b/apps/web/src/components/brand/tessera-logo.tsx index 3727984..9018d26 100644 --- a/apps/web/src/components/brand/tessera-logo.tsx +++ b/apps/web/src/components/brand/tessera-logo.tsx @@ -109,7 +109,7 @@ export function TesseraLogo({ {t('appName')} @@ -121,7 +121,7 @@ export function TesseraLogo({ {t('appName')} diff --git a/apps/web/src/components/layout/header.tsx b/apps/web/src/components/layout/header.tsx index df6ab11..30e28e5 100644 --- a/apps/web/src/components/layout/header.tsx +++ b/apps/web/src/components/layout/header.tsx @@ -3,6 +3,7 @@ import { useEffect, useRef, useState } from 'react'; import Link from 'next/link'; import { useTranslations } from 'next-intl'; +import { TesseraLogo } from '@/components/brand/tessera-logo'; import { useSidebarStore } from '@/lib/stores/sidebar-store'; import { useAuthStore } from '@/lib/stores/auth-store'; import { fetchCurrentUser, logout } from '@/lib/auth-actions'; @@ -88,9 +89,7 @@ export function Header() { - - {t('common.appName')} - +
{/* Center: Breadcrumb / page title */} diff --git a/apps/web/src/components/layout/sidebar.test.tsx b/apps/web/src/components/layout/sidebar.test.tsx index 95ae563..01d497c 100644 --- a/apps/web/src/components/layout/sidebar.test.tsx +++ b/apps/web/src/components/layout/sidebar.test.tsx @@ -33,6 +33,7 @@ vi.mock('next-intl', () => ({ }, common: { appName: 'Tessera', + 'brand.logoAlt': 'Tessera Logo', }, }; return map[ns]?.[key] ?? key; diff --git a/apps/web/src/components/layout/sidebar.tsx b/apps/web/src/components/layout/sidebar.tsx index bdbf9c6..8dfa6da 100644 --- a/apps/web/src/components/layout/sidebar.tsx +++ b/apps/web/src/components/layout/sidebar.tsx @@ -4,6 +4,7 @@ import { useCallback, useEffect, useMemo, useState } from 'react'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { useTranslations } from 'next-intl'; +import { TesseraLogo } from '@/components/brand/tessera-logo'; import { useSidebarStore } from '@/lib/stores/sidebar-store'; import { useMarketplaceStore } from '@/lib/stores/marketplace-store'; import { SidebarSearch } from '@/components/layout/sidebar-search'; @@ -19,7 +20,6 @@ interface SidebarModule { export function Sidebar() { const t = useTranslations('sidebar'); - const tCommon = useTranslations('common'); const { isCollapsed, isMobileOpen, toggle, setMobileOpen } = useSidebarStore(); const [activeModules, setActiveModules] = useState([]); const [searchQuery, setSearchQuery] = useState(''); @@ -223,9 +223,7 @@ export function Sidebar() { />