web-ui: wave-1 foundation — services/web-ui/src/css/components/sidebar.css
This commit is contained in:
parent
a6c9f88068
commit
1c0ed05ac9
1 changed files with 119 additions and 0 deletions
119
services/web-ui/src/css/components/sidebar.css
Normal file
119
services/web-ui/src/css/components/sidebar.css
Normal file
|
|
@ -0,0 +1,119 @@
|
||||||
|
/* sidebar.css ─ flat app navigation rail (200px, 28px rows) */
|
||||||
|
|
||||||
|
.wd-sidebar {
|
||||||
|
width: var(--sidebar-w);
|
||||||
|
flex-shrink: 0;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background: var(--bg-panel);
|
||||||
|
border-right: 1px solid var(--border);
|
||||||
|
overflow-y: auto;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wd-sidebar-header {
|
||||||
|
height: var(--topbar-h);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 0 12px;
|
||||||
|
border-bottom: 1px solid var(--border-faint);
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.wd-sidebar-logo { width: 18px; height: 18px; }
|
||||||
|
.wd-sidebar-brand { font: 600 13px/1 var(--font); letter-spacing: -0.01em; color: var(--text-primary); }
|
||||||
|
|
||||||
|
.wd-sidebar-nav {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 8px 0;
|
||||||
|
gap: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wd-sidebar-section {
|
||||||
|
font: 600 10px/1 var(--font);
|
||||||
|
letter-spacing: 0.14em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: var(--text-tertiary);
|
||||||
|
padding: 16px 12px 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wd-nav-item {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
height: 28px;
|
||||||
|
padding: 0 8px 0 16px; /* extra left padding for the accent-dot indent */
|
||||||
|
font: 500 13px/1 var(--font);
|
||||||
|
color: var(--text-secondary);
|
||||||
|
text-decoration: none;
|
||||||
|
transition: background-color 120ms cubic-bezier(0.25, 1, 0.5, 1),
|
||||||
|
color 120ms cubic-bezier(0.25, 1, 0.5, 1);
|
||||||
|
}
|
||||||
|
.wd-nav-item:hover {
|
||||||
|
background: var(--bg-hover);
|
||||||
|
color: var(--text-primary);
|
||||||
|
}
|
||||||
|
.wd-nav-item svg { width: 14px; height: 14px; flex-shrink: 0; color: var(--text-tertiary); }
|
||||||
|
.wd-nav-item:hover svg { color: var(--text-secondary); }
|
||||||
|
|
||||||
|
.wd-nav-item.is-active {
|
||||||
|
background: var(--bg-surface);
|
||||||
|
color: var(--text-primary);
|
||||||
|
}
|
||||||
|
.wd-nav-item.is-active svg { color: var(--text-primary); }
|
||||||
|
|
||||||
|
/* 4px leading accent dot — NOT a side-stripe border (banned).
|
||||||
|
* Vertically centered, 8px tall, 4px from the left edge. */
|
||||||
|
.wd-nav-item.is-active::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
left: 4px;
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
width: 4px;
|
||||||
|
height: 8px;
|
||||||
|
border-radius: 2px;
|
||||||
|
background: var(--accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* IN DEV pill (auth-guard.js injects this) */
|
||||||
|
.wd-nav-item .nav-dev-badge {
|
||||||
|
margin-left: auto;
|
||||||
|
font: 700 9px/1 var(--font);
|
||||||
|
letter-spacing: 0.12em;
|
||||||
|
padding: 2px 5px;
|
||||||
|
border-radius: 3px;
|
||||||
|
background: oklch(28% 0.14 80 / 0.45);
|
||||||
|
color: oklch(85% 0.16 85);
|
||||||
|
border: 1px solid oklch(50% 0.16 80 / 0.55);
|
||||||
|
text-transform: uppercase;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Footer user widget */
|
||||||
|
.wd-sidebar-footer {
|
||||||
|
margin-top: auto;
|
||||||
|
padding: 12px;
|
||||||
|
border-top: 1px solid var(--border-faint);
|
||||||
|
}
|
||||||
|
.wd-sidebar-user {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
.wd-sidebar-user-avatar {
|
||||||
|
width: 28px; height: 28px;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: var(--bg-surface);
|
||||||
|
display: flex; align-items: center; justify-content: center;
|
||||||
|
font: 600 11px/1 var(--font);
|
||||||
|
color: var(--text-secondary);
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.wd-sidebar-user-info { flex: 1; min-width: 0; }
|
||||||
|
.wd-sidebar-user-name { font: 500 12px/1.3 var(--font); color: var(--text-primary); }
|
||||||
|
.wd-sidebar-user-role { font: 500 10px/1.3 var(--font); color: var(--text-tertiary); letter-spacing: 0.06em; text-transform: uppercase; }
|
||||||
|
.wd-sidebar-user-logout { opacity: 0; transition: opacity 120ms cubic-bezier(0.25, 1, 0.5, 1); }
|
||||||
|
.wd-sidebar-user:hover .wd-sidebar-user-logout { opacity: 1; }
|
||||||
Loading…
Reference in a new issue