185 lines
4.3 KiB
SCSS
185 lines
4.3 KiB
SCSS
.rail {
|
|
--rail-workspace-size: var(--control-size-lg);
|
|
position: relative;
|
|
z-index: 3;
|
|
flex: 1;
|
|
min-height: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: var(--space-3);
|
|
padding: var(--space-3) var(--space-2) calc(var(--space-3) + var(--rail-dock-clearance, var(--shell-dock-clearance)));
|
|
overflow: visible;
|
|
}
|
|
|
|
.railCollapsed {
|
|
--rail-workspace-size: calc(var(--control-size-md) + 0.1rem);
|
|
justify-content: flex-start;
|
|
gap: 0;
|
|
padding-top: var(--space-4);
|
|
padding-inline: var(--space-1);
|
|
}
|
|
|
|
.topCluster {
|
|
width: 100%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
}
|
|
|
|
.topCluster {
|
|
gap: var(--space-3);
|
|
}
|
|
|
|
.railCollapsed .topCluster {
|
|
gap: var(--space-3);
|
|
}
|
|
|
|
.railCollapsed .topCluster {
|
|
align-items: center;
|
|
}
|
|
|
|
.items {
|
|
width: 100%;
|
|
min-height: 0;
|
|
flex: 1;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
overflow: visible;
|
|
padding-block: var(--space-1);
|
|
}
|
|
|
|
.itemSlot {
|
|
position: relative;
|
|
width: 100%;
|
|
display: flex;
|
|
justify-content: center;
|
|
overflow: visible;
|
|
}
|
|
|
|
.itemSlot:hover,
|
|
.itemSlot:focus-within,
|
|
.itemSlotActive {
|
|
z-index: 12;
|
|
}
|
|
|
|
.activeIndicator {
|
|
position: absolute;
|
|
left: calc(50% - (var(--rail-workspace-size) / 2) - var(--space-2));
|
|
top: 50%;
|
|
width: 0.26rem;
|
|
height: 0.55rem;
|
|
border-radius: var(--radius-pill);
|
|
background: hsl(0 0% 100% / 0.94);
|
|
transform: translateY(-50%) scaleY(0.72);
|
|
transform-origin: center;
|
|
opacity: 0;
|
|
z-index: 2;
|
|
transition:
|
|
opacity 140ms var(--easing-standard),
|
|
height 180ms var(--easing-standard),
|
|
transform 180ms var(--easing-standard);
|
|
}
|
|
|
|
.itemSlot:hover .activeIndicator {
|
|
opacity: 1;
|
|
height: 1.1rem;
|
|
transform: translateY(-50%) scaleY(1);
|
|
}
|
|
|
|
.itemSlotActive .activeIndicator {
|
|
opacity: 1;
|
|
height: 2.1rem;
|
|
transform: translateY(-50%) scaleY(1);
|
|
}
|
|
|
|
.hoverLabel {
|
|
position: absolute;
|
|
left: calc(100% + var(--space-3));
|
|
top: 50%;
|
|
z-index: 8;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
min-height: 2rem;
|
|
padding: 0 var(--space-3);
|
|
border: 1px solid color-mix(in srgb, var(--color-border-strong) 52%, transparent);
|
|
border-radius: var(--radius-md);
|
|
background: var(--color-surface-muted);
|
|
color: var(--color-text);
|
|
white-space: nowrap;
|
|
box-shadow: 0 12px 28px color-mix(in srgb, black 16%, transparent);
|
|
@include text-label;
|
|
pointer-events: none;
|
|
opacity: 0;
|
|
transform: translateY(-50%) translateX(calc(var(--space-2) * -1));
|
|
transition:
|
|
opacity 140ms var(--easing-standard),
|
|
transform 180ms cubic-bezier(0.22, 1, 0.36, 1);
|
|
}
|
|
|
|
.hoverLabel::before {
|
|
content: "";
|
|
position: absolute;
|
|
top: 50%;
|
|
left: calc(var(--space-2) * -1);
|
|
width: 0.7rem;
|
|
height: 0.7rem;
|
|
border-left: 1px solid color-mix(in srgb, var(--color-border-strong) 52%, transparent);
|
|
border-bottom: 1px solid color-mix(in srgb, var(--color-border-strong) 52%, transparent);
|
|
background: var(--color-surface-muted);
|
|
transform: translateY(-50%) rotate(45deg);
|
|
}
|
|
|
|
.sectionDivider {
|
|
width: calc(var(--rail-workspace-size) - var(--space-2));
|
|
height: 1px;
|
|
border-radius: var(--radius-pill);
|
|
background: color-mix(in srgb, var(--color-border-strong) 58%, transparent);
|
|
}
|
|
|
|
.itemSlot:hover .hoverLabel {
|
|
opacity: 1;
|
|
transform: translateY(-50%) translateX(0);
|
|
}
|
|
|
|
.workspaceButton {
|
|
width: var(--rail-workspace-size);
|
|
height: var(--rail-workspace-size);
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
@include interactive-frame(var(--color-surface-muted), var(--color-border), var(--color-text-muted), var(--radius-lg));
|
|
@include text-label;
|
|
@include interactive-frame-hover();
|
|
transition:
|
|
border-radius 180ms var(--easing-standard),
|
|
background 180ms var(--easing-standard),
|
|
color 180ms var(--easing-standard),
|
|
transform 180ms var(--easing-standard);
|
|
}
|
|
|
|
.personalButton {
|
|
background: var(--color-accent);
|
|
border-color: transparent;
|
|
color: var(--color-accent-contrast);
|
|
font-weight: 700;
|
|
letter-spacing: -0.02em;
|
|
}
|
|
|
|
.itemSlot:hover .workspaceButton,
|
|
.itemSlot:focus-within .workspaceButton {
|
|
border-radius: var(--radius-md);
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
.workspaceButtonActive {
|
|
background: var(--color-accent);
|
|
border-color: transparent;
|
|
color: var(--color-accent-contrast);
|
|
border-radius: var(--radius-md);
|
|
box-shadow: none;
|
|
}
|