Skip to content
Snippets Groups Projects
layout.tsx 1.70 KiB
import { MainNav } from "@/components/header"
import DashboardNav from "@/components/nav"
import SearchInput from "@/components/search-input"
import { SiteFooter } from "@/components/site-footer"
import { UserAccountNav } from "@/components/user-nav"
import { dashboardConfig } from "@/lib/config/dashboard"
import { getCurrentUser } from "@/lib/session"

interface DashboardLayoutProps {
    children?: React.ReactNode
}
export default async function ContentLayout({
    children,
}: DashboardLayoutProps) {
    const user = await getCurrentUser()

    return (
        <div className="flex min-h-screen flex-col space-y-6">
            <header className="sticky top-0 z-50 border-b bg-background">
                <div className="container flex h-16 items-center justify-between py-4">
                    <MainNav />
                    <SearchInput className="p-3 md:w-2/3 2xl:w-1/3" />
                    {user && <UserAccountNav
                        user={{
                            name: user?.name,
                            image: user?.image,
                            username: user?.username,
                        }}
                    />}
                    {!user && <p className="w-8"></p>}
                </div>
            </header>
            <div className="container grid flex-1 gap-12 md:grid-cols-[200px_1fr]">
                <aside className="hidden w-[200px] flex-col md:flex">
                    <DashboardNav items={dashboardConfig.sidebarNav} />
                </aside>
                <main className="flex w-full flex-1 flex-col overflow-hidden">
                    {children}
                </main>
            </div>
            <SiteFooter className="border-t" />
        </div>
    )
}