From ab6f6088f2ecb19ba2ae9e6419afcde5f489b833 Mon Sep 17 00:00:00 2001 From: Nils Pukropp Date: Fri, 15 May 2026 15:57:00 +0200 Subject: [PATCH] redesign --- .../src/components/react/LogoutButton.tsx | 4 +- frontend/src/components/react/Search.tsx | 6 +- .../src/components/react/ThemeSwitcher.tsx | 2 +- frontend/src/components/react/admin/Login.tsx | 25 ++++- frontend/src/layouts/Layout.astro | 104 ++++++++++-------- frontend/src/pages/admin/login.astro | 2 +- frontend/src/pages/posts/[slug].astro | 2 +- frontend/src/styles/global.css | 67 +++++++++-- 8 files changed, 143 insertions(+), 69 deletions(-) diff --git a/frontend/src/components/react/LogoutButton.tsx b/frontend/src/components/react/LogoutButton.tsx index 07e246f..52c4ff0 100644 --- a/frontend/src/components/react/LogoutButton.tsx +++ b/frontend/src/components/react/LogoutButton.tsx @@ -22,7 +22,7 @@ export default function LogoutButton() { disabled={busy} title="Sign out" aria-label="Sign out" - className="topbar-control topbar-control--danger" + className="topbar-control topbar-control--danger tc-collapse-sm" > - {busy ? 'Signing out…' : 'Sign out'} + {busy ? 'Signing out…' : 'Sign out'} ); } diff --git a/frontend/src/components/react/Search.tsx b/frontend/src/components/react/Search.tsx index 31fa9d8..7e9f20f 100644 --- a/frontend/src/components/react/Search.tsx +++ b/frontend/src/components/react/Search.tsx @@ -130,7 +130,7 @@ export default function Search() { onClick={() => setOpen(true)} aria-label={`Search the catalogue (${isMac ? '⌘' : 'Ctrl'}+K)`} title={`Search (${isMac ? '⌘' : 'Ctrl'}+K)`} - className="topbar-control" + className="topbar-control tc-collapse-md" > - Search - + Search + {isMac ? '⌘' : 'Ctrl'}+K diff --git a/frontend/src/components/react/ThemeSwitcher.tsx b/frontend/src/components/react/ThemeSwitcher.tsx index 53d440b..4cbe53a 100644 --- a/frontend/src/components/react/ThemeSwitcher.tsx +++ b/frontend/src/components/react/ThemeSwitcher.tsx @@ -43,7 +43,7 @@ export default function ThemeSwitcher({ defaultTheme = 'salon' }: Props) { value={theme} onChange={(e) => setTheme(e.target.value)} aria-label="Theme" - className="topbar-control" + className="topbar-control theme-select" > {THEMES.map(t => ( diff --git a/frontend/src/components/react/admin/Login.tsx b/frontend/src/components/react/admin/Login.tsx index fbf28a4..d5cbc96 100644 --- a/frontend/src/components/react/admin/Login.tsx +++ b/frontend/src/components/react/admin/Login.tsx @@ -29,8 +29,8 @@ export default function Login() { } return ( -
-
+
+
Artist's entrance
@@ -43,7 +43,7 @@ export default function Login() {

Present your token to enter the back room.

-
+
setValue(e.target.value)} autoComplete="current-password" + aria-invalid={error ? true : undefined} + aria-describedby={error ? 'login-error' : undefined} className="field-input font-mono tracking-widest" placeholder="••••••••••••" />
{error && ( -

+

)}
+
); } diff --git a/frontend/src/layouts/Layout.astro b/frontend/src/layouts/Layout.astro index bf72026..037583f 100644 --- a/frontend/src/layouts/Layout.astro +++ b/frontend/src/layouts/Layout.astro @@ -14,9 +14,12 @@ interface Props { description?: string; image?: string; type?: 'website' | 'article'; + /** Strips the top-bar controls and footer nav — used by the login page + * so the sign-in screen is a focused, chrome-free stage. */ + minimal?: boolean; } -const { title, wide = false, description, image, type = 'website' } = Astro.props; +const { title, wide = false, description, image, type = 'website', minimal = false } = Astro.props; const API_URL = process.env.PUBLIC_API_URL || 'http://backend:3000'; const isAdmin = Astro.cookies.get('admin_session')?.value === '1'; @@ -92,7 +95,7 @@ const hasContact = (siteConfig.contact_links?.length ?? 0) > 0;
-
+
{isAdmin ? ( 0; )} -
- {hasContact && ( - Contact - )} - - - {isAdmin && ( -
- -
- )} -
+ {!minimal && ( + + )}
@@ -139,39 +145,43 @@ const hasContact = (siteConfig.contact_links?.length ?? 0) > 0; -