A free, open, self-hosted app platform (GNU AGPLv3): one-click app deploys, Traefik reverse proxy with automatic SSL, rootless Docker support, gluetun VPN routing, and a web dashboard to manage it all. Free & open forever to self-host; optional paid hosted services fund it. See PROMISE.md. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Signed-off-by: librelad <librelad@digitalangels.vip>
94 lines
1.9 KiB
CSS
94 lines
1.9 KiB
CSS
/* Unified Apps Layout Styles. Extracted from apps-unified-layout.html
|
|
so all CSS lives under css/ — themes drive colors via the variables
|
|
defined in themes/<name>/theme.css. */
|
|
|
|
/* Sidebar + main fit the viewport exactly (minus the 60px topbar)
|
|
and scroll independently — same pattern Tasks uses, so the sidebar
|
|
background paints the full column even when the main content is
|
|
shorter than the viewport. */
|
|
.apps-layout {
|
|
display: flex;
|
|
width: 100%;
|
|
height: calc(100vh - 60px);
|
|
}
|
|
|
|
.sidebar-container {
|
|
flex-shrink: 0;
|
|
width: 220px;
|
|
height: 100%;
|
|
background: var(--sidebar-bg);
|
|
border-right: 1px solid var(--border-color);
|
|
overflow-y: auto;
|
|
transition: transform 0.3s ease;
|
|
}
|
|
|
|
.main-content {
|
|
flex: 1;
|
|
height: 100%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.content-view {
|
|
flex: 1;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
#app-detail-view {
|
|
display: none;
|
|
padding: 22px;
|
|
}
|
|
|
|
.content-view.active {
|
|
display: block;
|
|
}
|
|
|
|
#apps-view.active {
|
|
display: block;
|
|
}
|
|
|
|
/* Mobile responsiveness */
|
|
@media (max-width: 768px) {
|
|
.apps-layout {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.sidebar-container {
|
|
width: 100%;
|
|
position: fixed;
|
|
top: 60px;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
z-index: 1000;
|
|
transform: translateX(-100%);
|
|
background: var(--sidebar-bg);
|
|
}
|
|
|
|
.sidebar-container.mobile-open {
|
|
transform: translateX(0);
|
|
}
|
|
|
|
.main-content {
|
|
width: 100%;
|
|
}
|
|
}
|
|
|
|
/* Ensure sidebar stays visible during transitions. Scoped to the
|
|
apps layout — on the config page the sidebar is a direct flex
|
|
child of .container with its own 220px width from sidebar.css,
|
|
and the unscoped width: 100% here was flex-basing the sidebar
|
|
to 100% of the container, breaking the config layout. */
|
|
.apps-layout .sidebar {
|
|
width: 100%;
|
|
height: 100%;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
#app-detail-view {
|
|
padding: 10px;
|
|
}
|
|
}
|