Files
Control-Center/frontend/src/app/layout/bottom-nav/bottom-nav.component.scss
rex-bot 999f6614ce
All checks were successful
Dev Build / build-test (pull_request) Successful in 2m46s
CUB-27: Responsive layout and adaptive navigation
2026-04-29 10:22:18 -04:00

94 lines
2.5 KiB
SCSS
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.
// ============================================================================
// Bottom Navigation Bar — Mobile Navigation
// Per CUB-27 spec breakpoints:
// Compact (0599px): Visible — M3 NavigationBar pattern
// Medium+ (≥600px): Hidden — nav rail takes over
// ============================================================================
.bottom-nav {
display: none; // Hidden on desktop, shown on mobile via media query
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: var(--cc-bottom-nav-height);
background-color: var(--cc-surface-container-high);
border-top: 1px solid var(--cc-outline);
z-index: 50;
align-items: center;
justify-content: space-around;
padding: 0 8px;
// Safe area inset for notched devices
padding-bottom: env(safe-area-inset-bottom, 0px);
}
.bottom-nav__item {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 4px;
min-width: 48px;
min-height: 48px;
padding: 8px 0;
text-decoration: none;
color: var(--cc-on-surface-variant);
border-radius: 16px;
transition: color 150ms ease, background-color 150ms ease;
&:hover {
color: var(--cc-on-surface);
background-color: rgba(255, 255, 255, 0.06);
}
&--active {
color: var(--status-active);
background-color: var(--status-active-bg);
.bottom-nav__label {
font-weight: 500;
}
}
}
.bottom-nav__icon-wrapper {
display: flex;
align-items: center;
justify-content: center;
width: 32px;
height: 32px;
border-radius: 16px;
.bottom-nav__item--active & {
background-color: var(--status-active-bg);
}
}
.bottom-nav__label {
font-size: 12px;
font-weight: 400;
letter-spacing: 0.02em;
white-space: nowrap;
}
// ---------------------------------------------------------------------------
// Compact (0599px): Show bottom nav
// ---------------------------------------------------------------------------
@media (max-width: 599px) {
.bottom-nav {
display: flex;
}
}
// ---------------------------------------------------------------------------
// Medium+ (≥600px): Hidden — nav rail takes over
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
// Accessibility: Reduced Motion
// ---------------------------------------------------------------------------
@media (prefers-reduced-motion: reduce) {
.bottom-nav__item {
transition: none;
}
}