208 lines
4.5 KiB
SCSS
208 lines
4.5 KiB
SCSS
.shell {
|
|
height: 100dvh;
|
|
min-height: 100dvh;
|
|
display: grid;
|
|
grid-template-rows: auto minmax(0, 1fr);
|
|
background: var(--color-canvas);
|
|
color: var(--color-text);
|
|
}
|
|
|
|
.body {
|
|
--rail-width: 4.75rem;
|
|
--sidebar-width: 16.75rem;
|
|
--shell-top-left-radius: calc(var(--radius-xl) + var(--space-1));
|
|
--shell-frame-border: color-mix(in srgb, var(--color-border-strong) 44%, transparent);
|
|
--shell-divider-border: color-mix(in srgb, var(--color-border-strong) 34%, transparent);
|
|
--sidebar-panel-surface: color-mix(in srgb, var(--color-surface-muted) 92%, transparent);
|
|
--workspace-panel-surface: color-mix(in srgb, var(--color-canvas) 94%, var(--color-surface));
|
|
position: relative;
|
|
min-height: 0;
|
|
display: grid;
|
|
grid-template-columns: var(--rail-width) minmax(0, 1fr);
|
|
overflow: hidden;
|
|
background: var(--color-surface);
|
|
}
|
|
|
|
.bodyRailCollapsed {
|
|
--rail-width: 0rem;
|
|
}
|
|
|
|
.bodySidebarCollapsed {
|
|
--sidebar-width: 0rem;
|
|
}
|
|
|
|
.railColumn {
|
|
min-height: 0;
|
|
display: flex;
|
|
position: relative;
|
|
z-index: 6;
|
|
isolation: isolate;
|
|
overflow: visible;
|
|
background: var(--color-surface);
|
|
}
|
|
|
|
.workspaceRegion {
|
|
position: relative;
|
|
min-width: 0;
|
|
min-height: 0;
|
|
display: grid;
|
|
grid-template-columns: var(--sidebar-width) minmax(0, 1fr);
|
|
overflow: visible;
|
|
z-index: 1;
|
|
isolation: isolate;
|
|
border-top-left-radius: var(--shell-top-left-radius);
|
|
border-top-right-radius: 0;
|
|
}
|
|
|
|
.workspaceRegion::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
background:
|
|
linear-gradient(
|
|
to right,
|
|
var(--sidebar-panel-surface) 0,
|
|
var(--sidebar-panel-surface) calc(var(--sidebar-width) - 0.5px),
|
|
var(--workspace-panel-surface) calc(var(--sidebar-width) - 0.5px),
|
|
var(--workspace-panel-surface) 100%
|
|
);
|
|
border: 1px solid var(--shell-frame-border);
|
|
border-top: 0;
|
|
border-top-left-radius: var(--shell-top-left-radius);
|
|
border-top-right-radius: 0;
|
|
box-shadow: inset 0 1px 0 color-mix(in srgb, white 3%, transparent);
|
|
pointer-events: none;
|
|
z-index: 0;
|
|
}
|
|
|
|
.sidebarColumn {
|
|
position: relative;
|
|
min-width: 0;
|
|
min-height: 0;
|
|
display: grid;
|
|
grid-template-rows: minmax(0, 1fr);
|
|
overflow: visible;
|
|
z-index: 1;
|
|
background: var(--sidebar-panel-surface);
|
|
border-top: 1px solid var(--shell-frame-border);
|
|
border-left: 1px solid var(--shell-frame-border);
|
|
border-top-left-radius: var(--shell-top-left-radius);
|
|
}
|
|
|
|
.workspaceMain {
|
|
min-width: 0;
|
|
min-height: 0;
|
|
position: relative;
|
|
overflow: hidden;
|
|
z-index: 1;
|
|
border-top: 1px solid var(--shell-frame-border);
|
|
border-left: 1px solid var(--shell-divider-border);
|
|
background: var(--workspace-panel-surface);
|
|
border-top-right-radius: 0;
|
|
}
|
|
|
|
.sidebarDock {
|
|
position: absolute;
|
|
bottom: var(--space-3);
|
|
left: calc(var(--space-1) + (var(--rail-width) * 0.1));
|
|
width: max(12rem, calc(var(--sidebar-width) + (var(--rail-width) * 0.9) - var(--space-2)));
|
|
right: auto;
|
|
z-index: calc(var(--z-modal) + 1);
|
|
pointer-events: none;
|
|
|
|
> * {
|
|
pointer-events: auto;
|
|
}
|
|
}
|
|
|
|
@include respond-up(mobile) {
|
|
.body {
|
|
--rail-width: 5rem;
|
|
--sidebar-width: 17.25rem;
|
|
}
|
|
|
|
.bodyRailCollapsed {
|
|
--rail-width: 0rem;
|
|
}
|
|
|
|
.bodySidebarCollapsed {
|
|
--sidebar-width: 0rem;
|
|
}
|
|
}
|
|
|
|
@include respond-down(tablet) {
|
|
.body {
|
|
--rail-width: 4.5rem;
|
|
--sidebar-width: 13.25rem;
|
|
}
|
|
|
|
.bodyRailCollapsed {
|
|
--rail-width: 0rem;
|
|
}
|
|
|
|
.bodySidebarCollapsed {
|
|
--sidebar-width: 0rem;
|
|
}
|
|
}
|
|
|
|
.bodyRailCollapsed .railColumn {
|
|
overflow: hidden;
|
|
}
|
|
|
|
.bodySidebarCollapsed .railColumn {
|
|
--rail-dock-clearance: 0rem;
|
|
}
|
|
|
|
.bodySidebarCollapsed:not(.bodyRailCollapsed) .railColumn {
|
|
--rail-bottom-offset: var(--space-3);
|
|
}
|
|
|
|
.bodySidebarCollapsed .sidebarColumn {
|
|
--sidebar-dock-clearance: 0rem;
|
|
display: none;
|
|
overflow: hidden;
|
|
border-left-width: 0;
|
|
border-top-width: 0;
|
|
}
|
|
|
|
.bodySidebarCollapsed .workspaceRegion {
|
|
grid-template-columns: minmax(0, 1fr);
|
|
}
|
|
|
|
.bodySidebarCollapsed .workspaceMain {
|
|
border-left-color: transparent;
|
|
}
|
|
|
|
.bodySidebarCollapsed:not(.bodyRailCollapsed) .workspaceMain {
|
|
border-top-width: 1px;
|
|
border-top-color: var(--shell-frame-border);
|
|
border-left-color: var(--shell-frame-border);
|
|
border-top-left-radius: var(--shell-top-left-radius);
|
|
box-shadow: none;
|
|
}
|
|
|
|
.bodySidebarCollapsed:not(.bodyRailCollapsed) .workspaceRegion::before {
|
|
display: none;
|
|
}
|
|
|
|
.bodySidebarCollapsed .sidebarDock {
|
|
display: none;
|
|
}
|
|
|
|
@include respond-down(mobile) {
|
|
.body {
|
|
grid-template-columns: 4.5rem minmax(0, 1fr);
|
|
--rail-width: 4.5rem;
|
|
}
|
|
|
|
.railColumn {
|
|
position: sticky;
|
|
top: 0;
|
|
}
|
|
|
|
.workspaceRegion,
|
|
.sidebarDock {
|
|
display: none;
|
|
}
|
|
}
|