mirror of
https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
synced 2025-10-02 08:06:38 +08:00
75 lines
1.5 KiB
TypeScript
75 lines
1.5 KiB
TypeScript
"use client";
|
|
|
|
import React, { useState } from "react";
|
|
import {
|
|
AppstoreOutlined,
|
|
MailOutlined,
|
|
SettingOutlined,
|
|
} from "@ant-design/icons";
|
|
import type { MenuProps, MenuTheme } from "antd";
|
|
|
|
type MenuItem = Required<MenuProps>["items"][number];
|
|
|
|
function getItem(
|
|
label: React.ReactNode,
|
|
key?: React.Key | null,
|
|
icon?: React.ReactNode,
|
|
children?: MenuItem[],
|
|
type?: "group",
|
|
): MenuItem {
|
|
return {
|
|
key,
|
|
icon,
|
|
children,
|
|
label,
|
|
type,
|
|
} as MenuItem;
|
|
}
|
|
|
|
const items: MenuItem[] = [
|
|
getItem("Navigation One", "sub1", <MailOutlined />, [
|
|
getItem("Option 1", "1"),
|
|
getItem("Option 2", "2"),
|
|
getItem("Option 3", "3"),
|
|
getItem("Option 4", "4"),
|
|
]),
|
|
|
|
getItem("Navigation Two", "sub2", <AppstoreOutlined />, [
|
|
getItem("Option 5", "5"),
|
|
getItem("Option 6", "6"),
|
|
getItem("Submenu", "sub3", null, [
|
|
getItem("Option 7", "7"),
|
|
getItem("Option 8", "8"),
|
|
]),
|
|
]),
|
|
|
|
getItem("Navigation Three", "sub4", <SettingOutlined />, [
|
|
getItem("Option 9", "9"),
|
|
getItem("Option 10", "10"),
|
|
getItem("Option 11", "11"),
|
|
getItem("Option 12", "12"),
|
|
]),
|
|
];
|
|
|
|
const App: React.FC = () => {
|
|
const [theme, setTheme] = useState<MenuTheme>("dark");
|
|
const [current, setCurrent] = useState("1");
|
|
|
|
const changeTheme = (value: boolean) => {
|
|
setTheme(value ? "dark" : "light");
|
|
};
|
|
|
|
const onClick: MenuProps["onClick"] = (e) => {
|
|
console.log("click ", e);
|
|
setCurrent(e.key);
|
|
};
|
|
|
|
return (
|
|
<>
|
|
<div>Admin Page</div>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default App;
|