diff --git a/components/BackButton.tsx b/components/BackButton.tsx
new file mode 100644
index 0000000..3e65568
--- /dev/null
+++ b/components/BackButton.tsx
@@ -0,0 +1,27 @@
+"use client";
+
+import { useRouter } from "next/navigation";
+
+// 뒤로가기 — 직전 페이지(예: 투표하던 매치 페이지)로 복귀.
+// 히스토리가 없으면(직접 진입) 홈으로 폴백.
+export default function BackButton({
+ label,
+ home,
+}: {
+ label: string;
+ home: string;
+}) {
+ const router = useRouter();
+ const goBack = () => {
+ if (typeof window !== "undefined" && window.history.length > 1) router.back();
+ else router.push(home);
+ };
+ return (
+
+ );
+}
diff --git a/components/Hero.tsx b/components/Hero.tsx
index 0380bb3..54fef0d 100644
--- a/components/Hero.tsx
+++ b/components/Hero.tsx
@@ -1,6 +1,7 @@
import Link from "next/link";
import ShareButton from "./ShareButton";
import LangSwitch from "./LangSwitch";
+import BackButton from "./BackButton";
import { type Lang, dict } from "@/lib/i18n";
type Share = { url: string; title: string; text: string };
@@ -8,10 +9,12 @@ type Share = { url: string; title: string; text: string };
// 브랜드 헤더 (대시보드·상세 공용). 경기별 후킹 카피는 상세 페이지에서 별도 노출.
export default function Hero({
back = false,
+ backHistory = false,
share,
lang = "ko",
}: {
back?: boolean;
+ backHistory?: boolean; // true면 홈 대신 직전 페이지로 복귀(뒤로가기)
share?: Share;
lang?: Lang;
}) {
@@ -21,12 +24,16 @@ export default function Hero({
{back && (
-
- {t.back}
-
+ {backHistory ? (
+
+ ) : (
+
+ {t.back}
+
+ )}
{share && (
)}
diff --git a/components/Leaderboard.tsx b/components/Leaderboard.tsx
index f53d578..135e0d0 100644
--- a/components/Leaderboard.tsx
+++ b/components/Leaderboard.tsx
@@ -1,7 +1,6 @@
"use client";
import { useEffect, useState } from "react";
-import Link from "next/link";
import { type Lang, dict } from "@/lib/i18n";
import {
fetchLeaderboard,
@@ -14,11 +13,9 @@ import {
export default function Leaderboard({
lang = "ko",
defaultOpen = false,
- showAllLink = true,
}: {
lang?: Lang;
defaultOpen?: boolean;
- showAllLink?: boolean;
}) {
const t = dict(lang);
const [open, setOpen] = useState(defaultOpen);
@@ -37,17 +34,7 @@ export default function Leaderboard({
return (
-
-
{t.lbTitle}
- {showAllLink && (
-
- {t.lbAll} →
-
- )}
-
+ {t.lbTitle}
{open && (
<>
@@ -62,7 +49,7 @@ export default function Leaderboard({
{/* 헤더 라벨 */}
-
+
{tab === "ai" ? t.lbTabAI : t.lbTabVoters}
{t.lbPoints}
@@ -93,16 +80,16 @@ export default function Leaderboard({
}`}
>
{i + 1}
-
+
{r.label}
-
+
{r.points.toLocaleString()}
{t.lbUnit}
@@ -119,7 +106,7 @@ export default function Leaderboard({
{!defaultOpen && (