Organize project by 5 core modules based on requirement docs. Co-authored-by: null <4804959+fnvtk@users.noreply.github.com>
55 lines
2.0 KiB
TypeScript
55 lines
2.0 KiB
TypeScript
"use client"
|
|
|
|
import type React from "react"
|
|
|
|
import { MainNav } from "@/components/main-nav"
|
|
import { UserNav } from "@/components/user-nav"
|
|
import { ThemeToggle } from "@/components/theme-toggle"
|
|
import { Search } from "lucide-react"
|
|
import { Input } from "@/components/ui/input"
|
|
import { Inter } from "next/font/google"
|
|
import "./globals.css"
|
|
|
|
const inter = Inter({ subsets: ["latin"] })
|
|
|
|
export default function ClientLayout({
|
|
children,
|
|
}: {
|
|
children: React.ReactNode
|
|
}) {
|
|
return (
|
|
<html lang="zh-CN">
|
|
<head>
|
|
<title>神射手数据资产中台</title>
|
|
<meta name="description" content="基于IMEI、手机号的用户数据资产管理平台" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
|
</head>
|
|
<body className={inter.className}>
|
|
<div className="flex min-h-screen flex-col">
|
|
<header className="sticky top-0 z-50 w-full border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60">
|
|
<div className="container flex h-16 items-center">
|
|
<div className="mr-4 hidden md:flex">
|
|
<a className="mr-6 flex items-center space-x-2" href="/">
|
|
<span className="hidden font-bold sm:inline-block">神射手数据中台</span>
|
|
</a>
|
|
<MainNav />
|
|
</div>
|
|
<div className="flex flex-1 items-center justify-between space-x-2 md:justify-end">
|
|
<div className="w-full flex-1 md:w-auto md:flex-none">
|
|
<div className="relative">
|
|
<Search className="absolute left-2 top-2.5 h-4 w-4 text-muted-foreground" />
|
|
<Input placeholder="搜索..." className="pl-8 h-9 md:w-[300px] lg:w-[300px]" />
|
|
</div>
|
|
</div>
|
|
<ThemeToggle />
|
|
<UserNav />
|
|
</div>
|
|
</div>
|
|
</header>
|
|
<main className="flex-1 bg-background">{children}</main>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
)
|
|
}
|