feat(config): 重构配置中心导航与版本展示,支持全量版本加载

This commit is contained in:
2026-05-16 10:28:00 +08:00
parent 8bd7cc3d73
commit 1578c7e214
15 changed files with 375 additions and 471 deletions

View File

@@ -84,7 +84,7 @@ export function AdminBreadcrumb() {
return (
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbList className="gap-1">
{breadcrumbs.map((crumb, index) => {
const isLast = index === breadcrumbs.length - 1;
const itemKey = `${crumb.href}-${index}`;

View File

@@ -17,15 +17,15 @@ export function AdminShell({ children }: { children: ReactNode }) {
<SidebarProvider defaultOpen>
<AdminAppSidebar />
<SidebarInset className="max-md:overflow-x-hidden">
<header className="sticky top-0 z-30 flex min-h-12 items-center gap-3 border-b border-border bg-background/80 px-4 py-2 backdrop-blur-md">
<header className="sticky top-0 z-30 flex min-h-14 items-center gap-3 border-b border-border bg-background/80 pl-4 pr-4 py-2 backdrop-blur-md">
<SidebarTrigger />
<Separator orientation="vertical" className="mr-2 h-4" />
<Separator orientation="vertical" className="mr-1.5 h-4" />
<AdminBreadcrumb />
<div className="ml-auto flex shrink-0 items-center">
<ShellToolbar />
</div>
</header>
<div className="flex flex-1 flex-col px-6 py-6 md:px-8 md:py-8">
<div className="flex flex-1 flex-col px-6 pt-4 pb-6 md:px-8 md:pt-4 md:pb-8">
{children}
</div>
</SidebarInset>

View File

@@ -45,19 +45,19 @@ export function AdminAppSidebar() {
return (
<Sidebar collapsible="icon" variant="inset">
<SidebarHeader className="border-b border-sidebar-border">
<SidebarHeader className="border-b border-sidebar-border px-2 py-1.5">
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton
render={<Link href={ADMIN_BASE} />}
className="gap-3 px-0 hover:bg-transparent"
className="gap-2 px-0 hover:bg-transparent"
>
<SparklesIcon data-icon="inline-start" aria-hidden />
<div className="flex flex-col items-start gap-0.5 group-data-[collapsible=icon]:hidden">
<div className="flex flex-col items-start gap-0 group-data-[collapsible=icon]:hidden">
<span className="font-semibold tracking-tight text-sidebar-foreground">
</span>
<span className="text-xs text-sidebar-foreground/70">
<span className="text-[11px] leading-tight text-sidebar-foreground/70">
Lottery Admin
</span>
</div>

View File

@@ -307,7 +307,7 @@ function SidebarInset({ className, ...props }: React.ComponentProps<"main">) {
<main
data-slot="sidebar-inset"
className={cn(
"relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",
"relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",
className
)}
{...props}