mirror of
https://github.com/ant-design/ant-design.git
synced 2024-12-23 23:18:36 +08:00
81 lines
2.2 KiB
TypeScript
81 lines
2.2 KiB
TypeScript
import React, { useState } from 'react';
|
|
import {
|
|
DesktopOutlined,
|
|
FileOutlined,
|
|
PieChartOutlined,
|
|
TeamOutlined,
|
|
UserOutlined,
|
|
} from '@ant-design/icons';
|
|
import type { MenuProps } from 'antd';
|
|
import { Breadcrumb, Layout, Menu, theme } from 'antd';
|
|
|
|
const { Header, Content, Footer, Sider } = Layout;
|
|
|
|
type MenuItem = Required<MenuProps>['items'][number];
|
|
|
|
function getItem(
|
|
label: React.ReactNode,
|
|
key: React.Key,
|
|
icon?: React.ReactNode,
|
|
children?: MenuItem[],
|
|
): MenuItem {
|
|
return {
|
|
key,
|
|
icon,
|
|
children,
|
|
label,
|
|
} as MenuItem;
|
|
}
|
|
|
|
const items: MenuItem[] = [
|
|
getItem('Option 1', '1', <PieChartOutlined />),
|
|
getItem('Option 2', '2', <DesktopOutlined />),
|
|
getItem('User', 'sub1', <UserOutlined />, [
|
|
getItem('Tom', '3'),
|
|
getItem('Bill', '4'),
|
|
getItem('Alex', '5'),
|
|
]),
|
|
getItem('Team', 'sub2', <TeamOutlined />, [getItem('Team 1', '6'), getItem('Team 2', '8')]),
|
|
getItem('Files', '9', <FileOutlined />),
|
|
];
|
|
|
|
const App: React.FC = () => {
|
|
const [collapsed, setCollapsed] = useState(false);
|
|
const {
|
|
token: { colorBgContainer, borderRadiusLG },
|
|
} = theme.useToken();
|
|
|
|
return (
|
|
<Layout style={{ minHeight: '100vh' }}>
|
|
<Sider collapsible collapsed={collapsed} onCollapse={(value) => setCollapsed(value)}>
|
|
<div className="demo-logo-vertical" />
|
|
<Menu theme="dark" defaultSelectedKeys={['1']} mode="inline" items={items} />
|
|
</Sider>
|
|
<Layout>
|
|
<Header style={{ padding: 0, background: colorBgContainer }} />
|
|
<Content style={{ margin: '0 16px' }}>
|
|
<Breadcrumb style={{ margin: '16px 0' }}>
|
|
<Breadcrumb.Item>User</Breadcrumb.Item>
|
|
<Breadcrumb.Item>Bill</Breadcrumb.Item>
|
|
</Breadcrumb>
|
|
<div
|
|
style={{
|
|
padding: 24,
|
|
minHeight: 360,
|
|
background: colorBgContainer,
|
|
borderRadius: borderRadiusLG,
|
|
}}
|
|
>
|
|
Bill is a cat.
|
|
</div>
|
|
</Content>
|
|
<Footer style={{ textAlign: 'center' }}>
|
|
Ant Design ©{new Date().getFullYear()} Created by Ant UED
|
|
</Footer>
|
|
</Layout>
|
|
</Layout>
|
|
);
|
|
};
|
|
|
|
export default App;
|