3862996045
CI/CD Pipeline / Check if frontend-only change (push) Waiting to run
CI/CD Pipeline / Validate - Code Quality (push) Waiting to run
CI/CD Pipeline / Validate - Type Check (mypy) (push) Waiting to run
CI/CD Pipeline / Validate - Migration (alembic) (push) Waiting to run
CI/CD Pipeline / Unit Tests (push) Blocked by required conditions
CI/CD Pipeline / Integration Tests (push) Blocked by required conditions
CI/CD Pipeline / Frontend Lint (push) Waiting to run
CI/CD Pipeline / Frontend Unit Tests (push) Blocked by required conditions
CI/CD Pipeline / PR Build API Image (push) Waiting to run
CI/CD Pipeline / PR Build Web Image (push) Waiting to run
CI/CD Pipeline / PR Build Worker Image (push) Waiting to run
CI/CD Pipeline / Build Staging API Image (push) Waiting to run
CI/CD Pipeline / Build Staging Web Image (push) Waiting to run
CI/CD Pipeline / Build Staging Worker Image (push) Waiting to run
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Blocked by required conditions
CI/CD Pipeline / Staging E2E Tests (push) Blocked by required conditions
CI/CD Pipeline / Staging API Integration Tests (push) Blocked by required conditions
CI/CD Pipeline / Build Production API Image (push) Waiting to run
CI/CD Pipeline / Build Production Web Image (push) Waiting to run
CI/CD Pipeline / Build Production Worker Image (push) Waiting to run
CI/CD Pipeline / Deploy Production (push) Blocked by required conditions
CI/CD Pipeline / Production Browser E2E (push) Blocked by required conditions
CI/CD Pipeline / ACR Image Cleanup (push) Blocked by required conditions
159 lines
4.9 KiB
CSS
159 lines
4.9 KiB
CSS
/* ============================================================
|
||
Sidebar.css - 侧边栏导航样式(Task 1.3)
|
||
|
||
结构:
|
||
.xx-sidebar-nav 导航容器
|
||
├── .xx-sidebar-group 分组
|
||
│ ├── .xx-sidebar-group-title 分组标题(折叠时隐藏)
|
||
│ └── .xx-sidebar-menu 菜单列表
|
||
│ └── .xx-sidebar-menu-item 菜单项
|
||
│ ├── .xx-sidebar-menu-icon 图标
|
||
│ └── .xx-sidebar-menu-label 文字标签(折叠时隐藏)
|
||
└── .xx-sidebar-nav--collapsed 折叠态修饰类
|
||
|
||
所有样式使用 global.css 设计系统变量
|
||
============================================================ */
|
||
|
||
/* ── 导航容器 ─────────────────────────────────────────────── */
|
||
.xx-sidebar-nav {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: var(--space-xs);
|
||
padding: var(--space-xs) 0;
|
||
}
|
||
|
||
/* ── 分组 ─────────────────────────────────────────────────── */
|
||
.xx-sidebar-group {
|
||
display: flex;
|
||
flex-direction: column;
|
||
}
|
||
|
||
/* 分组标题 */
|
||
.xx-sidebar-group-title {
|
||
padding: var(--space-sm) var(--space-md) var(--space-xs);
|
||
font-size: var(--font-size-xs);
|
||
font-weight: var(--font-weight-semibold);
|
||
color: var(--text-tertiary);
|
||
text-transform: uppercase;
|
||
letter-spacing: var(--letter-spacing-wide);
|
||
line-height: var(--line-height-tight);
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
user-select: none;
|
||
}
|
||
|
||
/* ── 菜单列表 ─────────────────────────────────────────────── */
|
||
.xx-sidebar-menu {
|
||
list-style: none;
|
||
margin: 0;
|
||
padding: 0;
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: var(--space-xxs);
|
||
}
|
||
|
||
/* ── 菜单项 ───────────────────────────────────────────────── */
|
||
.xx-sidebar-menu-item {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: var(--space-sm);
|
||
padding: var(--space-sm) var(--space-md);
|
||
margin: 0 var(--space-xs);
|
||
border-radius: var(--radius-sm);
|
||
cursor: pointer;
|
||
color: var(--text-secondary);
|
||
font-size: var(--font-size-base);
|
||
font-weight: var(--font-weight-medium);
|
||
line-height: var(--line-height-base);
|
||
transition: var(--transition-colors);
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
user-select: none;
|
||
min-height: 40px;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.xx-sidebar-menu-item:hover {
|
||
color: var(--text-primary);
|
||
background: var(--primary-soft);
|
||
}
|
||
|
||
/* 激活态 —— Indigo 高亮 */
|
||
.xx-sidebar-menu-item.xx-active {
|
||
color: var(--primary-color);
|
||
background: var(--primary-soft);
|
||
font-weight: var(--font-weight-semibold);
|
||
box-shadow: inset 3px 0 0 var(--primary-color);
|
||
}
|
||
|
||
.xx-sidebar-menu-item.xx-active:hover {
|
||
color: var(--primary-hover);
|
||
background: var(--primary-soft);
|
||
}
|
||
|
||
/* ── 菜单项图标 ───────────────────────────────────────────── */
|
||
.xx-sidebar-menu-icon {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
flex-shrink: 0;
|
||
width: 36px;
|
||
height: 36px;
|
||
border-radius: 10px;
|
||
background: #f1f5f9;
|
||
color: var(--text-secondary);
|
||
font-size: 18px;
|
||
line-height: 1;
|
||
transition: 0.15s ease;
|
||
}
|
||
|
||
.xx-sidebar-menu-item.xx-active .xx-sidebar-menu-icon {
|
||
background: var(--primary-color);
|
||
color: #fff;
|
||
}
|
||
|
||
.xx-sidebar-menu-item:hover .xx-sidebar-menu-icon {
|
||
color: var(--primary-color);
|
||
}
|
||
|
||
/* ── 菜单项文字 ───────────────────────────────────────────── */
|
||
.xx-sidebar-menu-label {
|
||
flex: 1;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
}
|
||
|
||
/* ============================================================
|
||
折叠态 —— 仅显示图标
|
||
============================================================ */
|
||
.xx-sidebar-nav--collapsed {
|
||
padding: var(--space-xs) 0;
|
||
}
|
||
|
||
/* 折叠时菜单项居中,仅图标 */
|
||
.xx-sidebar-nav--collapsed .xx-sidebar-menu-item {
|
||
justify-content: center;
|
||
padding: var(--space-sm);
|
||
margin: 0 var(--space-xxs);
|
||
}
|
||
|
||
/* 折叠时隐藏分组标题 */
|
||
.xx-sidebar-nav--collapsed .xx-sidebar-group-title {
|
||
display: none;
|
||
}
|
||
|
||
/* ============================================================
|
||
响应式 —— 移动端(≤768px)
|
||
侧边栏整体由 MainLayout 控制显示/隐藏,
|
||
此处仅确保导航内容在移动端不溢出
|
||
============================================================ */
|
||
@media (max-width: 768px) {
|
||
.xx-sidebar-nav {
|
||
padding: var(--space-xs) 0;
|
||
}
|
||
|
||
.xx-sidebar-menu-item {
|
||
min-height: 44px; /* 移动端更大的点击区域 */
|
||
}
|
||
}
|