From b54f6f03150dd78d86db62201b6386bf14b72394 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Wed, 15 Oct 2025 12:52:11 +0000 Subject: (대표님) 커버, 데이터룸, 파일매니저, 담당자할당 등 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/layout/HeaderDataroom.tsx | 202 +++++++++++++++++++++++++++++++++++ components/layout/HeaderSimple.tsx | 2 +- 2 files changed, 203 insertions(+), 1 deletion(-) create mode 100644 components/layout/HeaderDataroom.tsx (limited to 'components/layout') diff --git a/components/layout/HeaderDataroom.tsx b/components/layout/HeaderDataroom.tsx new file mode 100644 index 00000000..333e3768 --- /dev/null +++ b/components/layout/HeaderDataroom.tsx @@ -0,0 +1,202 @@ +"use client"; + +import * as React from "react"; +import Link from "next/link"; +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { Avatar, AvatarImage, AvatarFallback } from "@/components/ui/avatar"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; +import { + NavigationMenu, + NavigationMenuContent, + NavigationMenuItem, + NavigationMenuLink, + NavigationMenuList, + NavigationMenuTrigger, + navigationMenuTriggerStyle, +} from "@/components/ui/navigation-menu"; +import { SearchIcon, BellIcon, Menu } from "lucide-react"; +import { useParams, usePathname, useSearchParams } from "next/navigation"; +import { cn } from "@/lib/utils"; +import Image from "next/image"; +import { MobileMenu } from "./MobileMenu"; +import { CommandMenu } from "./command-menu"; +import { useSession, signOut } from "next-auth/react"; +import { NotificationDropdown } from "./NotificationDropdown"; + +// 간단한 메뉴 배열 +const simpleMenus = [ + { title: "발주처 목록", href: "/evcp/data-room/owner-companies" }, + { title: "데이터룸", href: "/evcp/data-room" } +]; +export function HeaderDataRoom() { + const params = useParams(); + const lng = params?.lng as string; + const pathname = usePathname(); + const { data: session } = useSession(); + + const userName = session?.user?.name || ""; + const domain = session?.user?.domain || ""; + const initials = userName + .split(" ") + .map((word) => word[0]?.toUpperCase()) + .join(""); + + const [isMobileMenuOpen, setIsMobileMenuOpen] = React.useState(false); + + const toggleMobileMenu = () => { + setIsMobileMenuOpen(!isMobileMenuOpen); + }; + + return ( + <> +
+
+
+ {/* 햄버거 메뉴 버튼 (모바일) */} + + + {/* 로고 영역 */} +
+ + EVCP Logo + + EVCP + + +
+ + {/* 네비게이션 메뉴 - 간단한 배열 */} +
+ +
+ + {/* 우측 영역 */} +
+ {/* 데스크탑에서는 CommandMenu, 모바일에서는 검색 아이콘만 */} + + {/* 알림 버튼 */} + + + {/* 사용자 메뉴 */} + + + + + + {initials || "?"} + + + + + 내 계정 + + + 설정 + + + signOut({ callbackUrl: `/${lng}/${domain}` })}> + 로그아웃 + + + +
+
+
+ + {/* 모바일 메뉴 */} + {isMobileMenuOpen && ( + key} + /> + )} +
+ + ); +} + +const ListItem = React.forwardRef< + React.ElementRef<"a">, + React.ComponentPropsWithoutRef<"a"> +>(({ className, title, children, ...props }, ref) => { + return ( +
  • + + +
    {title}
    + {children && ( +

    + {children} +

    + )} +
    +
    +
  • + ); +}); +ListItem.displayName = "ListItem"; + + +export function RouteLogger() { + const path = usePathname(); + const qs = useSearchParams().toString(); + React.useEffect(() => { + console.log("[URL]", path + (qs ? "?" + qs : "")); + }, [path, qs]); + return null; +} \ No newline at end of file diff --git a/components/layout/HeaderSimple.tsx b/components/layout/HeaderSimple.tsx index f099d3ef..989929ae 100644 --- a/components/layout/HeaderSimple.tsx +++ b/components/layout/HeaderSimple.tsx @@ -100,7 +100,7 @@ export function HeaderSimple() { /> {isPartnerRoute - ? "eVCP Partners" + ? "Data Room" : pathname?.includes("/evcp") ? "eVCP 삼성중공업" : "eVCP"} -- cgit v1.2.3