diff --git a/angular-client/src/components/status-bar/status-bar.component.css b/angular-client/src/components/status-bar/status-bar.component.css new file mode 100644 index 000000000..21783874f --- /dev/null +++ b/angular-client/src/components/status-bar/status-bar.component.css @@ -0,0 +1,100 @@ +/* Block host so the sticky container's containing block spans the whole page. */ +:host { + display: block; + position: sticky; + top: 0; + z-index: 20; +} + +@keyframes sidebar-in { + from { + transform: translateX(100%); + opacity: 0; + } + to { + transform: translateX(0); + opacity: 1; + } +} + +/* Both surfaces dock flush to the top-right edge. */ +.side-handle, +.panel { + position: absolute; + top: 0; + right: 0; + background: var(--color-background-info); + border: 1px solid var(--color-divider); + border-right: none; + border-radius: var(--border-radius-panel) 0 0 var(--border-radius-panel); +} + +.side-handle, +.panel-collapse { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0; + cursor: pointer; + color: var(--color-text-subtitle); +} +.side-handle:hover, +.panel-collapse:hover { + background: rgba(255, 255, 255, 0.08); +} +.side-handle:focus-visible, +.panel-collapse:focus-visible { + outline: 2px solid var(--color-text-primary); +} +.side-handle mat-icon, +.panel-collapse mat-icon { + font-size: 24px; + width: 24px; + height: 24px; + line-height: 1; +} + +.side-handle { + width: 30px; + height: 56px; + color: var(--color-text-primary); + outline-offset: -2px; +} + +.panel { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 10px; + padding: 10px 12px 14px; + box-shadow: -6px 6px 18px rgba(0, 0, 0, 0.45); + animation: sidebar-in 0.2s ease; +} +@media (prefers-reduced-motion: reduce) { + .panel { + animation: none; + } +} + +.panel-header { + align-self: stretch; + display: flex; + align-items: center; + justify-content: space-between; +} +.panel-title { + font-size: var(--font-size-xs); + font-weight: 600; + letter-spacing: 0.04em; + text-transform: uppercase; + color: var(--color-text-subtitle); +} + +.panel-collapse { + width: 28px; + height: 28px; + border: none; + border-radius: 6px; + background: transparent; + outline-offset: 2px; +} diff --git a/angular-client/src/components/status-bar/status-bar.component.html b/angular-client/src/components/status-bar/status-bar.component.html new file mode 100644 index 000000000..a5e114c18 --- /dev/null +++ b/angular-client/src/components/status-bar/status-bar.component.html @@ -0,0 +1,22 @@ +@if (collapsed()) { + +} @else { +