189 lines
4.2 KiB
SCSS
189 lines
4.2 KiB
SCSS
@use "../../../styles/tools/mixins" as *;
|
|
|
|
@mixin section-label {
|
|
@include text-caption;
|
|
color: var(--color-text-subtle);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.04em;
|
|
}
|
|
|
|
@mixin tree-list {
|
|
list-style: none;
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
padding: 0;
|
|
}
|
|
|
|
@mixin empty-slot {
|
|
min-height: calc(var(--control-size-lg) - var(--space-2));
|
|
padding-left: calc(var(--space-3) + (var(--tree-depth, 0) * var(--space-4)));
|
|
border-radius: var(--radius-lg);
|
|
border: 1px dashed color-mix(in srgb, var(--color-border) 38%, transparent);
|
|
opacity: 0.35;
|
|
}
|
|
|
|
@mixin input-row {
|
|
width: 100%;
|
|
min-width: 0;
|
|
display: grid;
|
|
grid-template-columns: auto minmax(0, 1fr);
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
min-height: calc(var(--control-size-lg) - var(--space-2));
|
|
padding: var(--space-2) var(--space-3);
|
|
padding-left: calc(var(--space-3) + (var(--tree-depth, 0) * var(--space-4)));
|
|
border: 1px solid color-mix(in srgb, var(--color-border) 42%, transparent);
|
|
border-radius: var(--radius-lg);
|
|
background: color-mix(in srgb, var(--color-surface) 94%, transparent);
|
|
}
|
|
|
|
@mixin input {
|
|
width: 100%;
|
|
min-width: 0;
|
|
border: 0;
|
|
background: transparent;
|
|
color: var(--color-text);
|
|
font: inherit;
|
|
outline: none;
|
|
|
|
&::placeholder {
|
|
color: var(--color-text-muted);
|
|
}
|
|
}
|
|
|
|
@mixin item {
|
|
width: 100%;
|
|
min-width: 0;
|
|
display: grid;
|
|
position: relative;
|
|
isolation: isolate;
|
|
grid-template-columns: auto 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);
|
|
padding-left: calc(var(--space-3) + (var(--tree-depth, 0) * var(--space-4)));
|
|
border: 0;
|
|
border-radius: 0;
|
|
background: transparent;
|
|
color: var(--color-text-muted);
|
|
text-align: left;
|
|
transition:
|
|
color 160ms var(--easing-standard),
|
|
box-shadow 160ms var(--easing-standard),
|
|
transform 180ms var(--easing-standard);
|
|
|
|
&::after {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
border: 1px solid transparent;
|
|
border-radius: var(--radius-lg);
|
|
background: transparent;
|
|
transition:
|
|
background 160ms var(--easing-standard),
|
|
border-color 160ms var(--easing-standard),
|
|
box-shadow 160ms var(--easing-standard);
|
|
pointer-events: none;
|
|
z-index: 0;
|
|
}
|
|
|
|
> * {
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
}
|
|
|
|
@mixin item-hover {
|
|
color: var(--color-text);
|
|
|
|
&::after {
|
|
background: color-mix(in srgb, var(--color-surface-hover) 80%, var(--color-accent-soft) 20%);
|
|
box-shadow: inset 0 1px 0 color-mix(in srgb, white 4%, transparent);
|
|
}
|
|
}
|
|
|
|
@mixin item-folder {
|
|
color: var(--color-text);
|
|
}
|
|
|
|
@mixin item-dragging {
|
|
opacity: 0.45;
|
|
transform: scale(0.985);
|
|
box-shadow: none;
|
|
}
|
|
|
|
@mixin item-drop-before {
|
|
&::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: calc(var(--space-3) + (var(--tree-depth, 0) * var(--space-4)));
|
|
right: var(--space-3);
|
|
top: calc((var(--space-1) * -0.5) - 1px);
|
|
height: 2px;
|
|
border-radius: 999px;
|
|
background: color-mix(in srgb, var(--color-accent-strong) 78%, transparent);
|
|
pointer-events: none;
|
|
z-index: 2;
|
|
}
|
|
}
|
|
|
|
@mixin item-drop-after {
|
|
&::before {
|
|
content: "";
|
|
position: absolute;
|
|
left: calc(var(--space-3) + (var(--tree-depth, 0) * var(--space-4)));
|
|
right: var(--space-3);
|
|
bottom: calc((var(--space-1) * -0.5) - 1px);
|
|
height: 2px;
|
|
border-radius: 999px;
|
|
background: color-mix(in srgb, var(--color-accent-strong) 78%, transparent);
|
|
pointer-events: none;
|
|
z-index: 2;
|
|
}
|
|
}
|
|
|
|
@mixin item-drop-inside {
|
|
color: var(--color-text);
|
|
|
|
&::after {
|
|
border-color: color-mix(in srgb, var(--color-accent-strong) 55%, transparent);
|
|
background: color-mix(in srgb, var(--color-accent-soft) 36%, var(--color-surface));
|
|
box-shadow: inset 0 1px 0 color-mix(in srgb, white 4%, transparent);
|
|
}
|
|
}
|
|
|
|
@mixin folder-chevron {
|
|
color: var(--color-text-muted);
|
|
transition: transform 160ms var(--easing-standard);
|
|
}
|
|
|
|
@mixin folder-chevron-open {
|
|
transform: rotate(90deg);
|
|
}
|
|
|
|
@mixin item-active {
|
|
color: var(--color-text);
|
|
|
|
&::after {
|
|
border-color: var(--color-border);
|
|
background: var(--color-surface);
|
|
box-shadow: inset 0 1px 0 color-mix(in srgb, white 4%, transparent);
|
|
}
|
|
}
|
|
|
|
@mixin icon {
|
|
color: inherit;
|
|
opacity: 0.85;
|
|
}
|
|
|
|
@mixin label {
|
|
@include text-label;
|
|
min-width: 0;
|
|
}
|
|
|
|
@mixin item-meta {
|
|
@include text-caption;
|
|
color: var(--color-text-muted);
|
|
}
|