235 lines
5.5 KiB
SCSS
235 lines
5.5 KiB
SCSS
.root {
|
|
display: grid;
|
|
--project-drawer-gap: var(--space-3);
|
|
--project-drawer-top: calc(var(--space-4) + var(--control-size-lg));
|
|
--project-drawer-bottom: calc(var(--sidebar-dock-clearance) + var(--project-drawer-gap));
|
|
}
|
|
|
|
.rootCompact {
|
|
justify-items: center;
|
|
}
|
|
|
|
.trigger {
|
|
width: 100%;
|
|
min-width: 0;
|
|
display: grid;
|
|
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
min-height: calc(var(--control-size-lg) + var(--space-2));
|
|
padding: var(--space-2) var(--space-3) calc(var(--space-2) + 0.2rem);
|
|
border: 1px solid color-mix(in srgb, var(--color-border-strong) 44%, transparent);
|
|
border-radius: calc(var(--radius-lg) + var(--space-1));
|
|
background: color-mix(in srgb, var(--color-surface) 96%, transparent);
|
|
box-shadow: var(--shadow-soft);
|
|
text-align: left;
|
|
position: relative;
|
|
z-index: 5;
|
|
transition:
|
|
border-color var(--duration-fast) var(--easing-standard),
|
|
background var(--duration-fast) var(--easing-standard),
|
|
box-shadow var(--duration-fast) var(--easing-standard),
|
|
transform 180ms var(--easing-standard);
|
|
}
|
|
|
|
.trigger:hover {
|
|
background: var(--color-surface-hover);
|
|
border-color: var(--color-border);
|
|
}
|
|
|
|
.triggerOpen {
|
|
border-color: color-mix(in srgb, var(--color-border-strong) 22%, transparent);
|
|
background: color-mix(in srgb, var(--color-surface) 92%, transparent);
|
|
box-shadow: var(--shadow-soft);
|
|
}
|
|
|
|
.triggerCompact {
|
|
width: var(--control-size-xl);
|
|
min-height: var(--control-size-xl);
|
|
grid-template-columns: auto;
|
|
justify-items: center;
|
|
gap: 0.15rem;
|
|
padding: var(--space-2) 0;
|
|
border-radius: var(--radius-xl);
|
|
}
|
|
|
|
.triggerCompact .triggerLead {
|
|
width: var(--control-size-md);
|
|
height: var(--control-size-md);
|
|
}
|
|
|
|
.triggerCompact .triggerIcon {
|
|
transform: rotate(0deg);
|
|
}
|
|
|
|
.triggerCompact .triggerIconOpen {
|
|
transform: rotate(180deg);
|
|
}
|
|
|
|
.triggerLead {
|
|
width: var(--control-size-md);
|
|
height: var(--control-size-md);
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border-radius: var(--radius-md);
|
|
background: color-mix(in srgb, var(--color-accent-soft) 82%, transparent);
|
|
color: var(--color-accent-strong);
|
|
}
|
|
|
|
.triggerCopy {
|
|
min-width: 0;
|
|
display: grid;
|
|
gap: 0.12rem;
|
|
}
|
|
|
|
.eyebrow,
|
|
.projectItemDescription {
|
|
@include text-caption;
|
|
color: var(--color-text-muted);
|
|
}
|
|
|
|
.eyebrow {
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.08em;
|
|
}
|
|
|
|
.value,
|
|
.projectItemName {
|
|
@include text-label;
|
|
}
|
|
|
|
.triggerIcon {
|
|
color: var(--color-text-muted);
|
|
transform: rotate(-90deg);
|
|
transition: transform var(--duration-fast) var(--easing-standard);
|
|
}
|
|
|
|
.triggerIconOpen {
|
|
transform: rotate(0deg);
|
|
}
|
|
|
|
.scrim {
|
|
position: absolute;
|
|
inset: calc(var(--project-drawer-top) + var(--project-drawer-gap)) var(--space-4)
|
|
var(--project-drawer-bottom) var(--space-4);
|
|
z-index: 2;
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
background: color-mix(in srgb, black 8%, transparent);
|
|
border-radius: var(--radius-lg);
|
|
transition: opacity 260ms var(--easing-standard);
|
|
}
|
|
|
|
.scrimOpen {
|
|
opacity: 1;
|
|
pointer-events: auto;
|
|
}
|
|
|
|
.rootCompact .scrim,
|
|
.rootCompact .drawer {
|
|
left: 0;
|
|
right: auto;
|
|
width: min(18rem, calc(100vw - 6rem));
|
|
}
|
|
|
|
.drawer {
|
|
position: absolute;
|
|
inset: calc(var(--project-drawer-top) + var(--project-drawer-gap)) var(--space-4)
|
|
var(--project-drawer-bottom) var(--space-4);
|
|
z-index: 3;
|
|
display: grid;
|
|
overflow: hidden;
|
|
border-radius: var(--radius-lg);
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
transform: translateX(calc(-1 * (var(--space-5) + 12%)));
|
|
will-change: transform, opacity;
|
|
transition:
|
|
opacity 240ms var(--easing-standard),
|
|
transform 360ms cubic-bezier(0.16, 1, 0.3, 1);
|
|
}
|
|
|
|
.drawerOpen {
|
|
opacity: 1;
|
|
pointer-events: auto;
|
|
transform: translateX(0);
|
|
}
|
|
|
|
.drawer::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
border-radius: inherit;
|
|
border: 1px solid color-mix(in srgb, var(--color-border-strong) 52%, transparent);
|
|
background: var(--color-surface-muted);
|
|
box-shadow:
|
|
14px 0 30px color-mix(in srgb, black 7%, transparent),
|
|
inset -1px 0 0 color-mix(in srgb, white 4%, transparent);
|
|
pointer-events: none;
|
|
}
|
|
|
|
.drawerBody {
|
|
position: relative;
|
|
z-index: 1;
|
|
min-height: 0;
|
|
display: grid;
|
|
align-content: start;
|
|
gap: var(--space-3);
|
|
padding: var(--space-4);
|
|
overflow-y: auto;
|
|
overscroll-behavior: contain;
|
|
scrollbar-width: none;
|
|
}
|
|
|
|
.drawerBody::-webkit-scrollbar {
|
|
width: 0;
|
|
}
|
|
|
|
.projectList {
|
|
list-style: none;
|
|
display: grid;
|
|
gap: 0.2rem;
|
|
padding: 0;
|
|
}
|
|
|
|
.projectItem {
|
|
width: 100%;
|
|
min-width: 0;
|
|
min-height: calc(var(--control-size-md) + var(--space-2));
|
|
padding: var(--space-2) var(--space-3);
|
|
border: 1px solid transparent;
|
|
border-radius: var(--radius-sm);
|
|
background: transparent;
|
|
color: var(--color-text-muted);
|
|
transition:
|
|
background 160ms var(--easing-standard),
|
|
color 160ms var(--easing-standard),
|
|
border-color 160ms var(--easing-standard),
|
|
transform 180ms var(--easing-standard);
|
|
text-align: left;
|
|
}
|
|
|
|
.projectItem:hover {
|
|
background: color-mix(in srgb, var(--color-surface-hover) 82%, transparent);
|
|
color: var(--color-text);
|
|
border-color: color-mix(in srgb, var(--color-border) 22%, transparent);
|
|
}
|
|
|
|
.projectItemActive {
|
|
border-color: color-mix(in srgb, var(--color-border) 28%, transparent);
|
|
background: color-mix(in srgb, var(--color-surface) 82%, transparent);
|
|
color: var(--color-text);
|
|
box-shadow: none;
|
|
}
|
|
|
|
.projectItemCopy {
|
|
min-width: 0;
|
|
display: grid;
|
|
gap: 0.05rem;
|
|
}
|
|
|
|
.projectItemDescription {
|
|
color: color-mix(in srgb, var(--color-text-muted) 84%, transparent);
|
|
}
|