Skip to content
4 changes: 2 additions & 2 deletions src/app/(auth)/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { makePageMetadata } from "@/seo/metadata";
import type { AuthLayoutProps } from "@/types/auth";
import type { AuthCommonProps } from "@/types/auth";

export const metadata = makePageMetadata({
title: "MyPlanMate โ€” ์ธ์ฆ",
description: "MyPlanMate ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•˜๊ณ , ์ƒˆ ๊ณ„์ •์„ ๋งŒ๋“ค๊ณ , ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์žฌ์„ค์ •ํ•˜์„ธ์š”.",
});

export default function AuthLayout({ children }: AuthLayoutProps) {
export default function AuthLayout({ children }: AuthCommonProps) {
return (
<div className="flex items-center justify-center min-h-screen bg-background">
<div className="flex flex-col gap-20 w-full max-w-[500px]">{children}</div>
Expand Down
13 changes: 7 additions & 6 deletions src/app/(auth)/login/page.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import { AuthHeader } from "@/components/auth/AuthHeader";
import { LoginPageTitle } from "@/components/auth/login/LoginPageTitle";
import { LoginSubtitle } from "@/components/auth/login/LoginSubtitle";
import { makePageMetadata } from "@/seo/metadata";

export const metadata = {
Expand All @@ -12,12 +15,10 @@ export const metadata = {
export default function LoginPage() {
return (
<>
<header className="text-center">
{/* TODO: ๋‚˜์ค‘์— AppLogo + LoginPageTitle + LoginSubtitle๋กœ ๊ต์ฒด */}
<p className="t-14-m text-[var(--color-gray-500)]">PlanMate</p>
<h1 className="mt-2 t-24-b text-[var(--color-gray-900)]">๋กœ๊ทธ์ธ</h1>
<p className="mt-1 t-14-m text-[var(--color-gray-600)]">์˜ค๋Š˜๋„ ๋งŒ๋‚˜์„œ ๋ฐ˜๊ฐ€์›Œ์š”!</p>
</header>
<AuthHeader>
<LoginPageTitle />
<LoginSubtitle />
</AuthHeader>

<main>
{/* TODO: ๋‚˜์ค‘์— LoginMain + AuthCard + LoginForm ๊ตฌ์กฐ๋กœ ํ™•์žฅ */}
Expand Down
11 changes: 11 additions & 0 deletions src/components/auth/AuthHeader.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { AppLogo } from "@/shared/AppLogo";
import type { AuthCommonProps } from "@/types/auth";

export function AuthHeader({ children }: AuthCommonProps) {
return (
<header className="flex flex-col items-center text-center gap-2">
<AppLogo />
<div className="space-y-3">{children}</div>
</header>
);
}
7 changes: 7 additions & 0 deletions src/components/auth/login/LoginPageTitle.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export function LoginPageTitle() {
return (
<h1 id="auth-login-title" className="t-30-b text-[var(--color-gray-900)]">
๋กœ๊ทธ์ธ
</h1>
);
}
3 changes: 3 additions & 0 deletions src/components/auth/login/LoginSubtitle.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export function LoginSubtitle() {
return <p className="t-14-m text-[var(--color-gray-600)]">์˜ค๋Š˜๋„ ๋งŒ๋‚˜์„œ ๋ฐ˜๊ฐ€์›Œ์š”!</p>;
}
13 changes: 2 additions & 11 deletions src/components/landing/LandingNavBar.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { cn } from "@/lib/utils";
import Image from "next/image";
import { AppLogo } from "@/shared/AppLogo";
import Link from "next/link";

export function LandingNavBar() {
Expand All @@ -12,16 +12,7 @@ export function LandingNavBar() {
aria-label="Global navigation"
>
{/* ์ขŒ์ธก: ๋กœ๊ณ  (์ด๋ฏธ์ง€) */}
<Link href="/" aria-label="MyPlanMate ํ™ˆ์œผ๋กœ ์ด๋™">
<Image
src="/images/logo.png"
alt="MyPlanMate ๋กœ๊ณ "
width={150}
height={150}
className={cn("object-contain select-none")}
draggable={false}
/>
</Link>
<AppLogo />

{/* ์šฐ์ธก: ์–ธ์–ด ํ† ๊ธ€ + ๋กœ๊ทธ์ธ */}
<div className={cn("flex items-center gap-6", "md:gap-12")}>
Expand Down
17 changes: 17 additions & 0 deletions src/shared/AppLogo.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import Image from "next/image";
import Link from "next/link";

export function AppLogo() {
return (
<Link href="/" aria-label="MyPlanMate ํ™ˆ์œผ๋กœ ์ด๋™">
<Image
src="/images/logo.png"
alt="MyPlanMate ๋กœ๊ณ "
width={150}
height={150}
priority
className="object-contain select-none hover:opacity-90 transition-opacity"
/>
</Link>
);
}
2 changes: 1 addition & 1 deletion src/types/auth.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { ReactNode } from "react";

export interface AuthLayoutProps {
export interface AuthCommonProps {
children: ReactNode;
}