mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-05 23:26:38 +08:00
a44043262e
Add next/dynamic lazy loading for database, logs, and settings heavy modules; migrate access-logs and task-executions to React Query; parallelize login auth-sources with public config; consolidate users table tooltips; enable lazy image decoding; and replace barrel @/lib/services imports with direct module paths.
66 lines
2.3 KiB
TypeScript
66 lines
2.3 KiB
TypeScript
"use client"
|
|
|
|
import dynamic from "next/dynamic"
|
|
import {Activity, BarChart3, Terminal} from "lucide-react"
|
|
|
|
import {Tabs, TabsContent, TabsList, TabsTrigger} from "@/components/ui/tabs"
|
|
|
|
const tabFallback = (
|
|
<div className="h-64 animate-pulse rounded-lg border border-border/40 bg-muted/20" />
|
|
)
|
|
|
|
const AccessAnalytics = dynamic(
|
|
() => import("@/components/common/admin/access-analytics").then((mod) => mod.AccessAnalytics),
|
|
{ loading: () => tabFallback },
|
|
)
|
|
|
|
const AccessLogs = dynamic(
|
|
() => import("@/components/common/admin/access-logs").then((mod) => mod.AccessLogs),
|
|
{ loading: () => tabFallback },
|
|
)
|
|
|
|
const AppLogs = dynamic(
|
|
() => import("@/components/common/admin/app-logs").then((mod) => mod.AppLogs),
|
|
{ loading: () => tabFallback },
|
|
)
|
|
|
|
export function LogsPageClient() {
|
|
return (
|
|
<div className="flex flex-col h-full space-y-6 py-6">
|
|
{/* Header */}
|
|
<div className="flex items-center gap-2">
|
|
<Terminal className="size-5 text-primary" />
|
|
<div>
|
|
<h1 className="text-2xl font-semibold tracking-tight">系统日志</h1>
|
|
</div>
|
|
</div>
|
|
{/* Tabs Layout */}
|
|
<Tabs defaultValue="analytics" className="w-full">
|
|
<TabsList variant="line" className="w-fit inline-flex gap-8 mb-6">
|
|
<TabsTrigger value="analytics" className="px-0 pb-2 text-xs font-semibold flex items-center gap-1.5">
|
|
<BarChart3 className="size-3.5" />
|
|
访问分析
|
|
</TabsTrigger>
|
|
<TabsTrigger value="access" className="px-0 pb-2 text-xs font-semibold flex items-center gap-1.5">
|
|
<Activity className="size-3.5" />
|
|
用户访问日志
|
|
</TabsTrigger>
|
|
<TabsTrigger value="app" className="px-0 pb-2 text-xs font-semibold flex items-center gap-1.5">
|
|
<Terminal className="size-3.5" />
|
|
应用运行日志
|
|
</TabsTrigger>
|
|
</TabsList>
|
|
|
|
<TabsContent value="analytics" className="mt-0 outline-none flex-1">
|
|
<AccessAnalytics />
|
|
</TabsContent>
|
|
<TabsContent value="access" className="mt-0 outline-none flex-1">
|
|
<AccessLogs />
|
|
</TabsContent>
|
|
<TabsContent value="app" className="mt-0 outline-none flex-1">
|
|
<AppLogs />
|
|
</TabsContent>
|
|
</Tabs>
|
|
</div>
|
|
)
|
|
} |