CHORE(merge): merge from develop
Some checks failed
Build Docker Image / build-and-push (push) Has been cancelled
CI / lint-and-build (push) Has been cancelled

- Initial setup and all features from develop branch
- Includes: auth, deploy, docker, style fixes
- K3S deployment configuration
This commit is contained in:
2026-01-06 17:29:16 +09:00
parent b4ce36ba3b
commit f78454c2a1
159 changed files with 18365 additions and 774 deletions

View File

@@ -0,0 +1,76 @@
"use client";
import React from "react";
import Link from "next/link";
import Image from "next/image";
import { usePathname } from "next/navigation";
import { getTabInfo } from "@/lib/tabs";
const SubNavbar: React.FC = () => {
const pathname = usePathname();
const tabInfo = getTabInfo(pathname);
if (!tabInfo) return null;
return (
<div>
{/* 이미지 안 (Navbar 제외) */}
<div className="relative w-full h-[200px] smalltablet:h-[300px] pc:h-[500px]">
{/* 백그라운드 이미지 */}
{tabInfo.image && (
<Image
src={tabInfo.image}
alt="Banner Image"
fill
style={{ objectFit: "cover" }}
// placeholder="blur"
/>
)}
{/* 검은색 오버레이 */}
<div className="absolute inset-0 bg-black opacity-50" />
{/* 이미지 한가운데 제목 */}
<div className="font-bold flex items-center justify-center absolute inset-0 text-white text-4xl smalltablet:text-6xl pc:text-7xl">
{tabInfo.title}
</div>
{/* 이미지 안쪽 중 가장 아래에 있는 탭 바 */}
<div className="backdrop-blur-sm absolute bottom-0 left-0 right-0 items-center justify-center hidden smalltablet:flex">
{tabInfo.tab.submenu.map((item, subIndex) => (
<Link key={subIndex} href={item.href}>
<div
className={`px-10 pc:px-20 py-4 text-base pc:text-xl font-semibold transition-all duration-300
${item.href === pathname ? "text-gray-700 bg-white" : "text-white hover:bg-gray-50 hover:bg-opacity-10 hover:text-gray-700"}`}
>
{item.label}
</div>
</Link>
))}
</div>
</div>
{/* 이미지 밖 */}
<div className="font-bold text-center px-4 smalltablet:px-8 pc:px-12 mt-6 smalltablet:mt-10 pc:mt-12">
{/* 영어 제목 */}
<div className="text-blue-500 text-sm smalltablet:text-base pc:text-lg">
{tabInfo.subtitleEnglish}
</div>
{/* 한글 제목 */}
<div className="text-4xl smalltablet:text-4xl pc:text-6xl">
{tabInfo.subtitle}
</div>
{/* 설명 */}
{tabInfo.description && (
<div className="text-gray-600 text-base smalltablet:text-lg pc:text-xl font-normal mt-4 smalltablet:mt-6">
{tabInfo.description}
</div>
)}
</div>
</div>
);
};
export default SubNavbar;