"use client"; import { type ReactNode, useEffect, useState } from "react"; import { usePathname } from "next/navigation"; import { Separator } from "@/components/ui/separator"; import { SidebarTrigger } from "@/components/ui/sidebar"; import { api } from "@/lib/api"; import { cn } from "@/lib/utils"; import { useCurrentUser } from "@/hooks/use-current-user"; import { AccountSwitcher } from "./sidebar/account-switcher"; import { LayoutControls } from "./sidebar/layout-controls"; import { SearchDialog } from "./sidebar/search-dialog"; import { ThemeSwitcher } from "./sidebar/theme-switcher"; // 任务详情页保持原样:它自带头部/Tabs 与内边距,这里不再叠加全局头部和 padding。 function isFullBleed(pathname: string) { const p = (() => { try { return decodeURIComponent(pathname); } catch { return pathname; } })(); return p.startsWith("/function/tasks/"); } export function MainContent({ children }: { children: ReactNode }) { const currentUser = useCurrentUser(); const pathname = usePathname(); const [version, setVersion] = useState(""); useEffect(() => { api .health() .then((h) => setVersion(h.version ?? "")) .catch(() => setVersion("")); }, []); if (isFullBleed(pathname)) { return <>{children}; } return ( <>
{version && ( 版本·v{version} )}
{children}
); }