This repository has been archived on 2026-04-03. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
core/src/css/pane-container.css
2026-03-08 16:54:17 +00:00

168 lines
3.8 KiB
CSS

/* ==========================================
Chat Switchboard — Pane Container
==========================================
v0.25.0: Styles for the multi-pane layout system.
Covers: pane container, leaf panes, tabbed panes,
drag handles, and tab bars.
========================================== */
/* ── Container ─────────────────────────────── */
.pane-container {
display: flex;
flex-direction: column;
height: 100%;
overflow: hidden;
}
/* ── Split ─────────────────────────────────── */
.pane-split--horizontal {
display: flex;
flex-direction: row;
height: 100%;
overflow: hidden;
}
.pane-split--vertical {
display: flex;
flex-direction: column;
width: 100%;
overflow: hidden;
}
/* ── Leaf Pane ─────────────────────────────── */
.pane-leaf {
display: flex;
flex-direction: column;
overflow: hidden;
position: relative;
box-sizing: border-box;
}
.pane-minimized {
max-width: 0 !important;
max-height: 0 !important;
padding: 0 !important;
border: none !important;
overflow: hidden !important;
}
/* ── Tabbed Pane ───────────────────────────── */
.pane-tabbed {
display: flex;
flex-direction: column;
overflow: hidden;
box-sizing: border-box;
}
/* Tab Bar */
.pane-tab-bar {
display: flex;
align-items: center;
gap: 0;
background: var(--bg-secondary, #1a1a1e);
border-bottom: 1px solid var(--border, #2a2a2e);
flex-shrink: 0;
height: 32px;
padding: 0 4px;
overflow-x: auto;
overflow-y: hidden;
}
.pane-tab-bar::-webkit-scrollbar { height: 0; }
.pane-tab-btn {
background: none;
border: none;
color: var(--text-3, #777);
font-size: 11px;
font-weight: 600;
font-family: inherit;
padding: 6px 12px;
cursor: pointer;
border-bottom: 2px solid transparent;
transition: color 0.15s, border-color 0.15s;
white-space: nowrap;
text-transform: uppercase;
letter-spacing: 0.3px;
}
.pane-tab-btn:hover {
color: var(--text, #eee);
}
.pane-tab-btn--active {
color: var(--accent, #b38a4e);
border-bottom-color: var(--accent, #b38a4e);
}
/* Tab Content */
.pane-tab-content {
flex: 1;
min-height: 0;
min-width: 0;
overflow: hidden;
position: relative;
}
.pane-tab-panel {
position: absolute;
inset: 0;
overflow: hidden;
}
/* When panel is hidden (inactive tab), override absolute positioning */
.pane-tab-panel[style*="display: none"] {
position: absolute;
}
/* ── Drag Handle ───────────────────────────── */
.pane-handle {
flex-shrink: 0;
background: var(--border, #2a2a2e);
transition: background 0.15s;
z-index: 10;
}
.pane-handle--horizontal {
width: 4px;
cursor: col-resize;
}
.pane-handle--vertical {
height: 4px;
cursor: row-resize;
}
.pane-handle:hover,
.pane-handle--active {
background: var(--accent, #b38a4e);
}
/* ── Responsive ────────────────────────────── */
@media (max-width: 768px) {
/* On mobile, splits collapse to vertical stack */
.pane-split--horizontal {
flex-direction: column;
}
.pane-handle--horizontal {
width: 100%;
height: 4px;
cursor: row-resize;
}
/* Hide non-primary panes on mobile */
.pane-split--horizontal > .pane:not(:first-child) {
display: none;
}
.pane-split--horizontal > .pane-handle {
display: none;
}
}