This commit is contained in:
1
LOG.md
1
LOG.md
@@ -7,6 +7,7 @@
|
||||
- Restored the missing local `chess.js` install in `node_modules` so build verification could run; no dependency version changes were intended.
|
||||
- Refined the desktop layout after review: the sidebar can now collapse on PC, the main window width is more consistent across dashboard/list/reader/chess/admin views, the sidebar archive shortcut was removed, and the top menu now uses WYPark branding with GitHub/email links plus theme switching only.
|
||||
- Moved auth/admin/write/logout actions into the Dock and changed category windows/menu labels to show the actual category name instead of Finder/posts copy.
|
||||
- Tuned the follow-up layout: main content now centers inside the area remaining after the desktop sidebar, sidebar GitHub/email shortcuts were removed, top-bar GitHub/email links now sit as plain left-side menu items, and the home labels were simplified to 홈/WYPark.
|
||||
- Validation: `npm run lint` passed, `npm run build` passed. The build logged a sitemap fetch warning because the backend API at the local default was not reachable, but the command completed successfully.
|
||||
- Browser verification: previously started this app on `http://localhost:3100` because ports 3000 and 3001 were already occupied; confirmed desktop background gradients, menu bar, Dock, and window surfaces on `/`, `/archive`, and `/login`. For this follow-up, the dev/standalone server started successfully in foreground but exited when launched as a background non-interactive process, so browser verification was skipped after lint/build passed.
|
||||
- Recommended next task: review the remaining older Korean strings in admin/editor flows and normalize any mojibake that predates this redesign.
|
||||
|
||||
@@ -279,8 +279,7 @@ function HomeContent() {
|
||||
<main className="mx-auto w-full px-0 py-4 md:w-[78vw] md:max-w-[1280px] md:py-6">
|
||||
<h1 className="sr-only">WYPark Blog</h1>
|
||||
<WindowSurface
|
||||
title="WYPark Desktop"
|
||||
subtitle="Blog dashboard"
|
||||
title="WYPark"
|
||||
controls={(
|
||||
<Link
|
||||
href="/archive"
|
||||
|
||||
@@ -4,7 +4,6 @@ import Link from 'next/link';
|
||||
import { usePathname } from 'next/navigation';
|
||||
import { useQuery } from '@tanstack/react-query';
|
||||
import { clsx } from 'clsx';
|
||||
import { Github, Mail } from 'lucide-react';
|
||||
import { getProfile } from '@/api/profile';
|
||||
import ThemeToggle from '@/components/theme/ThemeToggle';
|
||||
|
||||
@@ -36,7 +35,7 @@ const getAppTitle = (pathname: string) => {
|
||||
if (pathname.startsWith('/play/chess')) return 'Chess';
|
||||
if (pathname.startsWith('/login')) return 'Login';
|
||||
if (pathname.startsWith('/signup')) return 'Signup';
|
||||
return 'Desktop';
|
||||
return '홈';
|
||||
};
|
||||
|
||||
export default function DesktopMenuBar({ isSidebarCollapsed }: DesktopMenuBarProps) {
|
||||
@@ -50,9 +49,7 @@ export default function DesktopMenuBar({ isSidebarCollapsed }: DesktopMenuBarPro
|
||||
|
||||
const githubUrl = profile?.githubUrl || defaultProfile.githubUrl;
|
||||
const email = profile?.email || defaultProfile.email;
|
||||
|
||||
const linkClass =
|
||||
'inline-flex h-8 shrink-0 items-center gap-2 rounded-full border border-[var(--color-line)] bg-[var(--color-control)] px-3 text-sm font-semibold text-[var(--color-text-muted)] shadow-[var(--shadow-control)] backdrop-blur-2xl transition hover:bg-[var(--window-bg-strong)] hover:text-[var(--color-text)]';
|
||||
const menuLinkClass = 'text-xs font-semibold text-[var(--color-text-subtle)] transition hover:text-[var(--color-text)]';
|
||||
|
||||
return (
|
||||
<div
|
||||
@@ -70,26 +67,17 @@ export default function DesktopMenuBar({ isSidebarCollapsed }: DesktopMenuBarPro
|
||||
<span className="truncate text-sm font-semibold text-[var(--color-text-muted)]">
|
||||
{getAppTitle(pathname)}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div className="flex shrink-0 items-center gap-2">
|
||||
<div className="hidden items-center gap-2 md:flex">
|
||||
<a
|
||||
href={githubUrl}
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
className={linkClass}
|
||||
>
|
||||
<Github size={15} />
|
||||
<span>GitHub</span>
|
||||
<div className="hidden items-center gap-3 md:flex">
|
||||
<a href={githubUrl} target="_blank" rel="noreferrer" className={menuLinkClass}>
|
||||
GitHub
|
||||
</a>
|
||||
<a href={`mailto:${email}`} className={linkClass}>
|
||||
<Mail size={15} />
|
||||
<span>Email</span>
|
||||
<a href={`mailto:${email}`} className={menuLinkClass}>
|
||||
Email
|
||||
</a>
|
||||
</div>
|
||||
<ThemeToggle />
|
||||
</div>
|
||||
|
||||
<ThemeToggle />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -37,8 +37,10 @@ export default function DesktopShell({ children }: { children: ReactNode }) {
|
||||
|
||||
<main
|
||||
className={clsx(
|
||||
'relative w-full flex-1 transition-[margin] duration-300 ease-out',
|
||||
isSidebarCollapsed ? 'md:ml-20' : 'md:ml-72',
|
||||
'relative w-full flex-1 transition-[margin,width] duration-300 ease-out',
|
||||
isSidebarCollapsed
|
||||
? 'md:ml-20 md:w-[calc(100%-5rem)]'
|
||||
: 'md:ml-72 md:w-[calc(100%-18rem)]',
|
||||
)}
|
||||
>
|
||||
<div className="mx-auto w-full px-4 pb-28 pt-20 md:px-6 md:pb-32 md:pt-24 lg:px-8">
|
||||
|
||||
@@ -14,9 +14,7 @@ import {
|
||||
FileQuestion,
|
||||
Folder,
|
||||
FolderOpen,
|
||||
Github,
|
||||
Home,
|
||||
Mail,
|
||||
Menu,
|
||||
X,
|
||||
} from 'lucide-react';
|
||||
@@ -386,30 +384,10 @@ function SidebarContent({
|
||||
<div
|
||||
className={clsx(
|
||||
'shrink-0 border-t border-[var(--color-line)] bg-[var(--window-titlebar)] p-5',
|
||||
isDesktopCollapsed && 'md:px-3 md:py-4',
|
||||
isDesktopCollapsed && 'md:hidden',
|
||||
)}
|
||||
>
|
||||
<div className={clsx('flex justify-center gap-3', isDesktopCollapsed && 'md:flex-col md:items-center')}>
|
||||
<a
|
||||
href={displayProfile.githubUrl || '#'}
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
className="rounded-full border border-[var(--color-line)] bg-[var(--color-control)] p-2.5 text-[var(--color-text-muted)] shadow-[var(--shadow-control)] transition-all hover:bg-[var(--color-text)] hover:text-white dark:hover:bg-white dark:hover:text-black"
|
||||
aria-label="GitHub"
|
||||
title="GitHub"
|
||||
>
|
||||
<Github size={18} />
|
||||
</a>
|
||||
<a
|
||||
href={`mailto:${displayProfile.email}`}
|
||||
className="rounded-full border border-[var(--color-line)] bg-[var(--color-control)] p-2.5 text-[var(--color-text-muted)] shadow-[var(--shadow-control)] transition-all hover:bg-[var(--color-accent)] hover:text-white"
|
||||
aria-label="이메일"
|
||||
title="이메일"
|
||||
>
|
||||
<Mail size={18} />
|
||||
</a>
|
||||
</div>
|
||||
<p className={clsx('mt-4 text-center text-[10px] font-light text-[var(--color-text-subtle)]', isDesktopCollapsed && 'md:hidden')}>
|
||||
<p className="text-center text-[10px] font-light text-[var(--color-text-subtle)]">
|
||||
© {new Date().getFullYear()} {displayProfile.name}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user