"use client"; import React from "react"; import { gql } from "@apollo/client"; import { useQuery } from "@apollo/experimental-nextjs-app-support/ssr"; import { LogOut, Compass, Swords, MessageSquare, Bookmark, User, CreditCard, Settings, Search, } from "lucide-react"; import { useRouter, usePathname } from "next/navigation"; import Link from "next/link"; import Image from "next/image"; interface MyProfileData { me: { id: string; email: string; name: string; handle: string | null; avatar: string | null; } | null; } const GET_MY_PROFILE = gql` query GetMyProfile { me { id email name handle avatar } } `; export default function DashboardLayout({ children }: { children: React.ReactNode }) { const pathname = usePathname(); const router = useRouter(); const { loading, error, data } = useQuery(GET_MY_PROFILE); console.log("GraphQL Data:", data); console.log("GraphQL Error:", error); const menuItems = [ { name: "Discover", href: "/", icon: Compass }, { name: "Roleplay", href: "/roleplay", icon: Swords }, { name: "Messages", href: "/messages", icon: MessageSquare }, { name: "Library", href: "/library", icon: Bookmark }, { name: "Profile", href: "/profile", icon: User }, { name: "Subscription", href: "/subscription", icon: CreditCard }, { name: "Settings", href: "/settings", icon: Settings }, ]; return (
{/* --- 1. 顶部 Header (贯穿式) --- */}
{/* Logo 区域 */}
RP
RoleplayAI {/* 模拟搜索框 (对应图中右上角风格) */}
{/* Header 右侧 */}
{/* 积分显示 */}
🪙 200
{/* 真实头像逻辑 */}
{loading ? (
) : data?.me ? (

{data.me.name}

@{data.me.handle || 'user'}

{data.me.avatar ? ( avatar ) : ( {data.me.name?.charAt(0).toUpperCase()} )}
) : ( Login )}
{/* --- 下半部分主体 --- */}
{/* --- 2. 左侧 Sidebar --- */} {/* --- 3. 右侧 Main Content --- */}
{/* 这里可以放置页面内局部的二级分类 Header (比如 Discover 里的 All, Fantasy 等) */}
{children}
); }