v0.9.9
parent
9e7878b9c8
commit
416ef48395
|
|
@ -60,7 +60,7 @@
|
||||||
position: relative;
|
position: relative;
|
||||||
height: 64px;
|
height: 64px;
|
||||||
min-width: 360px;
|
min-width: 360px;
|
||||||
padding-left: 70px;
|
padding-left: 24px;
|
||||||
padding-right: 36px;
|
padding-right: 36px;
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
|
||||||
|
|
@ -296,7 +296,7 @@ function AppSider({ collapsed, onToggle }) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const logoNode = (
|
const logoNode = (
|
||||||
<div style={{ display: 'flex', alignItems: 'center', gap: 12, paddingLeft: 8 }}>
|
<div style={{ display: 'flex', alignItems: 'center', gap: 12 }}>
|
||||||
<img src="/favicon.svg" alt="logo" style={{ width: 32, height: 32 }} />
|
<img src="/favicon.svg" alt="logo" style={{ width: 32, height: 32 }} />
|
||||||
{!collapsed && (
|
{!collapsed && (
|
||||||
<span style={{ fontSize: 18, fontWeight: 'bold', color: 'var(--text-color)' }}>NexDocus</span>
|
<span style={{ fontSize: 18, fontWeight: 'bold', color: 'var(--text-color)' }}>NexDocus</span>
|
||||||
|
|
|
||||||
|
|
@ -15,11 +15,12 @@
|
||||||
|
|
||||||
/* Header */
|
/* Header */
|
||||||
.modern-sidebar-header {
|
.modern-sidebar-header {
|
||||||
padding: 24px 20px;
|
padding: 0 16px;
|
||||||
position: relative;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
height: 80px;
|
justify-content: space-between;
|
||||||
|
gap: 8px;
|
||||||
|
height: 64px;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -28,33 +29,46 @@
|
||||||
align-items: center;
|
align-items: center;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
flex: 1;
|
||||||
|
min-width: 0;
|
||||||
|
padding-left: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar-collapse-trigger {
|
.sidebar-collapse-trigger {
|
||||||
position: absolute;
|
width: 36px;
|
||||||
right: -13px;
|
height: 36px;
|
||||||
top: 32px;
|
border: none;
|
||||||
z-index: 20;
|
border-radius: 8px;
|
||||||
width: 26px;
|
background: var(--bg-color-secondary);
|
||||||
height: 26px;
|
color: var(--text-color-secondary);
|
||||||
border: 1px solid var(--border-color);
|
|
||||||
border-radius: 999px;
|
|
||||||
background: var(--header-bg);
|
|
||||||
color: #8a94a6;
|
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
box-shadow: 0 2px 8px rgba(0, 21, 41, 0.08);
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transform: translateY(-50%);
|
|
||||||
transition: all 0.2s;
|
transition: all 0.2s;
|
||||||
font-size: 10px;
|
font-size: 18px;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar-collapse-trigger:hover {
|
.sidebar-collapse-trigger:hover {
|
||||||
color: #1677ff;
|
color: #1677ff;
|
||||||
border-color: rgba(22, 119, 255, 0.28);
|
background: rgba(22, 119, 255, 0.08);
|
||||||
background: var(--header-bg);
|
}
|
||||||
|
|
||||||
|
/* Collapsed Header: logo on top, trigger below */
|
||||||
|
.ant-layout-sider-collapsed .modern-sidebar-header {
|
||||||
|
height: auto;
|
||||||
|
padding: 16px 0 8px;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-start;
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-layout-sider-collapsed .logo-container {
|
||||||
|
justify-content: center;
|
||||||
|
padding-left: 0;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Menu Area */
|
/* Menu Area */
|
||||||
|
|
@ -141,6 +155,17 @@
|
||||||
border-radius: 12px;
|
border-radius: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 收起态下分组之间显示浅色间隔线 */
|
||||||
|
.ant-layout-sider-collapsed .menu-group {
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-layout-sider-collapsed .menu-group + .menu-group {
|
||||||
|
border-top: 1px solid var(--border-color);
|
||||||
|
padding-top: 12px;
|
||||||
|
margin-top: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
/* Footer */
|
/* Footer */
|
||||||
.modern-sidebar-footer {
|
.modern-sidebar-footer {
|
||||||
padding: 16px;
|
padding: 16px;
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,8 @@ import {
|
||||||
LogoutOutlined,
|
LogoutOutlined,
|
||||||
QuestionCircleOutlined,
|
QuestionCircleOutlined,
|
||||||
RightOutlined,
|
RightOutlined,
|
||||||
LeftOutlined,
|
MenuFoldOutlined,
|
||||||
|
MenuUnfoldOutlined,
|
||||||
} from '@ant-design/icons';
|
} from '@ant-design/icons';
|
||||||
import './ModernSidebar.css';
|
import './ModernSidebar.css';
|
||||||
|
|
||||||
|
|
@ -85,7 +86,7 @@ const ModernSidebar = ({
|
||||||
onClick={() => onCollapse && onCollapse(!collapsed)}
|
onClick={() => onCollapse && onCollapse(!collapsed)}
|
||||||
aria-label={collapsed ? '展开侧边栏' : '收起侧边栏'}
|
aria-label={collapsed ? '展开侧边栏' : '收起侧边栏'}
|
||||||
>
|
>
|
||||||
{collapsed ? <RightOutlined /> : <LeftOutlined />}
|
{collapsed ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue