's'
This commit is contained in:
@@ -8,6 +8,7 @@ import {
|
||||
CirclePlay,
|
||||
Clock,
|
||||
Cpu,
|
||||
FolderOpen,
|
||||
HardDrive,
|
||||
Languages,
|
||||
Loader2,
|
||||
@@ -30,6 +31,7 @@ import { LiveStudioScene3D } from "@/components/LiveStudioScene3D";
|
||||
import OverviewCharts from "@/components/OverviewCharts";
|
||||
import { LiveConsoleWorkspace } from "@/components/console/LiveConsoleWorkspace";
|
||||
import { LiveAndroidWorkstation } from "@/components/live-product/LiveAndroidWorkstation";
|
||||
import { LiveFilebrowserPanel } from "@/components/live-product/LiveFilebrowserPanel";
|
||||
import { LiveTiktokHdmiView } from "@/components/live-product/LiveTiktokHdmiView";
|
||||
import type { PortalNavTarget } from "@/components/live-product/LivePipelineStrip";
|
||||
import { LiveYoutubeUnmannedView } from "@/components/live-product/LiveYoutubeUnmannedView";
|
||||
@@ -40,6 +42,7 @@ type PortalTheme = "dark" | "light";
|
||||
type ViewKey =
|
||||
| "dashboard"
|
||||
| "services"
|
||||
| "files"
|
||||
| "live_youtube"
|
||||
| "live_tiktok"
|
||||
| "android"
|
||||
@@ -400,6 +403,7 @@ export default function LiveControlApp() {
|
||||
const navItems: { id: ViewKey; icon: typeof Activity; labelZh: string; labelEn: string }[] = [
|
||||
{ id: "dashboard", icon: Activity, labelZh: "总览", labelEn: "Dashboard" },
|
||||
{ id: "services", icon: Server, labelZh: "服务", labelEn: "Services" },
|
||||
{ id: "files", icon: FolderOpen, labelZh: "文件(File Browser)", labelEn: "Files" },
|
||||
{ id: "live_youtube", icon: CirclePlay, labelZh: "YouTube 无人直播", labelEn: "YouTube unmanned" },
|
||||
{ id: "live_tiktok", icon: MonitorPlay, labelZh: "TikTok 无人直播", labelEn: "TikTok unmanned" },
|
||||
{ id: "android", icon: Smartphone, labelZh: "安卓", labelEn: "Android" },
|
||||
@@ -617,6 +621,32 @@ export default function LiveControlApp() {
|
||||
{dashErr}
|
||||
</div>
|
||||
) : null}
|
||||
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 8 }}
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ delay: 0.02 }}
|
||||
className={`rounded-2xl border p-2 backdrop-blur-xl ${
|
||||
portalTheme === "light"
|
||||
? "border-slate-200/90 bg-white/80 shadow-sm shadow-slate-200/30"
|
||||
: "border-white/[0.07] bg-zinc-950/30"
|
||||
}`}
|
||||
>
|
||||
<OverviewCharts snapshot={dash?.snapshot ?? null} theme={portalTheme} tr={t} />
|
||||
</motion.div>
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 8 }}
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ delay: 0.05 }}
|
||||
className={`rounded-2xl border p-3 shadow-lg ${
|
||||
portalTheme === "light"
|
||||
? "border-fuchsia-200/80 bg-gradient-to-br from-fuchsia-50/90 via-white to-cyan-50/70 shadow-fuchsia-100/40"
|
||||
: "border-fuchsia-500/20 bg-gradient-to-br from-fuchsia-500/10 via-zinc-950/60 to-cyan-500/10 shadow-fuchsia-900/10"
|
||||
}`}
|
||||
>
|
||||
<LiveStudioScene3D tr={t} />
|
||||
</motion.div>
|
||||
|
||||
<div className="grid gap-2 sm:grid-cols-2 xl:grid-cols-5">
|
||||
{[
|
||||
{
|
||||
@@ -667,23 +697,6 @@ export default function LiveControlApp() {
|
||||
))}
|
||||
</div>
|
||||
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 8 }}
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ delay: 0.05 }}
|
||||
className="rounded-2xl border border-white/[0.07] bg-zinc-950/30 p-2 backdrop-blur-xl"
|
||||
>
|
||||
<OverviewCharts snapshot={dash?.snapshot ?? null} theme="dark" tr={t} />
|
||||
</motion.div>
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 8 }}
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ delay: 0.09 }}
|
||||
className="rounded-2xl border border-fuchsia-500/20 bg-gradient-to-br from-fuchsia-500/10 via-zinc-950/60 to-cyan-500/10 p-3 shadow-lg shadow-fuchsia-900/10"
|
||||
>
|
||||
<LiveStudioScene3D tr={t} />
|
||||
</motion.div>
|
||||
|
||||
{dash?.hardware && typeof dash.hardware === "object" ? (
|
||||
<div className="rounded-2xl border border-indigo-500/25 bg-gradient-to-br from-indigo-500/[0.1] via-zinc-950/70 to-violet-500/[0.08] p-6 shadow-2xl shadow-indigo-500/5">
|
||||
<h3 className="text-base font-semibold text-white">
|
||||
@@ -1074,6 +1087,14 @@ export default function LiveControlApp() {
|
||||
</div>
|
||||
) : null}
|
||||
|
||||
{view === "files" ? (
|
||||
<LiveFilebrowserPanel
|
||||
t={t}
|
||||
portalTheme={portalTheme}
|
||||
filebrowserUrl={ql.filebrowser || ""}
|
||||
/>
|
||||
) : null}
|
||||
|
||||
{view === "services" ? (
|
||||
<div className="grid gap-4 md:grid-cols-2 xl:grid-cols-3">
|
||||
{(dash?.services || []).map((s, i) => (
|
||||
|
||||
Reference in New Issue
Block a user