"use client";
import Link from "next/link";
import { ArrowLeft, ChevronDown } from "lucide-react";
import { Button } from "@/components/ui/button";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuLabel,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
import {
Select,
SelectContent,
SelectGroup,
SelectItem,
SelectLabel,
SelectSeparator,
SelectTrigger,
SelectValue,
} from "@/components/ui/select";
import { Separator } from "@/components/ui/separator";
import { ADMIN_SETTINGS_NAV_GROUPS } from "../_lib/settings-navigation";
import type { AdminSettingsNavGroup, AdminSettingsNavItem } from "../_lib/types";
import { SettingStatusBadge } from "./setting-status-badge";
function getActiveGroup(activeTab: string) {
return ADMIN_SETTINGS_NAV_GROUPS.find((group) =>
group.items.some((item) => item.value === activeTab)
);
}
function getActiveItem(activeTab: string) {
return ADMIN_SETTINGS_NAV_GROUPS.flatMap((group) => group.items).find(
(item) => item.value === activeTab
);
}
function SettingsGroupDropdown({
activeTab,
group,
onTabChange,
}: {
activeTab: string;
group: AdminSettingsNavGroup;
onTabChange: (value: string) => void;
}) {
const hasActiveTab = group.items.some((item) => item.value === activeTab);
return (
{group.title}
{group.items.map((item) => {
const Icon = item.icon;
const itemContent = (
<>
{item.label}
{item.description}
{item.value === activeTab ? (
当前
) : null}
>
);
if (item.href) {
return (
{itemContent}
);
}
return (
onTabChange(item.value)}
>
{itemContent}
);
})}
);
}
function SettingsQuickAction({
activeTab,
item,
onTabChange,
}: {
activeTab: string;
item: AdminSettingsNavItem;
onTabChange: (value: string) => void;
}) {
const Icon = item.icon;
const className =
item.value === activeTab
? "border-primary bg-primary text-primary-foreground hover:bg-primary/90"
: "border-border bg-background text-foreground hover:bg-accent hover:text-accent-foreground";
if (item.href) {
return (
);
}
return (
);
}
export function AdminSettingsNavigation({
activeTab,
onTabChange,
}: {
activeTab: string;
onTabChange: (value: string) => void;
}) {
const activeGroup = getActiveGroup(activeTab);
const activeItem = getActiveItem(activeTab);
const ActiveIcon = activeItem?.icon;
return (
Admin Console
系统设置中心
{activeGroup ? (
{activeGroup.title}
) : null}
页面已改成横向工作区:顶部收拢分类入口,正文区域尽量留给配置表单和数据内容。
{(activeGroup?.items ?? []).map((item) => (
))}
{ADMIN_SETTINGS_NAV_GROUPS.map((group) => (
))}
{(activeGroup?.items ?? []).map((item) => (
))}
{activeItem && ActiveIcon ? (
{activeItem.label}
{activeGroup ? (
{activeGroup.title}
) : null}
{activeItem.description}
) : null}
);
}