Files
xiaoxia-saas/apps/web/src/components/layout/Sidebar.css
T
xiaoxia a7e6145bb1
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (push) Successful in 2s
CI/CD Pipeline / Check push changed paths (push) Successful in 5s
CI/CD Pipeline / Build Staging API Image (push) Successful in 25s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 25s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 50s
CI/CD Pipeline / Integration Tests (push) Successful in 1m45s
CI/CD Pipeline / Validate - Python (mypy + alembic) (push) Successful in 2m0s
CI/CD Pipeline / Validate - Style (push) Successful in 2m28s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 1m33s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 1m46s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 4m48s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 2m35s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 3m9s
CI/CD Pipeline / Unit Tests (push) Successful in 7m41s
CI/CD Pipeline / Validate - Security (push) Successful in 8m31s
CI/CD Pipeline / Production Browser E2E (push) Has been skipped
CI/CD Pipeline / Canary Release to Production (push) Failing after 182h57m22s
CI/CD Pipeline / CI Gate (push) Failing after 182h57m25s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 182h57m25s
CI/CD Pipeline / Build Production API Image (push) Failing after 182h57m26s
CI/CD Pipeline / Retag skipped Staging Worker Image (push) Failing after 183h5m2s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 183h6m2s
CI/CD Pipeline / PR Build Web Image (push) Failing after 183h6m2s
CI/CD Pipeline / Retag skipped Staging Web Image (push) Failing after 183h5m2s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 183h6m4s
CI/CD Pipeline / Retag skipped Staging API Image (push) Failing after 183h5m2s
CI/CD Pipeline / Deploy Production (push) Failing after 183h32m8s
CI/CD Pipeline / Build Production Web Image (push) Failing after 183h32m11s
CI/CD Pipeline / Frontend Lint (push) Failing after 183h40m44s
CI/CD Pipeline / PR Build API Image (push) Failing after 183h40m48s
fix: #1807 侧边栏缩窄 240px→128px + 页面内容区拓宽 (#1808)
Co-authored-by: xiaoxia <dev@xiaoxiajianji.com>
Co-committed-by: xiaoxia <dev@xiaoxiajianji.com>
2026-09-09 00:18:00 +08:00

169 lines
5.1 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* ============================================================
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-sm) 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-xs);
padding: var(--space-sm) var(--space-xs);
margin: 0 var(--space-xxs);
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: 28px;
height: 28px;
border-radius: 8px;
background: #f1f5f9;
color: var(--text-secondary);
font-size: 16px;
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;
min-width: 0;
overflow: hidden;
white-space: nowrap;
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-xs);
margin: 0;
}
/* 折叠态图标恢复更大尺寸居中 */
.xx-sidebar-nav--collapsed .xx-sidebar-menu-icon {
width: 32px;
height: 32px;
border-radius: 8px;
font-size: 16px;
}
/* 折叠时隐藏分组标题 */
.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; /* 移动端更大的点击区域 */
}
}